diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a88d6a..815c617 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -52,6 +52,9 @@ devDependencies: vue-cli-plugin-styleguidist: specifier: ~4.72.4 version: 4.72.4(@vue/cli-service@5.0.8)(vue-loader@17.4.2)(vue@3.2.45)(webpack@5.90.1) + vue-leaflet-rotate-marker: + specifier: ^0.1.0 + version: 0.1.0(typescript@4.9.5) vue-styleguidist: specifier: ^4.72.4 version: 4.72.4(vue-loader@17.4.2)(vue@3.2.45)(webpack@5.90.1) @@ -248,6 +251,14 @@ packages: '@babel/types': 7.23.9 dev: true + /@babel/parser@7.24.5: + resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 + dev: true + /@babel/runtime@7.20.13: resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} engines: {node: '>=6.9.0'} @@ -1224,12 +1235,22 @@ packages: /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: - '@babel/parser': 7.22.7 + '@babel/parser': 7.23.9 '@vue/shared': 3.3.4 estree-walker: 2.0.2 source-map-js: 1.0.2 dev: true + /@vue/compiler-core@3.4.27: + resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==} + dependencies: + '@babel/parser': 7.24.5 + '@vue/shared': 3.4.27 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + dev: true + /@vue/compiler-dom@3.2.45: resolution: {integrity: sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==} dependencies: @@ -1243,6 +1264,13 @@ packages: '@vue/shared': 3.3.4 dev: true + /@vue/compiler-dom@3.4.27: + resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==} + dependencies: + '@vue/compiler-core': 3.4.27 + '@vue/shared': 3.4.27 + dev: true + /@vue/compiler-sfc@3.2.45: resolution: {integrity: sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==} dependencies: @@ -1260,7 +1288,7 @@ packages: /@vue/compiler-sfc@3.3.4: resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} dependencies: - '@babel/parser': 7.22.7 + '@babel/parser': 7.23.9 '@vue/compiler-core': 3.3.4 '@vue/compiler-dom': 3.3.4 '@vue/compiler-ssr': 3.3.4 @@ -1268,10 +1296,24 @@ packages: '@vue/shared': 3.3.4 estree-walker: 2.0.2 magic-string: 0.30.1 - postcss: 8.4.25 + postcss: 8.4.35 source-map-js: 1.0.2 dev: true + /@vue/compiler-sfc@3.4.27: + resolution: {integrity: sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==} + dependencies: + '@babel/parser': 7.24.5 + '@vue/compiler-core': 3.4.27 + '@vue/compiler-dom': 3.4.27 + '@vue/compiler-ssr': 3.4.27 + '@vue/shared': 3.4.27 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.38 + source-map-js: 1.2.0 + dev: true + /@vue/compiler-ssr@3.2.45: resolution: {integrity: sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==} dependencies: @@ -1285,6 +1327,13 @@ packages: '@vue/shared': 3.3.4 dev: true + /@vue/compiler-ssr@3.4.27: + resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==} + dependencies: + '@vue/compiler-dom': 3.4.27 + '@vue/shared': 3.4.27 + dev: true + /@vue/component-compiler-utils@3.3.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==} dependencies: @@ -1370,7 +1419,7 @@ packages: /@vue/reactivity-transform@3.3.4: resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: - '@babel/parser': 7.22.7 + '@babel/parser': 7.23.9 '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 @@ -1382,12 +1431,25 @@ packages: dependencies: '@vue/shared': 3.2.45 + /@vue/reactivity@3.4.27: + resolution: {integrity: sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==} + dependencies: + '@vue/shared': 3.4.27 + dev: true + /@vue/runtime-core@3.2.45: resolution: {integrity: sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==} dependencies: '@vue/reactivity': 3.2.45 '@vue/shared': 3.2.45 + /@vue/runtime-core@3.4.27: + resolution: {integrity: sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==} + dependencies: + '@vue/reactivity': 3.4.27 + '@vue/shared': 3.4.27 + dev: true + /@vue/runtime-dom@3.2.45: resolution: {integrity: sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==} dependencies: @@ -1395,6 +1457,14 @@ packages: '@vue/shared': 3.2.45 csstype: 2.6.21 + /@vue/runtime-dom@3.4.27: + resolution: {integrity: sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==} + dependencies: + '@vue/runtime-core': 3.4.27 + '@vue/shared': 3.4.27 + csstype: 3.1.3 + dev: true + /@vue/server-renderer@3.2.45(vue@3.2.45): resolution: {integrity: sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==} peerDependencies: @@ -1404,6 +1474,16 @@ packages: '@vue/shared': 3.2.45 vue: 3.2.45 + /@vue/server-renderer@3.4.27(vue@3.4.27): + resolution: {integrity: sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==} + peerDependencies: + vue: 3.4.27 + dependencies: + '@vue/compiler-ssr': 3.4.27 + '@vue/shared': 3.4.27 + vue: 3.4.27(typescript@4.9.5) + dev: true + /@vue/shared@3.2.45: resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==} @@ -1411,6 +1491,10 @@ packages: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} dev: true + /@vue/shared@3.4.27: + resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==} + dev: true + /@vue/web-component-wrapper@1.3.0: resolution: {integrity: sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==} dev: true @@ -1906,7 +1990,7 @@ packages: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.9 dev: true /bail@1.0.5: @@ -2763,8 +2847,8 @@ packages: /constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} dependencies: - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 dev: true /content-disposition@0.5.4: @@ -3453,6 +3537,11 @@ packages: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + /errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true @@ -5365,6 +5454,12 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -6707,6 +6802,15 @@ packages: source-map-js: 1.0.2 dev: true + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + dev: true + /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} @@ -7883,6 +7987,11 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: true + /source-map-resolve@0.5.3: resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} deprecated: See https://github.com/lydell/source-map-resolve#deprecated @@ -8739,7 +8848,7 @@ packages: peerDependencies: vue: '>=2' dependencies: - '@babel/parser': 7.22.7 + '@babel/parser': 7.23.9 '@babel/types': 7.22.5 '@vue/compiler-dom': 3.3.4 '@vue/compiler-sfc': 3.3.4 @@ -8832,6 +8941,14 @@ packages: - vue-template-compiler dev: true + /vue-leaflet-rotate-marker@0.1.0(typescript@4.9.5): + resolution: {integrity: sha512-qBrb/ydvl+cuQSZ3cinH2G0nmFNglh5h9qVIFRAlrcjCNqZE1RIEHxwjvxA0CCxdlNFxGeeZy0RFrkdSqNToeg==} + dependencies: + vue: 3.4.27(typescript@4.9.5) + transitivePeerDependencies: + - typescript + dev: true + /vue-loader@15.11.1(css-loader@6.10.0)(react-dom@18.2.0)(react@18.2.0)(webpack@5.90.1): resolution: {integrity: sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==} peerDependencies: @@ -9052,6 +9169,22 @@ packages: '@vue/server-renderer': 3.2.45(vue@3.2.45) '@vue/shared': 3.2.45 + /vue@3.4.27(typescript@4.9.5): + resolution: {integrity: sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.27 + '@vue/compiler-sfc': 3.4.27 + '@vue/runtime-dom': 3.4.27 + '@vue/server-renderer': 3.4.27(vue@3.4.27) + '@vue/shared': 3.4.27 + typescript: 4.9.5 + dev: true + /walkes@0.2.1: resolution: {integrity: sha512-mbCCLh/TineJ2hxHpV6E0OmXht0P8R695BKHbhjrh56GwTHlPVbOTftetdih9XLQZgkFkrJXhGz1j9cxq03tWQ==} dev: true @@ -9400,8 +9533,8 @@ packages: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5 dev: true diff --git a/src/App.vue b/src/App.vue index 970ebba..f99b7bc 100644 --- a/src/App.vue +++ b/src/App.vue @@ -31,3 +31,4 @@ console.log("Initialize 4 websocket connections from App.vue"); max-height: 100vh; /* Limit height to viewport height */ } + \ No newline at end of file diff --git a/src/components/Map.vue b/src/components/Map.vue index 42b58a5..60b81b1 100644 --- a/src/components/Map.vue +++ b/src/components/Map.vue @@ -234,7 +234,7 @@ export default { const res = await response.json(); console.log('zone In PolygonPoints sent successfully:', res); - await this.getZoneIn(event); + await this.getZoneIn(); await this.clearSelection(event); // const multiPolygon = [ // [ // First polygon @@ -290,7 +290,7 @@ export default { const res = await response.json(); console.log('zone out PolygonPoints sent successfully:', res); - await this.getZoneOut(event); + await this.getZoneOut(); await this.clearSelection(event); } catch (error) { @@ -298,8 +298,7 @@ export default { } }, //get all zone in polygons - async getZoneIn(event: LeafletMouseEvent) { - event.stopPropagation(); // Stop event propagation + async getZoneIn() { try { const response = await fetch('http://localhost:5135/zones/in', { method: 'GET', @@ -324,8 +323,7 @@ export default { } }, //get all zone out polygons - async getZoneOut(event: LeafletMouseEvent) { - event.stopPropagation(); // Stop event propagation + async getZoneOut() { try { const response = await fetch('http://localhost:5135/zones/out', { method: 'GET', @@ -354,11 +352,27 @@ export default { this.fireCoordsList.shift(); } //pass the fire coords here - this.fireCoordsList.push(coords); + this.fireCoordsList.push({...coords}); + localStorage.setItem('fireCoordsList', JSON.stringify(this.fireCoordsList)); // this.fireCoordsList.push(firePoint); // console.log("firstptslist:", this.fireCoordsList) }, }, + mounted() { + this.getZoneIn(); + this.getZoneOut(); + const storedFireCoords = localStorage.getItem('fireCoordsList'); + if (storedFireCoords) { + try { + this.fireCoordsList = JSON.parse(storedFireCoords); + } catch (e) { + console.error("Error parsing fireCoordsList from localStorage", e); + } + } else { + // Initialize localStorage with an empty list if it doesn't exist + localStorage.setItem('fireCoordsList', JSON.stringify(this.fireCoordsList)); + } + }, watch: { // uses deep watch to watch for changes in longitude and latitude properties in firePoint firePoint: { @@ -373,6 +387,7 @@ export default { deep: true }, + // firePoints(newFireCoords) { // const currentTime = Date.now(); // if (currentTime - this.lastUpdate >= this.updateInterval) { @@ -441,4 +456,5 @@ export default { z-index: 999; } - \ No newline at end of file + + \ No newline at end of file diff --git a/src/components/Navbar.vue b/src/components/Navbar.vue index 966cb79..8ca2cfa 100644 --- a/src/components/Navbar.vue +++ b/src/components/Navbar.vue @@ -97,6 +97,6 @@ export default { - + diff --git a/src/views/HomeScreen.vue b/src/views/HomeScreen.vue index c916714..f65dfd5 100644 --- a/src/views/HomeScreen.vue +++ b/src/views/HomeScreen.vue @@ -114,4 +114,5 @@ it directly in their file component's style*/ .hover{ cursor: pointer; } - \ No newline at end of file + + \ No newline at end of file diff --git a/src/views/StaticScreen.vue b/src/views/StaticScreen.vue index dc543c8..bafdd5e 100644 --- a/src/views/StaticScreen.vue +++ b/src/views/StaticScreen.vue @@ -99,4 +99,5 @@ onMounted(() => { .map_div { width: 77%; } - \ No newline at end of file + + \ No newline at end of file