From e808eff9cb62b1ace1a078f593a47441397f7250 Mon Sep 17 00:00:00 2001 From: "kelvin.yau" Date: Tue, 24 Mar 2026 11:44:02 +0800 Subject: [PATCH] JO tesing page + set JO creation page search result to default showing 100 results --- package-lock.json | 98 ++++++++++++++++++- src/app/(main)/jo/testing/page.tsx | 21 ++++ src/app/(main)/layout.tsx | 2 +- src/components/AppBar/AppBar.tsx | 8 -- src/components/Breadcrumb/Breadcrumb.tsx | 1 + .../SearchResults/SearchResults.tsx | 4 +- src/routes.ts | 1 + 7 files changed, 123 insertions(+), 12 deletions(-) create mode 100644 src/app/(main)/jo/testing/page.tsx diff --git a/package-lock.json b/package-lock.json index 6cd9253..69fa9aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -64,7 +64,8 @@ "reactstrap": "^9.2.2", "styled-components": "^6.1.8", "sweetalert2": "^11.10.3", - "xlsx": "^0.18.5" + "xlsx": "^0.18.5", + "xlsx-js-style": "^1.2.0" }, "devDependencies": { "@types/lodash": "^4.14.202", @@ -6320,6 +6321,15 @@ "node": ">=0.8.x" } }, + "node_modules/exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -6381,6 +6391,12 @@ "reusify": "^1.0.4" } }, + "node_modules/fflate": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.3.11.tgz", + "integrity": "sha512-Rr5QlUeGN1mbOHlaqcSYMKVpPbgLy0AWT/W0EHxA6NGI12yO1jpoui2zBBvU2G824ltM6Ut8BFgfHSBGfkmS0A==", + "license": "MIT" + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -8938,6 +8954,18 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", "integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==" }, + "node_modules/printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "license": "Apache-2.0", + "bin": { + "printj": "bin/printj.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -11788,6 +11816,74 @@ "node": ">=0.8" } }, + "node_modules/xlsx-js-style": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/xlsx-js-style/-/xlsx-js-style-1.2.0.tgz", + "integrity": "sha512-DDT4FXFSWfT4DXMSok/m3TvmP1gvO3dn0Eu/c+eXHW5Kzmp7IczNkxg/iEPnImbG9X0Vb8QhROda5eatSR/97Q==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.2.0", + "cfb": "^1.1.4", + "codepage": "~1.14.0", + "commander": "~2.17.1", + "crc-32": "~1.2.0", + "exit-on-epipe": "~1.0.1", + "fflate": "^0.3.8", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xlsx-js-style/node_modules/adler-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", + "integrity": "sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ==", + "license": "Apache-2.0", + "dependencies": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + }, + "bin": { + "adler32": "bin/adler32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xlsx-js-style/node_modules/codepage": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz", + "integrity": "sha512-iz3zJLhlrg37/gYRWgEPkaFTtzmnEv1h+r7NgZum2lFElYQPi0/5bnmuDfODHxfp0INEfnRqyfyeIJDbb7ahRw==", + "license": "Apache-2.0", + "dependencies": { + "commander": "~2.14.1", + "exit-on-epipe": "~1.0.1" + }, + "bin": { + "codepage": "bin/codepage.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xlsx-js-style/node_modules/codepage/node_modules/commander": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", + "license": "MIT" + }, + "node_modules/xlsx-js-style/node_modules/commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "license": "MIT" + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/src/app/(main)/jo/testing/page.tsx b/src/app/(main)/jo/testing/page.tsx new file mode 100644 index 0000000..52a2c13 --- /dev/null +++ b/src/app/(main)/jo/testing/page.tsx @@ -0,0 +1,21 @@ +"use client"; + +import Box from "@mui/material/Box"; +import Typography from "@mui/material/Typography"; + +/** + * Dev / R&D sandbox for Job Order. Not listed in NavigationContent — open via /jo/testing only. + * Later: call APIs with clientAuthFetch + NEXT_PUBLIC_API_URL like src/app/(main)/testing/page.tsx. + */ +export default function JoTestingPage() { + return ( + + + Job order testing + + + Empty page. This route is intentionally omitted from the navigation bar. + + + ); +} diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index 45b6396..ecb7571 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -54,7 +54,7 @@ export default async function MainLayout({ > - {/* */} + {children} diff --git a/src/components/AppBar/AppBar.tsx b/src/components/AppBar/AppBar.tsx index cb70811..a870dc3 100644 --- a/src/components/AppBar/AppBar.tsx +++ b/src/components/AppBar/AppBar.tsx @@ -6,8 +6,6 @@ import Box from "@mui/material/Box"; import NavigationToggle from "./NavigationToggle"; import { I18nProvider } from "@/i18n"; import { Typography } from "@mui/material"; -import Breadcrumb from "@/components/Breadcrumb"; -import { NAVIGATION_CONTENT_WIDTH } from "@/config/uiConfig"; export interface AppBarProps { avatarImageSrc?: string; @@ -20,12 +18,6 @@ const AppBar: React.FC = ({ avatarImageSrc, profileName }) => { - - - - - - ( } export const defaultPagingController: { pageNum: number; pageSize: number } = { pageNum: 1, - pageSize: 10, + pageSize: 100, }; export type defaultSetPagingController = Dispatch< @@ -200,7 +200,7 @@ function SearchResults({ }: Props) { const { t } = useTranslation(); const [page, setPage] = React.useState(0); - const [rowsPerPage, setRowsPerPage] = React.useState(10); + const [rowsPerPage, setRowsPerPage] = React.useState(100); /// this const handleChangePage: TablePaginationProps["onPageChange"] = ( diff --git a/src/routes.ts b/src/routes.ts index 8fdb887..b85b0b8 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -2,6 +2,7 @@ export const PRIVATE_ROUTES = [ "/analytics", "/dashboard", "/testing", + "/jo/testing", "/ps", "/bagPrint", "/report",