aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZach Berwaldt <zberwaldt@tutamail.com>2024-03-01 18:50:51 -0500
committerZach Berwaldt <zberwaldt@tutamail.com>2024-03-01 18:50:51 -0500
commit74ec025991f6acde6383e448974738e857758ebb (patch)
tree0fea392bf88c6f244b09c83d18672d9af8fbd5e8
parentafeffe31bd7d0f8333627a972e1d32e64a325b5b (diff)
Add dependencies, refine dataview
-rw-r--r--fe/package-lock.json58
-rw-r--r--fe/package.json4
-rw-r--r--fe/src/lib/DataView.svelte27
3 files changed, 63 insertions, 26 deletions
diff --git a/fe/package-lock.json b/fe/package-lock.json
index 2c4146a..f74bf6c 100644
--- a/fe/package-lock.json
+++ b/fe/package-lock.json
@@ -7,6 +7,10 @@
7 "": { 7 "": {
8 "name": "fe", 8 "name": "fe",
9 "version": "0.0.0", 9 "version": "0.0.0",
10 "dependencies": {
11 "chart.js": "^4.4.2",
12 "svelte-chartjs": "^3.1.5"
13 },
10 "devDependencies": { 14 "devDependencies": {
11 "@sveltejs/vite-plugin-svelte": "^3.0.2", 15 "@sveltejs/vite-plugin-svelte": "^3.0.2",
12 "@tsconfig/svelte": "^5.0.2", 16 "@tsconfig/svelte": "^5.0.2",
@@ -21,7 +25,6 @@
21 "version": "2.2.1", 25 "version": "2.2.1",
22 "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", 26 "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
23 "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", 27 "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
24 "dev": true,
25 "dependencies": { 28 "dependencies": {
26 "@jridgewell/gen-mapping": "^0.3.0", 29 "@jridgewell/gen-mapping": "^0.3.0",
27 "@jridgewell/trace-mapping": "^0.3.9" 30 "@jridgewell/trace-mapping": "^0.3.9"
@@ -402,7 +405,6 @@
402 "version": "0.3.3", 405 "version": "0.3.3",
403 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", 406 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
404 "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", 407 "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
405 "dev": true,
406 "dependencies": { 408 "dependencies": {
407 "@jridgewell/set-array": "^1.0.1", 409 "@jridgewell/set-array": "^1.0.1",
408 "@jridgewell/sourcemap-codec": "^1.4.10", 410 "@jridgewell/sourcemap-codec": "^1.4.10",
@@ -416,7 +418,6 @@
416 "version": "3.1.2", 418 "version": "3.1.2",
417 "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 419 "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
418 "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 420 "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
419 "dev": true,
420 "engines": { 421 "engines": {
421 "node": ">=6.0.0" 422 "node": ">=6.0.0"
422 } 423 }
@@ -425,7 +426,6 @@
425 "version": "1.1.2", 426 "version": "1.1.2",
426 "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 427 "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
427 "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 428 "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
428 "dev": true,
429 "engines": { 429 "engines": {
430 "node": ">=6.0.0" 430 "node": ">=6.0.0"
431 } 431 }
@@ -433,19 +433,22 @@
433 "node_modules/@jridgewell/sourcemap-codec": { 433 "node_modules/@jridgewell/sourcemap-codec": {
434 "version": "1.4.15", 434 "version": "1.4.15",
435 "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 435 "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
436 "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 436 "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
437 "dev": true
438 }, 437 },
439 "node_modules/@jridgewell/trace-mapping": { 438 "node_modules/@jridgewell/trace-mapping": {
440 "version": "0.3.22", 439 "version": "0.3.22",
441 "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", 440 "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
442 "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", 441 "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
443 "dev": true,
444 "dependencies": { 442 "dependencies": {
445 "@jridgewell/resolve-uri": "^3.1.0", 443 "@jridgewell/resolve-uri": "^3.1.0",
446 "@jridgewell/sourcemap-codec": "^1.4.14" 444 "@jridgewell/sourcemap-codec": "^1.4.14"
447 } 445 }
448 }, 446 },
447 "node_modules/@kurkle/color": {
448 "version": "0.3.2",
449 "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
450 "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
451 },
449 "node_modules/@nodelib/fs.scandir": { 452 "node_modules/@nodelib/fs.scandir": {
450 "version": "2.1.5", 453 "version": "2.1.5",
451 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 454 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -698,8 +701,7 @@
698 "node_modules/@types/estree": { 701 "node_modules/@types/estree": {
699 "version": "1.0.5", 702 "version": "1.0.5",
700 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 703 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
701 "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 704 "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
702 "dev": true
703 }, 705 },
704 "node_modules/@types/pug": { 706 "node_modules/@types/pug": {
705 "version": "2.0.10", 707 "version": "2.0.10",
@@ -711,7 +713,6 @@
711 "version": "8.11.3", 713 "version": "8.11.3",
712 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 714 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
713 "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 715 "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
714 "dev": true,
715 "bin": { 716 "bin": {
716 "acorn": "bin/acorn" 717 "acorn": "bin/acorn"
717 }, 718 },
@@ -736,7 +737,6 @@
736 "version": "5.3.0", 737 "version": "5.3.0",
737 "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", 738 "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
738 "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", 739 "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
739 "dev": true,
740 "dependencies": { 740 "dependencies": {
741 "dequal": "^2.0.3" 741 "dequal": "^2.0.3"
742 } 742 }
@@ -745,7 +745,6 @@
745 "version": "4.0.0", 745 "version": "4.0.0",
746 "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", 746 "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz",
747 "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", 747 "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==",
748 "dev": true,
749 "dependencies": { 748 "dependencies": {
750 "dequal": "^2.0.3" 749 "dequal": "^2.0.3"
751 } 750 }
@@ -805,6 +804,17 @@
805 "node": ">=6" 804 "node": ">=6"
806 } 805 }
807 }, 806 },
807 "node_modules/chart.js": {
808 "version": "4.4.2",
809 "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.2.tgz",
810 "integrity": "sha512-6GD7iKwFpP5kbSD4MeRRRlTnQvxfQREy36uEtm1hzHzcOqwWx0YEHuspuoNlslu+nciLIB7fjjsHkUv/FzFcOg==",
811 "dependencies": {
812 "@kurkle/color": "^0.3.0"
813 },
814 "engines": {
815 "pnpm": ">=8"
816 }
817 },
808 "node_modules/chokidar": { 818 "node_modules/chokidar": {
809 "version": "3.6.0", 819 "version": "3.6.0",
810 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 820 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -833,7 +843,6 @@
833 "version": "1.0.4", 843 "version": "1.0.4",
834 "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", 844 "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz",
835 "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", 845 "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==",
836 "dev": true,
837 "dependencies": { 846 "dependencies": {
838 "@jridgewell/sourcemap-codec": "^1.4.15", 847 "@jridgewell/sourcemap-codec": "^1.4.15",
839 "@types/estree": "^1.0.1", 848 "@types/estree": "^1.0.1",
@@ -852,7 +861,6 @@
852 "version": "2.3.1", 861 "version": "2.3.1",
853 "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", 862 "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
854 "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", 863 "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
855 "dev": true,
856 "dependencies": { 864 "dependencies": {
857 "mdn-data": "2.0.30", 865 "mdn-data": "2.0.30",
858 "source-map-js": "^1.0.1" 866 "source-map-js": "^1.0.1"
@@ -891,7 +899,6 @@
891 "version": "2.0.3", 899 "version": "2.0.3",
892 "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 900 "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
893 "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 901 "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
894 "dev": true,
895 "engines": { 902 "engines": {
896 "node": ">=6" 903 "node": ">=6"
897 } 904 }
@@ -953,7 +960,6 @@
953 "version": "3.0.3", 960 "version": "3.0.3",
954 "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 961 "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
955 "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 962 "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
956 "dev": true,
957 "dependencies": { 963 "dependencies": {
958 "@types/estree": "^1.0.0" 964 "@types/estree": "^1.0.0"
959 } 965 }
@@ -1131,7 +1137,6 @@
1131 "version": "3.0.2", 1137 "version": "3.0.2",
1132 "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", 1138 "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
1133 "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", 1139 "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
1134 "dev": true,
1135 "dependencies": { 1140 "dependencies": {
1136 "@types/estree": "*" 1141 "@types/estree": "*"
1137 } 1142 }
@@ -1148,14 +1153,12 @@
1148 "node_modules/locate-character": { 1153 "node_modules/locate-character": {
1149 "version": "3.0.0", 1154 "version": "3.0.0",
1150 "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 1155 "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
1151 "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 1156 "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="
1152 "dev": true
1153 }, 1157 },
1154 "node_modules/magic-string": { 1158 "node_modules/magic-string": {
1155 "version": "0.30.7", 1159 "version": "0.30.7",
1156 "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", 1160 "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
1157 "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", 1161 "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
1158 "dev": true,
1159 "dependencies": { 1162 "dependencies": {
1160 "@jridgewell/sourcemap-codec": "^1.4.15" 1163 "@jridgewell/sourcemap-codec": "^1.4.15"
1161 }, 1164 },
@@ -1166,8 +1169,7 @@
1166 "node_modules/mdn-data": { 1169 "node_modules/mdn-data": {
1167 "version": "2.0.30", 1170 "version": "2.0.30",
1168 "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", 1171 "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
1169 "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", 1172 "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
1170 "dev": true
1171 }, 1173 },
1172 "node_modules/merge2": { 1174 "node_modules/merge2": {
1173 "version": "1.4.1", 1175 "version": "1.4.1",
@@ -1309,7 +1311,6 @@
1309 "version": "3.1.0", 1311 "version": "3.1.0",
1310 "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", 1312 "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
1311 "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", 1313 "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
1312 "dev": true,
1313 "dependencies": { 1314 "dependencies": {
1314 "@types/estree": "^1.0.0", 1315 "@types/estree": "^1.0.0",
1315 "estree-walker": "^3.0.0", 1316 "estree-walker": "^3.0.0",
@@ -1523,7 +1524,6 @@
1523 "version": "1.0.2", 1524 "version": "1.0.2",
1524 "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1525 "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1525 "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1526 "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1526 "dev": true,
1527 "engines": { 1527 "engines": {
1528 "node": ">=0.10.0" 1528 "node": ">=0.10.0"
1529 } 1529 }
@@ -1544,7 +1544,6 @@
1544 "version": "4.2.11", 1544 "version": "4.2.11",
1545 "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.11.tgz", 1545 "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.11.tgz",
1546 "integrity": "sha512-YIQk3J4X89wOLhjsqIW8tqY3JHPuBdtdOIkASP2PZeAMcSW9RsIjQzMesCrxOF3gdWYC0mKknlKF7OqmLM+Zqg==", 1546 "integrity": "sha512-YIQk3J4X89wOLhjsqIW8tqY3JHPuBdtdOIkASP2PZeAMcSW9RsIjQzMesCrxOF3gdWYC0mKknlKF7OqmLM+Zqg==",
1547 "dev": true,
1548 "dependencies": { 1547 "dependencies": {
1549 "@ampproject/remapping": "^2.2.1", 1548 "@ampproject/remapping": "^2.2.1",
1550 "@jridgewell/sourcemap-codec": "^1.4.15", 1549 "@jridgewell/sourcemap-codec": "^1.4.15",
@@ -1565,6 +1564,15 @@
1565 "node": ">=16" 1564 "node": ">=16"
1566 } 1565 }
1567 }, 1566 },
1567 "node_modules/svelte-chartjs": {
1568 "version": "3.1.5",
1569 "resolved": "https://registry.npmjs.org/svelte-chartjs/-/svelte-chartjs-3.1.5.tgz",
1570 "integrity": "sha512-ka2zh7v5FiwfAX1oMflZ0HkNkgjHjFqANgRyC+vNYXfxtx2ku68Zo+2KgbKeBH2nS1ThDqkIACPzGxy4T0UaoA==",
1571 "peerDependencies": {
1572 "chart.js": "^3.5.0 || ^4.0.0",
1573 "svelte": "^4.0.0"
1574 }
1575 },
1568 "node_modules/svelte-check": { 1576 "node_modules/svelte-check": {
1569 "version": "3.6.4", 1577 "version": "3.6.4",
1570 "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.4.tgz", 1578 "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.4.tgz",
diff --git a/fe/package.json b/fe/package.json
index 6bc8619..9c75965 100644
--- a/fe/package.json
+++ b/fe/package.json
@@ -17,5 +17,9 @@
17 "tslib": "^2.6.2", 17 "tslib": "^2.6.2",
18 "typescript": "^5.2.2", 18 "typescript": "^5.2.2",
19 "vite": "^5.1.0" 19 "vite": "^5.1.0"
20 },
21 "dependencies": {
22 "chart.js": "^4.4.2",
23 "svelte-chartjs": "^3.1.5"
20 } 24 }
21} 25}
diff --git a/fe/src/lib/DataView.svelte b/fe/src/lib/DataView.svelte
index 1458c9a..00ee21a 100644
--- a/fe/src/lib/DataView.svelte
+++ b/fe/src/lib/DataView.svelte
@@ -1,12 +1,16 @@
1<script lang="ts"> 1<script lang="ts">
2 import { onMount } from "svelte"; 2 import { onDestroy, onMount } from "svelte";
3 import type { Statistic } from "../types"; 3 import type { Statistic } from "../types";
4 import { token, user } from "../stores/auth"; 4 import { token, user } from "../stores/auth";
5 import Table from "./Table.svelte"; 5 import Table from "./Table.svelte";
6 import Chart from 'chart.js/auto';
6 7
7 let json: Promise<any>; 8 let json: Promise<any>;
8 let showAddForm: boolean = false; 9 let showAddForm: boolean = false;
9 10
11 let canvasRef: HTMLCanvasElement;
12 let chart: any;
13
10 let statistic: Statistic = newStatistic(); 14 let statistic: Statistic = newStatistic();
11 15
12 async function fetchData() { 16 async function fetchData() {
@@ -74,6 +78,26 @@
74 78
75 onMount(() => { 79 onMount(() => {
76 fetchData(); 80 fetchData();
81 chart = new Chart(canvasRef, {
82 type: 'bar',
83 data: {
84 labels: ['one', 'two'],
85 datasets: [
86 {
87 label: 'Water',
88 data: [1, 2],
89 backgroundColor: 'rgba(75, 192, 192, 0.2)',
90 borderColor: 'rgba(75, 192, 192, 1)',
91 borderWidth: 1
92 }
93 ]
94 }
95 });
96 });
97
98 onDestroy(() => {
99 if (chart) chart.destroy();
100 chart = null;
77 }); 101 });
78</script> 102</script>
79 103
@@ -102,6 +126,7 @@
102 </form> 126 </form>
103 </dialog> 127 </dialog>
104 <button on:click={handleClick}>Add</button> 128 <button on:click={handleClick}>Add</button>
129 <canvas bind:this={canvasRef} />
105 {#await json then data} 130 {#await json then data}
106 <Table {data} nofooter /> 131 <Table {data} nofooter />
107 {:catch error} 132 {:catch error}