Compare commits

..

No commits in common. "dd2e551b129806c495a1e3a0c1c5a0ddd3fb5b1e" and "bbca186ab918362027d16a7bc2603bb5ef7f6cdd" have entirely different histories.

5 changed files with 180 additions and 215 deletions

View file

@ -34,10 +34,10 @@
"solidjs-use": "^2.3.0"
},
"devDependencies": {
"@biomejs/biome": "^2.4.6",
"@biomejs/biome": "^2.4.5",
"@nanostores/solid": "^1.1.1",
"@types/crypto-js": "^4.2.2",
"@types/node": "^24.11.2",
"@types/node": "^24.11.0",
"sass-embedded": "^1.97.3",
"typescript": "~5.8.3",
"vite": "^7.3.1",

102
pnpm-lock.yaml generated
View file

@ -76,8 +76,8 @@ importers:
version: 2.3.0
devDependencies:
'@biomejs/biome':
specifier: ^2.4.6
version: 2.4.6
specifier: ^2.4.5
version: 2.4.5
'@nanostores/solid':
specifier: ^1.1.1
version: 1.1.1(nanostores@1.1.1)(solid-js@1.9.11)
@ -85,8 +85,8 @@ importers:
specifier: ^4.2.2
version: 4.2.2
'@types/node':
specifier: ^24.11.2
version: 24.11.2
specifier: ^24.11.0
version: 24.11.0
sass-embedded:
specifier: ^1.97.3
version: 1.97.3
@ -95,13 +95,13 @@ importers:
version: 5.8.3
vite:
specifier: ^7.3.1
version: 7.3.1(@types/node@24.11.2)(sass-embedded@1.97.3)(sass@1.97.3)
version: 7.3.1(@types/node@24.11.0)(sass-embedded@1.97.3)(sass@1.97.3)
vite-plugin-compression2:
specifier: ^2.5.0
version: 2.5.0(rollup@4.52.1)
vite-plugin-solid:
specifier: ^2.11.10
version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.11.2)(sass-embedded@1.97.3)(sass@1.97.3))
version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.11.0)(sass-embedded@1.97.3)(sass@1.97.3))
packages:
@ -190,59 +190,59 @@ packages:
resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==}
engines: {node: '>=6.9.0'}
'@biomejs/biome@2.4.6':
resolution: {integrity: sha512-QnHe81PMslpy3mnpL8DnO2M4S4ZnYPkjlGCLWBZT/3R9M6b5daArWMMtEfP52/n174RKnwRIf3oT8+wc9ihSfQ==}
'@biomejs/biome@2.4.5':
resolution: {integrity: sha512-OWNCyMS0Q011R6YifXNOg6qsOg64IVc7XX6SqGsrGszPbkVCoaO7Sr/lISFnXZ9hjQhDewwZ40789QmrG0GYgQ==}
engines: {node: '>=14.21.3'}
hasBin: true
'@biomejs/cli-darwin-arm64@2.4.6':
resolution: {integrity: sha512-NW18GSyxr+8sJIqgoGwVp5Zqm4SALH4b4gftIA0n62PTuBs6G2tHlwNAOj0Vq0KKSs7Sf88VjjmHh0O36EnzrQ==}
'@biomejs/cli-darwin-arm64@2.4.5':
resolution: {integrity: sha512-lGS4Nd5O3KQJ6TeWv10mElnx1phERhBxqGP/IKq0SvZl78kcWDFMaTtVK+w3v3lusRFxJY78n07PbKplirsU5g==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [darwin]
'@biomejs/cli-darwin-x64@2.4.6':
resolution: {integrity: sha512-4uiE/9tuI7cnjtY9b07RgS7gGyYOAfIAGeVJWEfeCnAarOAS7qVmuRyX6d7JTKw28/mt+rUzMasYeZ+0R/U1Mw==}
'@biomejs/cli-darwin-x64@2.4.5':
resolution: {integrity: sha512-6MoH4tyISIBNkZ2Q5T1R7dLd5BsITb2yhhhrU9jHZxnNSNMWl+s2Mxu7NBF8Y3a7JJcqq9nsk8i637z4gqkJxQ==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [darwin]
'@biomejs/cli-linux-arm64-musl@2.4.6':
resolution: {integrity: sha512-F/JdB7eN22txiTqHM5KhIVt0jVkzZwVYrdTR1O3Y4auBOQcXxHK4dxULf4z43QyZI5tsnQJrRBHZy7wwtL+B3A==}
'@biomejs/cli-linux-arm64-musl@2.4.5':
resolution: {integrity: sha512-iqLDgpzobG7gpBF0fwEVS/LT8kmN7+S0E2YKFDtqliJfzNLnAiV2Nnyb+ehCDCJgAZBASkYHR2o60VQWikpqIg==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
libc: [musl]
'@biomejs/cli-linux-arm64@2.4.6':
resolution: {integrity: sha512-kMLaI7OF5GN1Q8Doymjro1P8rVEoy7BKQALNz6fiR8IC1WKduoNyteBtJlHT7ASIL0Cx2jR6VUOBIbcB1B8pew==}
'@biomejs/cli-linux-arm64@2.4.5':
resolution: {integrity: sha512-U1GAG6FTjhAO04MyH4xn23wRNBkT6H7NentHh+8UxD6ShXKBm5SY4RedKJzkUThANxb9rUKIPc7B8ew9Xo/cWg==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@biomejs/cli-linux-x64-musl@2.4.6':
resolution: {integrity: sha512-C9s98IPDu7DYarjlZNuzJKTjVHN03RUnmHV5htvqsx6vEUXCDSJ59DNwjKVD5XYoSS4N+BYhq3RTBAL8X6svEg==}
'@biomejs/cli-linux-x64-musl@2.4.5':
resolution: {integrity: sha512-NlKa7GpbQmNhZf9kakQeddqZyT7itN7jjWdakELeXyTU3pg/83fTysRRDPJD0akTfKDl6vZYNT9Zqn4MYZVBOA==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
libc: [musl]
'@biomejs/cli-linux-x64@2.4.6':
resolution: {integrity: sha512-oHXmUFEoH8Lql1xfc3QkFLiC1hGR7qedv5eKNlC185or+o4/4HiaU7vYODAH3peRCfsuLr1g6v2fK9dFFOYdyw==}
'@biomejs/cli-linux-x64@2.4.5':
resolution: {integrity: sha512-NdODlSugMzTlENPTa4z0xB82dTUlCpsrOxc43///aNkTLblIYH4XpYflBbf5ySlQuP8AA4AZd1qXhV07IdrHdQ==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@biomejs/cli-win32-arm64@2.4.6':
resolution: {integrity: sha512-xzThn87Pf3YrOGTEODFGONmqXpTwUNxovQb72iaUOdcw8sBSY3+3WD8Hm9IhMYLnPi0n32s3L3NWU6+eSjfqFg==}
'@biomejs/cli-win32-arm64@2.4.5':
resolution: {integrity: sha512-EBfrTqRIWOFSd7CQb/0ttjHMR88zm3hGravnDwUA9wHAaCAYsULKDebWcN5RmrEo1KBtl/gDVJMrFjNR0pdGUw==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [win32]
'@biomejs/cli-win32-x64@2.4.6':
resolution: {integrity: sha512-7++XhnsPlr1HDbor5amovPjOH6vsrFOCdp93iKXhFn6bcMUI6soodj3WWKfgEO6JosKU1W5n3uky3WW9RlRjTg==}
'@biomejs/cli-win32-x64@2.4.5':
resolution: {integrity: sha512-Pmhv9zT95YzECfjEHNl3mN9Vhusw9VA5KHY0ZvlGsxsjwS5cb7vpRnHzJIv0vG7jB0JI7xEaMH9ddfZm/RozBw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [win32]
@ -1084,8 +1084,8 @@ packages:
'@types/node@16.9.1':
resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==}
'@types/node@24.11.2':
resolution: {integrity: sha512-HTsxyfkxTNxOXBsEdgIOzbMgBjDGPvkTfw0B1m09j1LFPk8u3tSL8SNBRTSc381wXXX/Wp93qPi1kQXwnWuHgA==}
'@types/node@24.11.0':
resolution: {integrity: sha512-fPxQqz4VTgPI/IQ+lj9r0h+fDR66bzoeMGHp8ASee+32OSGIkeASsoZuJixsQoVef1QJbeubcPBxKk22QVoWdw==}
'@types/pako@2.0.4':
resolution: {integrity: sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==}
@ -2037,39 +2037,39 @@ snapshots:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
'@biomejs/biome@2.4.6':
'@biomejs/biome@2.4.5':
optionalDependencies:
'@biomejs/cli-darwin-arm64': 2.4.6
'@biomejs/cli-darwin-x64': 2.4.6
'@biomejs/cli-linux-arm64': 2.4.6
'@biomejs/cli-linux-arm64-musl': 2.4.6
'@biomejs/cli-linux-x64': 2.4.6
'@biomejs/cli-linux-x64-musl': 2.4.6
'@biomejs/cli-win32-arm64': 2.4.6
'@biomejs/cli-win32-x64': 2.4.6
'@biomejs/cli-darwin-arm64': 2.4.5
'@biomejs/cli-darwin-x64': 2.4.5
'@biomejs/cli-linux-arm64': 2.4.5
'@biomejs/cli-linux-arm64-musl': 2.4.5
'@biomejs/cli-linux-x64': 2.4.5
'@biomejs/cli-linux-x64-musl': 2.4.5
'@biomejs/cli-win32-arm64': 2.4.5
'@biomejs/cli-win32-x64': 2.4.5
'@biomejs/cli-darwin-arm64@2.4.6':
'@biomejs/cli-darwin-arm64@2.4.5':
optional: true
'@biomejs/cli-darwin-x64@2.4.6':
'@biomejs/cli-darwin-x64@2.4.5':
optional: true
'@biomejs/cli-linux-arm64-musl@2.4.6':
'@biomejs/cli-linux-arm64-musl@2.4.5':
optional: true
'@biomejs/cli-linux-arm64@2.4.6':
'@biomejs/cli-linux-arm64@2.4.5':
optional: true
'@biomejs/cli-linux-x64-musl@2.4.6':
'@biomejs/cli-linux-x64-musl@2.4.5':
optional: true
'@biomejs/cli-linux-x64@2.4.6':
'@biomejs/cli-linux-x64@2.4.5':
optional: true
'@biomejs/cli-win32-arm64@2.4.6':
'@biomejs/cli-win32-arm64@2.4.5':
optional: true
'@biomejs/cli-win32-x64@2.4.6':
'@biomejs/cli-win32-x64@2.4.5':
optional: true
'@bufbuild/protobuf@2.9.0': {}
@ -2762,7 +2762,7 @@ snapshots:
'@types/node@16.9.1': {}
'@types/node@24.11.2':
'@types/node@24.11.0':
dependencies:
undici-types: 7.16.0
@ -3516,7 +3516,7 @@ snapshots:
transitivePeerDependencies:
- rollup
vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.11.2)(sass-embedded@1.97.3)(sass@1.97.3)):
vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.11.0)(sass-embedded@1.97.3)(sass@1.97.3)):
dependencies:
'@babel/core': 7.28.4
'@types/babel__core': 7.20.5
@ -3524,12 +3524,12 @@ snapshots:
merge-anything: 5.1.7
solid-js: 1.9.11
solid-refresh: 0.6.3(solid-js@1.9.11)
vite: 7.3.1(@types/node@24.11.2)(sass-embedded@1.97.3)(sass@1.97.3)
vitefu: 1.1.1(vite@7.3.1(@types/node@24.11.2)(sass-embedded@1.97.3)(sass@1.97.3))
vite: 7.3.1(@types/node@24.11.0)(sass-embedded@1.97.3)(sass@1.97.3)
vitefu: 1.1.1(vite@7.3.1(@types/node@24.11.0)(sass-embedded@1.97.3)(sass@1.97.3))
transitivePeerDependencies:
- supports-color
vite@7.3.1(@types/node@24.11.2)(sass-embedded@1.97.3)(sass@1.97.3):
vite@7.3.1(@types/node@24.11.0)(sass-embedded@1.97.3)(sass@1.97.3):
dependencies:
esbuild: 0.27.2
fdir: 6.5.0(picomatch@4.0.3)
@ -3538,14 +3538,14 @@ snapshots:
rollup: 4.52.1
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 24.11.2
'@types/node': 24.11.0
fsevents: 2.3.3
sass: 1.97.3
sass-embedded: 1.97.3
vitefu@1.1.1(vite@7.3.1(@types/node@24.11.2)(sass-embedded@1.97.3)(sass@1.97.3)):
vitefu@1.1.1(vite@7.3.1(@types/node@24.11.0)(sass-embedded@1.97.3)(sass@1.97.3)):
optionalDependencies:
vite: 7.3.1(@types/node@24.11.2)(sass-embedded@1.97.3)(sass@1.97.3)
vite: 7.3.1(@types/node@24.11.0)(sass-embedded@1.97.3)(sass@1.97.3)
webworkify@1.5.0: {}

View file

@ -82,7 +82,7 @@ export default () => {
<Display desktop>
<Column padding="3rem 0 0 0">
<Image avif={pageLogoAvif} webp={pageLogoWebp} size={410} alt="e-Sign Logo"></Image>
<Image avif={pageLogoAvif} webp={pageLogoWebp} size={410} alt='e-Sign Logo'></Image>
</Column>
</Display>
</Row>
@ -91,7 +91,7 @@ export default () => {
<Footer>
<Row content="split">
<Row gap={0.5}>
<Image avif={ocboAvif} webp={ocboWebp} size={20} alt="OCBO Logo"></Image>
<Image avif={ocboAvif} webp={ocboWebp} size={20} alt='OCBO Logo'></Image>
<Row gap={0.25}>
<Copyright year="2025-2026" name="Office of the City Building Official" />
<span>Davao City, Philippines</span>
@ -100,7 +100,7 @@ export default () => {
<Row gap={0.25}>
<span>Developed by:</span>
<Image avif={patAvif} webp={patWebp} size={70} alt="Pat Alcala Logo"></Image>
<Image avif={patAvif} webp={patWebp} size={70} alt='Pat Alcala Logo'></Image>
<span>Pat Alcala</span>
</Row>
</Row>
@ -124,7 +124,6 @@ export default () => {
</Row>
<Row content="split">
<Padding top={2.75} bottom={0} left={0} right={0}>
<Box curved thickness={0} padding="2.75rem 2rem" background="#0f131d56">
<section class="title">
<h1 class="title__main">Secure e-Signature</h1>
@ -132,10 +131,9 @@ export default () => {
<p class="title__paragraph">A paperless and effortless solution on signing permits</p>
</section>
</Box>
</Padding>
<Column padding="3rem 0 0 0">
<Image avif={pageLogoAvif} webp={pageLogoWebp} size={110} alt="e-Sign Logo"></Image>
<Image avif={pageLogoAvif} webp={pageLogoWebp} size={110} alt='e-Sign Logo'></Image>
</Column>
</Row>
</Padding>
@ -143,7 +141,7 @@ export default () => {
<Footer>
<Row content="split">
<Row gap={0.5}>
<Image avif={ocboAvif} webp={ocboWebp} size={20} alt="OCBO Logo"></Image>
<Image avif={ocboAvif} webp={ocboWebp} size={20} alt='OCBO Logo'></Image>
<Row gap={0.25}>
<Copyright year="2025-2026" name="Office of the City Building Official" />
<span>Davao City, Philippines</span>
@ -152,7 +150,7 @@ export default () => {
<Row gap={0.25}>
<span>Developed by:</span>
<Image avif={patAvif} webp={patWebp} size={70} alt="Pat Alcala Logo"></Image>
<Image avif={patAvif} webp={patWebp} size={70} alt='Pat Alcala Logo'></Image>
<span>Pat Alcala</span>
</Row>
</Row>

View file

@ -9,7 +9,6 @@ import { Show } from 'solid-js/web'
import { Box, Button, Clickable, Column, Input, Link, Logo, Modal, ModalButton, Padding, Page, Row } from '../../components/'
import { checkConnection, deleteApi, getApi, getApiMulti, getDateTime, lockData, postApi, saveNewName, saveNewPassword, securePassword, voidPopsApi, voidApi, statusPopsApi } from '../../utils/functions'
import { AiOutlineLoading3Quarters } from 'solid-icons/ai'
import { RiDocumentFileCloseFill } from 'solid-icons/ri'
import './Main.sass'
const PESO = import.meta.env.VITE_PESO
@ -78,15 +77,19 @@ export default () => {
}
const getListForApprovalElectrical = async () => {
// setIsLoading(true)
const responseE = await getApiMulti('get-listopapproval-electrical')
setApplicationListElectrical(responseE.result)
setNameListElectrical(responseE.result2)
// setIsLoading(false)
}
const getListForApprovalOccupancy = async () => {
// setIsLoading(true)
const responseO = await getApiMulti('get-listopapproval-occupancy')
setApplicationListOccupancy(responseO.result)
setNameListOccupancy(responseO.result2)
// setIsLoading(false)
}
const load = async (division: string) => {
@ -95,9 +98,8 @@ export default () => {
setErrorMessage('Could not gather list of applications')
return
}
setIsLoading(true)
setLoadingText('Getting List to Approve')
setLoadingText('Downloading Data')
await getPassword()
@ -167,7 +169,7 @@ export default () => {
}
setIsLoading(true)
setLoadingText('Checking POPS record')
setLoadingText('Processing Data')
if (division === 'electrical') {
if (BACKEND.includes('localhost')) {
@ -182,7 +184,6 @@ export default () => {
if (popsExist) {
if (popsPaid) {
setIsLoading(false)
setPostError(true)
setErrorMessage('Application Already Paid')
return
@ -191,17 +192,14 @@ export default () => {
const voidOP = await voidPopsOpLocal(application)
if (!voidOP) {
setIsLoading(false)
setPostError(true)
setErrorMessage('POPS Record found but failed to void')
return
}
} else {
setLoadingText('Clearing unpaid POPS record')
const voidOP = await voidPopsOp(application)
if (voidOP.toUpper().includes('ERROR')) {
setIsLoading(false)
setPostError(true)
setErrorMessage('POPS Record found but failed to void')
return
@ -210,14 +208,11 @@ export default () => {
}
}
setLoadingText('Posting new record to POPS')
await postPops(division, application)
// const popsResult = await checkPops(application)
setLoadingText(`Approving ${application}`)
const dataLocked = await lockOpData(division, application)
if (dataLocked) {
setLoadingText(`Pushing ${application} for printing`)
signed = await setNewStatus(division, 'ELECTRICAL ORDER OF PAYMENT APPROVED AND SIGNED', '170', 'ELECOPAPPROVEDSIGNED', 1)
updateDocflow(division, application, 'FOR ELECTRICAL ORDER OF PAYMENT APPROVAL')
if (!signed) return
@ -233,7 +228,6 @@ export default () => {
setApproved(true)
}
} else {
setIsLoading(false)
setPostError(true)
setErrorMessage('Error on posting on POPS Server, please try again')
return
@ -647,7 +641,6 @@ export default () => {
</Row>
<Row content="center">
<Tabs aria-label="Main navigation" class="tabs">
<Padding top={1} bottom={0} right={0} left={0}>
<Row>
<Tabs.List class="tabs__list">
<Tabs.Trigger class="tabs__trigger" value="building">
@ -662,13 +655,10 @@ export default () => {
<Tabs.Indicator class="tabs__indicator" />
</Tabs.List>
</Row>
</Padding>
<Tabs.Content class="tabs__content" value="building">
<Row>
{/*<Padding top={2} bottom={2} right={0} left={0}>
<h3>Ready for Approval and Signing Building Order of Payments</h3>
</Padding>*/}
{/* <h2>List of Ready to Approve and Sign Building Order of Payments</h2> */}
<Padding top={2} bottom={0} left={0} right={0}>
<Box curved thickness={0} background="#602a2abf" padding="1rem 2rem">
<h2>Under Development</h2>
@ -691,12 +681,10 @@ export default () => {
</Tabs.Content>
<Tabs.Content class="tabs__content" value="occupancy">
<Row>
<Padding top={2} bottom={2} right={0} left={0}>
<h3>Ready for Approval and Signing Occupancy Order of Payments</h3>
</Padding>
<h2>List of Ready to Approve and Sign in Occupancy Order of Payments</h2>
</Row>
<Padding top={0} bottom={0} right={9} left={0}>
<Padding top={0} bottom={0} right={10} left={0}>
<Row content="right">
<Button label="Refresh Data" edges="curved" design="bo-primary" icon={VsRefresh} onClick={() => refresh('occupancy')}></Button>
</Row>
@ -780,12 +768,10 @@ export default () => {
</Tabs.Content>
<Tabs.Content class="tabs__content" value="electrical">
<Row>
<Padding top={2} bottom={2} right={0} left={0}>
<h3>Ready for Approval and Signing Electrical Order of Payments</h3>
</Padding>
<h2>List of Ready to Approve and Sign in Electrical Order of Payments</h2>
</Row>
<Padding top={0} bottom={0} right={9} left={0}>
<Padding top={0} bottom={0} right={10} left={0}>
<Row content="right">
<Button label="Refresh Data" edges="curved" design="bo-primary" icon={VsRefresh} onClick={() => refresh('electrical')}></Button>
</Row>
@ -801,7 +787,6 @@ export default () => {
</Padding>
</Show>
<Show when={!isLoading()}>
<Show when={applicationListElectrical().length > 0}>
<table class="table">
<thead>
<tr>
@ -904,18 +889,6 @@ export default () => {
</tbody>
</table>
</Show>
<Show when={applicationListElectrical().length === 0}>
<Padding top={2} bottom={0} left={0} right={0}>
<Box thickness={1} padding="4rem 2rem" curved color="rgba(250, 250, 250, 0.3)">
<Column gap={1}>
<RiDocumentFileCloseFill size={50} />
<span>No Application to Approve found</span>
</Column>
</Box>
</Padding>
</Show>
</Show>
</Row>
</Tabs.Content>
</Tabs>

View file

@ -1,5 +1,4 @@
@use '/src/styles/variables.sass' as vars
// @use '/src/styles/breakpoint.sass' as view
@use 'sass:color'
.fullscreen
@ -87,13 +86,14 @@
box-shadow: inset 0 1px 2px #16212C, 0 2px 4px #2a3f5332, 0 4px 8px #344c654e
th, td
padding: 0.75rem
text-align: left
font-size: 1rem
th
background-color: vars.$tableHeaderBackground
color: vars.$textColor
padding: 1.25rem
padding: 1rem
th:nth-child(1)
text-align: center
@ -103,14 +103,8 @@
border-radius: 0 1rem 0 0
td
padding: 0.75rem
font-size: 1rem
background-color: rgba(color.adjust(vars.$background, $blackness: 5%), 0.8)
@media only screen and (max-width: 1080px)
font-size: 0.75rem
font-weight: 500
td:nth-child(1)
width: 10rem
text-align: center