diff options
| -rw-r--r-- | fe/package-lock.json | 58 | ||||
| -rw-r--r-- | fe/package.json | 4 | ||||
| -rw-r--r-- | fe/src/lib/DataView.svelte | 27 |
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} |
