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" "solidjs-use": "^2.3.0"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "^2.4.6", "@biomejs/biome": "^2.4.5",
"@nanostores/solid": "^1.1.1", "@nanostores/solid": "^1.1.1",
"@types/crypto-js": "^4.2.2", "@types/crypto-js": "^4.2.2",
"@types/node": "^24.11.2", "@types/node": "^24.11.0",
"sass-embedded": "^1.97.3", "sass-embedded": "^1.97.3",
"typescript": "~5.8.3", "typescript": "~5.8.3",
"vite": "^7.3.1", "vite": "^7.3.1",

102
pnpm-lock.yaml generated
View file

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

View file

@ -82,7 +82,7 @@ export default () => {
<Display desktop> <Display desktop>
<Column padding="3rem 0 0 0"> <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> </Column>
</Display> </Display>
</Row> </Row>
@ -91,7 +91,7 @@ export default () => {
<Footer> <Footer>
<Row content="split"> <Row content="split">
<Row gap={0.5}> <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}> <Row gap={0.25}>
<Copyright year="2025-2026" name="Office of the City Building Official" /> <Copyright year="2025-2026" name="Office of the City Building Official" />
<span>Davao City, Philippines</span> <span>Davao City, Philippines</span>
@ -100,7 +100,7 @@ export default () => {
<Row gap={0.25}> <Row gap={0.25}>
<span>Developed by:</span> <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> <span>Pat Alcala</span>
</Row> </Row>
</Row> </Row>
@ -124,18 +124,16 @@ export default () => {
</Row> </Row>
<Row content="split"> <Row content="split">
<Padding top={2.75} bottom={0} left={0} right={0}> <Box curved thickness={0} padding="2.75rem 2rem" background="#0f131d56">
<Box curved thickness={0} padding="2.75rem 2rem" background="#0f131d56"> <section class="title">
<section class="title"> <h1 class="title__main">Secure e-Signature</h1>
<h1 class="title__main">Secure e-Signature</h1> <span class="title__sub">for Office of the City Building Official</span>
<span class="title__sub">for Office of the City Building Official</span> <p class="title__paragraph">A paperless and effortless solution on signing permits</p>
<p class="title__paragraph">A paperless and effortless solution on signing permits</p> </section>
</section> </Box>
</Box>
</Padding>
<Column padding="3rem 0 0 0"> <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> </Column>
</Row> </Row>
</Padding> </Padding>
@ -143,7 +141,7 @@ export default () => {
<Footer> <Footer>
<Row content="split"> <Row content="split">
<Row gap={0.5}> <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}> <Row gap={0.25}>
<Copyright year="2025-2026" name="Office of the City Building Official" /> <Copyright year="2025-2026" name="Office of the City Building Official" />
<span>Davao City, Philippines</span> <span>Davao City, Philippines</span>
@ -152,7 +150,7 @@ export default () => {
<Row gap={0.25}> <Row gap={0.25}>
<span>Developed by:</span> <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> <span>Pat Alcala</span>
</Row> </Row>
</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 { 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 { checkConnection, deleteApi, getApi, getApiMulti, getDateTime, lockData, postApi, saveNewName, saveNewPassword, securePassword, voidPopsApi, voidApi, statusPopsApi } from '../../utils/functions'
import { AiOutlineLoading3Quarters } from 'solid-icons/ai' import { AiOutlineLoading3Quarters } from 'solid-icons/ai'
import { RiDocumentFileCloseFill } from 'solid-icons/ri'
import './Main.sass' import './Main.sass'
const PESO = import.meta.env.VITE_PESO const PESO = import.meta.env.VITE_PESO
@ -78,15 +77,19 @@ export default () => {
} }
const getListForApprovalElectrical = async () => { const getListForApprovalElectrical = async () => {
// setIsLoading(true)
const responseE = await getApiMulti('get-listopapproval-electrical') const responseE = await getApiMulti('get-listopapproval-electrical')
setApplicationListElectrical(responseE.result) setApplicationListElectrical(responseE.result)
setNameListElectrical(responseE.result2) setNameListElectrical(responseE.result2)
// setIsLoading(false)
} }
const getListForApprovalOccupancy = async () => { const getListForApprovalOccupancy = async () => {
// setIsLoading(true)
const responseO = await getApiMulti('get-listopapproval-occupancy') const responseO = await getApiMulti('get-listopapproval-occupancy')
setApplicationListOccupancy(responseO.result) setApplicationListOccupancy(responseO.result)
setNameListOccupancy(responseO.result2) setNameListOccupancy(responseO.result2)
// setIsLoading(false)
} }
const load = async (division: string) => { const load = async (division: string) => {
@ -95,9 +98,8 @@ export default () => {
setErrorMessage('Could not gather list of applications') setErrorMessage('Could not gather list of applications')
return return
} }
setIsLoading(true) setIsLoading(true)
setLoadingText('Getting List to Approve') setLoadingText('Downloading Data')
await getPassword() await getPassword()
@ -167,7 +169,7 @@ export default () => {
} }
setIsLoading(true) setIsLoading(true)
setLoadingText('Checking POPS record') setLoadingText('Processing Data')
if (division === 'electrical') { if (division === 'electrical') {
if (BACKEND.includes('localhost')) { if (BACKEND.includes('localhost')) {
@ -182,7 +184,6 @@ export default () => {
if (popsExist) { if (popsExist) {
if (popsPaid) { if (popsPaid) {
setIsLoading(false)
setPostError(true) setPostError(true)
setErrorMessage('Application Already Paid') setErrorMessage('Application Already Paid')
return return
@ -191,17 +192,14 @@ export default () => {
const voidOP = await voidPopsOpLocal(application) const voidOP = await voidPopsOpLocal(application)
if (!voidOP) { if (!voidOP) {
setIsLoading(false)
setPostError(true) setPostError(true)
setErrorMessage('POPS Record found but failed to void') setErrorMessage('POPS Record found but failed to void')
return return
} }
} else { } else {
setLoadingText('Clearing unpaid POPS record')
const voidOP = await voidPopsOp(application) const voidOP = await voidPopsOp(application)
if (voidOP.toUpper().includes('ERROR')) { if (voidOP.toUpper().includes('ERROR')) {
setIsLoading(false)
setPostError(true) setPostError(true)
setErrorMessage('POPS Record found but failed to void') setErrorMessage('POPS Record found but failed to void')
return return
@ -210,14 +208,11 @@ export default () => {
} }
} }
setLoadingText('Posting new record to POPS')
await postPops(division, application) await postPops(division, application)
// const popsResult = await checkPops(application) // const popsResult = await checkPops(application)
setLoadingText(`Approving ${application}`)
const dataLocked = await lockOpData(division, application) const dataLocked = await lockOpData(division, application)
if (dataLocked) { if (dataLocked) {
setLoadingText(`Pushing ${application} for printing`)
signed = await setNewStatus(division, 'ELECTRICAL ORDER OF PAYMENT APPROVED AND SIGNED', '170', 'ELECOPAPPROVEDSIGNED', 1) signed = await setNewStatus(division, 'ELECTRICAL ORDER OF PAYMENT APPROVED AND SIGNED', '170', 'ELECOPAPPROVEDSIGNED', 1)
updateDocflow(division, application, 'FOR ELECTRICAL ORDER OF PAYMENT APPROVAL') updateDocflow(division, application, 'FOR ELECTRICAL ORDER OF PAYMENT APPROVAL')
if (!signed) return if (!signed) return
@ -233,7 +228,6 @@ export default () => {
setApproved(true) setApproved(true)
} }
} else { } else {
setIsLoading(false)
setPostError(true) setPostError(true)
setErrorMessage('Error on posting on POPS Server, please try again') setErrorMessage('Error on posting on POPS Server, please try again')
return return
@ -647,28 +641,24 @@ export default () => {
</Row> </Row>
<Row content="center"> <Row content="center">
<Tabs aria-label="Main navigation" class="tabs"> <Tabs aria-label="Main navigation" class="tabs">
<Padding top={1} bottom={0} right={0} left={0}> <Row>
<Row> <Tabs.List class="tabs__list">
<Tabs.List class="tabs__list"> <Tabs.Trigger class="tabs__trigger" value="building">
<Tabs.Trigger class="tabs__trigger" value="building"> Building
Building </Tabs.Trigger>
</Tabs.Trigger> <Tabs.Trigger class="tabs__trigger" value="occupancy">
<Tabs.Trigger class="tabs__trigger" value="occupancy"> Occupancy
Occupancy </Tabs.Trigger>
</Tabs.Trigger> <Tabs.Trigger class="tabs__trigger" value="electrical">
<Tabs.Trigger class="tabs__trigger" value="electrical"> Electrical
Electrical </Tabs.Trigger>
</Tabs.Trigger> <Tabs.Indicator class="tabs__indicator" />
<Tabs.Indicator class="tabs__indicator" /> </Tabs.List>
</Tabs.List> </Row>
</Row>
</Padding>
<Tabs.Content class="tabs__content" value="building"> <Tabs.Content class="tabs__content" value="building">
<Row> <Row>
{/*<Padding top={2} bottom={2} right={0} left={0}> {/* <h2>List of Ready to Approve and Sign Building Order of Payments</h2> */}
<h3>Ready for Approval and Signing Building Order of Payments</h3>
</Padding>*/}
<Padding top={2} bottom={0} left={0} right={0}> <Padding top={2} bottom={0} left={0} right={0}>
<Box curved thickness={0} background="#602a2abf" padding="1rem 2rem"> <Box curved thickness={0} background="#602a2abf" padding="1rem 2rem">
<h2>Under Development</h2> <h2>Under Development</h2>
@ -691,12 +681,10 @@ export default () => {
</Tabs.Content> </Tabs.Content>
<Tabs.Content class="tabs__content" value="occupancy"> <Tabs.Content class="tabs__content" value="occupancy">
<Row> <Row>
<Padding top={2} bottom={2} right={0} left={0}> <h2>List of Ready to Approve and Sign in Occupancy Order of Payments</h2>
<h3>Ready for Approval and Signing Occupancy Order of Payments</h3>
</Padding>
</Row> </Row>
<Padding top={0} bottom={0} right={9} left={0}> <Padding top={0} bottom={0} right={10} left={0}>
<Row content="right"> <Row content="right">
<Button label="Refresh Data" edges="curved" design="bo-primary" icon={VsRefresh} onClick={() => refresh('occupancy')}></Button> <Button label="Refresh Data" edges="curved" design="bo-primary" icon={VsRefresh} onClick={() => refresh('occupancy')}></Button>
</Row> </Row>
@ -780,12 +768,10 @@ export default () => {
</Tabs.Content> </Tabs.Content>
<Tabs.Content class="tabs__content" value="electrical"> <Tabs.Content class="tabs__content" value="electrical">
<Row> <Row>
<Padding top={2} bottom={2} right={0} left={0}> <h2>List of Ready to Approve and Sign in Electrical Order of Payments</h2>
<h3>Ready for Approval and Signing Electrical Order of Payments</h3>
</Padding>
</Row> </Row>
<Padding top={0} bottom={0} right={9} left={0}> <Padding top={0} bottom={0} right={10} left={0}>
<Row content="right"> <Row content="right">
<Button label="Refresh Data" edges="curved" design="bo-primary" icon={VsRefresh} onClick={() => refresh('electrical')}></Button> <Button label="Refresh Data" edges="curved" design="bo-primary" icon={VsRefresh} onClick={() => refresh('electrical')}></Button>
</Row> </Row>
@ -801,120 +787,107 @@ export default () => {
</Padding> </Padding>
</Show> </Show>
<Show when={!isLoading()}> <Show when={!isLoading()}>
<Show when={applicationListElectrical().length > 0}> <table class="table">
<table class="table"> <thead>
<thead> <tr>
<th>Application Number</th>
<th>Name</th>
<th style="text-align: center">Show Details</th>
</tr>
</thead>
<tbody>
{applicationListElectrical().map((item: string, index: number) => (
<tr> <tr>
<th>Application Number</th> <td>{item}</td>
<th>Name</th> <td>{nameListElectrical()[index]}</td>
<th style="text-align: center">Show Details</th>
</tr>
</thead>
<tbody>
{applicationListElectrical().map((item: string, index: number) => (
<tr>
<td>{item}</td>
<td>{nameListElectrical()[index]}</td>
<td> <td>
<ModalButton <ModalButton
class="modal" class="modal"
label="Show Details" label="Show Details"
design="bo-link" design="bo-link"
background="#121e2acc" background="#121e2acc"
color="#ffffffec" color="#ffffffec"
function={async () => { function={async () => {
await getopdetails('electrical', item) await getopdetails('electrical', item)
}} }}
> >
<Show when={isIncomplete()}> <Show when={isIncomplete()}>
<Padding top={0} left={2} right={2} bottom={0}> <Padding top={0} left={2} right={2} bottom={0}>
<span class="modal__application-number">{item}</span> <span class="modal__application-number">{item}</span>
<Padding top={1} left={0} right={0} bottom={0}> <Padding top={1} left={0} right={0} bottom={0}>
<Column padding="0 0 1rem 0"> <Column padding="0 0 1rem 0">
<Box curved thickness={3} color="#c85656" padding="1rem"> <Box curved thickness={3} color="#c85656" padding="1rem">
<h2 class="incomplete__error">Signing Error</h2> <h2 class="incomplete__error">Signing Error</h2>
</Box> </Box>
<h3 class="incomplete__error">Missing Data Detected</h3> <h3 class="incomplete__error">Missing Data Detected</h3>
</Column>
<div class="incomplete">
<Column>
<span class="incomplete__text">Some required information is missing from the application details</span>
<span class="incomplete__text">Please return to Assessment to complete the required fields</span>
</Column> </Column>
</div>
<div class="incomplete">
<Column>
<span class="incomplete__text">Some required information is missing from the application details</span>
<span class="incomplete__text">Please return to Assessment to complete the required fields</span>
</Column>
</div>
</Padding>
<Column padding="1rem 0 0 0">
<Button wide label="Return to Assessment" edges="curved" design="bo-primary" onClick={() => returnAssessment('electrical', item)} />
<span class="modal__cancel">Click anywhere to cancel</span>
</Column>
</Padding> </Padding>
</Show> <Column padding="1rem 0 0 0">
<Button wide label="Return to Assessment" edges="curved" design="bo-primary" onClick={() => returnAssessment('electrical', item)} />
<span class="modal__cancel">Click anywhere to cancel</span>
</Column>
</Padding>
</Show>
<Show when={!isIncomplete()}> <Show when={!isIncomplete()}>
<Padding top={0} left={2} right={2} bottom={0}> <Padding top={0} left={2} right={2} bottom={0}>
<span class="modal__application-number">{item}</span> <span class="modal__application-number">{item}</span>
<Padding top={1} left={0} right={0} bottom={0}> <Padding top={1} left={0} right={0} bottom={0}>
<section class="modal__row"> <section class="modal__row">
<span class="modal__row__label">Name of Applicant:</span> <span class="modal__row__label">Name of Applicant:</span>
<span class="modal__row__detail">{nameListElectrical()[index]}</span> <span class="modal__row__detail">{nameListElectrical()[index]}</span>
</section> </section>
<section class="modal__row"> <section class="modal__row">
<span class="modal__row__label">Location:</span> <span class="modal__row__label">Location:</span>
<span class="modal__row__detail">{location()}</span> <span class="modal__row__detail">{location()}</span>
</section> </section>
<section class="modal__row"> <section class="modal__row">
<span class="modal__row__label">Type:</span> <span class="modal__row__label">Type:</span>
<span class="modal__row__detail">{type().toUpperCase()}</span> <span class="modal__row__detail">{type().toUpperCase()}</span>
</section> </section>
<section class="modal__row"> <section class="modal__row">
<span class="modal__row__label">Assessed By:</span> <span class="modal__row__label">Assessed By:</span>
<span class="modal__row__detail">{assessor()}</span> <span class="modal__row__detail">{assessor()}</span>
</section> </section>
<section class="modal__row"> <section class="modal__row">
<span class="modal__row__label">Date Assessed:</span> <span class="modal__row__label">Date Assessed:</span>
<span class="modal__row__detail">{dateOp().toUpperCase()}</span> <span class="modal__row__detail">{dateOp().toUpperCase()}</span>
</section> </section>
<section class="modal__row"> <section class="modal__row">
<span class="modal__row__label">Total Fee:</span> <span class="modal__row__label">Total Fee:</span>
<span class="modal__row__detail__price"> <span class="modal__row__detail__price">
{PESO} {totalOp()} {PESO} {totalOp()}
</span> </span>
</section> </section>
</Padding>
<Column padding="2rem 0 0 0">
<Button wide label="Approve" edges="curved" design="bo-primary" onClick={() => approveHandler('electrical', item)} />
<span class="modal__cancel">Click anywhere to cancel</span>
</Column>
</Padding> </Padding>
</Show>
</ModalButton>
</td>
</tr>
))}
</tbody>
</table>
</Show>
<Show when={applicationListElectrical().length === 0}> <Column padding="2rem 0 0 0">
<Padding top={2} bottom={0} left={0} right={0}> <Button wide label="Approve" edges="curved" design="bo-primary" onClick={() => approveHandler('electrical', item)} />
<Box thickness={1} padding="4rem 2rem" curved color="rgba(250, 250, 250, 0.3)"> <span class="modal__cancel">Click anywhere to cancel</span>
<Column gap={1}> </Column>
<RiDocumentFileCloseFill size={50} /> </Padding>
<span>No Application to Approve found</span> </Show>
</Column> </ModalButton>
</Box> </td>
</Padding> </tr>
</Show> ))}
</tbody>
</table>
</Show> </Show>
</Row> </Row>
</Tabs.Content> </Tabs.Content>

View file

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