diff --git a/package-lock.json b/package-lock.json index 64c3b84..ea8334c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,6 +33,7 @@ "notistack": "^3.0.1", "protobuf-ts": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#dev", "react": "^18.3.1", + "react-beautiful-dnd": "^13.1.1", "react-color": "^2.19.3", "react-dom": "^18.3.1", "react-error-boundary": "^5.0.0", @@ -41,6 +42,7 @@ "react-image": "^4.1.0", "react-infinite-scroller": "^1.2.6", "react-joyride": "^2.9.3", + "react-map-gl": "^8.0.1", "react-phone-input-2": "^2.15.1", "react-router-dom": "^6.28.0", "react-virtualized-auto-sizer": "^1.0.25", @@ -53,9 +55,11 @@ "@types/jsonexport": "^3.0.5", "@types/lodash": "^4.17.13", "@types/react": "^18.3.10", + "@types/react-beautiful-dnd": "^13.1.8", "@types/react-color": "^3.0.13", "@types/react-dom": "^18.3.0", "@types/react-infinite-scroller": "^1.2.5", + "@types/react-map-gl": "^6.1.7", "@vitejs/plugin-react": "^4.3.2", "eslint": "^9.11.1", "eslint-plugin-react-hooks": "^5.1.0-rc.0", @@ -2484,6 +2488,39 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mapbox/jsonlint-lines-primitives": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@mapbox/unitbezier": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==", + "license": "BSD-2-Clause" + }, + "node_modules/@maplibre/maplibre-gl-style-spec": { + "version": "19.3.3", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-19.3.3.tgz", + "integrity": "sha512-cOZZOVhDSulgK0meTsTkmNXb1ahVvmTmWmfx9gRBwc6hq98wS9JP35ESIoNq3xqEan+UN+gn8187Z6E4NKhLsw==", + "license": "ISC", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^3.0.0", + "minimist": "^1.2.8", + "rw": "^1.3.3", + "sort-object": "^3.0.3" + }, + "bin": { + "gl-style-format": "dist/gl-style-format.mjs", + "gl-style-migrate": "dist/gl-style-migrate.mjs", + "gl-style-validate": "dist/gl-style-validate.mjs" + } + }, "node_modules/@mui/core-downloads-tracker": { "version": "6.1.7", "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.7.tgz", @@ -5596,6 +5633,16 @@ "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", "license": "MIT" }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", + "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -5622,6 +5669,16 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, + "node_modules/@types/mapbox-gl": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-3.4.1.tgz", + "integrity": "sha512-NsGKKtgW93B+UaLPti6B7NwlxYlES5DpV5Gzj9F75rK5ALKsqSk15CiEHbOnTr09RGbr6ZYiCdI+59NNNcAImg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, "node_modules/@types/node": { "version": "22.9.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.1.tgz", @@ -5649,6 +5706,16 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/react-beautiful-dnd": { + "version": "13.1.8", + "resolved": "https://registry.npmjs.org/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.1.8.tgz", + "integrity": "sha512-E3TyFsro9pQuK4r8S/OL6G99eq7p8v29sX0PM7oT8Z+PJfZvSQTx4zTQbUJ+QZXioAF0e7TGBEcA1XhYhCweyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/react-color": { "version": "3.0.13", "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.13.tgz", @@ -5679,6 +5746,31 @@ "@types/react": "*" } }, + "node_modules/@types/react-map-gl": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@types/react-map-gl/-/react-map-gl-6.1.7.tgz", + "integrity": "sha512-szkfkWd3FbySDkxyn0MDj9yzD8XYk+RIi4od6sGb3lVHNBGcW20G2v2vcq2N5k18UYAdqAoKGSYuHkGV4JOCrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/geojson": "*", + "@types/mapbox-gl": "*", + "@types/react": "*", + "@types/viewport-mercator-project": "*" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.34", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz", + "integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==", + "license": "MIT", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, "node_modules/@types/react-transition-group": { "version": "4.4.11", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", @@ -5711,6 +5803,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/viewport-mercator-project": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@types/viewport-mercator-project/-/viewport-mercator-project-6.1.6.tgz", + "integrity": "sha512-uWrbqhRXFeiT6CAvRjf0BkQKRkKED+ofrPhglKpUktQML3463dEPiA4iwe7cZQs6m49Zo/g03rL7ChMLiE5Z8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "gl-matrix": "^3.2.0" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.11.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz", @@ -5941,6 +6043,41 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@vis.gl/react-mapbox": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@vis.gl/react-mapbox/-/react-mapbox-8.0.1.tgz", + "integrity": "sha512-s/OokvgK1T43Ev2/4hj21C0DKrf79nIigBCdYPtAkEX88qGLRQ5t5zCRqg5Zl+44xXfVxcVpX2/vWUKd9oYGKQ==", + "license": "MIT", + "peerDependencies": { + "mapbox-gl": ">=3.5.0", + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + }, + "peerDependenciesMeta": { + "mapbox-gl": { + "optional": true + } + } + }, + "node_modules/@vis.gl/react-maplibre": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@vis.gl/react-maplibre/-/react-maplibre-8.0.1.tgz", + "integrity": "sha512-IFguo7DKIDZ9U9uRI4thZRfc5aTHEH4lWlIjedBeCpLeMm7wdrqtU2JshyEQt8dDO85kkEE7CbrtjMx5MplaoA==", + "license": "MIT", + "dependencies": { + "@maplibre/maplibre-gl-style-spec": "^19.2.1" + }, + "peerDependencies": { + "maplibre-gl": ">=4.0.0", + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + }, + "peerDependenciesMeta": { + "maplibre-gl": { + "optional": true + } + } + }, "node_modules/@vitejs/plugin-react": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", @@ -6133,6 +6270,15 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", @@ -6182,6 +6328,15 @@ "node": ">=12" } }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -6374,6 +6529,25 @@ "dev": true, "license": "MIT" }, + "node_modules/bytewise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", + "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", + "license": "MIT", + "dependencies": { + "bytewise-core": "^1.2.2", + "typewise": "^1.0.3" + } + }, + "node_modules/bytewise-core": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", + "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", + "license": "MIT", + "dependencies": { + "typewise-core": "^1.2" + } + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -6659,6 +6833,15 @@ "node": ">=8" } }, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "license": "MIT", + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, "node_modules/css-vendor": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", @@ -7466,6 +7649,18 @@ "node": ">=12.0.0" } }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7888,6 +8083,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==", + "dev": true, + "license": "MIT" + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -8321,6 +8532,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -8444,6 +8664,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -8625,6 +8857,15 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/jake": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", @@ -8715,6 +8956,12 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/json-stringify-pretty-compact": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz", + "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==", + "license": "MIT" + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -9011,6 +9258,12 @@ "node": ">= 0.4" } }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -9064,6 +9317,15 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/moment": { "version": "2.30.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", @@ -9589,6 +9851,12 @@ "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", "license": "ISC" }, + "node_modules/raf-schd": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==", + "license": "MIT" + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -9618,6 +9886,26 @@ "node": ">=0.10.0" } }, + "node_modules/react-beautiful-dnd": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", + "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", + "deprecated": "react-beautiful-dnd is now deprecated. Context and options: https://github.com/atlassian/react-beautiful-dnd/issues/2672", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.9.2", + "css-box-model": "^1.2.0", + "memoize-one": "^5.1.1", + "raf-schd": "^4.0.2", + "react-redux": "^7.2.0", + "redux": "^4.0.4", + "use-memo-one": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.5 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-color": { "version": "2.19.3", "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", @@ -9815,6 +10103,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/react-map-gl": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-8.0.1.tgz", + "integrity": "sha512-VQjLcZdtyJCPXxy5xVL2QIgfA+YG3v+PzSdt07WWbVmXFhV4wUuy6DZSQYDdfqVH2BujKo/ImdL5zfEJApRnpg==", + "license": "MIT", + "dependencies": { + "@vis.gl/react-mapbox": "8.0.1", + "@vis.gl/react-maplibre": "8.0.1" + }, + "peerDependencies": { + "mapbox-gl": ">=1.13.0", + "maplibre-gl": ">=1.13.0", + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + }, + "peerDependenciesMeta": { + "mapbox-gl": { + "optional": true + }, + "maplibre-gl": { + "optional": true + } + } + }, "node_modules/react-phone-input-2": { "version": "2.15.1", "integrity": "sha512-W03abwhXcwUoq+vUFvC6ch2+LJYMN8qSOiO889UH6S7SyMCQvox/LF3QWt+cZagZrRdi5z2ON3omnjoCUmlaYw==", @@ -9831,6 +10143,37 @@ "react-dom": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0" } }, + "node_modules/react-redux": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "react": "^16.8.3 || ^17 || ^18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-redux/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" + }, "node_modules/react-refresh": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", @@ -9972,6 +10315,15 @@ "d3-timer": "^3.0.1" } }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -10201,6 +10553,12 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -10374,6 +10732,21 @@ "node": ">= 0.4" } }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -10499,6 +10872,41 @@ "scroll-into-view-if-needed": "^3.1.0" } }, + "node_modules/sort-asc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", + "integrity": "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-desc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz", + "integrity": "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-object": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.3.tgz", + "integrity": "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==", + "license": "MIT", + "dependencies": { + "bytewise": "^1.1.0", + "get-value": "^2.0.2", + "is-extendable": "^0.1.1", + "sort-asc": "^0.2.0", + "sort-desc": "^0.2.0", + "union-value": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -10552,6 +10960,43 @@ "integrity": "sha512-0kGecIZNIReCSiznK3uheYB8sbstLjCZLiwcQwbmLhgHJj2gz6OnSPkVzJQCMnmEz1BQ4gPK59ylhBoEWOhGNA==", "license": "BDS-3-Clause" }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -11125,6 +11570,21 @@ } } }, + "node_modules/typewise": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", + "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==", + "license": "MIT", + "dependencies": { + "typewise-core": "^1.2.0" + } + }, + "node_modules/typewise-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", + "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==", + "license": "MIT" + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -11193,6 +11653,21 @@ "node": ">=4" } }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -11266,6 +11741,15 @@ "punycode": "^2.1.0" } }, + "node_modules/use-memo-one": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/victory": { "version": "37.3.6", "resolved": "https://registry.npmjs.org/victory/-/victory-37.3.6.tgz", diff --git a/package.json b/package.json index 92ad00a..e0f2626 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "notistack": "^3.0.1", "protobuf-ts": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#dev", "react": "^18.3.1", + "react-beautiful-dnd": "^13.1.1", "react-color": "^2.19.3", "react-dom": "^18.3.1", "react-error-boundary": "^5.0.0", @@ -51,6 +52,7 @@ "react-image": "^4.1.0", "react-infinite-scroller": "^1.2.6", "react-joyride": "^2.9.3", + "react-map-gl": "^8.0.1", "react-phone-input-2": "^2.15.1", "react-router-dom": "^6.28.0", "react-virtualized-auto-sizer": "^1.0.25", @@ -63,9 +65,11 @@ "@types/jsonexport": "^3.0.5", "@types/lodash": "^4.17.13", "@types/react": "^18.3.10", + "@types/react-beautiful-dnd": "^13.1.8", "@types/react-color": "^3.0.13", "@types/react-dom": "^18.3.0", "@types/react-infinite-scroller": "^1.2.5", + "@types/react-map-gl": "^6.1.7", "@vitejs/plugin-react": "^4.3.2", "eslint": "^9.11.1", "eslint-plugin-react-hooks": "^5.1.0-rc.0", diff --git a/src/bin/BinActions.tsx b/src/bin/BinActions.tsx index 6331524..5f4d93a 100644 --- a/src/bin/BinActions.tsx +++ b/src/bin/BinActions.tsx @@ -12,7 +12,6 @@ import RemoveSelfIcon from "@mui/icons-material/ExitToApp"; import MoreIcon from "@mui/icons-material/MoreVert"; import GroupSettingsIcon from "@mui/icons-material/Settings"; import ShareObjectIcon from "@mui/icons-material/Share"; -//import SensorIcon from "@material-ui/icons/Sensor"; import SensorIcon from "@mui/icons-material/SettingsInputAntenna"; import ObjectUsersIcon from "@mui/icons-material/AccountCircle"; import ObjectTeamsIcon from "@mui/icons-material/SupervisedUserCircle"; diff --git a/src/bin/BinComponents.tsx b/src/bin/BinComponents.tsx index 0bc9e63..6c2bb0f 100644 --- a/src/bin/BinComponents.tsx +++ b/src/bin/BinComponents.tsx @@ -30,7 +30,6 @@ import { Component, Device } from "models"; import { pond } from "protobuf-ts/pond"; import React, { useCallback, useEffect, useState } from "react"; import { useComponentAPI, useDeviceAPI, useSnackbar } from "hooks"; -// import { Autocomplete } from "@material-ui/lab"; import { useBinAPI } from "providers"; import { GetComponentIcon } from "pbHelpers/ComponentType"; import { CheckBox as CheckBoxIcon, CheckBoxOutlineBlank, Remove } from "@mui/icons-material"; diff --git a/src/bin/BinVisualizerV2.tsx b/src/bin/BinVisualizerV2.tsx index a99e8e0..935f9c1 100644 --- a/src/bin/BinVisualizerV2.tsx +++ b/src/bin/BinVisualizerV2.tsx @@ -26,7 +26,6 @@ import { import FullscreenIcon from "@mui/icons-material/Fullscreen"; import FullscreenExitIcon from "@mui/icons-material/FullscreenExit"; import RefreshIcon from "@mui/icons-material/Refresh"; -// import { Skeleton, ToggleButton, ToggleButtonGroup } from "@material-ui/lab"; import HumidityIcon from "component/HumidityIcon"; import TemperatureIcon from "component/TemperatureIcon"; import GrainDescriber, { GrainOptions, ToGrainOption } from "grain/GrainDescriber"; diff --git a/src/common/DiffHistory.tsx b/src/common/DiffHistory.tsx index 25113db..fa97ea9 100644 --- a/src/common/DiffHistory.tsx +++ b/src/common/DiffHistory.tsx @@ -1,5 +1,4 @@ import React, { useState, useEffect } from "react"; -// import { createStyles, Theme, makeStyles, fade } from "@material-ui/core/styles"; import { detailedDiff } from "deep-object-diff"; import { List, @@ -13,9 +12,7 @@ import { } from "@mui/material"; import { Add, ChangeHistory, Remove, Face, Sync } from "@mui/icons-material"; import { amber, red, blue, green } from "@mui/material/colors"; -// import MaterialTable from "material-table"; import moment from "moment"; -// import { getTableIcons } from "common/ResponsiveTable"; import { pond } from "protobuf-ts/pond"; import { useUserAPI } from "hooks"; import { useMobile } from "hooks"; @@ -28,7 +25,7 @@ const addedColour = alpha(green[600], 0.25); const deletedColour = alpha(red[600], 0.25); const updatedColour = alpha(blue[600], 0.25); const resyncedColour = alpha(amber[600], 0.25); -const useStyles = makeStyles((theme: Theme) => { +const useStyles = makeStyles((_theme: Theme) => { return ({ added: { backgroundColor: addedColour @@ -270,15 +267,15 @@ export default function DiffHistory(props: Props) { const { kind, name, - headerStyle, + // headerStyle, cellStyle, list, translateKey, translateValue, showTitle, - noPaging, - sortingEnabled, - filteringEnabled, + // noPaging, + // sortingEnabled, + // filteringEnabled, drawer } = props; const userAPI = useUserAPI(); @@ -365,7 +362,7 @@ export default function DiffHistory(props: Props) { resolve({ data: data, page: page, totalCount: res.total }); }); }) - .catch((err: any) => { + .catch((_err: any) => { setData([]); resolve({ data: [], page: 0, totalCount: 0 }); }); @@ -487,7 +484,7 @@ export default function DiffHistory(props: Props) { /> ))} columns={columns()} - total={0} + total={total} pageSize={0} page={0} setPage={setPage} diff --git a/src/common/Graph.tsx b/src/common/Graph.tsx index 3d54b98..b6c33e0 100644 --- a/src/common/Graph.tsx +++ b/src/common/Graph.tsx @@ -1,9 +1,6 @@ import React from "react"; -// import { darken, withTheme, WithTheme } from "@material-ui/core/styles"; -// import withWidth, { WithWidth } from "@material-ui/core/withWidth"; import { Range } from "common/RangeInput"; import moment from "moment"; -// import { RouteComponentProps, withRouter } from "react-router"; import AutoSizer from "react-virtualized-auto-sizer"; import { abbreviateNum } from "utils/numbers"; import { or } from "utils/types"; @@ -12,14 +9,12 @@ import { ScalePropType, VictoryArea, VictoryAxis, - VictoryBar, VictoryChart, VictoryLabel, VictoryLegend, VictoryLine, VictoryPie, VictoryScatter, - VictoryStringOrNumberCallback, VictoryTheme, VictoryTooltip, VictoryTooltipProps @@ -34,9 +29,8 @@ import { Legend } from "recharts"; import { pond } from "protobuf-ts/pond"; -import { styled, WithTheme } from "@mui/styles"; import { getTextPrimary, getTextSecondary } from "theme/text"; -import { darken, useMediaQuery, useTheme, withTheme } from "@mui/material"; +import { darken, useTheme } from "@mui/material"; import { useWidth } from "hooks"; import { useNavigate } from "react-router-dom"; const VictoryCursorVoronoiContainer: any = createContainer("cursor", "voronoi"); @@ -686,7 +680,6 @@ class Graph extends React.Component { render() { const theme = useTheme() - const width = useWidth() const { graphComponent } = this.props; const { interactionComponents, overlayComponents, dataComponent, updateCounter } = this.state; diff --git a/src/common/MapGL.tsx b/src/common/MapGL.tsx new file mode 100644 index 0000000..436fb62 --- /dev/null +++ b/src/common/MapGL.tsx @@ -0,0 +1,103 @@ +import { Tooltip } from "@mui/material"; +import { Beenhere } from "@mui/icons-material"; +import { useThemeType } from "hooks"; +import moment from "moment"; +import React, { useEffect, useState } from "react"; +import ReactMapGL, { Marker } from "react-map-gl"; + +export interface Coordinate { + latitude: number; + longitude: number; + timestamp: string; +} +interface Props { + paths: Map; +} + +export default function MapGL(props: Props) { + const themeType = useThemeType(); + const { paths } = props; + const [viewport, setViewport] = useState({ + latitude: 52.8118612, + longitude: -106.2459731, + zoom: 12 + }); + + useEffect(() => { + let lat = 52.8118612; + let long = -106.2459731; + if (paths.size > 0) { + let first = Array.from(paths.values())[0][0]; + if (first) { + lat = first.latitude; + long = first.longitude; + } + } + setViewport({ + latitude: lat, + longitude: long, + zoom: 8 + }); + }, [paths]); + + /* + const changeViewport = (vp: typeof viewport) => { + let transition: any = vp; + if (!transition || transition.width === 0 || transition.height === 0) return; + setViewport(vp); + }; + */ + + const markers = (): any[] => { + let elems: any[] = []; + paths.forEach((path: Coordinate[], name: string) => { + let num = path.length; + let step = 1; + if (num > 0) { + step = 1.0 / (num * 1.0); + } + path + .sort((a: Coordinate, b: Coordinate) => { + if (a.timestamp < b.timestamp) return 1; + else if (b.timestamp < a.timestamp) return -1; + return 0; + }) + .forEach((coord: Coordinate, i: number) => { + let ts = moment(coord.timestamp); + let title = coord.latitude + ", " + coord.longitude; + if (ts.isValid()) { + title += " @ " + ts.format("lll"); + } + elems.push( + + + + + + + + ); + }); + }); + return elems; + }; + + let style = + themeType === "dark" ? "mapbox://styles/mapbox/dark-v10" : "mapbox://styles/mapbox/light-v10"; + return ( + { + setViewport({ + longitude: e.viewState.longitude, + latitude: e.viewState.latitude, + zoom: e.viewState.zoom, + }); + }}> + {markers()} + + ); +} diff --git a/src/common/NotificationButton.tsx b/src/common/NotificationButton.tsx index cf1297a..7c1263e 100644 --- a/src/common/NotificationButton.tsx +++ b/src/common/NotificationButton.tsx @@ -1,6 +1,4 @@ import { IconButton, Tooltip } from "@mui/material"; -// import { Theme } from "@/styles/createMuiTheme"; -// import withStyles, { WithStyles } from "@material-ui/core/styles/withStyles"; import NotificationsEnabledIcon from "@mui/icons-material/NotificationsActive"; import NotificationsDisabledIcon from "@mui/icons-material/NotificationsOff"; interface Props { diff --git a/src/common/OutlinedBox.tsx b/src/common/OutlinedBox.tsx index f7db2eb..b15c179 100644 --- a/src/common/OutlinedBox.tsx +++ b/src/common/OutlinedBox.tsx @@ -1,6 +1,5 @@ import { Box, BoxProps, Theme, InputLabel } from "@mui/material"; import { makeStyles } from "@mui/styles"; -// import NotchedOutline from "@material-ui/core/OutlinedInput/NotchedOutline"; import React, { PropsWithChildren } from "react"; const useStyles = makeStyles((theme: Theme) => { diff --git a/src/common/RangeInput.tsx b/src/common/RangeInput.tsx index 50bdd29..04ffe10 100644 --- a/src/common/RangeInput.tsx +++ b/src/common/RangeInput.tsx @@ -4,8 +4,6 @@ import { Grid2 as Grid, TextField } from "@mui/material"; -// import { Theme } from "@material-ui/core/styles/createMuiTheme"; -// import withStyles, { WithStyles } from "@material-ui/core/styles/withStyles"; import { Theme } from "@mui/material"; import { withStyles, WithStyles } from "@mui/styles"; import React from "react"; diff --git a/src/common/SearchSelect.tsx b/src/common/SearchSelect.tsx index fcf9f5c..0a12099 100644 --- a/src/common/SearchSelect.tsx +++ b/src/common/SearchSelect.tsx @@ -1,7 +1,6 @@ import { Autocomplete, Avatar, Box, CircularProgress, createFilterOptions } from "@mui/material"; import TextField from "@mui/material/TextField"; import { makeStyles } from "@mui/styles"; -// import Autocomplete, { createFilterOptions } from "@material-ui/lab/Autocomplete"; import { isArray } from "lodash"; import React, { CSSProperties } from "react"; diff --git a/src/common/SmartBreadcrumb.tsx b/src/common/SmartBreadcrumb.tsx index 9ec053c..fc71b2e 100644 --- a/src/common/SmartBreadcrumb.tsx +++ b/src/common/SmartBreadcrumb.tsx @@ -10,10 +10,7 @@ import { useTheme } from "@mui/material"; import { Replay } from "@mui/icons-material"; -// import Link, { LinkProps } from "@material-ui/core/Link"; -// import { Skeleton } from "@mui/l"; import { useMobile } from "hooks"; -// import { MatchParams } from "navigation/Routes"; import { ReactNode } from "react"; import { useLocation } from "react-router"; import { Link as RouterLink } from "react-router-dom"; diff --git a/src/common/Tour.tsx b/src/common/Tour.tsx index b7959f5..4781e21 100644 --- a/src/common/Tour.tsx +++ b/src/common/Tour.tsx @@ -1,4 +1,3 @@ -// import { useTheme, makeStyles, createStyles, Theme } from "@material-ui/core/styles"; import Joyride, { Step, CallBackProps, STATUS, TooltipRenderProps, Locale } from "react-joyride"; import { Button, diff --git a/src/common/time/DateSelect.tsx b/src/common/time/DateSelect.tsx index 3e5b570..8f51896 100644 --- a/src/common/time/DateSelect.tsx +++ b/src/common/time/DateSelect.tsx @@ -10,7 +10,6 @@ import { Select, Theme } from "@mui/material"; -// import { DateRange, StaticDateRangePicker, DateRangeDelimiter } from "@material-ui/pickers"; import moment, { Moment } from "moment"; import React from "react"; import ReactDOM from "react-dom"; diff --git a/src/common/time/TimeBar.tsx b/src/common/time/TimeBar.tsx index d089e11..51fa212 100644 --- a/src/common/time/TimeBar.tsx +++ b/src/common/time/TimeBar.tsx @@ -3,7 +3,6 @@ import { DialogActions, DialogContent, Grid, - TextField, Theme, Typography } from "@mui/material"; @@ -11,11 +10,9 @@ import moment, { Moment } from "moment"; import { DateRange as DateIcon } from "@mui/icons-material"; import React, { useEffect, useState } from "react"; import ResponsiveDialog from "common/ResponsiveDialog"; -// import { DateRange, DateRangeDelimiter, StaticDateRangePicker } from "@material-ui/pickers"; import { DateRangePreset, GetDefaultDateRange, SetDefaultPreset } from "./DateRange"; import { useThemeType } from "hooks"; import { makeStyles } from "@mui/styles"; -import dayjs from "dayjs"; interface Props { startDate: Moment; diff --git a/src/component/ComponentForm.tsx b/src/component/ComponentForm.tsx index 6dd90fd..0f477b6 100644 --- a/src/component/ComponentForm.tsx +++ b/src/component/ComponentForm.tsx @@ -22,17 +22,14 @@ import { ExpandMore, Close as CloseIcon } from "@mui/icons-material"; -// import { Alert, AlertTitle } from "@material-ui/lab"; import PeriodSelect from "common/time/PeriodSelect"; import SearchSelect, { Option } from "common/SearchSelect"; -// import { GrainOptions } from "grain/GrainDescriber"; import { cloneDeep } from "lodash"; import { Component, Device } from "models"; import { extension, getMeasurements, hasDimensions, - hasFan, isController, isMultiSensor, primaryMeasurement @@ -42,16 +39,12 @@ import { pond } from "protobuf-ts/pond"; import { quack } from "protobuf-ts/quack"; import React, { useEffect, useState } from "react"; import { bestUnit, milliToX } from "common/time/duration"; -// import CompModes from "component/ComponentMode.json"; -// import green from "@material-ui/core/colors/green"; -// import red from "@material-ui/core/colors/red"; -// import FanPicker from "fans/fanPicker"; import { useGlobalState } from "providers"; import { green, red } from "@mui/material/colors"; import { makeStyles } from "@mui/styles"; import { getDistanceUnit } from "utils"; import { GrainOptions } from "grain"; -// import { getDistanceUnit } from "utils"; +import CompModes from "component/ComponentMode.json"; const useStyles = makeStyles((theme: Theme) => { return ({ @@ -168,11 +161,11 @@ export default function ComponentForm(props: Props) { formComponent.settings.measurementPeriodMs !== formComponent.settings.reportPeriodMs ); setDataUsageWarningDismissed(localStorage.getItem("dataUsageWarningDismissed") !== null); - // CompModes.forEach((mode: any) => { - // if (formComponent.type() === mode.type && formComponent.subType() === mode.subtype) { - // setCompMode(mode); - // } - // }); + CompModes.forEach((mode: any) => { + if (formComponent.type() === mode.type && formComponent.subType() === mode.subtype) { + setCompMode(mode); + } + }); //get the dimension values for the form and convert them to the form display values (m or ft) let length = formComponent.settings.containerDimensions?.lengthCm ?? 0; diff --git a/src/component/ComponentOrder.tsx b/src/component/ComponentOrder.tsx index 95d03aa..97947bd 100644 --- a/src/component/ComponentOrder.tsx +++ b/src/component/ComponentOrder.tsx @@ -15,7 +15,6 @@ import { Theme } from "@mui/material"; import { makeStyles } from "@mui/styles"; -//import DragIcon from "@material-ui/icons/DragHandle"; import { DragHandle as DragIcon } from "@mui/icons-material"; import ResponsiveDialog from "common/ResponsiveDialog"; import { useDeviceAPI, usePrevious, useSnackbar } from "hooks"; @@ -23,11 +22,11 @@ import { cloneDeep } from "lodash"; import { Component, Device } from "models"; import { sortComponents } from "pbHelpers/Component"; import { pond, quack } from "protobuf-ts/pond"; -import React, { useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import { DragDropContext, Draggable, Droppable, DropResult } from "react-beautiful-dnd"; import { useThemeType } from "../hooks/useThemeType"; -const useStyles = makeStyles((theme: Theme) => { +const useStyles = makeStyles((_theme: Theme) => { const themeType = useThemeType() return ({ item: { diff --git a/src/component/ComponentSettings.tsx b/src/component/ComponentSettings.tsx index 1fbd4fa..3431a33 100644 --- a/src/component/ComponentSettings.tsx +++ b/src/component/ComponentSettings.tsx @@ -54,10 +54,6 @@ import { or } from "utils/types"; import { ConfigurablePin } from "pbHelpers/AddressTypes"; import ColourPicker from "common/ColourPicker"; import classNames from "classnames"; -// import green from "@material-ui/core/colors/green"; -// import AddIcon from "@material-ui/icons/AddCircle"; -// import RemoveIcon from "@material-ui/icons/RemoveCircle"; -// import red from "@material-ui/core/colors/red"; import { getContextKeys, getContextTypes } from "pbHelpers/Context"; import ComponentForm from "./ComponentForm"; import { green, red } from "@mui/material/colors"; diff --git a/src/component/ExportDataSettings.tsx b/src/component/ExportDataSettings.tsx index b433d43..cbfc8c5 100644 --- a/src/component/ExportDataSettings.tsx +++ b/src/component/ExportDataSettings.tsx @@ -13,8 +13,6 @@ import { Typography, Theme } from "@mui/material" -//import { Theme } from "@material-ui/core/styles/createMuiTheme"; -//import withStyles, { WithStyles } from "@material-ui/core/styles/withStyles"; import { withStyles, WithStyles } from "@mui/styles"; import DateSelect from "common/time/DateSelect"; @@ -93,7 +91,7 @@ class ExportDataSettings extends React.Component { }; submit = () => { - const { device, component, newMeasurements, user } = this.props; + const { device, component, user } = this.props; const { startDate, endDate } = this.state; const { sampleMeasurements, listUnitMeasurements } = this.context; diff --git a/src/component/GPS.tsx b/src/component/GPS.tsx index 985d17c..d8e9b72 100644 --- a/src/component/GPS.tsx +++ b/src/component/GPS.tsx @@ -1,4 +1,3 @@ -//import { withStyles, Theme, WithTheme, createStyles, WithStyles } from "@material-ui/core/styles"; import { Theme } from "@mui/material" import { withStyles, createStyles, WithTheme, WithStyles } from "@mui/styles"; import React from "react"; diff --git a/src/component/SensorLight.tsx b/src/component/SensorLight.tsx index 167bb6c..3a2439f 100644 --- a/src/component/SensorLight.tsx +++ b/src/component/SensorLight.tsx @@ -1,11 +1,10 @@ -//import { Box, createStyles, makeStyles, Theme } from "@material-ui/core"; import { Box, Theme } from "@mui/material"; import { makeStyles } from "@mui/styles"; import { Component } from "models"; import { getMeasurementSummary } from "pbHelpers/ComponentType"; import { pond } from "protobuf-ts/pond"; import { quack } from "protobuf-ts/quack"; -import React, { useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import { or } from "utils"; interface Props { diff --git a/src/component/UnitMeasurementSummary.tsx b/src/component/UnitMeasurementSummary.tsx index f9a1d03..eadd310 100644 --- a/src/component/UnitMeasurementSummary.tsx +++ b/src/component/UnitMeasurementSummary.tsx @@ -5,7 +5,6 @@ import { convertedUnitMeasurement } from "models/UnitMeasurement"; import moment from "moment"; import { pond } from "protobuf-ts/pond"; import React, { useEffect, useState } from "react"; -// import Divider from "@material-ui/core/Divider"; import { Plenum } from "models/Plenum"; import { Pressure } from "models/Pressure"; import { GrainCable } from "models/GrainCable"; diff --git a/src/device/VersionChip.tsx b/src/device/VersionChip.tsx index 0389441..09dac0f 100644 --- a/src/device/VersionChip.tsx +++ b/src/device/VersionChip.tsx @@ -1,6 +1,4 @@ import { Chip, Theme, Tooltip } from "@mui/material"; -// import { Theme } from "@material-ui/core/styles/createMuiTheme"; -// import withStyles, { WithStyles } from "@material-ui/core/styles/withStyles"; import React from "react"; import { getFirmwareVersionHelper } from "pbHelpers/FirmwareVersion"; import { withStyles, WithStyles } from "@mui/styles"; diff --git a/src/services/google/mapHelpers.ts b/src/services/google/mapHelpers.ts index b4d032d..23bfba4 100644 --- a/src/services/google/mapHelpers.ts +++ b/src/services/google/mapHelpers.ts @@ -1,3 +1,4 @@ +import { quack } from "protobuf-ts/quack"; import { or } from "utils/types"; function decode(encoded: string) { @@ -10,16 +11,16 @@ function decode(encoded: string) { return res; } -export function parseGPS(gps: { location: any; latitude: number; longitude: number; uncertainty: number; wifiAccessPoints: any[]; cellTower: any; }) { +export function parseGPS(gps: { location: any; latitude: number; longitude: number; uncertainty: number; wifiAccessPoints: any[]; cellTower: any; } | quack.GPS | null | undefined) { gps = or(gps, {}); let lat = 0; let lng = 0; let accuracy = 0; let request: { wifiAccessPoints?: any; cellTowers?: any; } | undefined = undefined; if (gps.location) { - lat = gps.latitude; - lng = gps.longitude; - accuracy = gps.uncertainty; + lat = gps.location.latitude; + lng = gps.location.latitude; + accuracy = gps.location.uncertainty; } else if (gps.wifiAccessPoints) { request = { wifiAccessPoints: [] }; gps.wifiAccessPoints.forEach(function(ap) {