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",