diff --git a/.github/workflows/deploy-to.openshift-dev-and-test.yml b/.github/workflows/deploy-to.openshift-dev-and-test.yml index bfc0b2409..f0038f6ee 100644 --- a/.github/workflows/deploy-to.openshift-dev-and-test.yml +++ b/.github/workflows/deploy-to.openshift-dev-and-test.yml @@ -209,99 +209,99 @@ jobs: with: target: 'https://${{ env.HOST_ROUTE }}' -# deploy-test: -# name: Deploy to TEST -# needs: build-and-deploy-dev -# runs-on: ubuntu-22.04 -# environment: test -# -# outputs: -# ROUTE: ${{ steps.deploy-and-expose.outputs.route }} -# SELECTOR: ${{ steps.deploy-and-expose.outputs.selector }} -# -# steps: -# - name: Check for required secrets -# uses: actions/github-script@v6 -# with: -# script: | -# const secrets = { -# OPENSHIFT_SERVER: `${{ secrets.OPENSHIFT_SERVER }}`, -# OPENSHIFT_TOKEN: `${{ secrets.OPENSHIFT_TOKEN }}`, -# }; -# -# const GHCR = "ghcr.io"; -# if (`${{ env.IMAGE_REGISTRY }}`.startsWith(GHCR)) { -# core.info(`Image registry is ${GHCR} - no registry password required`); -# } -# else { -# core.info("A registry password is required"); -# secrets["IMAGE_REGISTRY_PASSWORD"] = `${{ secrets.IMAGE_REGISTRY_PASSWORD }}`; -# } -# -# const missingSecrets = Object.entries(secrets).filter(([ name, value ]) => { -# if (value.length === 0) { -# core.error(`Secret "${name}" is not set`); -# return true; -# } -# core.info(`✔️ Secret "${name}" is set`); -# return false; -# }); -# -# if (missingSecrets.length > 0) { -# core.setFailed(`❌ At least one required secret is not set in the repository. \n` + -# "You can add it using:\n" + -# "GitHub UI: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository \n" + -# "GitHub CLI: https://cli.github.com/manual/gh_secret_set \n" + -# "Also, refer to https://github.com/redhat-actions/oc-login#getting-started-with-the-action-or-see-example"); -# } -# else { -# core.info(`✅ All the required secrets are set`); -# } -# -# - name: Check out repository -# uses: actions/checkout@v3 -# -# - name: Install oc -# uses: redhat-actions/openshift-tools-installer@v1 -# with: -# oc: 4 -# -# # https://github.com/redhat-actions/oc-login#readme -# - uses: actions/checkout@v3 -# - name: Deploy -# run: | -# set -eux -# # Login to OpenShift and select project -# oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }} -# oc project ${{ env.OPENSHIFT_NAMESPACE_TEST }} -# # Cancel any rollouts in progress -# oc rollout cancel dc/${{ env.IMAGE_NAME }} 2> /dev/null \ -# || true && echo "No rollout in progress" -# -# oc tag ${{ env.NAMESPACE }}-dev/${{ env.REPO_NAME }}-frontend-static:latest ${{ env.NAMESPACE }}-test/${{ env.REPO_NAME }}-frontend-static:latest -# oc tag ${{ env.NAMESPACE }}-dev/${{ env.REPO_NAME }}-backend-${{ env.BRANCH }}:latest ${{ env.NAMESPACE }}-test/${{ env.REPO_NAME }}-backend-${{ env.BRANCH }}:latest -# -# # Process and apply deployment template -# oc process -f tools/openshift/backend.dc.yaml -p APP_NAME=${{ env.APP_NAME }} -p REPO_NAME=${{ env.REPO_NAME }} -p BRANCH=${{ env.BRANCH }} -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_TEST }} -p TAG=${{ env.TAG }} -p MIN_REPLICAS=${{ env.MIN_REPLICAS_TEST }} -p MAX_REPLICAS=${{ env.MAX_REPLICAS_TEST }} -p MIN_CPU=${{ env.MIN_CPU }} -p MAX_CPU=${{ env.MAX_CPU }} -p MIN_MEM=${{ env.MIN_MEM }} -p MAX_MEM=${{ env.MAX_MEM }} -p HOST_ROUTE=${{ env.HOST_ROUTE }}\ -# | oc apply -f - -# -# # Process and apply deployment template -# oc process -f tools/openshift/frontend-static.dc.yaml -p APP_NAME=${{ env.APP_NAME }} -p REPO_NAME=${{ env.REPO_NAME }} -p BRANCH=${{ env.BRANCH }} -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_TEST }} -p TAG=${{ env.TAG }} -p MIN_REPLICAS=${{ env.MIN_REPLICAS_TEST }} -p MAX_REPLICAS=${{ env.MAX_REPLICAS_TEST }} -p MIN_CPU=${{ env.MIN_CPU }} -p MAX_CPU=${{ env.MAX_CPU }} -p MIN_MEM=${{ env.MIN_MEM }} -p MAX_MEM=${{ env.MAX_MEM }} -p HOST_ROUTE=${{ env.HOST_ROUTE }}\ -# | oc apply -f - -# -# curl -s https://raw.githubusercontent.com/bcgov/${{ env.REPO_NAME }}/master/tools/config/update-configmap.sh | bash /dev/stdin test ${{ env.APP_NAME }} ${{ env.NAMESPACE }} ${{ env.COMMON_NAMESPACE }} ${{ env.EDX_NAMESPACE }} ${{ env.SPLUNK_TOKEN }} -# -# # Start rollout (if necessary) and follow it -# oc rollout latest dc/${{ env.IMAGE_NAME }} 2> /dev/null \ -# || true && echo "Rollout in progress" -# -# oc rollout latest dc/${{ env.APP_NAME_FRONTEND_MASTER }} 2> /dev/null \ -# || true && echo "Rollout in progress" -# oc logs -f dc/${{ env.IMAGE_NAME }} -# # Get status, returns 0 if rollout is successful -# oc rollout status dc/${{ env.IMAGE_NAME }} -# -# - name: ZAP Scan -# uses: zaproxy/action-full-scan@v0.4.0 -# with: -# target: 'https://${{ env.HOST_ROUTE }}' + deploy-test: + name: Deploy to TEST + needs: build-and-deploy-dev + runs-on: ubuntu-22.04 + environment: test + + outputs: + ROUTE: ${{ steps.deploy-and-expose.outputs.route }} + SELECTOR: ${{ steps.deploy-and-expose.outputs.selector }} + + steps: + - name: Check for required secrets + uses: actions/github-script@v6 + with: + script: | + const secrets = { + OPENSHIFT_SERVER: `${{ secrets.OPENSHIFT_SERVER }}`, + OPENSHIFT_TOKEN: `${{ secrets.OPENSHIFT_TOKEN }}`, + }; + + const GHCR = "ghcr.io"; + if (`${{ env.IMAGE_REGISTRY }}`.startsWith(GHCR)) { + core.info(`Image registry is ${GHCR} - no registry password required`); + } + else { + core.info("A registry password is required"); + secrets["IMAGE_REGISTRY_PASSWORD"] = `${{ secrets.IMAGE_REGISTRY_PASSWORD }}`; + } + + const missingSecrets = Object.entries(secrets).filter(([ name, value ]) => { + if (value.length === 0) { + core.error(`Secret "${name}" is not set`); + return true; + } + core.info(`✔️ Secret "${name}" is set`); + return false; + }); + + if (missingSecrets.length > 0) { + core.setFailed(`❌ At least one required secret is not set in the repository. \n` + + "You can add it using:\n" + + "GitHub UI: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository \n" + + "GitHub CLI: https://cli.github.com/manual/gh_secret_set \n" + + "Also, refer to https://github.com/redhat-actions/oc-login#getting-started-with-the-action-or-see-example"); + } + else { + core.info(`✅ All the required secrets are set`); + } + + - name: Check out repository + uses: actions/checkout@v3 + + - name: Install oc + uses: redhat-actions/openshift-tools-installer@v1 + with: + oc: 4 + + # https://github.com/redhat-actions/oc-login#readme + - uses: actions/checkout@v3 + - name: Deploy + run: | + set -eux + # Login to OpenShift and select project + oc login --token=${{ env.OPENSHIFT_TOKEN }} --server=${{ env.OPENSHIFT_SERVER }} + oc project ${{ env.OPENSHIFT_NAMESPACE_TEST }} + # Cancel any rollouts in progress + oc rollout cancel dc/${{ env.IMAGE_NAME }} 2> /dev/null \ + || true && echo "No rollout in progress" + + oc tag ${{ env.NAMESPACE }}-dev/${{ env.REPO_NAME }}-frontend-static:latest ${{ env.NAMESPACE }}-test/${{ env.REPO_NAME }}-frontend-static:latest + oc tag ${{ env.NAMESPACE }}-dev/${{ env.REPO_NAME }}-backend-${{ env.BRANCH }}:latest ${{ env.NAMESPACE }}-test/${{ env.REPO_NAME }}-backend-${{ env.BRANCH }}:latest + + # Process and apply deployment template + oc process -f tools/openshift/backend.dc.yaml -p APP_NAME=${{ env.APP_NAME }} -p REPO_NAME=${{ env.REPO_NAME }} -p BRANCH=${{ env.BRANCH }} -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_TEST }} -p TAG=${{ env.TAG }} -p MIN_REPLICAS=${{ env.MIN_REPLICAS_TEST }} -p MAX_REPLICAS=${{ env.MAX_REPLICAS_TEST }} -p MIN_CPU=${{ env.MIN_CPU }} -p MAX_CPU=${{ env.MAX_CPU }} -p MIN_MEM=${{ env.MIN_MEM }} -p MAX_MEM=${{ env.MAX_MEM }} -p HOST_ROUTE=${{ env.HOST_ROUTE }}\ + | oc apply -f - + + # Process and apply deployment template + oc process -f tools/openshift/frontend-static.dc.yaml -p APP_NAME=${{ env.APP_NAME }} -p REPO_NAME=${{ env.REPO_NAME }} -p BRANCH=${{ env.BRANCH }} -p NAMESPACE=${{ env.OPENSHIFT_NAMESPACE_TEST }} -p TAG=${{ env.TAG }} -p MIN_REPLICAS=${{ env.MIN_REPLICAS_TEST }} -p MAX_REPLICAS=${{ env.MAX_REPLICAS_TEST }} -p MIN_CPU=${{ env.MIN_CPU }} -p MAX_CPU=${{ env.MAX_CPU }} -p MIN_MEM=${{ env.MIN_MEM }} -p MAX_MEM=${{ env.MAX_MEM }} -p HOST_ROUTE=${{ env.HOST_ROUTE }}\ + | oc apply -f - + + curl -s https://raw.githubusercontent.com/bcgov/${{ env.REPO_NAME }}/master/tools/config/update-configmap.sh | bash /dev/stdin test ${{ env.APP_NAME }} ${{ env.NAMESPACE }} ${{ env.COMMON_NAMESPACE }} ${{ env.EDX_NAMESPACE }} ${{ env.SPLUNK_TOKEN }} + + # Start rollout (if necessary) and follow it + oc rollout latest dc/${{ env.IMAGE_NAME }} 2> /dev/null \ + || true && echo "Rollout in progress" + + oc rollout latest dc/${{ env.APP_NAME_FRONTEND_MASTER }} 2> /dev/null \ + || true && echo "Rollout in progress" + oc logs -f dc/${{ env.IMAGE_NAME }} + # Get status, returns 0 if rollout is successful + oc rollout status dc/${{ env.IMAGE_NAME }} + + - name: ZAP Scan + uses: zaproxy/action-full-scan@v0.4.0 + with: + target: 'https://${{ env.HOST_ROUTE }}' diff --git a/backend/src/components/studentSearch.js b/backend/src/components/studentSearch.js index 8e196c5bc..1eea167cd 100644 --- a/backend/src/components/studentSearch.js +++ b/backend/src/components/studentSearch.js @@ -111,7 +111,7 @@ async function searchStudent(req, res) { const baseUrl = config.get('server:student:rootURL'); try { - const dataResponse = await utils.getData(token, isAuditHistorySearch ? baseUrl + '/history/paginated/distinct/students' : baseUrl + '/paginated', params); + const dataResponse = await utils.getData(token, isAuditHistorySearch === 'true' ? baseUrl + '/history/paginated/distinct/students' : baseUrl + '/paginated', params); if (dataResponse?.totalElements > 2000000) { logInfo(`Search Criteria produced ${dataResponse?.totalElements} records`, params?.params); return res.status(400).json({ diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f3dd15029..7d92530ac 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -12,7 +12,6 @@ "@fortawesome/fontawesome-free": "6.4.0", "@js-joda/core": "^5.5.3", "@mdi/font": "^7.2.96", - "@vuepic/vue-datepicker": "^5.3.0", "axios": "^1.4.0", "chart.js": "^4.3.0", "chartjs-plugin-datalabels": "^2.2.0", @@ -44,6 +43,7 @@ "vue-meta": "^3.0.0-alpha.10", "vue-quick-chat": "^1.2.8", "vue-router": "^4.2.2", + "vue3-treeview": "^0.4.1", "vuetify": "npm:@vuetify/nightly@3.3.5-pr-17265.042d482" }, "devDependencies": { @@ -569,17 +569,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", - "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", @@ -2250,21 +2239,6 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" }, - "node_modules/@vuepic/vue-datepicker": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-5.3.0.tgz", - "integrity": "sha512-eW5LRa3mH5klbRaKedG96/KY4EZC7ns+Zs7A+4guRBL+dQQthd8HV0xyS9nkI7hjr1K5zU+FQ3TOdo/oX5r3og==", - "dependencies": { - "date-fns": "^2.30.0", - "date-fns-tz": "^1.3.7" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "vue": ">=3.2.0" - } - }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -3123,29 +3097,6 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/date-fns-tz": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz", - "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==", - "peerDependencies": { - "date-fns": ">=2.0.0" - } - }, "node_modules/de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -6701,12 +6652,32 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.eq": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.eq/-/lodash.eq-4.0.0.tgz", + "integrity": "sha512-vbrJpXL6kQNG6TkInxX12DZRfuYVllSxhwYqjYB78g2zF3UI15nFO/0AgmZnZRnaQ38sZtjCiVjGr2rnKt4v0g==" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.tointeger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.tointeger/-/lodash.tointeger-4.0.4.tgz", + "integrity": "sha512-UQbTdxNHMm4jGlf+LtxB5ZPJFufuND2gZCYjMxSOUmcxfq350x9KnwL3EzxDDNth8fOZ9wpwDTGWZQnFgdV3gg==" + }, + "node_modules/lodash.uniqueid": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.uniqueid/-/lodash.uniqueid-4.0.1.tgz", + "integrity": "sha512-GQQWaIeGlL6DIIr06kj1j6sSmBxyNMwI8kaX9aKpHR/XsMTiaXDVPNPAkiboOTK9OJpTJF/dXT3xYoFQnj386Q==" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -8449,6 +8420,18 @@ "he": "^1.2.0" } }, + "node_modules/vue3-treeview": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/vue3-treeview/-/vue3-treeview-0.4.1.tgz", + "integrity": "sha512-IUQN9Gzqxr66Qc6l+Js+ZBo57q5dHmiyD6FBRdt2WRnmMZ+wRtZ2UuwdLMiuGBT6gOVEzL7ucLIZGPZyKyyI4g==", + "dependencies": { + "lodash.eq": "^4.0.0", + "lodash.isnil": "^4.0.0", + "lodash.tointeger": "^4.0.4", + "lodash.uniqueid": "^4.0.1", + "vue": "^3.1.2" + } + }, "node_modules/vuetify": { "name": "@vuetify/nightly", "version": "3.3.5-pr-17265.042d482", @@ -9073,14 +9056,6 @@ "@babel/helper-plugin-utils": "^7.19.0" } }, - "@babel/runtime": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", - "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, "@babel/template": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", @@ -10295,15 +10270,6 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" }, - "@vuepic/vue-datepicker": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-5.3.0.tgz", - "integrity": "sha512-eW5LRa3mH5klbRaKedG96/KY4EZC7ns+Zs7A+4guRBL+dQQthd8HV0xyS9nkI7hjr1K5zU+FQ3TOdo/oX5r3og==", - "requires": { - "date-fns": "^2.30.0", - "date-fns-tz": "^1.3.7" - } - }, "@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -10963,20 +10929,6 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, - "date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "requires": { - "@babel/runtime": "^7.21.0" - } - }, - "date-fns-tz": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz", - "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==", - "requires": {} - }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -13605,12 +13557,32 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.eq": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.eq/-/lodash.eq-4.0.0.tgz", + "integrity": "sha512-vbrJpXL6kQNG6TkInxX12DZRfuYVllSxhwYqjYB78g2zF3UI15nFO/0AgmZnZRnaQ38sZtjCiVjGr2rnKt4v0g==" + }, + "lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.tointeger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.tointeger/-/lodash.tointeger-4.0.4.tgz", + "integrity": "sha512-UQbTdxNHMm4jGlf+LtxB5ZPJFufuND2gZCYjMxSOUmcxfq350x9KnwL3EzxDDNth8fOZ9wpwDTGWZQnFgdV3gg==" + }, + "lodash.uniqueid": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.uniqueid/-/lodash.uniqueid-4.0.1.tgz", + "integrity": "sha512-GQQWaIeGlL6DIIr06kj1j6sSmBxyNMwI8kaX9aKpHR/XsMTiaXDVPNPAkiboOTK9OJpTJF/dXT3xYoFQnj386Q==" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -14784,6 +14756,18 @@ "he": "^1.2.0" } }, + "vue3-treeview": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/vue3-treeview/-/vue3-treeview-0.4.1.tgz", + "integrity": "sha512-IUQN9Gzqxr66Qc6l+Js+ZBo57q5dHmiyD6FBRdt2WRnmMZ+wRtZ2UuwdLMiuGBT6gOVEzL7ucLIZGPZyKyyI4g==", + "requires": { + "lodash.eq": "^4.0.0", + "lodash.isnil": "^4.0.0", + "lodash.tointeger": "^4.0.4", + "lodash.uniqueid": "^4.0.1", + "vue": "^3.1.2" + } + }, "vuetify": { "version": "npm:@vuetify/nightly@3.3.5-pr-17265.042d482", "resolved": "https://registry.npmjs.org/@vuetify/nightly/-/nightly-3.3.5-pr-17265.042d482.tgz", diff --git a/frontend/src/components/RequestDetail.vue b/frontend/src/components/RequestDetail.vue index de5564d7d..9b7c30d94 100644 --- a/frontend/src/components/RequestDetail.vue +++ b/frontend/src/components/RequestDetail.vue @@ -829,6 +829,19 @@ export default { background-color: #fafafa; } +.blue--text{ + color: #2196f3 !important; +} + +.green--text{ + color: #4caf50 !important; +} + +.orange--text{ + color: #ff9800 !important;; +} + + h2 { font-size: 1.25rem } diff --git a/frontend/src/components/RequestsDisplay.vue b/frontend/src/components/RequestsDisplay.vue index cd52b3bb3..582ece552 100644 --- a/frontend/src/components/RequestsDisplay.vue +++ b/frontend/src/components/RequestsDisplay.vue @@ -597,4 +597,8 @@ th { cursor: pointer; } +:deep(.v-data-table-footer__items-per-page) { + display: none; +} + diff --git a/frontend/src/components/common/CompareDemographicsCommon.vue b/frontend/src/components/common/CompareDemographicsCommon.vue index 84833054a..a089e105e 100644 --- a/frontend/src/components/common/CompareDemographicsCommon.vue +++ b/frontend/src/components/common/CompareDemographicsCommon.vue @@ -2,7 +2,6 @@ -