diff --git a/README.md b/README.md index 4c72673c32067e32b636b800981ebafcc183511c..f4697bf1834c9c461e217949154c157b1b614913 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,10 @@ docker build -t registry-gitlab.xlab.si/medina/cce-frontend . docker run -p 8081:80 registry-gitlab.xlab.si/medina/cce-frontend:latest ``` +## Versioning + +Before pushing to master check if version needs to be updated in [package.json](package.json#L3). +This version is also used for tagging docker image at CI. ## Setting API url diff --git a/package-lock.json b/package-lock.json index 8d43f540eb9e09a3078112bfd40a30583d158518..bd188983f6207f28b3a69da35ac6eba9c0401c03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cce-frontend", - "version": "0.1.0", + "version": "0.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1935,13 +1935,13 @@ } }, "@vue/compiler-core": { - "version": "3.2.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.27.tgz", - "integrity": "sha512-JyxAglSM/pb9paG5ZNuKrf5IUpzLzQA3khjWGF9oESELCLQlt6O3YyPMR2A69wIpYWrf5mScZ8YY8TJKOI/1kQ==", + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.31.tgz", + "integrity": "sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==", "dev": true, "requires": { "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.27", + "@vue/shared": "3.2.31", "estree-walker": "^2.0.2", "source-map": "^0.6.1" }, @@ -1955,27 +1955,27 @@ } }, "@vue/compiler-dom": { - "version": "3.2.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.27.tgz", - "integrity": "sha512-NyQ7nEbopUBPUMHM4c3FPCbFbnQwptoPjW5Y5qfJ7hfiCNhOuhQsDNqi5JYKBxfpxiFNwjcN9F8t1AsnLrDloQ==", + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.31.tgz", + "integrity": "sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==", "dev": true, "requires": { - "@vue/compiler-core": "3.2.27", - "@vue/shared": "3.2.27" + "@vue/compiler-core": "3.2.31", + "@vue/shared": "3.2.31" } }, "@vue/compiler-sfc": { - "version": "3.2.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.27.tgz", - "integrity": "sha512-WyecUhLN5UAQAr2QlmG2nA56OEnhZJaBnSw0G1tazb9rwDuK0V9tnbIXbQgmQlx+x4sJxgg61yWGcIXfilTl3A==", + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.31.tgz", + "integrity": "sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==", "dev": true, "requires": { "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.27", - "@vue/compiler-dom": "3.2.27", - "@vue/compiler-ssr": "3.2.27", - "@vue/reactivity-transform": "3.2.27", - "@vue/shared": "3.2.27", + "@vue/compiler-core": "3.2.31", + "@vue/compiler-dom": "3.2.31", + "@vue/compiler-ssr": "3.2.31", + "@vue/reactivity-transform": "3.2.31", + "@vue/shared": "3.2.31", "estree-walker": "^2.0.2", "magic-string": "^0.25.7", "postcss": "^8.1.10", @@ -1989,14 +1989,14 @@ "dev": true }, "postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz", + "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==", "dev": true, "requires": { - "nanoid": "^3.1.30", + "nanoid": "^3.2.0", "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" + "source-map-js": "^1.0.2" } }, "source-map": { @@ -2008,13 +2008,13 @@ } }, "@vue/compiler-ssr": { - "version": "3.2.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.27.tgz", - "integrity": "sha512-+l09t319iV7HVSrXfBw9OLwMZIPOFTXmHjZ61Bc5ZcwKqOYAR4uTurKpoXAfcSc5qs/q6WdE9jY3nrP0LUEMQQ==", + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.31.tgz", + "integrity": "sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==", "dev": true, "requires": { - "@vue/compiler-dom": "3.2.27", - "@vue/shared": "3.2.27" + "@vue/compiler-dom": "3.2.31", + "@vue/shared": "3.2.31" } }, "@vue/component-compiler-utils": { @@ -2091,14 +2091,14 @@ } }, "@vue/reactivity-transform": { - "version": "3.2.27", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.27.tgz", - "integrity": "sha512-67//61ObGxGnVrPhjygocb24eYUh+TFMhkm7szm8v5XdKXjkNl7qgIOflwGvUnwuIRJmr9nZ7+PvY0fL+H2upA==", + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.31.tgz", + "integrity": "sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==", "dev": true, "requires": { "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.27", - "@vue/shared": "3.2.27", + "@vue/compiler-core": "3.2.31", + "@vue/shared": "3.2.31", "estree-walker": "^2.0.2", "magic-string": "^0.25.7" } @@ -2187,9 +2187,9 @@ } }, "@vue/shared": { - "version": "3.2.27", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.27.tgz", - "integrity": "sha512-rpAn9k6O08Lvo7ekBIAnkOukX/4EsEQLPrRJBKhIEasMsOI5eX0f6mq1sDUSY7cgAqWw2d7QtP74CWxdXoyKxA==", + "version": "3.2.31", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.31.tgz", + "integrity": "sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ==", "dev": true }, "@vue/web-component-wrapper": { @@ -2702,11 +2702,18 @@ "dev": true }, "axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", "requires": { - "follow-redirects": "^1.14.7" + "follow-redirects": "^1.14.8" + }, + "dependencies": { + "follow-redirects": { + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" + } } }, "babel-eslint": { @@ -6027,9 +6034,10 @@ } }, "follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", + "dev": true }, "for-in": { "version": "1.0.2", @@ -7940,6 +7948,11 @@ "minimist": "^1.2.5" } }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -12013,9 +12026,9 @@ } }, "vue-axios": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/vue-axios/-/vue-axios-3.4.0.tgz", - "integrity": "sha512-S3YTCJeEndzmtaYzyz919Z54wY1D2OftWEhioGbHED3VUSta8ti0OHjDipTPkb1StxOzQLAAO2hSUq830i14KA==" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/vue-axios/-/vue-axios-3.4.1.tgz", + "integrity": "sha512-8YZYUOQrBEJktxoQtrM4rr2LfVcDaWfJqv8MqtLlgLlkuBvCYKFSZSo6AXQ4YcCzdgccDqstmuaEh68lcH9xWA==" }, "vue-eslint-parser": { "version": "7.11.0", diff --git a/package.json b/package.json index 1db4d8d7e6a26596e78dadba3ca5a2b0fe9a9a34..1cd30ad590a1c0bf056653a91b03e8a3806ca76a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cce-frontend", - "version": "0.1.0", + "version": "0.1.1", "private": true, "scripts": { "serve": "vue-cli-service serve", @@ -9,20 +9,21 @@ }, "dependencies": { "@ssthouse/vue3-tree-chart": "^0.1.0", - "axios": "^0.25.0", + "axios": "^0.26.0", "bootstrap": "^5.1.3", "bootstrap-vue": "^2.21.2", "core-js": "^3.6.5", "vue": "^3.2.29", - "vue-axios": "^3.4.0", - "vue-router": "^4.0.8", - "vuex": "^4.0.2" + "vue-axios": "^3.4.1", + "vue-router": "^4.0.12", + "vuex": "^4.0.2", + "moment": "^2.29.1" }, "devDependencies": { - "@vue/cli-plugin-babel": "~4.5.0", - "@vue/cli-plugin-eslint": "~4.5.0", - "@vue/cli-service": "~4.5.0", - "@vue/compiler-sfc": "^3.0.0", + "@vue/cli-plugin-babel": "~4.5.15", + "@vue/cli-plugin-eslint": "~4.5.15", + "@vue/cli-service": "~4.5.15", + "@vue/compiler-sfc": "^3.2.31", "babel-eslint": "^10.1.0", "eslint": "^6.7.2", "eslint-plugin-vue": "^7.0.0", diff --git a/src/components/Tree.vue b/src/components/Tree.vue index d7aafbfc1ee8e4a1a81d41ee90bdad8d86ecf2f8..87baa88a091beb9cf72e800f743824102dd6cee2 100644 --- a/src/components/Tree.vue +++ b/src/components/Tree.vue @@ -2,15 +2,20 @@ <div class="container"> <div class="info-box" v-show="hoveredNode"> <p v-if="hoveredNode?.name != null"><b>Name:</b> {{hoveredNode.name}}</p> - <p v-if="hoveredNode?.state != null"><b>State:</b> {{hoveredNode.state}}</p> + <p v-if="hoveredNode?.state == 'UNSET'"><b>State:</b> No evidence obtained</p> + <p v-if="hoveredNode?.state == 'UNSELECTED'"><b>State:</b> Unselected</p> + <p v-if="hoveredNode?.state == 'SET' && hoveredNode?.conformant"><b>State:</b> Compliant</p> + <p v-if="hoveredNode?.state == 'SET' && !hoveredNode?.conformant"><b>State:</b> Non compliant</p> <p v-if="hoveredNode?.value != null"><b>Value:</b> {{hoveredNode.value}}</p> <p v-if="hoveredNode?.weight != null"><b>Weight:</b> {{hoveredNode.weight}}</p> + <p v-if="hoveredNode?.code != null"><b>Code:</b> {{hoveredNode.code}}</p> + <p v-if="hoveredNode?.description != null"><b>Description:</b> {{hoveredNode.description}}</p> <p v-if="hoveredNode?.id != null"><b>Assesment result id:</b> {{hoveredNode.id}}</p> <p v-if="hoveredNode?.metricId != null"><b>Metric id:</b> {{hoveredNode.metricId}}</p> <p v-if="hoveredNode?.assessmentResult != null"><b>Assessment result:</b> {{hoveredNode.assessmentResult}}</p> <p v-if="hoveredNode?.evidenceId != null"><b>Evidence id:</b> {{hoveredNode.evidenceId}}</p> <p v-if="hoveredNode?.noncomplianceComments != null"><b>Noncompliance comments:</b> {{hoveredNode.noncomplianceComments}}</p> - <p v-if="hoveredNode?.timestamp != null"><b>Timestamp:</b> {{hoveredNode.timestamp}}</p> + <p v-if="hoveredNode?.timestamp != null"><b>Timestamp:</b> {{formatDate(hoveredNode.timestamp)}}</p> <p v-if="hoveredNode?.threshold != null"><b>Threshold:</b> {{hoveredNode.threshold}}</p> <p v-if="hoveredNode?.resource?.id != null"><b>Resource id:</b> {{hoveredNode.resource.id}}</p> <p v-if="hoveredNode?.resource?.resourceType != null"><b>Resource type:</b> {{hoveredNode.resource.resourceType}}</p> @@ -52,6 +57,7 @@ <script> import VueTree from "@ssthouse/vue3-tree-chart"; import "@ssthouse/vue3-tree-chart/dist/vue3-tree-chart.css"; +import {formatDateHelper} from '../helpers/dataFormat'; export default { name: 'Tree', @@ -61,7 +67,7 @@ export default { props: ['treeData'], data() { return { - treeConfig: { nodeWidth: 180, nodeHeight: 80, levelHeight: 200 }, + treeConfig: { nodeWidth: 230, nodeHeight: 80, levelHeight: 200 }, hoveredNode: null, } }, @@ -79,12 +85,17 @@ export default { break } }, + infoBoxShow(node) { this.hoveredNode = node; }, infoBoxHide() { this.hoveredNode = null; - } + }, + + formatDate(date) { + return formatDateHelper(date); + }, } } </script> @@ -105,16 +116,18 @@ export default { } .rich-media-node { - min-width: 80px; - max-width: 150px; + width: auto; + max-width: 200px; margin: 8px; padding: 8px; display: flex; flex-direction: column; align-items: flex-start; + text-align: center; justify-content: center; color: black; border-radius: 4px; + font-size: 14px; } .info-box { @@ -131,6 +144,7 @@ export default { border-radius: 0; font-size: 14px; text-align: left; + max-width: 25%; } .btn { diff --git a/src/helpers/dataFormat.js b/src/helpers/dataFormat.js new file mode 100644 index 0000000000000000000000000000000000000000..5a1b7f7919ac3e9ab11f418deed853f3f5ed0646 --- /dev/null +++ b/src/helpers/dataFormat.js @@ -0,0 +1,7 @@ +import moment from 'moment'; + +export function formatDateHelper(value) { + if (value) { + return moment(String(value)).format('DD MMM YYYY h:mm:ss A') + } +} \ No newline at end of file