added branding as metadata, fixed problem where query string filter wasn't seeding properly,

This commit is contained in:
Tim Chamberlain
2022-09-06 18:15:48 -05:00
parent e376f4ae72
commit 5a5fa1f148
13 changed files with 180 additions and 187 deletions

137
package-lock.json generated
View File

@ -17,7 +17,7 @@
"@fullcalendar/interaction": "5.10.0", "@fullcalendar/interaction": "5.10.0",
"@fullcalendar/react": "5.10.0", "@fullcalendar/react": "5.10.0",
"@fullcalendar/timegrid": "5.10.0", "@fullcalendar/timegrid": "5.10.0",
"@kingsrook/qqq-frontend-core": "file:.yalc/@kingsrook/qqq-frontend-core", "@kingsrook/qqq-frontend-core": "1.0.15",
"@mui/icons-material": "5.4.1", "@mui/icons-material": "5.4.1",
"@mui/material": "5.4.1", "@mui/material": "5.4.1",
"@mui/styled-engine": "5.4.1", "@mui/styled-engine": "5.4.1",
@ -25,6 +25,7 @@
"@mui/x-data-grid-pro": "5.13.0", "@mui/x-data-grid-pro": "5.13.0",
"@mui/x-license-pro": "5.12.3", "@mui/x-license-pro": "5.12.3",
"@react-jvectormap/core": "1.0.1", "@react-jvectormap/core": "1.0.1",
"@react-jvectormap/unitedstates": "1.0.1",
"@react-jvectormap/world": "1.0.0", "@react-jvectormap/world": "1.0.0",
"@testing-library/jest-dom": "5.16.2", "@testing-library/jest-dom": "5.16.2",
"@testing-library/react": "12.1.2", "@testing-library/react": "12.1.2",
@ -35,8 +36,7 @@
"@types/react-dom": "17.0.11", "@types/react-dom": "17.0.11",
"chart.js": "3.4.1", "chart.js": "3.4.1",
"chroma-js": "2.4.2", "chroma-js": "2.4.2",
"date-format": "^4.0.13", "datejs": "1.0.0-rc3",
"datejs": "^1.0.0-rc3",
"dropzone": "5.9.2", "dropzone": "5.9.2",
"flatpickr": "4.6.9", "flatpickr": "4.6.9",
"form-data": "4.0.0", "form-data": "4.0.0",
@ -82,13 +82,16 @@
} }
}, },
".yalc/@kingsrook/qqq-frontend-core": { ".yalc/@kingsrook/qqq-frontend-core": {
"version": "1.0.6", "version": "1.0.15",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"axios": "0.27.2", "axios": "0.27.2",
"form-data": "4.0.0" "form-data": "4.0.0"
} }
}, },
".yalc/@kingsrook/qqq-frontend-core@1.0.15": {
"extraneous": true
},
"node_modules/@ampproject/remapping": { "node_modules/@ampproject/remapping": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
@ -3708,6 +3711,11 @@
"@react-jvectormap/jquery-mousewheel": "^1.0.1" "@react-jvectormap/jquery-mousewheel": "^1.0.1"
} }
}, },
"node_modules/@react-jvectormap/unitedstates": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@react-jvectormap/unitedstates/-/unitedstates-1.0.1.tgz",
"integrity": "sha512-UEk62jQSCyLtOHS4RZc8qZwsxWx2628CgTD+DaNAA4SSBpGFqEHrLwBdQc7HKAr0c1hZ32PK74LPtFj2sbC58w=="
},
"node_modules/@react-jvectormap/world": { "node_modules/@react-jvectormap/world": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@react-jvectormap/world/-/world-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-jvectormap/world/-/world-1.0.0.tgz",
@ -7458,14 +7466,6 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/date-format": {
"version": "4.0.13",
"resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz",
"integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==",
"engines": {
"node": ">=4.0"
}
},
"node_modules/datejs": { "node_modules/datejs": {
"version": "1.0.0-rc3", "version": "1.0.0-rc3",
"resolved": "https://registry.npmjs.org/datejs/-/datejs-1.0.0-rc3.tgz", "resolved": "https://registry.npmjs.org/datejs/-/datejs-1.0.0-rc3.tgz",
@ -17290,6 +17290,7 @@
"version": "4.7.4", "version": "4.7.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
"dev": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
@ -19884,14 +19885,12 @@
"@csstools/postcss-unset-value": { "@csstools/postcss-unset-value": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz",
"integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g=="
"requires": {}
}, },
"@csstools/selector-specificity": { "@csstools/selector-specificity": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz",
"integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg=="
"requires": {}
}, },
"@cypress/request": { "@cypress/request": {
"version": "2.88.10", "version": "2.88.10",
@ -20671,8 +20670,7 @@
"@mui/types": { "@mui/types": {
"version": "7.1.4", "version": "7.1.4",
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.4.tgz", "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.4.tgz",
"integrity": "sha512-uveM3byMbthO+6tXZ1n2zm0W3uJCQYtwt/v5zV5I77v2v18u0ITkb8xwhsDD2i3V2Kye7SaNR6FFJ6lMuY/WqQ==", "integrity": "sha512-uveM3byMbthO+6tXZ1n2zm0W3uJCQYtwt/v5zV5I77v2v18u0ITkb8xwhsDD2i3V2Kye7SaNR6FFJ6lMuY/WqQ=="
"requires": {}
}, },
"@mui/utils": { "@mui/utils": {
"version": "5.9.0", "version": "5.9.0",
@ -20866,6 +20864,11 @@
"@react-jvectormap/jquery-mousewheel": "^1.0.1" "@react-jvectormap/jquery-mousewheel": "^1.0.1"
} }
}, },
"@react-jvectormap/unitedstates": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@react-jvectormap/unitedstates/-/unitedstates-1.0.1.tgz",
"integrity": "sha512-UEk62jQSCyLtOHS4RZc8qZwsxWx2628CgTD+DaNAA4SSBpGFqEHrLwBdQc7HKAr0c1hZ32PK74LPtFj2sbC58w=="
},
"@react-jvectormap/world": { "@react-jvectormap/world": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@react-jvectormap/world/-/world-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@react-jvectormap/world/-/world-1.0.0.tgz",
@ -21956,14 +21959,12 @@
"acorn-import-assertions": { "acorn-import-assertions": {
"version": "1.8.0", "version": "1.8.0",
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw=="
"requires": {}
}, },
"acorn-jsx": { "acorn-jsx": {
"version": "5.3.2", "version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
"requires": {}
}, },
"acorn-node": { "acorn-node": {
"version": "1.8.2", "version": "1.8.2",
@ -22059,8 +22060,7 @@
"ajv-keywords": { "ajv-keywords": {
"version": "3.5.2", "version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
"requires": {}
}, },
"ansi-colors": { "ansi-colors": {
"version": "4.1.3", "version": "4.1.3",
@ -22385,8 +22385,7 @@
"babel-plugin-named-asset-import": { "babel-plugin-named-asset-import": {
"version": "0.3.8", "version": "0.3.8",
"resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz",
"integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q=="
"requires": {}
}, },
"babel-plugin-polyfill-corejs2": { "babel-plugin-polyfill-corejs2": {
"version": "0.3.1", "version": "0.3.1",
@ -23233,8 +23232,7 @@
"css-declaration-sorter": { "css-declaration-sorter": {
"version": "6.3.0", "version": "6.3.0",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz",
"integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og=="
"requires": {}
}, },
"css-has-pseudo": { "css-has-pseudo": {
"version": "3.0.4", "version": "3.0.4",
@ -23326,8 +23324,7 @@
"css-prefers-color-scheme": { "css-prefers-color-scheme": {
"version": "6.0.3", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz",
"integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA=="
"requires": {}
}, },
"css-select": { "css-select": {
"version": "4.3.0", "version": "4.3.0",
@ -23446,8 +23443,7 @@
"cssnano-utils": { "cssnano-utils": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
"integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA=="
"requires": {}
}, },
"csso": { "csso": {
"version": "4.2.0", "version": "4.2.0",
@ -23665,11 +23661,6 @@
"whatwg-url": "^8.0.0" "whatwg-url": "^8.0.0"
} }
}, },
"date-format": {
"version": "4.0.13",
"resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz",
"integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ=="
},
"datejs": { "datejs": {
"version": "1.0.0-rc3", "version": "1.0.0-rc3",
"resolved": "https://registry.npmjs.org/datejs/-/datejs-1.0.0-rc3.tgz", "resolved": "https://registry.npmjs.org/datejs/-/datejs-1.0.0-rc3.tgz",
@ -24496,8 +24487,7 @@
"eslint-plugin-react-hooks": { "eslint-plugin-react-hooks": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz",
"integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA=="
"requires": {}
}, },
"eslint-plugin-testing-library": { "eslint-plugin-testing-library": {
"version": "5.5.1", "version": "5.5.1",
@ -25738,8 +25728,7 @@
"icss-utils": { "icss-utils": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
"integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA=="
"requires": {}
}, },
"idb": { "idb": {
"version": "6.1.5", "version": "6.1.5",
@ -26518,8 +26507,7 @@
"jest-pnp-resolver": { "jest-pnp-resolver": {
"version": "1.2.2", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
"integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w=="
"requires": {}
}, },
"jest-regex-util": { "jest-regex-util": {
"version": "27.5.1", "version": "27.5.1",
@ -28076,8 +28064,7 @@
"postcss-browser-comments": { "postcss-browser-comments": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz",
"integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg=="
"requires": {}
}, },
"postcss-calc": { "postcss-calc": {
"version": "8.2.4", "version": "8.2.4",
@ -28175,26 +28162,22 @@
"postcss-discard-comments": { "postcss-discard-comments": {
"version": "5.1.2", "version": "5.1.2",
"resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
"integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ=="
"requires": {}
}, },
"postcss-discard-duplicates": { "postcss-discard-duplicates": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
"integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw=="
"requires": {}
}, },
"postcss-discard-empty": { "postcss-discard-empty": {
"version": "5.1.1", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
"integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A=="
"requires": {}
}, },
"postcss-discard-overridden": { "postcss-discard-overridden": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
"integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw=="
"requires": {}
}, },
"postcss-double-position-gradients": { "postcss-double-position-gradients": {
"version": "3.1.2", "version": "3.1.2",
@ -28216,8 +28199,7 @@
"postcss-flexbugs-fixes": { "postcss-flexbugs-fixes": {
"version": "5.0.2", "version": "5.0.2",
"resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz",
"integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ=="
"requires": {}
}, },
"postcss-focus-visible": { "postcss-focus-visible": {
"version": "6.0.4", "version": "6.0.4",
@ -28238,14 +28220,12 @@
"postcss-font-variant": { "postcss-font-variant": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
"integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA=="
"requires": {}
}, },
"postcss-gap-properties": { "postcss-gap-properties": {
"version": "3.0.5", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz",
"integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg=="
"requires": {}
}, },
"postcss-image-set-function": { "postcss-image-set-function": {
"version": "4.0.7", "version": "4.0.7",
@ -28268,8 +28248,7 @@
"postcss-initial": { "postcss-initial": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz",
"integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ=="
"requires": {}
}, },
"postcss-js": { "postcss-js": {
"version": "4.0.0", "version": "4.0.0",
@ -28324,14 +28303,12 @@
"postcss-logical": { "postcss-logical": {
"version": "5.0.4", "version": "5.0.4",
"resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz",
"integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g=="
"requires": {}
}, },
"postcss-media-minmax": { "postcss-media-minmax": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz",
"integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ=="
"requires": {}
}, },
"postcss-merge-longhand": { "postcss-merge-longhand": {
"version": "5.1.6", "version": "5.1.6",
@ -28392,8 +28369,7 @@
"postcss-modules-extract-imports": { "postcss-modules-extract-imports": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw=="
"requires": {}
}, },
"postcss-modules-local-by-default": { "postcss-modules-local-by-default": {
"version": "4.0.0", "version": "4.0.0",
@ -28451,8 +28427,7 @@
"postcss-normalize-charset": { "postcss-normalize-charset": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
"integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg=="
"requires": {}
}, },
"postcss-normalize-display-values": { "postcss-normalize-display-values": {
"version": "5.1.0", "version": "5.1.0",
@ -28545,8 +28520,7 @@
"postcss-page-break": { "postcss-page-break": {
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
"integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ=="
"requires": {}
}, },
"postcss-place": { "postcss-place": {
"version": "7.0.5", "version": "7.0.5",
@ -28638,8 +28612,7 @@
"postcss-replace-overflow-wrap": { "postcss-replace-overflow-wrap": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
"integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw=="
"requires": {}
}, },
"postcss-selector-not": { "postcss-selector-not": {
"version": "6.0.1", "version": "6.0.1",
@ -29297,8 +29270,7 @@
"react-table": { "react-table": {
"version": "7.7.0", "version": "7.7.0",
"resolved": "https://registry.npmjs.org/react-table/-/react-table-7.7.0.tgz", "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.7.0.tgz",
"integrity": "sha512-jBlj70iBwOTvvImsU9t01LjFjy4sXEtclBovl3mTiqjz23Reu0DKnRza4zlLtOPACx6j2/7MrQIthIK1Wi+LIA==", "integrity": "sha512-jBlj70iBwOTvvImsU9t01LjFjy4sXEtclBovl3mTiqjz23Reu0DKnRza4zlLtOPACx6j2/7MrQIthIK1Wi+LIA=="
"requires": {}
}, },
"react-transition-group": { "react-transition-group": {
"version": "4.4.2", "version": "4.4.2",
@ -30207,8 +30179,7 @@
"style-loader": { "style-loader": {
"version": "3.3.1", "version": "3.3.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ=="
"requires": {}
}, },
"style-to-js": { "style-to-js": {
"version": "1.1.0", "version": "1.1.0",
@ -30736,7 +30707,8 @@
"typescript": { "typescript": {
"version": "4.7.4", "version": "4.7.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
"dev": true
}, },
"unbox-primitive": { "unbox-primitive": {
"version": "1.0.2", "version": "1.0.2",
@ -30848,8 +30820,7 @@
"use-memo-one": { "use-memo-one": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz", "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz",
"integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==", "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ=="
"requires": {}
}, },
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",
@ -31140,8 +31111,7 @@
"ws": { "ws": {
"version": "8.8.0", "version": "8.8.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz",
"integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ=="
"requires": {}
} }
} }
}, },
@ -31542,8 +31512,7 @@
"ws": { "ws": {
"version": "7.5.8", "version": "7.5.8",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz",
"integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw=="
"requires": {}
}, },
"xml-name-validator": { "xml-name-validator": {
"version": "3.0.0", "version": "3.0.0",

View File

@ -13,7 +13,7 @@
"@fullcalendar/interaction": "5.10.0", "@fullcalendar/interaction": "5.10.0",
"@fullcalendar/react": "5.10.0", "@fullcalendar/react": "5.10.0",
"@fullcalendar/timegrid": "5.10.0", "@fullcalendar/timegrid": "5.10.0",
"@kingsrook/qqq-frontend-core": "1.0.14", "@kingsrook/qqq-frontend-core": "1.0.15",
"@mui/icons-material": "5.4.1", "@mui/icons-material": "5.4.1",
"@mui/material": "5.4.1", "@mui/material": "5.4.1",
"@mui/styled-engine": "5.4.1", "@mui/styled-engine": "5.4.1",

BIN
public/icon-blue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -16,10 +16,10 @@ Coded by www.creative-tim.com
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.png" /> <link id="favicon" rel="shortcut icon" href="%PUBLIC_URL%/" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#04aaef" /> <meta name="theme-color" content="#04aaef" />
<link rel="apple-touch-icon" sizes="76x76" href="%PUBLIC_URL%/apple-icon.png" /> <link id="appleIcon" rel="apple-touch-icon" sizes="76x76" href="%PUBLIC_URL%/" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>Nutrifresh One</title> <title>Nutrifresh One</title>
<link <link

BIN
public/kr-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
public/kr-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
public/nf-icon-blue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -22,6 +22,7 @@
import {useAuth0} from "@auth0/auth0-react"; import {useAuth0} from "@auth0/auth0-react";
import {QAppNodeType} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QAppNodeType"; import {QAppNodeType} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QAppNodeType";
import {QAppTreeNode} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QAppTreeNode"; import {QAppTreeNode} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QAppTreeNode";
import {QBrandingMetaData} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QBrandingMetaData";
import {QInstance} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QInstance"; import {QInstance} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QInstance";
import CssBaseline from "@mui/material/CssBaseline"; import CssBaseline from "@mui/material/CssBaseline";
import Icon from "@mui/material/Icon"; import Icon from "@mui/material/Icon";
@ -38,8 +39,7 @@ import Sidenav from "qqq/components/Sidenav";
import Configurator from "qqq/components/Temporary/Configurator"; import Configurator from "qqq/components/Temporary/Configurator";
import MDAvatar from "qqq/components/Temporary/MDAvatar"; import MDAvatar from "qqq/components/Temporary/MDAvatar";
import MDBox from "qqq/components/Temporary/MDBox"; import MDBox from "qqq/components/Temporary/MDBox";
import theme from "qqq/components/Temporary/Theme" import theme from "qqq/components/Temporary/Theme";
import Logo from "qqq/images/logo-blue.png";
import AppHome from "qqq/pages/app-home"; import AppHome from "qqq/pages/app-home";
import CarrierPerformance from "qqq/pages/dashboards/CarrierPerformance"; import CarrierPerformance from "qqq/pages/dashboards/CarrierPerformance";
import Overview from "qqq/pages/dashboards/Overview"; import Overview from "qqq/pages/dashboards/Overview";
@ -50,6 +50,8 @@ import EntityView from "qqq/pages/entity-view";
import ProcessRun from "qqq/pages/process-run"; import ProcessRun from "qqq/pages/process-run";
import QClient from "qqq/utils/QClient"; import QClient from "qqq/utils/QClient";
import QProcessUtils from "qqq/utils/QProcessUtils"; import QProcessUtils from "qqq/utils/QProcessUtils";
import BlueIcon from "../public/nf-icon-blue.png";
import BlueLogo from "../public/nf-logo-blue.png";
/////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////
// define the parts of the nav that are static - before the qqq tables etc get dynamic added // // define the parts of the nav that are static - before the qqq tables etc get dynamic added //
@ -87,6 +89,7 @@ LicenseInfo.setLicenseKey(process.env.REACT_APP_MATERIAL_UI_LICENSE_KEY);
export default function App() export default function App()
{ {
let logo, icon;
const [, setCookie] = useCookies([SESSION_ID_COOKIE_NAME]); const [, setCookie] = useCookies([SESSION_ID_COOKIE_NAME]);
const { const {
user, getAccessTokenSilently, getIdTokenClaims, logout, loginWithRedirect, user, getAccessTokenSilently, getIdTokenClaims, logout, loginWithRedirect,
@ -94,6 +97,7 @@ export default function App()
const [loadingToken, setLoadingToken] = useState(false); const [loadingToken, setLoadingToken] = useState(false);
const [isFullyAuthenticated, setIsFullyAuthenticated] = useState(false); const [isFullyAuthenticated, setIsFullyAuthenticated] = useState(false);
const [profileRoutes, setProfileRoutes] = useState({}); const [profileRoutes, setProfileRoutes] = useState({});
const [branding, setBranding] = useState({} as QBrandingMetaData);
useEffect(() => useEffect(() =>
{ {
@ -122,13 +126,7 @@ export default function App()
}, [loadingToken]); }, [loadingToken]);
const [controller, dispatch] = useMaterialUIController(); const [controller, dispatch] = useMaterialUIController();
const { const {miniSidenav, direction, layout, openConfigurator, sidenavColor} = controller;
miniSidenav,
direction,
layout,
openConfigurator,
sidenavColor,
} = controller;
const [onMouseEnter, setOnMouseEnter] = useState(false); const [onMouseEnter, setOnMouseEnter] = useState(false);
const {pathname} = useLocation(); const {pathname} = useLocation();
@ -284,9 +282,21 @@ export default function App()
try try
{ {
const metaData = await QClient.getInstance().loadMetaData(); const metaData = await QClient.getInstance().loadMetaData();
setBranding(metaData.branding);
const favicon = document.querySelector("link[rel~='icon']") as HTMLLinkElement;
if(favicon)
{
favicon.href = metaData.branding.icon;
}
const appleIcon = document.querySelector("link[rel~='apple-touch-icon']") as HTMLLinkElement;
if(appleIcon)
{
appleIcon.href = metaData.branding.icon
}
let profileRoutes = {}; let profileRoutes = {};
const gravatarBase = "http://www.gravatar.com/avatar/"; const gravatarBase = "https://www.gravatar.com/avatar/";
const hash = Md5.hashStr(user.email); const hash = Md5.hashStr(user.email);
const profilePicture = `${gravatarBase}${hash}`; const profilePicture = `${gravatarBase}${hash}`;
profileRoutes = { profileRoutes = {
@ -434,7 +444,9 @@ export default function App()
<> <>
<Sidenav <Sidenav
color={sidenavColor} color={sidenavColor}
brand={Logo} icon={branding.icon}
logo={branding.logo}
companyName={branding.companyName}
routes={sideNavRoutes} routes={sideNavRoutes}
onMouseEnter={handleOnMouseEnter} onMouseEnter={handleOnMouseEnter}
onMouseLeave={handleOnMouseLeave} onMouseLeave={handleOnMouseLeave}

View File

@ -35,10 +35,12 @@ import SidenavItem from "qqq/components/Sidenav/SidenavItem";
import SidenavList from "qqq/components/Sidenav/SidenavList"; import SidenavList from "qqq/components/Sidenav/SidenavList";
import SidenavRoot from "qqq/components/Sidenav/SidenavRoot"; import SidenavRoot from "qqq/components/Sidenav/SidenavRoot";
interface Props { interface Props
{
color?: "primary" | "secondary" | "info" | "success" | "warning" | "error" | "dark"; color?: "primary" | "secondary" | "info" | "success" | "warning" | "error" | "dark";
brand?: string; icon?: string;
brandName?: string; logo?: string;
companyName?: string;
routes: { routes: {
[key: string]: [key: string]:
| ReactNode | ReactNode
@ -57,10 +59,11 @@ interface Props {
}[]; }[];
}[]; }[];
}[]; }[];
[key: string]: any; [key: string]: any;
} }
function Sidenav({color, brand, brandName, routes, ...rest}: Props): JSX.Element function Sidenav({color, icon, logo, companyName, routes, ...rest}: Props): JSX.Element
{ {
const [openCollapse, setOpenCollapse] = useState<boolean | string>(false); const [openCollapse, setOpenCollapse] = useState<boolean | string>(false);
const [openNestedCollapse, setOpenNestedCollapse] = useState<boolean | string>(false); const [openNestedCollapse, setOpenNestedCollapse] = useState<boolean | string>(false);
@ -314,10 +317,11 @@ function Sidenav({color, brand, brandName, routes, ...rest}: Props): JSX.Element
</MDTypography> </MDTypography>
</MDBox> </MDBox>
<MDBox component={NavLink} to="/" display="flex" alignItems="center"> <MDBox component={NavLink} to="/" display="flex" alignItems="center">
{brand && <MDBox component="img" src={brand} alt="Brand" width="100%" />} {!miniSidenav && logo && <MDBox component="img" src={logo} alt="Logo" width="100%" />}
{brandName && <MDBox width={!brandName && "100%"} sx={(theme: any) => sidenavLogoLabel(theme, {miniSidenav})}> {miniSidenav && icon && <MDBox component="img" src={icon} alt="Icon" width="160%" />}
{!miniSidenav && companyName && <MDBox width={!companyName && "100%"} sx={(theme: any) => sidenavLogoLabel(theme, {miniSidenav})}>
<MDTypography component="h6" variant="button" fontWeight="medium" color={textColor}> <MDTypography component="h6" variant="button" fontWeight="medium" color={textColor}>
{brandName} {companyName}
</MDTypography> </MDTypography>
</MDBox> </MDBox>
} }
@ -338,8 +342,9 @@ function Sidenav({color, brand, brandName, routes, ...rest}: Props): JSX.Element
// Declaring default props for Sidenav // Declaring default props for Sidenav
Sidenav.defaultProps = { Sidenav.defaultProps = {
color: "info", color: "info",
brand: "", icon: "",
brandName: "", logo: "",
companyName: "",
}; };
export default Sidenav; export default Sidenav;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

View File

@ -59,14 +59,15 @@ interface Props
** Get the default filter to use on the page - either from query string, or ** Get the default filter to use on the page - either from query string, or
** local storage, or a default (empty). ** local storage, or a default (empty).
*******************************************************************************/ *******************************************************************************/
function getDefaultFilter(searchParams: URLSearchParams, filterLocalStorageKey: string): GridFilterModel function getDefaultFilter(tableMetaData: QTableMetaData, searchParams: URLSearchParams, filterLocalStorageKey: string): GridFilterModel
{ {
if (tableMetaData.fields !== undefined)
{
if (searchParams.has("filter")) if (searchParams.has("filter"))
{ {
try try
{ {
const qQueryFilter = JSON.parse(searchParams.get("filter")) as QQueryFilter; const qQueryFilter = JSON.parse(searchParams.get("filter")) as QQueryFilter;
console.log(`Got a filter from the query string: ${JSON.stringify(qQueryFilter)}`);
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
// translate from a qqq-style filter to one that the grid wants // // translate from a qqq-style filter to one that the grid wants //
@ -75,9 +76,10 @@ function getDefaultFilter(searchParams: URLSearchParams, filterLocalStorageKey:
let id = 1; let id = 1;
qQueryFilter.criteria.forEach((criteria) => qQueryFilter.criteria.forEach((criteria) =>
{ {
const fieldType = tableMetaData.fields.get(criteria.fieldName).type;
defaultFilter.items.push({ defaultFilter.items.push({
columnField: criteria.fieldName, columnField: criteria.fieldName,
operatorValue: QFilterUtils.qqqCriteriaOperatorToGrid(criteria.operator), operatorValue: QFilterUtils.qqqCriteriaOperatorToGrid(criteria.operator, fieldType),
value: QFilterUtils.qqqCriteriaValuesToGrid(criteria.operator, criteria.values), value: QFilterUtils.qqqCriteriaValuesToGrid(criteria.operator, criteria.values),
id: id++, // not sure what this id is!! id: id++, // not sure what this id is!!
}); });
@ -97,6 +99,7 @@ function getDefaultFilter(searchParams: URLSearchParams, filterLocalStorageKey:
console.log(`Got default from LS: ${JSON.stringify(defaultFilter)}`); console.log(`Got default from LS: ${JSON.stringify(defaultFilter)}`);
return (defaultFilter); return (defaultFilter);
} }
}
return ({items: []}); return ({items: []});
} }
@ -116,7 +119,6 @@ function EntityList({table}: Props): JSX.Element
const filterLocalStorageKey = `${FILTER_LOCAL_STORAGE_KEY_ROOT}.${tableName}`; const filterLocalStorageKey = `${FILTER_LOCAL_STORAGE_KEY_ROOT}.${tableName}`;
let defaultSort = [] as GridSortItem[]; let defaultSort = [] as GridSortItem[];
let defaultVisibility = {}; let defaultVisibility = {};
const _defaultFilter = getDefaultFilter(searchParams, filterLocalStorageKey);
if (localStorage.getItem(sortLocalStorageKey)) if (localStorage.getItem(sortLocalStorageKey))
{ {
@ -127,7 +129,7 @@ function EntityList({table}: Props): JSX.Element
defaultVisibility = JSON.parse(localStorage.getItem(columnVisibilityLocalStorageKey)); defaultVisibility = JSON.parse(localStorage.getItem(columnVisibilityLocalStorageKey));
} }
const [filterModel, setFilterModel] = useState(_defaultFilter); const [filterModel, setFilterModel] = useState({items: []} as GridFilterModel);
const [columnSortModel, setColumnSortModel] = useState(defaultSort); const [columnSortModel, setColumnSortModel] = useState(defaultSort);
const [columnVisibilityModel, setColumnVisibilityModel] = useState(defaultVisibility); const [columnVisibilityModel, setColumnVisibilityModel] = useState(defaultVisibility);
@ -137,11 +139,11 @@ function EntityList({table}: Props): JSX.Element
// when that happens put the default back - it needs to be in state // // when that happens put the default back - it needs to be in state //
// const [defaultFilter1] = useState(defaultFilter); // // const [defaultFilter1] = useState(defaultFilter); //
/////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////
const [defaultFilter] = useState(_defaultFilter); const [defaultFilter] = useState({items: []} as GridFilterModel);
const [filterChangeHasOccurred, setFilterChangeHasOccurred] = useState(false);
const [tableState, setTableState] = useState(""); const [tableState, setTableState] = useState("");
const [tableMetaData, setTableMetaData] = useState(null as QTableMetaData); const [tableMetaData, setTableMetaData] = useState(null as QTableMetaData);
const [defaultFilterLoaded, setDefaultFilterLoaded] = useState(false);
const [, setFiltersMenu] = useState(null); const [, setFiltersMenu] = useState(null);
const [actionsMenu, setActionsMenu] = useState(null); const [actionsMenu, setActionsMenu] = useState(null);
const [tableProcesses, setTableProcesses] = useState([] as QProcessMetaData[]); const [tableProcesses, setTableProcesses] = useState([] as QProcessMetaData[]);
@ -194,6 +196,19 @@ function EntityList({table}: Props): JSX.Element
(async () => (async () =>
{ {
const tableMetaData = await qController.loadTableMetaData(tableName); const tableMetaData = await qController.loadTableMetaData(tableName);
////////////////////////////////////////////////////////////////////////////////////////////////
// we need the table meta data to look up the default filter (if it comes from query string), //
// because we need to know field types to translate qqq filter to material filter //
// because we need to know field types to translate qqq filter to material filter //
// return here ane wait for the next 'turn' to allow doing the actual query //
////////////////////////////////////////////////////////////////////////////////////////////////
if (!defaultFilterLoaded)
{
setDefaultFilterLoaded(true);
setFilterModel(getDefaultFilter(tableMetaData, searchParams, filterLocalStorageKey));
return;
}
setTableMetaData(tableMetaData); setTableMetaData(tableMetaData);
if (columnSortModel.length === 0) if (columnSortModel.length === 0)
{ {
@ -415,13 +430,6 @@ function EntityList({table}: Props): JSX.Element
}; };
const handleFilterChange = (filterModel: GridFilterModel) => const handleFilterChange = (filterModel: GridFilterModel) =>
{
if (!filterChangeHasOccurred)
{
setFilterModel(defaultFilter);
setFilterChangeHasOccurred(true);
}
else
{ {
setFilterModel(filterModel); setFilterModel(filterModel);
if (filterLocalStorageKey) if (filterLocalStorageKey)
@ -431,7 +439,6 @@ function EntityList({table}: Props): JSX.Element
JSON.stringify(filterModel), JSON.stringify(filterModel),
); );
} }
}
}; };
const handleSortChange = (gridSort: GridSortModel) => const handleSortChange = (gridSort: GridSortModel) =>

View File

@ -64,7 +64,7 @@ class QFilterUtils
return QCriteriaOperator.IS_BLANK; return QCriteriaOperator.IS_BLANK;
case "isNotEmpty": case "isNotEmpty":
return QCriteriaOperator.IS_NOT_BLANK; return QCriteriaOperator.IS_NOT_BLANK;
case "isAny": case "isAnyOf":
return QCriteriaOperator.IN; return QCriteriaOperator.IN;
case "isNone": // todo - verify - not seen in UI case "isNone": // todo - verify - not seen in UI
return QCriteriaOperator.NOT_IN; return QCriteriaOperator.NOT_IN;
@ -118,7 +118,7 @@ class QFilterUtils
return ("isNot"); return ("isNot");
} }
case QCriteriaOperator.IN: case QCriteriaOperator.IN:
return ("isAny"); return ("isAnyOf");
case QCriteriaOperator.NOT_IN: case QCriteriaOperator.NOT_IN:
return ("isNone"); // todo verify - not seen in UI return ("isNone"); // todo verify - not seen in UI
case QCriteriaOperator.STARTS_WITH: case QCriteriaOperator.STARTS_WITH: