diff --git a/.github/workflows/feature-branch_deploy.yml b/.github/workflows/feature-branch_deploy.yml
index 1b249592f4..750c560221 100644
--- a/.github/workflows/feature-branch_deploy.yml
+++ b/.github/workflows/feature-branch_deploy.yml
@@ -38,7 +38,7 @@ jobs:
uses: datamonsters/replace-action@v2
with:
files: 'app/dist/shConfig.js'
- replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }}'
+ replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }},$OPENCAGE_RACE=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_GTIF=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_TRILATERAL=${{ secrets.OPENCAGE_EOX }}'
# Upload build client to S3
- name: sync client s3
diff --git a/.github/workflows/gtif-demo_deploy.yml b/.github/workflows/gtif-demo_deploy.yml
index b73c55911b..ba253cc569 100644
--- a/.github/workflows/gtif-demo_deploy.yml
+++ b/.github/workflows/gtif-demo_deploy.yml
@@ -37,7 +37,7 @@ jobs:
uses: datamonsters/replace-action@v2
with:
files: 'app/dist/shConfig.js'
- replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }}'
+ replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }},$OPENCAGE_RACE=${{ secrets.OPENCAGE_RACE }},$OPENCAGE_GTIF=${{ secrets.OPENCAGE_GTIF }},$OPENCAGE_TRILATERAL=${{ secrets.OPENCAGE_TRILATERAL }}'
# Upload build client to S3
- name: sync client s3
diff --git a/.github/workflows/gtif-staging_deploy.yml b/.github/workflows/gtif-staging_deploy.yml
index 8e3a834ff5..d98e172799 100644
--- a/.github/workflows/gtif-staging_deploy.yml
+++ b/.github/workflows/gtif-staging_deploy.yml
@@ -37,7 +37,7 @@ jobs:
uses: datamonsters/replace-action@v2
with:
files: 'app/dist/shConfig.js'
- replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }}'
+ replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }},$OPENCAGE_RACE=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_GTIF=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_TRILATERAL=${{ secrets.OPENCAGE_EOX }}'
# Upload build client to S3
- name: sync client s3
diff --git a/.github/workflows/production_deploy.yml b/.github/workflows/production_deploy.yml
index a1920f44b5..dee2ad485e 100644
--- a/.github/workflows/production_deploy.yml
+++ b/.github/workflows/production_deploy.yml
@@ -37,7 +37,7 @@ jobs:
uses: datamonsters/replace-action@v2
with:
files: 'app/dist/shConfig.js'
- replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }}'
+ replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }},$OPENCAGE_RACE=${{ secrets.OPENCAGE_RACE }},$OPENCAGE_GTIF=${{ secrets.OPENCAGE_GTIF }},$OPENCAGE_TRILATERAL=${{ secrets.OPENCAGE_TRILATERAL }}'
# Upload to S3
- name: sync s3
diff --git a/.github/workflows/staging_deploy.yml b/.github/workflows/staging_deploy.yml
index 90bb9edae6..33fc88af0a 100644
--- a/.github/workflows/staging_deploy.yml
+++ b/.github/workflows/staging_deploy.yml
@@ -37,7 +37,7 @@ jobs:
uses: datamonsters/replace-action@v2
with:
files: 'app/dist/shConfig.js'
- replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }}'
+ replacements: '$SH_INSTANCE_ID=${{ secrets.SH_INSTANCE_ID }},$SH_INSTANCE_ID_POLAR=${{ secrets.SH_INSTANCE_ID_POLAR }},$GEODB_INSTANCE_ID=${{ secrets.GEODB_INSTANCE_ID }},$LISTMONK_API_KEY=${{ secrets.LISTMONK_API_KEY }},$STAT_API_CLIENT_SECRET=${{ secrets.STAT_API_CLIENT_SECRET }},$STAT_API_CLIENT_ID=${{ secrets.STAT_API_CLIENT_ID }},$SH_INSTANCE_ID_GTIF=${{ secrets.SH_INSTANCE_ID_GTIF }},$OPENCAGE_RACE=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_GTIF=${{ secrets.OPENCAGE_EOX }},$OPENCAGE_TRILATERAL=${{ secrets.OPENCAGE_EOX }}'
# Upload build client to S3
- name: sync client s3
diff --git a/app/package-lock.json b/app/package-lock.json
index 3857e0564f..1c9bffa282 100644
--- a/app/package-lock.json
+++ b/app/package-lock.json
@@ -9,12 +9,13 @@
"version": "4.0.0",
"dependencies": {
"@chenfengyuan/vue-countdown": "^1.1.5",
+ "@eox/geosearch": "^0.1.2",
"@eox/itemfilter": "0.14.0",
- "@eox/jsonform": "^0.6.1",
+ "@eox/jsonform": "^0.7.0",
"@eox/layercontrol": "^0.17.3",
- "@eox/map": "^1.6.1",
+ "@eox/map": "^1.8.2",
"@eox/stacinfo": "^0.3.3",
- "@eox/storytelling": "^0.5.0",
+ "@eox/storytelling": "^1.0.2",
"@turf/difference": "^6.5.0",
"axios": "^0.21.1",
"chart.js": "2.9.3",
@@ -36,7 +37,7 @@
"luxon": "^1.28.1",
"marked": "^4.0.10",
"medium-zoom": "^1.0.6",
- "ol": "^9.1.0",
+ "ol": "^9.2.4",
"ol-mapbox-style": "^11.0.0",
"proj4": "^2.8.0",
"regl": "^2.1.0",
@@ -1975,6 +1976,20 @@
"ms": "^2.1.1"
}
},
+ "node_modules/@eox/geosearch": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@eox/geosearch/-/geosearch-0.1.2.tgz",
+ "integrity": "sha512-Mnni+xeDY+6gQfXk31KifiYP5RMmLpz+LFrMWurd7mWyFYkqfSfOmgwlorcs1BWIiQOk4PUKt0G5LBEIrWTaZQ==",
+ "dependencies": {
+ "lit": "^3.1.3",
+ "lodash.debounce": "^4.0.8",
+ "proj4": "^2.11.0"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ }
+ },
"node_modules/@eox/itemfilter": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/@eox/itemfilter/-/itemfilter-0.14.0.tgz",
@@ -1994,11 +2009,12 @@
}
},
"node_modules/@eox/jsonform": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@eox/jsonform/-/jsonform-0.6.1.tgz",
- "integrity": "sha512-pBCm0wKCaou+XyArvo07alVqcKr4yhXM4KP3+S9yzimXIs55NJN3N5w3PZLuzf1/JuF8RSovCjk4bu0W2gMAzQ==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@eox/jsonform/-/jsonform-0.7.0.tgz",
+ "integrity": "sha512-tGDAtuBGn9Fxfr7rlP/Hmi7UPqU6mE6GzYUM7UVFQquSzmI8KQL5EHzb+sRSGfH+vuxqTDo6vUQD+j/aU75hsw==",
"dependencies": {
"@json-editor/json-editor": "^2.11.0",
+ "easymde": "^2.18.0",
"toolcool-range-slider": "^4.0.28"
},
"engines": {
@@ -2022,9 +2038,9 @@
}
},
"node_modules/@eox/map": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@eox/map/-/map-1.6.1.tgz",
- "integrity": "sha512-ynPBR9zqGOh1tnyuKXoy2ECnvRzO6py8cjB/GGCGzdKL4T9krsFlIUBTPK/sRGwO2tOhl0NBthK00gG/CPLPyg==",
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@eox/map/-/map-1.8.2.tgz",
+ "integrity": "sha512-9ofpFXTSAXTfTT1sJz1gd2a2Oz64NeoXsZMwld/s90Umh7x10lL5lVKybT8eyJj2ID6qw5voU3QcBww/RxUA/A==",
"dependencies": {
"lit": "^3.0.2",
"ol": "^9.0.0",
@@ -2050,13 +2066,14 @@
}
},
"node_modules/@eox/storytelling": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@eox/storytelling/-/storytelling-0.5.0.tgz",
- "integrity": "sha512-SwayHqiHviklP/qqs3BQCL3uzywmtmIS1uNR3+z27QNr8oDAuGl8r/1eaI5qlBXTS/2FqvHhGblYOU7BSn0QaA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@eox/storytelling/-/storytelling-1.0.2.tgz",
+ "integrity": "sha512-61DMpjsPSFQUrEGY9NRmFEkRo0vXoL9ExdonYHuUOqHwAHTFYvN0Lpc0cXukJ/0Yino11ymuxwljklfvr5v3LA==",
"dependencies": {
"@sindresorhus/slugify": "^2.2.1",
"glightbox": "^3.3.0",
"isomorphic-dompurify": "^2.4.0",
+ "joi": "^17.12.3",
"js-yaml": "^4.1.0",
"lit": "^3.0.2",
"markdown-it": "^14.0.0"
@@ -2227,16 +2244,16 @@
}
},
"node_modules/@lit-labs/ssr-dom-shim": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.2.tgz",
- "integrity": "sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g=="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz",
+ "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g=="
},
"node_modules/@lit/reactive-element": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.2.tgz",
- "integrity": "sha512-SVOwLAWUQg3Ji1egtOt1UiFe4zdDpnWHyc5qctSceJ5XIu0Uc76YmGpIjZgx9YJ0XtdW0Jm507sDvjOu+HnB8w==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz",
+ "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==",
"dependencies": {
- "@lit-labs/ssr-dom-shim": "^1.1.2"
+ "@lit-labs/ssr-dom-shim": "^1.2.0"
}
},
"node_modules/@mapbox/jsonlint-lines-primitives": {
@@ -2497,6 +2514,29 @@
}
}
},
+ "node_modules/@sideway/address": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
+ "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0"
+ }
+ },
+ "node_modules/@sideway/address/node_modules/@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="
+ },
+ "node_modules/@sideway/formula": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
+ "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg=="
+ },
+ "node_modules/@sideway/pinpoint": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
+ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ=="
+ },
"node_modules/@sindresorhus/slugify": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz",
@@ -2824,6 +2864,14 @@
"moment": "^2.10.2"
}
},
+ "node_modules/@types/codemirror": {
+ "version": "5.60.15",
+ "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz",
+ "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==",
+ "dependencies": {
+ "@types/tern": "*"
+ }
+ },
"node_modules/@types/connect": {
"version": "3.4.36",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz",
@@ -2851,6 +2899,11 @@
"@types/trusted-types": "*"
}
},
+ "node_modules/@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
+ },
"node_modules/@types/express": {
"version": "4.17.17",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
@@ -2917,6 +2970,11 @@
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
"dev": true
},
+ "node_modules/@types/marked": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.2.tgz",
+ "integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w=="
+ },
"node_modules/@types/mime": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
@@ -3010,6 +3068,14 @@
"integrity": "sha512-fOHIwZua0sRltqWzODGUM6b4ffZrf/vzGUmNXdR+4DzuJP42PMbM5dLKcdzlYvv8bMJ3GALOzkk1q7cDm2zPyA==",
"dev": true
},
+ "node_modules/@types/tern": {
+ "version": "0.23.9",
+ "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz",
+ "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
"node_modules/@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
@@ -6717,6 +6783,19 @@
"node": ">=0.10.0"
}
},
+ "node_modules/codemirror": {
+ "version": "5.65.16",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.16.tgz",
+ "integrity": "sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg=="
+ },
+ "node_modules/codemirror-spell-checker": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz",
+ "integrity": "sha512-2Tl6n0v+GJRsC9K3MLCdLaMOmvWL0uukajNJseorZJsslaxZyZMgENocPU8R0DyoTAiKsyqiemSOZo7kjGV0LQ==",
+ "dependencies": {
+ "typo-js": "*"
+ }
+ },
"node_modules/collection-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
@@ -8964,6 +9043,18 @@
"node": ">=6.0.0"
}
},
+ "node_modules/easymde": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/easymde/-/easymde-2.18.0.tgz",
+ "integrity": "sha512-IxVVUxNWIoXLeqtBU4BLc+eS/ScYhT1Dcb6yF5Wchoj1iXAV+TIIDWx+NCaZhY7RcSHqDPKllbYq7nwGKILnoA==",
+ "dependencies": {
+ "@types/codemirror": "^5.60.4",
+ "@types/marked": "^4.0.7",
+ "codemirror": "^5.63.1",
+ "codemirror-spell-checker": "1.1.2",
+ "marked": "^4.1.0"
+ }
+ },
"node_modules/ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -12708,6 +12799,31 @@
"integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
"dev": true
},
+ "node_modules/joi": {
+ "version": "17.13.1",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz",
+ "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==",
+ "dependencies": {
+ "@hapi/hoek": "^9.3.0",
+ "@hapi/topo": "^5.1.0",
+ "@sideway/address": "^4.1.5",
+ "@sideway/formula": "^3.0.1",
+ "@sideway/pinpoint": "^2.0.0"
+ }
+ },
+ "node_modules/joi/node_modules/@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="
+ },
+ "node_modules/joi/node_modules/@hapi/topo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
+ "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0"
+ }
+ },
"node_modules/jquery": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
@@ -13240,29 +13356,29 @@
}
},
"node_modules/lit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz",
- "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.4.tgz",
+ "integrity": "sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==",
"dependencies": {
- "@lit/reactive-element": "^2.0.0",
- "lit-element": "^4.0.0",
- "lit-html": "^3.1.0"
+ "@lit/reactive-element": "^2.0.4",
+ "lit-element": "^4.0.4",
+ "lit-html": "^3.1.2"
}
},
"node_modules/lit-element": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.2.tgz",
- "integrity": "sha512-/W6WQZUa5VEXwC7H9tbtDMdSs9aWil3Ou8hU6z2cOKWbsm/tXPAcsoaHVEtrDo0zcOIE5GF6QgU55tlGL2Nihg==",
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.6.tgz",
+ "integrity": "sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==",
"dependencies": {
- "@lit-labs/ssr-dom-shim": "^1.1.2",
- "@lit/reactive-element": "^2.0.0",
- "lit-html": "^3.1.0"
+ "@lit-labs/ssr-dom-shim": "^1.2.0",
+ "@lit/reactive-element": "^2.0.4",
+ "lit-html": "^3.1.2"
}
},
"node_modules/lit-html": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.0.tgz",
- "integrity": "sha512-FwAjq3iNsaO6SOZXEIpeROlJLUlrbyMkn4iuv4f4u1H40Jw8wkeR/OUXZUHUoiYabGk8Y4Y0F/rgq+R4MrOLmA==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.4.tgz",
+ "integrity": "sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==",
"dependencies": {
"@types/trusted-types": "^2.0.2"
}
@@ -14719,9 +14835,9 @@
"dev": true
},
"node_modules/ol": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/ol/-/ol-9.1.0.tgz",
- "integrity": "sha512-nDrkJ2tzZNpo/wzN/PpHV5zdxbnXZaFktoMaD2cFLEc6gCwlgLY21Yd8wnt/4FjaVYwLBnbN9USXSwIBGcyksQ==",
+ "version": "9.2.4",
+ "resolved": "https://registry.npmjs.org/ol/-/ol-9.2.4.tgz",
+ "integrity": "sha512-bsbu4ObaAlbELMIZWnYEvX4Z9jO+OyCBshtODhDKmqYTPEfnKOX3RieCr97tpJkqWTZvyV4tS9UQDvHoCdxS+A==",
"dependencies": {
"color-rgba": "^3.0.0",
"color-space": "^2.0.1",
@@ -19434,6 +19550,11 @@
"integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
"dev": true
},
+ "node_modules/typo-js": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/typo-js/-/typo-js-1.2.4.tgz",
+ "integrity": "sha512-Oy/k+tFle5NAA3J/yrrYGfvEnPVrDZ8s8/WCwjUE75k331QyKIsFss7byQ/PzBmXLY6h1moRnZbnaxWBe3I3CA=="
+ },
"node_modules/uc.micro": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
@@ -23261,6 +23382,16 @@
}
}
},
+ "@eox/geosearch": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@eox/geosearch/-/geosearch-0.1.2.tgz",
+ "integrity": "sha512-Mnni+xeDY+6gQfXk31KifiYP5RMmLpz+LFrMWurd7mWyFYkqfSfOmgwlorcs1BWIiQOk4PUKt0G5LBEIrWTaZQ==",
+ "requires": {
+ "lit": "^3.1.3",
+ "lodash.debounce": "^4.0.8",
+ "proj4": "^2.11.0"
+ }
+ },
"@eox/itemfilter": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/@eox/itemfilter/-/itemfilter-0.14.0.tgz",
@@ -23276,11 +23407,12 @@
}
},
"@eox/jsonform": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@eox/jsonform/-/jsonform-0.6.1.tgz",
- "integrity": "sha512-pBCm0wKCaou+XyArvo07alVqcKr4yhXM4KP3+S9yzimXIs55NJN3N5w3PZLuzf1/JuF8RSovCjk4bu0W2gMAzQ==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@eox/jsonform/-/jsonform-0.7.0.tgz",
+ "integrity": "sha512-tGDAtuBGn9Fxfr7rlP/Hmi7UPqU6mE6GzYUM7UVFQquSzmI8KQL5EHzb+sRSGfH+vuxqTDo6vUQD+j/aU75hsw==",
"requires": {
"@json-editor/json-editor": "^2.11.0",
+ "easymde": "^2.18.0",
"toolcool-range-slider": "^4.0.28"
}
},
@@ -23296,9 +23428,9 @@
}
},
"@eox/map": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@eox/map/-/map-1.6.1.tgz",
- "integrity": "sha512-ynPBR9zqGOh1tnyuKXoy2ECnvRzO6py8cjB/GGCGzdKL4T9krsFlIUBTPK/sRGwO2tOhl0NBthK00gG/CPLPyg==",
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@eox/map/-/map-1.8.2.tgz",
+ "integrity": "sha512-9ofpFXTSAXTfTT1sJz1gd2a2Oz64NeoXsZMwld/s90Umh7x10lL5lVKybT8eyJj2ID6qw5voU3QcBww/RxUA/A==",
"requires": {
"lit": "^3.0.2",
"ol": "^9.0.0",
@@ -23316,13 +23448,14 @@
}
},
"@eox/storytelling": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@eox/storytelling/-/storytelling-0.5.0.tgz",
- "integrity": "sha512-SwayHqiHviklP/qqs3BQCL3uzywmtmIS1uNR3+z27QNr8oDAuGl8r/1eaI5qlBXTS/2FqvHhGblYOU7BSn0QaA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@eox/storytelling/-/storytelling-1.0.2.tgz",
+ "integrity": "sha512-61DMpjsPSFQUrEGY9NRmFEkRo0vXoL9ExdonYHuUOqHwAHTFYvN0Lpc0cXukJ/0Yino11ymuxwljklfvr5v3LA==",
"requires": {
"@sindresorhus/slugify": "^2.2.1",
"glightbox": "^3.3.0",
"isomorphic-dompurify": "^2.4.0",
+ "joi": "^17.12.3",
"js-yaml": "^4.1.0",
"lit": "^3.0.2",
"markdown-it": "^14.0.0"
@@ -23468,16 +23601,16 @@
}
},
"@lit-labs/ssr-dom-shim": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.2.tgz",
- "integrity": "sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g=="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz",
+ "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g=="
},
"@lit/reactive-element": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.2.tgz",
- "integrity": "sha512-SVOwLAWUQg3Ji1egtOt1UiFe4zdDpnWHyc5qctSceJ5XIu0Uc76YmGpIjZgx9YJ0XtdW0Jm507sDvjOu+HnB8w==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz",
+ "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==",
"requires": {
- "@lit-labs/ssr-dom-shim": "^1.1.2"
+ "@lit-labs/ssr-dom-shim": "^1.2.0"
}
},
"@mapbox/jsonlint-lines-primitives": {
@@ -23670,6 +23803,31 @@
"any-observable": "^0.3.0"
}
},
+ "@sideway/address": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
+ "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
+ "requires": {
+ "@hapi/hoek": "^9.0.0"
+ },
+ "dependencies": {
+ "@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="
+ }
+ }
+ },
+ "@sideway/formula": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
+ "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg=="
+ },
+ "@sideway/pinpoint": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
+ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ=="
+ },
"@sindresorhus/slugify": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz",
@@ -23916,6 +24074,14 @@
"moment": "^2.10.2"
}
},
+ "@types/codemirror": {
+ "version": "5.60.15",
+ "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz",
+ "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==",
+ "requires": {
+ "@types/tern": "*"
+ }
+ },
"@types/connect": {
"version": "3.4.36",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz",
@@ -23943,6 +24109,11 @@
"@types/trusted-types": "*"
}
},
+ "@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
+ },
"@types/express": {
"version": "4.17.17",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
@@ -24009,6 +24180,11 @@
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
"dev": true
},
+ "@types/marked": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.2.tgz",
+ "integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w=="
+ },
"@types/mime": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
@@ -24102,6 +24278,14 @@
"integrity": "sha512-fOHIwZua0sRltqWzODGUM6b4ffZrf/vzGUmNXdR+4DzuJP42PMbM5dLKcdzlYvv8bMJ3GALOzkk1q7cDm2zPyA==",
"dev": true
},
+ "@types/tern": {
+ "version": "0.23.9",
+ "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz",
+ "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==",
+ "requires": {
+ "@types/estree": "*"
+ }
+ },
"@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
@@ -27089,6 +27273,19 @@
"integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
"dev": true
},
+ "codemirror": {
+ "version": "5.65.16",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.16.tgz",
+ "integrity": "sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg=="
+ },
+ "codemirror-spell-checker": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz",
+ "integrity": "sha512-2Tl6n0v+GJRsC9K3MLCdLaMOmvWL0uukajNJseorZJsslaxZyZMgENocPU8R0DyoTAiKsyqiemSOZo7kjGV0LQ==",
+ "requires": {
+ "typo-js": "*"
+ }
+ },
"collection-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
@@ -28859,6 +29056,18 @@
"integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==",
"dev": true
},
+ "easymde": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/easymde/-/easymde-2.18.0.tgz",
+ "integrity": "sha512-IxVVUxNWIoXLeqtBU4BLc+eS/ScYhT1Dcb6yF5Wchoj1iXAV+TIIDWx+NCaZhY7RcSHqDPKllbYq7nwGKILnoA==",
+ "requires": {
+ "@types/codemirror": "^5.60.4",
+ "@types/marked": "^4.0.7",
+ "codemirror": "^5.63.1",
+ "codemirror-spell-checker": "1.1.2",
+ "marked": "^4.1.0"
+ }
+ },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -31748,6 +31957,33 @@
"integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
"dev": true
},
+ "joi": {
+ "version": "17.13.1",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz",
+ "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==",
+ "requires": {
+ "@hapi/hoek": "^9.3.0",
+ "@hapi/topo": "^5.1.0",
+ "@sideway/address": "^4.1.5",
+ "@sideway/formula": "^3.0.1",
+ "@sideway/pinpoint": "^2.0.0"
+ },
+ "dependencies": {
+ "@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="
+ },
+ "@hapi/topo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
+ "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
+ "requires": {
+ "@hapi/hoek": "^9.0.0"
+ }
+ }
+ }
+ },
"jquery": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
@@ -32166,29 +32402,29 @@
}
},
"lit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz",
- "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.4.tgz",
+ "integrity": "sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==",
"requires": {
- "@lit/reactive-element": "^2.0.0",
- "lit-element": "^4.0.0",
- "lit-html": "^3.1.0"
+ "@lit/reactive-element": "^2.0.4",
+ "lit-element": "^4.0.4",
+ "lit-html": "^3.1.2"
}
},
"lit-element": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.2.tgz",
- "integrity": "sha512-/W6WQZUa5VEXwC7H9tbtDMdSs9aWil3Ou8hU6z2cOKWbsm/tXPAcsoaHVEtrDo0zcOIE5GF6QgU55tlGL2Nihg==",
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.6.tgz",
+ "integrity": "sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==",
"requires": {
- "@lit-labs/ssr-dom-shim": "^1.1.2",
- "@lit/reactive-element": "^2.0.0",
- "lit-html": "^3.1.0"
+ "@lit-labs/ssr-dom-shim": "^1.2.0",
+ "@lit/reactive-element": "^2.0.4",
+ "lit-html": "^3.1.2"
}
},
"lit-html": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.0.tgz",
- "integrity": "sha512-FwAjq3iNsaO6SOZXEIpeROlJLUlrbyMkn4iuv4f4u1H40Jw8wkeR/OUXZUHUoiYabGk8Y4Y0F/rgq+R4MrOLmA==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.4.tgz",
+ "integrity": "sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==",
"requires": {
"@types/trusted-types": "^2.0.2"
}
@@ -33336,9 +33572,9 @@
"dev": true
},
"ol": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/ol/-/ol-9.1.0.tgz",
- "integrity": "sha512-nDrkJ2tzZNpo/wzN/PpHV5zdxbnXZaFktoMaD2cFLEc6gCwlgLY21Yd8wnt/4FjaVYwLBnbN9USXSwIBGcyksQ==",
+ "version": "9.2.4",
+ "resolved": "https://registry.npmjs.org/ol/-/ol-9.2.4.tgz",
+ "integrity": "sha512-bsbu4ObaAlbELMIZWnYEvX4Z9jO+OyCBshtODhDKmqYTPEfnKOX3RieCr97tpJkqWTZvyV4tS9UQDvHoCdxS+A==",
"requires": {
"color-rgba": "^3.0.0",
"color-space": "^2.0.1",
@@ -37134,6 +37370,11 @@
"integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
"dev": true
},
+ "typo-js": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/typo-js/-/typo-js-1.2.4.tgz",
+ "integrity": "sha512-Oy/k+tFle5NAA3J/yrrYGfvEnPVrDZ8s8/WCwjUE75k331QyKIsFss7byQ/PzBmXLY6h1moRnZbnaxWBe3I3CA=="
+ },
"uc.micro": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
diff --git a/app/package.json b/app/package.json
index 21985ab3d3..0613cdc6a9 100644
--- a/app/package.json
+++ b/app/package.json
@@ -16,12 +16,13 @@
},
"dependencies": {
"@chenfengyuan/vue-countdown": "^1.1.5",
+ "@eox/geosearch": "^0.1.2",
"@eox/itemfilter": "0.14.0",
- "@eox/jsonform": "^0.6.1",
+ "@eox/jsonform": "^0.7.0",
"@eox/layercontrol": "^0.17.3",
"@eox/stacinfo": "^0.3.3",
- "@eox/map": "^1.6.1",
- "@eox/storytelling": "^0.5.0",
+ "@eox/map": "^1.8.2",
+ "@eox/storytelling": "^1.0.2",
"@turf/difference": "^6.5.0",
"axios": "^0.21.1",
"chart.js": "2.9.3",
@@ -43,7 +44,7 @@
"luxon": "^1.28.1",
"marked": "^4.0.10",
"medium-zoom": "^1.0.6",
- "ol": "^9.1.0",
+ "ol": "^9.2.4",
"ol-mapbox-style": "^11.0.0",
"proj4": "^2.8.0",
"regl": "^2.1.0",
diff --git a/app/public/data/dashboards/6be3fcfd33789f76.json b/app/public/data/dashboards/6be3fcfd33789f76.json
index 53cfe40ce7..19e1d045b7 100644
--- a/app/public/data/dashboards/6be3fcfd33789f76.json
+++ b/app/public/data/dashboards/6be3fcfd33789f76.json
@@ -23,7 +23,7 @@
},
"dataLayerTime": null
},
- "id": "W10-SITI",
+ "id": "World-SITI",
"title": "World, Sea Ice Thickness (ICESat-2)"
},
{
@@ -36,20 +36,36 @@
{
"width": 3,
"mapInfo": {
- "position": null,
- "right": null,
- "up": null,
- "direction": null
+ "position": [
+ 1231034.0739326647,
+ -6122683.800696974,
+ 17717773.571757164
+ ],
+ "right": [
+ 0.9803800948855829,
+ 0.19711638580324986,
+ 3.122502256758253e-16
+ ],
+ "up": [
+ -0.1860106965891978,
+ 0.9251447241624721,
+ 0.33091881195958767
+ ],
+ "direction": [
+ -0.06522952020777888,
+ 0.32442621626836493,
+ -0.9436592286897083
+ ]
},
- "id": "W9-SIC",
+ "id": "World-SIC",
"title": "World, Sea Ice Thickness (Cryosat)"
},
{
"width": 1,
- "text": " ESA has been building radar altimeters since the early 1990s. Radar altimeters use a microwave signal to measure sea ice freeboard. In this frequency band, the signal can penetrate further into snow that lies on sea ice. To better understand how far the microwaves can penetrate the snowpack, complementary field or airborne campaigns are needed to validate the satellite data. Researchers are comparing altimeter signals at different frequencies to calculate how much snow lies on top of the sea ice. This is important as the amount of snow can also impact the freeboard\u2014for instance a heavy snow-load can weigh the sea ice down and may even push it under water.\n \nResearchers can calculate sea ice thickness once the freeboard has been established. The ESA Climate Change Initiative Sea Ice Thickness data set presented here shows the decrease in winter sea ice thickness over the past 15 years using information from ESA\u2019s Envisat and CryoSat-2 satellite missions.\n\n\n## Explore Datasets \n \nThis **EO Dashboard** provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the **[EXPLORE DATASETS](https://www.eodashboard.org/explore)** button at the top of the page or directly from the links below:\n\n[Sea Ice Thickness from Cryosat](https://www.eodashboard.org/explore?poi=W9-SIC) \n[Sea Ice Thickness from Envisat](https://www.eodashboard.org/explore?poi=W8-SIE) \n[Sea Ice Thickness from IceSAT-2](https://www.eodashboard.org/explore?poi=W10-SITI)\n \n[Sea Ice Concentration Antarctic from GCOM-W](https://www.eodashboard.org/explore?poi=World-N12_sea_ice_concentration_arctic)",
+ "text": " ESA has been building radar altimeters since the early 1990s. Radar altimeters use a microwave signal to measure sea ice freeboard. In this frequency band, the signal can penetrate further into snow that lies on sea ice. To better understand how far the microwaves can penetrate the snowpack, complementary field or airborne campaigns are needed to validate the satellite data. Researchers are comparing altimeter signals at different frequencies to calculate how much snow lies on top of the sea ice. This is important as the amount of snow can also impact the freeboard\u2014for instance a heavy snow-load can weigh the sea ice down and may even push it under water.\n \nResearchers can calculate sea ice thickness once the freeboard has been established. The ESA Climate Change Initiative Sea Ice Thickness data set presented here shows the decrease in winter sea ice thickness over the past 15 years using information from ESA\u2019s Envisat and CryoSat-2 satellite missions.\n\n\n## Explore Datasets \n \nThis **EO Dashboard** provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the **[EXPLORE DATASETS](https://www.eodashboard.org/explore)** button at the top of the page or directly from the links below:\n\n[Sea Ice Thickness from Cryosat](https://www.eodashboard.org/explore?poi=World-SIC) \n[Sea Ice Thickness from Envisat](https://www.eodashboard.org/explore?poi=World-SIE) \n[Sea Ice Thickness from IceSAT-2](https://www.eodashboard.org/explore?poi=World-SITI)\n \n[Sea Ice Concentration Antarctic from GCOM-W](https://www.eodashboard.org/explore?poi=World-N12_1_sea_ice_concentration_arctic)",
"id": "Envisat-1652251767198",
"title": "Envisat",
- "__generatedText__": "
ESA has been building radar altimeters since the early 1990s. Radar altimeters use a microwave signal to measure sea ice freeboard. In this frequency band, the signal can penetrate further into snow that lies on sea ice. To better understand how far the microwaves can penetrate the snowpack, complementary field or airborne campaigns are needed to validate the satellite data. Researchers are comparing altimeter signals at different frequencies to calculate how much snow lies on top of the sea ice. This is important as the amount of snow can also impact the freeboard\u2014for instance a heavy snow-load can weigh the sea ice down and may even push it under water.
\nResearchers can calculate sea ice thickness once the freeboard has been established. The ESA Climate Change Initiative Sea Ice Thickness data set presented here shows the decrease in winter sea ice thickness over the past 15 years using information from ESA\u2019s Envisat and CryoSat-2 satellite missions.
\nExplore Datasets
\n
This EO Dashboard provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the EXPLORE DATASETS button at the top of the page or directly from the links below:
\nSea Ice Thickness from Cryosat
Sea Ice Thickness from Envisat
Sea Ice Thickness from IceSAT-2\n
Sea Ice Concentration Antarctic from GCOM-W
\n"
+ "__generatedText__": " ESA has been building radar altimeters since the early 1990s. Radar altimeters use a microwave signal to measure sea ice freeboard. In this frequency band, the signal can penetrate further into snow that lies on sea ice. To better understand how far the microwaves can penetrate the snowpack, complementary field or airborne campaigns are needed to validate the satellite data. Researchers are comparing altimeter signals at different frequencies to calculate how much snow lies on top of the sea ice. This is important as the amount of snow can also impact the freeboard\u2014for instance a heavy snow-load can weigh the sea ice down and may even push it under water.
\nResearchers can calculate sea ice thickness once the freeboard has been established. The ESA Climate Change Initiative Sea Ice Thickness data set presented here shows the decrease in winter sea ice thickness over the past 15 years using information from ESA\u2019s Envisat and CryoSat-2 satellite missions.
\nExplore Datasets
\n
This EO Dashboard provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the EXPLORE DATASETS button at the top of the page or directly from the links below:
\nSea Ice Thickness from Cryosat
Sea Ice Thickness from Envisat
Sea Ice Thickness from IceSAT-2\n
Sea Ice Concentration Antarctic from GCOM-W
\n"
},
{
"width": 3,
@@ -75,7 +91,7 @@
-0.9436592286897083
]
},
- "id": "W8-SIE",
+ "id": "World-SIE",
"title": "World, Sea Ice Thickness (Envisat)"
}
],
diff --git a/app/public/data/dashboards/e45036dd512afea1.json b/app/public/data/dashboards/e45036dd512afea1.json
index cd66426ed3..45a9569493 100644
--- a/app/public/data/dashboards/e45036dd512afea1.json
+++ b/app/public/data/dashboards/e45036dd512afea1.json
@@ -34,7 +34,7 @@
"up": null,
"direction": null
},
- "id": "World-N12_sea_ice_concentration_arctic",
+ "id": "World-N12_1_sea_ice_concentration_arctic",
"title": "Global, Sea Ice Concentration (GCOM-W)"
},
{
@@ -67,10 +67,10 @@
},
{
"width": 4,
- "text": "## Explore Datasets \n \nThis **EO Dashboard** provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the **[EXPLORE DATASETS](https://www.eodashboard.org/explore)** button at the top of the page or directly from the links below:\n\n[Sea Ice Thickness from Cryosat](https://www.eodashboard.org/explore?poi=W9-SIC) \n[Sea Ice Thickness from Envisat](https://www.eodashboard.org/explore?poi=W8-SIE) \n[Sea Ice Thickness from IceSAT-2](https://www.eodashboard.org/explore?poi=W10-SITI)\n \n[Sea Ice Concentration from GCOM-W](https://www.eodashboard.org/explore?poi=World-N12_sea_ice_concentration_arctic)",
+ "text": "## Explore Datasets \n \nThis **EO Dashboard** provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the **[EXPLORE DATASETS](https://www.eodashboard.org/explore)** button at the top of the page or directly from the links below:\n\n[Sea Ice Thickness from Cryosat](https://www.eodashboard.org/explore?poi=World-SIC) \n[Sea Ice Thickness from Envisat](https://www.eodashboard.org/explore?poi=World-SIE) \n[Sea Ice Thickness from IceSAT-2](https://www.eodashboard.org/explore?poi=World-SITI)\n \n[Sea Ice Concentration from GCOM-W](https://www.eodashboard.org/explore?poi=World-N12_1_sea_ice_concentration_arctic)",
"id": " -1652890242032",
"title": " ",
- "__generatedText__": "Explore Datasets
\n
This EO Dashboard provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the EXPLORE DATASETS button at the top of the page or directly from the links below:
\nSea Ice Thickness from Cryosat
Sea Ice Thickness from Envisat
Sea Ice Thickness from IceSAT-2\n
Sea Ice Concentration from GCOM-W
\n"
+ "__generatedText__": "Explore Datasets
\n
This EO Dashboard provides access to interactive maps of Sea Ice Thickness and Sea Ice Concentration. Access these datasets by clicking on the EXPLORE DATASETS button at the top of the page or directly from the links below:
\nSea Ice Thickness from Cryosat
Sea Ice Thickness from Envisat
Sea Ice Thickness from IceSAT-2\n
Sea Ice Concentration from GCOM-W
\n"
}
],
"title": "Cryo - JAXA 1"
diff --git a/app/public/data/trilateral/Science-Hub_Challenge2_240502.png b/app/public/data/trilateral/Science-Hub_Challenge2_240502.png
new file mode 100644
index 0000000000..0406460474
Binary files /dev/null and b/app/public/data/trilateral/Science-Hub_Challenge2_240502.png differ
diff --git a/app/public/shConfig.js b/app/public/shConfig.js
index 4f6d7344cb..881afe5aec 100644
--- a/app/public/shConfig.js
+++ b/app/public/shConfig.js
@@ -4,5 +4,8 @@ const shConfig = {
geodbInstanceId: '$GEODB_INSTANCE_ID',
listmonkApiKey: '$LISTMONK_API_KEY',
statApiClientId: '$STAT_API_CLIENT_ID',
- statApiClientSecret: '$STAT_API_CLIENT_SECRET'
+ statApiClientSecret: '$STAT_API_CLIENT_SECRET',
+ opencageRACE: '$OPENCAGE_RACE',
+ opencageGTIF: '$OPENCAGE_GTIF',
+ opencageTrilateral: '$OPENCAGE_TRILATERAL',
};
diff --git a/app/src/appConfig.js b/app/src/appConfig.js
index 8d1156429c..0ca37de6f9 100644
--- a/app/src/appConfig.js
+++ b/app/src/appConfig.js
@@ -6,6 +6,8 @@ module.exports = [
staging: 2,
production: 4,
},
+
+ geosearchEndpoint: 'https://api.opencagedata.com/geocode/v1/json?limit=5&bounds=-27.42188,24.20689,53.08594,71.46912',
match: ['race.esa.int', 'eodash.eox.at', 'eodash-staging.eox.at', 'eodash-testing.eox.at', 'race.eox.world', 'race.localhost', 'race.eox.home'],
branding: {
appName: 'Rapid Action for Citizens with Earth Observation',
@@ -146,6 +148,7 @@ module.exports = [
staging: 3,
production: 5,
},
+ geosearchEndpoint: 'https://api.opencagedata.com/geocode/v1/json?limit=5',
match: ['eodashboard.org', 'www.eodashboard.org', 'eodash-trilateral.eox.at', 'eodash-trilateral-staging.eox.at', 'eodash-trilateral-testing.eox.at', 'trilateral.eox.world', 'trilateral.localhost', 'trilateral.eox.home'],
branding: {
appName: 'Earth Observing Dashboard',
@@ -153,8 +156,8 @@ module.exports = [
secondaryColor: '#004170',
headerLogo: './data/trilateral/Trilateral_Logo.svg',
faviconPath: './public/img/trilateral/favicon.ico',
- name: 'Earth Observing Dashboard',
- subname: 'Global environmental changes observed by NASA, ESA, and JAXA',
+ title: 'Earth Observing Dashboard',
+ subtitle: 'Global environmental changes observed by NASA, ESA, and JAXA',
coverImage: '/data/story-images/EO_Dashboard_kv_no logos.png',
storiesHeader: 'Stories',
headerHeight: '50vh',
@@ -345,6 +348,7 @@ module.exports = [
staging: 6,
production: 7,
},
+ geosearchEndpoint: 'https://api.opencagedata.com/geocode/v1/json?limit=5&countrycode=AT',
match: ['gtif.esa.int', 'gtif.eox.at', 'gtif-demo.eox.at', 'gtif-staging.eox.at', 'gtif-testing.eox.at', 'gtif.eox.world', 'gtif.localhost', 'gtif.eox.home'],
branding: {
appName: 'Green Transition Information Factory',
@@ -352,8 +356,8 @@ module.exports = [
secondaryColor: '#00ae9d',
headerLogo: './data/gtif/images/gtif_attributions_logo.png',
faviconPath: './public/img/ESA/favicon.ico',
- name: 'Green Transition Information Factory',
- subname: 'Key element of the ESA Space For Green Future Accelerator',
+ title: 'Green Transition Information Factory',
+ subtitle: 'Key element of the ESA Space For Green Future Accelerator',
coverImage: './data/gtif/images/image1.png',
storiesHeader: 'Subdomains',
headerHeight: '30vh',
diff --git a/app/src/components/CustomDashboardGrid.vue b/app/src/components/CustomDashboardGrid.vue
index 9c77f66650..8f589f85d4 100644
--- a/app/src/components/CustomDashboardGrid.vue
+++ b/app/src/components/CustomDashboardGrid.vue
@@ -659,8 +659,8 @@ export default {
]),
onMapReady(poi) {
setTimeout(() => {
- this.localCenter[poi].lat = this.serverCenter[poi].lat;
- this.localCenter[poi].lng = this.serverCenter[poi].lng;
+ this.localCenter[poi].lat = this.serverCenter[poi]?.lat;
+ this.localCenter[poi].lng = this.serverCenter[poi]?.lng;
this.localZoom[poi] = this.serverZoom[poi];
this.localDirection[poi] = this.serverDirection[poi];
this.localPosition[poi] = this.serverPosition[poi];
diff --git a/app/src/components/DataPanel.vue b/app/src/components/DataPanel.vue
index 7de5441aa3..ce98ecce89 100644
--- a/app/src/components/DataPanel.vue
+++ b/app/src/components/DataPanel.vue
@@ -1,11 +1,19 @@
+
+
+
+
+
+
+
+
+
+ mdi-map-plus
+
+
+
+ Embed this map into a story
+
+
+
+
+ mdi-map-plus
+ embed chart
+
+
+
+
+
+
+ Storytelling map configuration
+
+
+
+
+ Copy and paste this code into the map layers field of the storytelling editor:
+
+
+ {{ layersConfig }}
+
+
+
+
+ mdi-clipboard-check-outline
+ copied!
+
+
+
+
+
+ mdi-content-copy
+ copy as layers config
+
+
+
+
+ mdi-content-copy
+ copy as simple map
+
+
+
+
+ mdi-content-copy
+ copy as map tour section
+
+
+
+
+
+
+
+
+
+ Close
+
+
+
+
+
+
+
+
+
diff --git a/app/src/components/StacInfo.vue b/app/src/components/StacInfo.vue
index c7ed2fcac9..70c9d2fac3 100644
--- a/app/src/components/StacInfo.vue
+++ b/app/src/components/StacInfo.vue
@@ -151,6 +151,7 @@
Dataset metadata
@@ -191,6 +192,7 @@ export default {
stacInfoLoaded: null,
themesInStacInfo: [],
linksInStacInfo: [],
+ refreshKey: 0,
}),
computed: {
...mapState('config', [
@@ -259,28 +261,31 @@ export default {
this.stacInfoLoaded = true;
});
},
- getAdditionalGTIFDataInfos() {
- this.additionalGtifDataInfoContent = [];
- for (let i = 0; i < this.additionalGTIFDataInfos.length; i++) {
- try {
- const markdownUrl = `//raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/gtif-datainfo/${this.additionalGTIFDataInfos[i].dataInfo}.md`;
- fetch(markdownUrl)
- .then((response) => {
- if (!response.ok) {
- console.error('Fetching DataInfo failed');
- }
- return response.text();
- })
- .then((text) => {
- const markdown = { default: text };
- this.additionalGtifDataInfoContent.push(this.$marked(markdown.default));
- });
- } catch {
- // just an empty catch to "fill in empty content"
- this.additionalGtifDataInfoContent.push('');
- }
+ async fetchDataInfo(dataInfoObject, i) {
+ try {
+ const markdownUrl = `//raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/gtif-datainfo/${dataInfoObject.dataInfo}.md`;
+ await fetch(markdownUrl)
+ .then((response) => {
+ if (!response.ok) {
+ console.error('Fetching DataInfo failed');
+ }
+ return response.text();
+ })
+ .then((text) => {
+ const markdown = { default: text };
+ this.additionalGtifDataInfoContent[i] = this.$marked(markdown.default);
+ });
+ } catch {
+ // just an empty catch
}
},
+ getAdditionalGTIFDataInfos() {
+ this.additionalGtifDataInfoContent = Array(this.additionalGTIFDataInfos.length).fill('');
+ Promise.all(this.additionalGTIFDataInfos.map((item, i) => this.fetchDataInfo(item, i)))
+ .then(() => {
+ this.refreshKey = Math.random();
+ });
+ },
},
};
diff --git a/app/src/components/ThemesLandingPage/StoriesNews.vue b/app/src/components/ThemesLandingPage/StoriesNews.vue
index 1dfdfd19ab..f4b22564f4 100644
--- a/app/src/components/ThemesLandingPage/StoriesNews.vue
+++ b/app/src/components/ThemesLandingPage/StoriesNews.vue
@@ -4,6 +4,26 @@
style="max-width: 1400px;"
>
News
+
+
+
+ 2024-05-10: 3rd Earth System Science Challenge on EO data analysis and storytelling
+
+
+ ESA’s Science Hub hosts the 3rd edition of the Earth System Science Challenges from 13-17 May 2024 in ESRIN, Frascati, Italy. PhD students from University of Edinburgh and University of Leeds will solve EO data science challenges to address impactful topics.
Their stories will be featured on EO Dashboard.
+
+ Read more here: https://sciencehub.esa.int/2024/05/09/3rd-earth-system-science-challenge
+
+
+
+
diff --git a/app/src/components/UiPanelsLayout.vue b/app/src/components/UiPanelsLayout.vue
index 319329e723..7c66d47d33 100644
--- a/app/src/components/UiPanelsLayout.vue
+++ b/app/src/components/UiPanelsLayout.vue
@@ -55,6 +55,7 @@ export default {
id: 1,
title: this.indicatorPanelheader,
heightPercentage: 100,
+ heightPercentageBothOpen: 70,
},
];
this.panels.right = [];
diff --git a/app/src/components/map/FullScreenControl.vue b/app/src/components/map/FullScreenControl.vue
index b8283f5905..87f6346844 100644
--- a/app/src/components/map/FullScreenControl.vue
+++ b/app/src/components/map/FullScreenControl.vue
@@ -21,6 +21,10 @@ export default {
components: {},
props: {
mapId: String,
+ selector: {
+ type: String,
+ default: '',
+ },
},
data() {
return {
@@ -31,7 +35,12 @@ export default {
mounted() {},
methods: {
setFullScreen() {
- const elem = getMapInstance(this.mapId).map.getTargetElement();
+ let elem;
+ if (this.selector) {
+ elem = document.querySelector(this.selector);
+ } else {
+ elem = getMapInstance(this.mapId).map.getTargetElement();
+ }
if (elem) {
if (this.fullscreen) {
if (document.exitFullscreen) {
diff --git a/app/src/components/map/Map.vue b/app/src/components/map/Map.vue
index 13c92d451f..8834519806 100644
--- a/app/src/components/map/Map.vue
+++ b/app/src/components/map/Map.vue
@@ -1,188 +1,226 @@
-
-
-
-
-
-
-
dataLayerTime = {value: time}"
- @setTimeArray="handleSetTimeArray"
- />
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
-
+ dataLayerTime = {value: time}"
+ @setTimeArray="handleSetTimeArray"
/>
-
-
+
-
- mdi-map-clock-outline
-
-
-
+
+
+
+
-
+
-
+
+
+
+
+
+
+ mdi-map-clock-outline
+
+
+
+
+
+
+
+
+
@@ -209,6 +247,7 @@ import { createLayerFromConfig } from '@/components/map/layers';
import MapOverlay from '@/components/map/MapOverlay.vue';
import IndicatorTimeSelection from '@/components/IndicatorTimeSelection.vue';
import IframeButton from '@/components/IframeButton.vue';
+import OLExportButton from '@/components/OLExportButton.vue';
import AddToDashboardButton from '@/components/AddToDashboardButton.vue';
import { updateTimeLayer } from '@/components/map/timeLayerUtils';
import {
@@ -235,6 +274,7 @@ import {
findClosest,
getFilteredInputData,
} from '@/utils';
+import '@eox/map';
const geoJsonFormat = new GeoJSON({
});
@@ -253,6 +293,7 @@ export default {
SubaoiLayer,
MapOverlay,
IframeButton,
+ OLExportButton,
AddToDashboardButton,
DarkOverlayLayer,
CustomFeaturesFetchButton,
@@ -327,6 +368,7 @@ export default {
mobileTimeselectionToggle: false,
frozenLayerKey: null,
appRightPanelsOpened: null,
+ geosearchExtent: null,
};
},
computed: {
@@ -623,6 +665,7 @@ export default {
dataProjection: 'EPSG:4326',
featureProjection: map.getView().getProjection(),
};
+ if (this.geosearchExtent) return this.geosearchExtent;
// Check for possible subaoi
if (this.featureData?.subAoi) {
const { subAoi } = this.featureData;
@@ -705,6 +748,21 @@ export default {
controlsContainerStyle() {
return this.mapId === 'centerMap' && this.appRightPanelsOpened ? 'calc(min(25%, 500px) - 18px)' : '20px';
},
+ searchEndpoint() {
+ let endpoint = false;
+ if ('geosearchEndpoint' in this.appConfig) {
+ endpoint = this.appConfig.geosearchEndpoint;
+ }
+ // Apply key based on endpoint (seems i can't do this within appConfig because of linting)
+ if (this.appConfig.id === 'esa') {
+ endpoint += `&key=${shConfig.opencageRACE}`;
+ } else if (this.appConfig.id === 'trilateral') {
+ endpoint += `&key=${shConfig.opencageTrilateral}`;
+ } else if (this.appConfig.id === 'gtif') {
+ endpoint += `&key=${shConfig.opencageGTIF}`;
+ }
+ return endpoint;
+ },
},
watch: {
baseLayerConfigs() {
@@ -1007,6 +1065,8 @@ export default {
this.queryLink = new Link({ replace: true, params: ['x', 'y', 'z'] });
map.addInteraction(this.queryLink);
}
+
+ window.addEventListener('geosearchSelect', (e) => { this.geosearchExtent = e.detail; });
},
methods: {
...mapMutations('indicators', {
@@ -1430,6 +1490,7 @@ export default {
}
.controlsContainer {
+ top: 0px;
position: absolute;
right: 0px;
min-width: 50px;
diff --git a/app/src/components/map/MapOverlay.vue b/app/src/components/map/MapOverlay.vue
index 79ef2f113d..232cac111b 100644
--- a/app/src/components/map/MapOverlay.vue
+++ b/app/src/components/map/MapOverlay.vue
@@ -57,6 +57,33 @@ export default {
});
map.addOverlay(overlay);
this.overlay = overlay;
+ // TODO: i imagine we don't really want to be injecting the style but this is
+ // the solution that seemed to work best right now
+ const style = document.createElement('style');
+ style.innerHTML = `.tooltip {
+ padding: 1px 10px 1px 10px;
+ margin: 0px;
+ border-radius: 5px;
+ position: relative;
+ font-size: 14px;
+ box-shadow: none !important;
+ background: rgba(0, 0, 0, 0.8) !important;
+ color: #FFFFFF !important;
+ }
+ .tooltip:after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ width: 0;
+ height: 0;
+ border: 10px solid transparent;
+ border-top-color: rgba(0, 0, 0, 0.6);
+ border-bottom: 0;
+ margin-left: -10px;
+ margin-bottom: -10px;
+ }`;
+ this.$parent.$refs.mapContainer.shadowRoot.appendChild(style);
},
methods: {},
beforeDestroy() {
diff --git a/app/src/components/map/layers.js b/app/src/components/map/layers.js
index 19e820ec45..23bb4ebf1d 100644
--- a/app/src/components/map/layers.js
+++ b/app/src/components/map/layers.js
@@ -175,33 +175,15 @@ function createVectorLayerStyle(config, options) {
return dynamicStyleFunction;
}
-function createFromTemplate(templateStr, tileCoord) {
- const zwgs84OffsetRegEx = /\{z-1\}/g;
- const zRegEx = /\{z\}/g;
- const xRegEx = /\{x\}/g;
- const yRegEx = /\{y\}/g;
- const dashYRegEx = /\{-y\}/g;
- return templateStr
- .replace(zwgs84OffsetRegEx, (tileCoord[0] - 1).toString())
- .replace(zRegEx, (tileCoord[0]).toString())
- .replace(xRegEx, tileCoord[1].toString())
- .replace(yRegEx, tileCoord[2].toString())
- .replace(dashYRegEx, () => {
- // eslint-disable-next-line no-bitwise
- const y = (1 << tileCoord[0]) - tileCoord[2] - 1;
- return y.toString();
- });
-}
-
function replaceUrlPlaceholders(baseUrl, config, options) {
let url = baseUrl;
const time = options.time || store.state.indicators.selectedTime;
- const indicator = options.indicator || store.state.indicators.selectedIndicator.indicator;
- const aoiID = options.aoiID || store.state.indicators.selectedIndicator.aoiID;
+ const indicator = options.indicator || store.state.indicators.selectedIndicator?.indicator;
+ const aoiID = options.aoiID || store.state.indicators.selectedIndicator?.aoiID;
url = url.replace(/{time}/i, config.dateFormatFunction(time));
url = url.replace(/{indicator}/gi, indicator);
url = url.replace(/{aoiID}/gi, aoiID);
- if (config.features && config.features.dateFormatFunction) {
+ if (config?.features?.dateFormatFunction) {
url = url.replace(/{featuresTime}/i, config.features.dateFormatFunction(time));
}
if (config.siteMapping) {
@@ -247,6 +229,7 @@ async function createWMTSSourceFromCapabilities(config, layer, options) {
time: configUpdate.dateFormatFunction(updatedTime),
};
layer.getSource().updateDimensions(updatedDimensions);
+ layer.set('configId', `${configUpdate.name}-${updatedTime}`);
});
return s;
}
@@ -338,8 +321,10 @@ export function createLayerFromConfig(config, map, _options = {}) {
source: wgSource,
style: config.style,
});
+ layer.set('id', config.id);
} else if (config.protocol === 'vectortile') {
layer = new VectorTileLayer({});
+ layer.set('id', config.id);
let layerSelector = '';
if (Array.isArray(config.selectedStyleLayer) && config.selectedStyleLayer.length > 0) {
layerSelector = config.selectedStyleLayer;
@@ -368,6 +353,7 @@ export function createLayerFromConfig(config, map, _options = {}) {
url: `${geoserverUrl}${config.layerName}@${projString}@pbf/{z}/{x}/{-y}.pbf`,
}),
});
+ layer.set('id', config.id);
} else if (config.protocol === 'GeoJSON') {
// mutually exclusive options, either direct features or url to fetch
const url = config.urlTemplateSelectedFeature
@@ -449,31 +435,30 @@ export function createLayerFromConfig(config, map, _options = {}) {
crossOrigin: typeof config.crossOrigin !== 'undefined' ? config.crossOrigin : 'anonymous',
projection: getProjectionOl(config.projection),
transition: 0,
- tileUrlFunction: (tileCoord) => createFromTemplate(config.url, tileCoord),
+ url: config.url,
};
source = new XYZSource(sourceOptions);
+ layer = new TileLayer({
+ source,
+ });
if (config.usedTimes?.time?.length) {
- // for layers with time entries, use a tileUrl function that
- // gets the current time entry from the store
- source.setTileUrlFunction((tileCoord) => {
- const url = replaceUrlPlaceholders(config.url, config, options);
- return createFromTemplate(url, tileCoord);
- });
+ let url = replaceUrlPlaceholders(config.url, config, options);
+ source.setUrl(url);
source.set('updateTime', (time, area, configUpdate) => {
const updatedOptions = {
...options,
...configUpdate,
};
updatedOptions.time = time;
- source.setTileUrlFunction((tileCoord) => {
- const url = replaceUrlPlaceholders(configUpdate.url, configUpdate, updatedOptions);
- return createFromTemplate(url, tileCoord);
- });
+ url = replaceUrlPlaceholders(configUpdate.url, configUpdate, updatedOptions);
+ source.setUrl(url);
+ let timeId = time;
+ if (Array.isArray(time) && time.length > 0) {
+ [timeId] = time;
+ }
+ layer.set('configId', `${configUpdate.name}-${timeId}`);
});
}
- layer = new TileLayer({
- source,
- });
} else if (config.protocol === 'WMS') {
const { tileSize } = config;
const tileGrid = tileSize === 512 ? new TileGrid({
@@ -522,6 +507,7 @@ export function createLayerFromConfig(config, map, _options = {}) {
newParams.env = `year:${updatedTime}`;
}
source.updateParams(newParams);
+ layer.set('configId', `${configUpdate.name}-${updatedTime}`);
});
layer = new TileLayer({
source,
@@ -599,5 +585,6 @@ export function createLayerFromConfig(config, map, _options = {}) {
};
layer.getSource().set('updateArea', areaUpdate);
}
+ layer.set('configId', config.name);
return layer;
}
diff --git a/app/src/config/esa.js b/app/src/config/esa.js
index 27b1ddf715..e224f35104 100644
--- a/app/src/config/esa.js
+++ b/app/src/config/esa.js
@@ -207,15 +207,15 @@ export const layerNameMapping = Object.freeze({
},
S1GRD: {
layers: 'E8_SENTINEL1',
- dateFormatFunction: shS2TimeFunction,
+ dateFormatFunction: shTimeFunction,
},
'S1A - GRD': {
layers: 'E8_SENTINEL1',
- dateFormatFunction: shS2TimeFunction,
+ dateFormatFunction: shTimeFunction,
},
'S1B - GRD': {
layers: 'E8_SENTINEL1',
- dateFormatFunction: shS2TimeFunction,
+ dateFormatFunction: shTimeFunction,
},
'Sentinel-2 L1C': {
layers: 'SENTINEL-2-L2A-TRUE-COLOR',
@@ -299,6 +299,25 @@ export const globalIndicators = [
},
},
},
+ {
+ properties: {
+ // override dates for precipitation
+ indicatorObject: {
+ indicator: 'ESDL_Hydrology_Precipitation',
+ time: getDailyDates('2015-01-01', '2021-12-31'),
+ },
+ },
+ },
+ {
+ properties: {
+ indicatorObject: {
+ indicator: 'ESDL_Hydrology_SM',
+ display: {
+ labelFormatFunction: (date) => DateTime.fromISO(date).toFormat('yyyy-MM-dd'),
+ },
+ },
+ },
+ },
{
// custom override of name + specialEnvTime
properties: {
diff --git a/app/src/config/gtif.js b/app/src/config/gtif.js
index 6321e6f6e3..b676631eab 100644
--- a/app/src/config/gtif.js
+++ b/app/src/config/gtif.js
@@ -1195,24 +1195,6 @@ function createSOL1Config(indicatorCode, selectedVariable) {
queryParameters: {
selected: 'lst30mme,grpotare5,grpotare20,grpotare45,co2red_05,co2red_20,co2red_45,grexisting',
},
- highlights: [
- {
- name: 'Graz',
- location: wkt.read('POLYGON((15.24 47, 15.555 47, 15.555 47.11, 15.24 47.11, 15.24 47 ))').toJson(),
- },
- {
- name: 'Innsbruck',
- location: wkt.read('POLYGON((11.2 47.2, 11.2 47.3, 11.6 47.3, 11.6 47.2, 11.2 47.2 ))').toJson(),
- },
- {
- name: 'St. Pölten',
- location: wkt.read('POLYGON((15.55 48.16, 15.7 48.16, 15.7 48.23, 15.55 48.23, 15.55 48.16 ))').toJson(),
- },
- {
- name: 'Vienna',
- location: wkt.read('POLYGON((16.19 48.12, 16.55 48.12, 16.55 48.295, 16.19 48.295, 16.19 48.12 ))').toJson(),
- },
- ],
wmsStyles: {
sourceLayer: 'Green Roofs',
items: [
@@ -1263,24 +1245,6 @@ function createSOL2Config(indicatorCode, selectedVariable) {
queryParameters: {
selected: 'pvusearea,pvexisting,pvpotentl,pveppmwhhp,pveppmwhrp,pveppmwhlp',
},
- highlights: [
- {
- name: 'Graz',
- location: wkt.read('POLYGON((15.24 47, 15.555 47, 15.555 47.11, 15.24 47.11, 15.24 47 ))').toJson(),
- },
- {
- name: 'Innsbruck',
- location: wkt.read('POLYGON((11.2 47.2, 11.2 47.3, 11.6 47.3, 11.6 47.2, 11.2 47.2 ))').toJson(),
- },
- {
- name: 'St. Pölten',
- location: wkt.read('POLYGON((15.55 48.16, 15.7 48.16, 15.7 48.23, 15.55 48.23, 15.55 48.16 ))').toJson(),
- },
- {
- name: 'Vienna',
- location: wkt.read('POLYGON((16.19 48.12, 16.55 48.12, 16.55 48.295, 16.19 48.295, 16.19 48.12 ))').toJson(),
- },
- ],
wmsStyles: {
sourceLayer: 'Solar Roofs',
items: [
@@ -1902,16 +1866,6 @@ export const globalIndicators = [
properties: {
indicatorObject: {
indicator: 'FCM2',
- highlights: [
- {
- name: 'Styria overview',
- location: wkt.read('POLYGON((13.234 48, 13.234 46.5, 16.5 46.5, 16.5 48, 13.234 48))').toJson(),
- },
- {
- name: 'Mariazell',
- location: wkt.read('POLYGON((15.200 47.800, 15.200 47.772, 15.262 47.772, 15.262 47.800, 15.200 47.800))').toJson(),
- },
- ],
display: {
protocol: 'cog',
id: 'FCM2',
@@ -1978,12 +1932,6 @@ export const globalIndicators = [
properties: {
indicatorObject: {
indicator: 'VTT',
- highlights: [
- {
- name: 'Styria overview',
- location: wkt.read('POLYGON((13.234 48, 13.234 46.5, 16.5 46.5, 16.5 48, 13.234 48))').toJson(),
- },
- ],
cogFilters: {
sourceLayer: 'VTT',
filters: {
@@ -2135,20 +2083,6 @@ export const globalIndicators = [
properties: {
indicatorObject: {
indicator: 'FCM1',
- highlights: [
- {
- name: 'Styria overview',
- location: wkt.read('POLYGON((13.234 48, 13.234 46.5, 16.5 46.5, 16.5 48, 13.234 48))').toJson(),
- },
- {
- name: 'Oberhaag',
- location: wkt.read('POLYGON((15.290 46.707, 15.427 46.707, 15.427 46.640, 15.290 46.640, 15.290 46.707))').toJson(),
- },
- {
- name: 'Bruck an der Mur',
- location: wkt.read('POLYGON((15.158 47.440, 15.312 47.440, 15.312 47.368, 15.158 47.368, 15.158 47.440))').toJson(),
- },
- ],
time: [
['2021-09-01', 'NRT_FCM_Changes-2021-09_epsg3857.tif'],
['2021-10-01', 'NRT_FCM_Changes-2021-10_epsg3857.tif'],
diff --git a/app/src/config/locations.json b/app/src/config/locations.json
deleted file mode 100644
index f88679f7fe..0000000000
--- a/app/src/config/locations.json
+++ /dev/null
@@ -1,790 +0,0 @@
-{
- "blue-tarp-planetscope": {
- "indicator": "N13",
- "description": "Blue Tarps (PlanetScope)",
- "legendUrl": "",
- "entries": {
- "[-90.087, 29.919, -90.058, 29.958]": {
- "location": "Detection source data",
- "id": "det2",
- "country": "US"
- },
- "[-90.076, 29.981, -90.014, 30.052]": {
- "location": "Detection source data",
- "id": "det3",
- "country": "US"
- },
- "[-90.12, 29.939, -90.084, 29.968]": {
- "location": "Detection source data",
- "id": "det4",
- "country": "US"
- },
- "[-90.125, 29.976, -90.082, 30.034]": {
- "location": "Detection source data",
- "id": "det5",
- "country": "US"
- },
- "[-90.241, 29.923, -90.169, 29.976]": {
- "location": "Detection source data",
- "id": "det6",
- "country": "US"
- },
- "[-90.086, 29.985, -90.044, 30.035]": {
- "location": "Detection source data",
- "id": "det7",
- "country": "US"
- },
- "[-90.185, 29.944, -90.128, 29.971]": {
- "location": "Detection source data",
- "id": "det8",
- "country": "US"
- },
- "[-90.114, 29.953, -90.058, 29.993]": {
- "location": "Detection source data",
- "id": "det9",
- "country": "US"
- },
- "[-90.14, 29.91, -90.109, 29.981]": {
- "location": "Detection source data",
- "id": "det10",
- "country": "US"
- },
- "[-90.06, 29.949, -90.016, 29.986]": {
- "location": "Detection source data",
- "id": "det11",
- "country": "US"
- },
- "[-90.078, 29.953, -90.052, 29.979]": {
- "location": "Detection source data",
- "id": "det12",
- "country": "US"
- },
- "[-90.125, 29.908, -90.073, 29.942]": {
- "location": "Detection source data",
- "id": "det13",
- "country": "US"
- },
- "[-90.059, 29.907, -90.017, 29.958]": {
- "location": "Detection source data",
- "id": "det14",
- "country": "US"
- },
- "[-90.094, 29.932, -90.072, 29.955]": {
- "location": "Detection source data",
- "id": "det15",
- "country": "US"
- },
- "[-90.088, 29.945, -90.066, 29.966]": {
- "location": "Detection source data",
- "id": "det16",
- "country": "US"
- },
- "[-90.263, 29.887, -90.127, 29.97]": {
- "location": "Detection source data",
- "id": "det17",
- "country": "US"
- },
- "[-90.16, 29.886, -90.083, 29.914]": {
- "location": "Detection source data",
- "id": "det18",
- "country": "US"
- },
- "[-90.263, 30.007, -90.221, 30.051]": {
- "location": "Detection source data",
- "id": "det19",
- "country": "US"
- },
- "[-90.263, 29.965, -90.225, 30.01]": {
- "location": "Detection source data",
- "id": "det20",
- "country": "US"
- },
- "[-90.091, 29.885, -90.049, 29.919]": {
- "location": "Detection source data",
- "id": "det21",
- "country": "US"
- },
- "[-90.045, 29.885, -90.019, 29.927]": {
- "location": "Detection source data",
- "id": "det22",
- "country": "US"
- },
- "[-90.072, 29.885, -90.04, 29.945]": {
- "location": "Detection source data",
- "id": "det23",
- "country": "US"
- },
- "[-90.209, 29.998, -90.177, 30.03]": {
- "location": "Detection source data",
- "id": "det24",
- "country": "US"
- },
- "[-90.154, 29.972, -90.121, 30.025]": {
- "location": "Detection source data",
- "id": "det25",
- "country": "US"
- },
- "[-90.238, 29.973, -90.189, 30.036]": {
- "location": "Detection source data",
- "id": "det26",
- "country": "US"
- },
- "[-90.181, 29.997, -90.145, 30.024]": {
- "location": "Detection source data",
- "id": "det27",
- "country": "US"
- },
- "[-90.211, 29.968, -90.125, 30.0]": {
- "location": "Detection source data",
- "id": "det28",
- "country": "US"
- },
- "[-66.001, 18.349, -65.976, 18.399]": {
- "location": "Detection source data",
- "id": "det29",
- "country": "PR"
- },
- "[-66.017, 18.39, -65.976, 18.442]": {
- "location": "Detection source data",
- "id": "det30",
- "country": "PR"
- },
- "[-66.008, 18.392, -65.978, 18.422]": {
- "location": "Detection source data",
- "id": "det31",
- "country": "PR"
- },
- "[-66.043, 18.419, -65.981, 18.457]": {
- "location": "Detection source data",
- "id": "det32",
- "country": "PR"
- },
- "[-66.037, 18.304, -65.976, 18.388]": {
- "location": "Detection source data",
- "id": "det33",
- "country": "PR"
- },
- "[-66.142, 18.304, -66.087, 18.383]": {
- "location": "Detection source data",
- "id": "det34",
- "country": "PR"
- },
- "[-66.132, 18.343, -66.081, 18.385]": {
- "location": "Detection source data",
- "id": "det35",
- "country": "PR"
- },
- "[-66.108, 18.4, -66.095, 18.412]": {
- "location": "Detection source data",
- "id": "det36",
- "country": "PR"
- },
- "[-66.133, 18.376, -66.094, 18.421]": {
- "location": "Detection source data",
- "id": "det37",
- "country": "PR"
- },
- "[-66.123, 18.417, -66.099, 18.441]": {
- "location": "Detection source data",
- "id": "det38",
- "country": "PR"
- },
- "[-66.154, 18.419, -66.108, 18.461]": {
- "location": "Detection source data",
- "id": "det39",
- "country": "PR"
- },
- "[-66.154, 18.395, -66.126, 18.412]": {
- "location": "Detection source data",
- "id": "det40",
- "country": "PR"
- },
- "[-66.154, 18.407, -66.127, 18.425]": {
- "location": "Detection source data",
- "id": "det41",
- "country": "PR"
- },
- "[-66.154, 18.333, -66.119, 18.399]": {
- "location": "Detection source data",
- "id": "det42",
- "country": "PR"
- },
- "[-66.155, 18.304, -66.132, 18.389]": {
- "location": "Detection source data",
- "id": "det43",
- "country": "PR"
- },
- "[-66.154, 18.443, -66.123, 18.476]": {
- "location": "Detection source data",
- "id": "det44",
- "country": "PR"
- },
- "[-66.134, 18.405, -66.105, 18.422]": {
- "location": "Detection source data",
- "id": "det45",
- "country": "PR"
- },
- "[-66.09, 18.367, -66.053, 18.41]": {
- "location": "Detection source data",
- "id": "det46",
- "country": "PR"
- },
- "[-66.102, 18.304, -66.003, 18.397]": {
- "location": "Detection source data",
- "id": "det47",
- "country": "PR"
- },
- "[-66.057, 18.395, -66.043, 18.408]": {
- "location": "Detection source data",
- "id": "det48",
- "country": "PR"
- },
- "[-66.031, 18.379, -65.991, 18.423]": {
- "location": "Detection source data",
- "id": "det49",
- "country": "PR"
- },
- "[-66.053, 18.395, -66.024, 18.428]": {
- "location": "Detection source data",
- "id": "det50",
- "country": "PR"
- },
- "[-66.106, 18.374, -66.07, 18.407]": {
- "location": "Detection source data",
- "id": "det51",
- "country": "PR"
- },
- "[-66.109, 18.393, -66.075, 18.443]": {
- "location": "Detection source data",
- "id": "det52",
- "country": "PR"
- },
- "[-66.083, 18.404, -66.053, 18.439]": {
- "location": "Detection source data",
- "id": "det53",
- "country": "PR"
- },
- "[-66.059, 18.408, -66.039, 18.434]": {
- "location": "Detection source data",
- "id": "det54",
- "country": "PR"
- },
- "[-66.062, 18.428, -66.03, 18.447]": {
- "location": "Detection source data",
- "id": "det55",
- "country": "PR"
- },
- "[-66.052, 18.446, -66.034, 18.467]": {
- "location": "Detection source data",
- "id": "det56",
- "country": "PR"
- },
- "[-66.068, 18.439, -66.053, 18.45]": {
- "location": "Detection source data",
- "id": "det57",
- "country": "PR"
- },
- "[-66.066, 18.447, -66.044, 18.462]": {
- "location": "Detection source data",
- "id": "det58",
- "country": "PR"
- },
- "[-66.077, 18.433, -66.059, 18.451]": {
- "location": "Detection source data",
- "id": "det59",
- "country": "PR"
- },
- "[-66.118, 18.438, -66.059, 18.465]": {
- "location": "Detection source data",
- "id": "det60",
- "country": "PR"
- },
- "[-66.129, 18.455, -66.08, 18.476]": {
- "location": "Detection source data",
- "id": "det61",
- "country": "PR"
- },
- "[-65.989, 18.442, -65.976, 18.456]": {
- "location": "Detection source data",
- "id": "det62",
- "country": "PR"
- },
- "[-66.096, 18.304, -66.012, 18.327]": {
- "location": "Detection source data",
- "id": "det63",
- "country": "PR"
- }
- }
- },
- "blue-tarp-detection": {
- "indicator": "N14",
- "description": "Blue Tarps",
- "legendUrl": "",
- "entries": {
- "[-90.087, 29.919, -90.058, 29.958]": {
- "location": "Detections",
- "id": "det1",
- "country": "US"
- },
- "[-90.076, 29.981, -90.014, 30.052]": {
- "location": "Detections",
- "id": "det2",
- "country": "US"
- },
- "[-90.12, 29.939, -90.084, 29.968]": {
- "location": "Detections",
- "id": "det3",
- "country": "US"
- },
- "[-90.125, 29.976, -90.082, 30.034]": {
- "location": "Detections",
- "id": "det4",
- "country": "US"
- },
- "[-90.241, 29.923, -90.169, 29.976]": {
- "location": "Detections",
- "id": "det5",
- "country": "US"
- },
- "[-90.086, 29.985, -90.044, 30.035]": {
- "location": "Detections",
- "id": "det6",
- "country": "US"
- },
- "[-90.185, 29.944, -90.128, 29.971]": {
- "location": "Detections",
- "id": "det7",
- "country": "US"
- },
- "[-90.114, 29.953, -90.058, 29.993]": {
- "location": "Detections",
- "id": "det8",
- "country": "US"
- },
- "[-90.14, 29.91, -90.109, 29.981]": {
- "location": "Detections",
- "id": "det9",
- "country": "US"
- },
- "[-90.06, 29.949, -90.016, 29.986]": {
- "location": "Detections",
- "id": "det10",
- "country": "US"
- },
- "[-90.078, 29.953, -90.052, 29.979]": {
- "location": "Detections",
- "id": "det11",
- "country": "US"
- },
- "[-90.125, 29.908, -90.073, 29.942]": {
- "location": "Detections",
- "id": "det12",
- "country": "US"
- },
- "[-90.059, 29.907, -90.017, 29.958]": {
- "location": "Detections",
- "id": "det13",
- "country": "US"
- },
- "[-90.094, 29.932, -90.072, 29.955]": {
- "location": "Detections",
- "id": "det14",
- "country": "US"
- },
- "[-90.088, 29.945, -90.066, 29.966]": {
- "location": "Detections",
- "id": "det15",
- "country": "US"
- },
- "[-90.274, 29.887, -90.127, 29.97]": {
- "location": "Detections",
- "id": "det16",
- "country": "US"
- },
- "[-90.16, 29.886, -90.083, 29.914]": {
- "location": "Detections",
- "id": "det17",
- "country": "US"
- },
- "[-90.271, 30.007, -90.221, 30.051]": {
- "location": "Detections",
- "id": "det18",
- "country": "US"
- },
- "[-90.272, 29.965, -90.225, 30.01]": {
- "location": "Detections",
- "id": "det19",
- "country": "US"
- },
- "[-90.091, 29.885, -90.049, 29.919]": {
- "location": "Detections",
- "id": "det20",
- "country": "US"
- },
- "[-90.045, 29.885, -90.019, 29.927]": {
- "location": "Detections",
- "id": "det21",
- "country": "US"
- },
- "[-90.072, 29.885, -90.04, 29.945]": {
- "location": "Detections",
- "id": "det22",
- "country": "US"
- },
- "[-90.209, 29.998, -90.177, 30.03]": {
- "location": "Detections",
- "id": "det23",
- "country": "US"
- },
- "[-90.154, 29.972, -90.121, 30.025]": {
- "location": "Detections",
- "id": "det24",
- "country": "US"
- },
- "[-90.238, 29.973, -90.189, 30.036]": {
- "location": "Detections",
- "id": "det25",
- "country": "US"
- },
- "[-90.181, 29.997, -90.145, 30.024]": {
- "location": "Detections",
- "id": "det26",
- "country": "US"
- },
- "[-90.211, 29.968, -90.125, 30.0]": {
- "location": "Detections",
- "id": "det27",
- "country": "US"
- },
- "[-66.001, 18.349, -65.976, 18.399]": {
- "location": "Detections",
- "id": "det28",
- "country": "PR"
- },
- "[-66.017, 18.39, -65.976, 18.442]": {
- "location": "Detections",
- "id": "det29",
- "country": "PR"
- },
- "[-66.008, 18.392, -65.978, 18.422]": {
- "location": "Detections",
- "id": "det30",
- "country": "PR"
- },
- "[-66.043, 18.419, -65.981, 18.457]": {
- "location": "Detections",
- "id": "det31",
- "country": "PR"
- },
- "[-66.037, 18.304, -65.976, 18.388]": {
- "location": "Detections",
- "id": "det32",
- "country": "PR"
- },
- "[-66.142, 18.304, -66.087, 18.383]": {
- "location": "Detections",
- "id": "det33",
- "country": "PR"
- },
- "[-66.132, 18.343, -66.081, 18.385]": {
- "location": "Detections",
- "id": "det34",
- "country": "PR"
- },
- "[-66.108, 18.4, -66.095, 18.412]": {
- "location": "Detections",
- "id": "det35",
- "country": "PR"
- },
- "[-66.133, 18.376, -66.094, 18.421]": {
- "location": "Detections",
- "id": "det36",
- "country": "PR"
- },
- "[-66.123, 18.417, -66.099, 18.441]": {
- "location": "Detections",
- "id": "det37",
- "country": "PR"
- },
- "[-66.154, 18.419, -66.108, 18.461]": {
- "location": "Detections",
- "id": "det38",
- "country": "PR"
- },
- "[-66.154, 18.395, -66.126, 18.412]": {
- "location": "Detections",
- "id": "det39",
- "country": "PR"
- },
- "[-66.154, 18.407, -66.127, 18.425]": {
- "location": "Detections",
- "id": "det40",
- "country": "PR"
- },
- "[-66.154, 18.333, -66.119, 18.399]": {
- "location": "Detections",
- "id": "det41",
- "country": "PR"
- },
- "[-66.155, 18.304, -66.132, 18.389]": {
- "location": "Detections",
- "id": "det42",
- "country": "PR"
- },
- "[-66.154, 18.443, -66.123, 18.476]": {
- "location": "Detections",
- "id": "det43",
- "country": "PR"
- },
- "[-66.134, 18.405, -66.105, 18.422]": {
- "location": "Detections",
- "id": "det44",
- "country": "PR"
- },
- "[-66.09, 18.367, -66.053, 18.41]": {
- "location": "Detections",
- "id": "det45",
- "country": "PR"
- },
- "[-66.102, 18.304, -66.003, 18.397]": {
- "location": "Detections",
- "id": "det46",
- "country": "PR"
- },
- "[-66.057, 18.395, -66.043, 18.408]": {
- "location": "Detections",
- "id": "det47",
- "country": "PR"
- },
- "[-66.031, 18.379, -65.991, 18.423]": {
- "location": "Detections",
- "id": "det48",
- "country": "PR"
- },
- "[-66.053, 18.395, -66.024, 18.428]": {
- "location": "Detections",
- "id": "det49",
- "country": "PR"
- },
- "[-66.106, 18.374, -66.07, 18.407]": {
- "location": "Detections",
- "id": "det50",
- "country": "PR"
- },
- "[-66.109, 18.393, -66.075, 18.443]": {
- "location": "Detections",
- "id": "det51",
- "country": "PR"
- },
- "[-66.083, 18.404, -66.053, 18.439]": {
- "location": "Detections",
- "id": "det52",
- "country": "PR"
- },
- "[-66.059, 18.408, -66.039, 18.434]": {
- "location": "Detections",
- "id": "det53",
- "country": "PR"
- },
- "[-66.062, 18.428, -66.03, 18.447]": {
- "location": "Detections",
- "id": "det54",
- "country": "PR"
- },
- "[-66.052, 18.446, -66.034, 18.467]": {
- "location": "Detections",
- "id": "det55",
- "country": "PR"
- },
- "[-66.068, 18.439, -66.053, 18.45]": {
- "location": "Detections",
- "id": "det56",
- "country": "PR"
- },
- "[-66.066, 18.447, -66.044, 18.462]": {
- "location": "Detections",
- "id": "det57",
- "country": "PR"
- },
- "[-66.077, 18.433, -66.059, 18.451]": {
- "location": "Detections",
- "id": "det58",
- "country": "PR"
- },
- "[-66.118, 18.438, -66.059, 18.465]": {
- "location": "Detections",
- "id": "det59",
- "country": "PR"
- },
- "[-66.129, 18.455, -66.08, 18.476]": {
- "location": "Detections",
- "id": "det60",
- "country": "PR"
- },
- "[-65.989, 18.442, -65.976, 18.456]": {
- "location": "Detections",
- "id": "det61",
- "country": "PR"
- },
- "[-66.096, 18.304, -66.012, 18.327]": {
- "location": "Detections",
- "id": "det62",
- "country": "PR"
- }
- }
- },
- "nightlights-hd-1band": {
- "indicator": "N5",
- "description": "Nightlights",
- "legendUrl": "legends/trilateral/N5-nighlights.png",
- "entries": {
- "[-90.3037818244749, 29.804659612978707, -89.87578181971654, 30.07177072705947]": {
- "location": "New Orleans",
- "id": "US02",
- "country": "US"
- },
- "[-67.27167653359618, 17.912138994450856, -65.57478762584185, 18.51569455671654]": {
- "location": "Puerto Rico",
- "id": "PR01",
- "country": "PR"
- }
- }
- },
- "nightlights-hd-monthly": {
- "indicator": "N5",
- "description": "Nightlights",
- "legendUrl": "legends/trilateral/N5-nighlights.png",
- "entries": {
- "[11.7631744, 45.06062636, 12.79039608, 45.79310055]": {
- "location": "Venice",
- "id": "IT01",
- "country": "IT"
- },
- "[139.58, 35.58, 139.82, 35.74]": {
- "location": "Tokyo",
- "id": "JP01",
- "country": "JP"
- },
- "[103.63, 1.23, 104.03, 1.47]": {
- "location": "Singapore",
- "id": "SG01",
- "country": "SG"
- },
- "[12.196366, 41.602782, 12.796366, 42.202782]": {
- "location": "Rome",
- "id": "IT02",
- "country": "IT"
- },
- "[2.119014, 48.634716, 2.579014, 49.094716]": {
- "location": "Paris",
- "id": "FR01",
- "country": "FR"
- },
- "[135.35, 34.57, 135.61, 34.77]": {
- "location": "Osaka",
- "id": "JP02",
- "country": "JP"
- },
- "[8.95854, 45.234664, 9.41854, 45.694664]": {
- "location": "Milan",
- "id": "IT02",
- "country": "IT"
- },
- "[4.455588606, 42.9695695, 6.5320046220000005, 44.06892132]": {
- "location": "Marseille",
- "id": "FR02",
- "country": "FR"
- },
- "[-4.00379, 40.116775, -3.40379, 40.716775]": {
- "location": "Madrid",
- "id": "ES01",
- "country": "ES"
- },
- "[-0.510375, 51.28676, 0.33401499999999995, 51.691874]": {
- "location": "London",
- "id": "GB01",
- "country": "GB"
- },
- "[-77.18, -12.28, -76.88, -11.86]": {
- "location": "Lima",
- "id": "PE01",
- "country": "PE"
- },
- "[135.64, 34.88, 135.84, 35.08]": {
- "location": "Kyoto",
- "id": "JP03",
- "country": "JP"
- },
- "[141.18, 42.94, 141.58, 43.23]": {
- "location": "Hokkaido Sapporo",
- "id": "JP04",
- "country": "JP"
- },
- "[8.1053, 53.3951, 10.3253, 54.0277]": {
- "location": "Hamburg",
- "id": "DE01",
- "country": "DE"
- },
- "[3.542912745, 50.93642727, 3.919194484, 51.16950495]": {
- "location": "Ghent",
- "id": "BE01",
- "country": "BE"
- },
- "[8.665744, 44.378471, 9.09558, 44.519842]": {
- "location": "Genoa",
- "id": "IT03",
- "country": "IT"
- },
- "[18.357982, 54.422751, 18.569061, 54.584515]": {
- "location": "Gdynia",
- "id": "PL01",
- "country": "PL"
- },
- "[130.28, 33.46, 130.52, 33.72]": {
- "location": "Fukuoka",
- "id": "JP05",
- "country": "JP"
- },
- "[2.062055515, 50.88721313, 2.641584324, 51.13260412]": {
- "location": "Dunkirk",
- "id": "FR03",
- "country": "FR"
- },
- "[90.31, 23.64, 90.53, 23.91]": {
- "location": "Dhaka",
- "id": "BD01",
- "country": "BD"
- },
- "[79.82, 6.74, 80.02, 7.02]": {
- "location": "Colombo",
- "id": "LK01",
- "country": "LK"
- },
- "[116.2, 39.77, 116.55, 40.0]": {
- "location": "Beijing",
- "id": "CN01",
- "country": "CN"
- },
- "[1.469171475, 41.15634032, 2.617242764, 41.84748412]": {
- "location": "Barcelona",
- "id": "ES02",
- "country": "ES"
- },
- "[174.59, -37.08, 174.96, -36.68]": {
- "location": "Auckland",
- "id": "NZ01",
- "country": "NZ"
- },
- "[4.61, 52.2, 5.1, 52.54]": {
- "location": "Amsterdam",
- "id": "NL01",
- "country": "NL"
- },
- "[136.78, 35.02, 137.04, 35.25]": {
- "location": "Aichi Nagoya",
- "id": "JP06",
- "country": "JP"
- }
- }
- }
-}
diff --git a/app/src/config/polar.js b/app/src/config/polar.js
index e8ba7ebc46..0244551c1d 100644
--- a/app/src/config/polar.js
+++ b/app/src/config/polar.js
@@ -92,7 +92,6 @@ const polarStereoDatasetsConfigs = {
baseLayers: arcticBaseMaps,
overlayLayers: arcticOverlayMaps,
mapProjection: polarStereographicProjection,
- projection: 'EPSG:4326',
presetView: {
type: 'FeatureCollection',
features: [{
@@ -124,6 +123,7 @@ function createTOPAZ5Config(indicatorCode) {
indicator: indicatorCode,
display: {
...polarStereoDatasetsConfigs,
+ projection: 'EPSG:4326',
},
},
},
@@ -427,7 +427,6 @@ export const globalIndicators = [
indicatorObject: {
indicator: 'SITI',
display: {
- url: 'https://staging-raster.delta-backend.com/cog/tiles/WGS1984Quad/{z-1}/{x}/{y}?&resampling_method=nearest&bidx=1&colormap_name=plasma&rescale=0.0,4.0&{time}',
...polarStereoDatasetsConfigs,
},
},
@@ -454,6 +453,7 @@ export const globalIndicators = [
time: getDailyDates('2007-01-02', '2021-12-28'),
display: {
...polarStereoDatasetsConfigs,
+ projection: 'EPSG:3411',
dateFormatFunction: (date) => DateTime.fromISO(date).toFormat('yyyy-MM-dd'),
},
},
diff --git a/app/src/config/trilateral.js b/app/src/config/trilateral.js
index c3733b3fe6..f32f171945 100644
--- a/app/src/config/trilateral.js
+++ b/app/src/config/trilateral.js
@@ -8,7 +8,6 @@ import {
} from '@/utils';
import shTimeFunction from '@/shTimeFunction';
import { baseLayers, overlayLayers } from '@/config/layers';
-// import locations from '@/config/locations.json';
import {
nasaStatisticsConfig,
} from '@/helpers/customAreaObjects';
@@ -240,11 +239,11 @@ export const layerNameMapping = Object.freeze({
},
S1GRD: {
layers: 'E8_SENTINEL1',
- dateFormatFunction: shS2TimeFunction,
+ dateFormatFunction: shTimeFunction,
},
'S1A - GRD': {
layers: 'E8_SENTINEL1',
- dateFormatFunction: shS2TimeFunction,
+ dateFormatFunction: shTimeFunction,
},
'LANDSAT-8-TRUE-COLOUR': {
layers: 'LANDSAT-8-TRUE-COLOUR',
@@ -315,16 +314,9 @@ export const layerNameMapping = Object.freeze({
};
return mapping[eoID];
},
- features: {
- name: 'Ship detections',
- dateFormatFunction: (date) => DateTime.fromISO(date).toFormat('yyyy_MM_dd'),
- url: 'https://8ib71h0627.execute-api.us-east-1.amazonaws.com/v1/detections/ship/{site}/{featuresTime}.geojson',
- allowedParameters: ['verified'],
- },
},
airports: {
url: 'https://8ib71h0627.execute-api.us-east-1.amazonaws.com/v1/planet/{z}/{x}/{y}?date={time}&site={site}',
- name: 'Throughput at principal hub airports',
protocol: 'xyz',
tileSize: 256,
dateFormatFunction: (date) => DateTime.fromISO(date).toFormat('yyyy_MM_dd'),
@@ -348,12 +340,6 @@ export const layerNameMapping = Object.freeze({
};
return mapping[eoID];
},
- features: {
- name: 'Plane detections',
- dateFormatFunction: (date) => DateTime.fromISO(date).toFormat('yyyy_MM_dd'),
- url: 'https://8ib71h0627.execute-api.us-east-1.amazonaws.com/v1/detections/plane/{site}/{featuresTime}.geojson',
- allowedParameters: ['Country', 'label', 'score'],
- },
},
water_quality_chl: {
url: 'https://8ib71h0627.execute-api.us-east-1.amazonaws.com/v1/{z}/{x}/{y}@1x?url=s3://covid-eo-data/{site}-{time}.tif&resampling_method=bilinear&bidx=1&rescale=-100%2C100&color_map=rdbu_r',
@@ -582,6 +568,25 @@ export const globalIndicators = [
createRECCAP2Config('ESDC_gross_primary_productivity', getDailyDates('2001-01-05', '2018-12-23', 8)),
createRECCAP2Config('ESDC_net_ecosystem_exchange', getDailyDates('2001-01-05', '2018-12-23', 8)),
createRECCAP2Config('ESDC_kndvi', getDailyDates('2000-03-01', '2021-12-31', 8)),
+ {
+ properties: {
+ // override dates for precipitation
+ indicatorObject: {
+ indicator: 'ESDL_Hydrology_Precipitation',
+ time: getDailyDates('2015-01-01', '2021-12-31'),
+ },
+ },
+ },
+ {
+ properties: {
+ indicatorObject: {
+ indicator: 'ESDL_Hydrology_SM',
+ display: {
+ labelFormatFunction: (date) => DateTime.fromISO(date).toFormat('yyyy-MM-dd'),
+ },
+ },
+ },
+ },
{
properties: {
indicatorObject: {
@@ -589,9 +594,6 @@ export const globalIndicators = [
display: {
baseLayers: arcticBaseMaps,
overlayLayers: arcticOverlayMaps,
- // WGS1984Quad as a workaround for EPSG:3857 crashing on z=0 default view for polar areas
- url: 'https://staging-raster.delta-backend.com/cog/tiles/WGS1984Quad/{z-1}/{x}/{y}?&resampling_method=nearest&bidx=1&colormap_name=plasma&rescale=0.0,4.0&{time}',
- projection: 'EPSG:4326',
mapProjection: polarStereographicProjection,
},
},
@@ -695,7 +697,7 @@ export const globalIndicators = [
indicator: 'N6',
display: {
// manually adding administrative features
- maxZoom: 6,
+ maxNativeZoom: 6,
features: {
name: 'Administrative zones ADM0',
url: './eodash-data/features/{indicator}/{indicator}_{aoiID}.geojson',
@@ -709,489 +711,6 @@ export const globalIndicators = [
},
},
},
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([33.94, -118.41]),
- // aoiID: 'US021',
- // country: ['US'],
- // city: 'Los Angeles',
- // siteName: 'Los Angeles International Airport - LAX',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Los Angeles International Airport - LAX, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-118.44 33.93, -118.38 33.93, -118.38 33.95, -118.44 33.95, -118.44 33.93))').toJson(),
- // }],
- // },
- // time: [['2020-01-10'], ['2020-02-01'], ['2020-04-21'], ['2020-05-05'], ['2020-05-17'], ['2020-05-20'], ['2020-06-08'], ['2020-06-15'], ['2020-07-04'], ['2020-07-10'], ['2020-08-18'], ['2020-08-28'], ['2020-09-22'], ['2020-09-30'], ['2020-10-02'], ['2020-10-15']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([34.057, -117.6]),
- // aoiID: 'US022',
- // country: ['US'],
- // city: 'Ontario',
- // siteName: 'Ontario International Airport - ONT',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Ontario International Airport - ONT, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-117.575 34.048, -117.63 34.048, -117.63 34.065, -117.575 34.065, -117.575 34.048))').toJson(),
- // }],
- // },
- // time: [['2020-01-14'], ['2020-02-03'], ['2020-03-22'], ['2020-04-15'], ['2020-05-04'], ['2020-05-23'], ['2020-05-24'], ['2020-06-11'], ['2020-07-06'], ['2020-07-21'], ['2020-08-01'], ['2020-08-16'], ['2020-09-01'], ['2020-09-19'], ['2020-10-04'], ['2020-10-27']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([37.622, -122.378]),
- // aoiID: 'US031',
- // country: ['US'],
- // city: 'San Francisco',
- // siteName: 'San Francisco International Airport - SFO',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'San Francisco International Airport - SFO, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-122.4 37.605, -122.355 37.605, -122.355 37.64, -122.4 37.64, -122.4 37.605))').toJson(),
- // }],
- // },
- // time: [['2020-01-11'], ['2020-02-20'], ['2020-03-09'], ['2020-04-03'], ['2020-05-05'], ['2020-05-19'], ['2020-05-26'], ['2020-06-04'], ['2020-06-23'], ['2020-07-06'], ['2020-07-14'], ['2020-08-07'], ['2020-08-13'], ['2020-09-23'], ['2020-09-30'], ['2020-10-12'], ['2020-10-26']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([37.363, -121.93]),
- // aoiID: 'US032',
- // country: ['US'],
- // city: 'San Jose',
- // siteName: 'Norman Y. Mineta San Jose International Airport - SJC',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Norman Y. Mineta San Jose International Airport - SJC, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-121.945 37.35, -121.912 37.35, -121.912 37.377, -121.945 37.377, -121.945 37.35))').toJson(),
- // }],
- // },
- // time: [['2020-01-12'], ['2020-02-10'], ['2020-03-12'], ['2020-04-07'], ['2020-05-07'], ['2020-05-16'], ['2020-05-29'], ['2020-06-21'], ['2020-06-29'], ['2020-07-22'], ['2020-07-31'], ['2020-08-03'], ['2020-08-08'], ['2020-10-20'], ['2020-10-31']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([37.722, -122.226]),
- // aoiID: 'US033',
- // country: ['US'],
- // city: 'Oakland',
- // siteName: 'Oakland International Airport - OAK',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Oakland International Airport - OAK, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-122.252 37.7, -122.2 37.7, -122.2 37.745, -122.252 37.745, -122.252 37.7))').toJson(),
- // }],
- // },
- // time: [['2020-01-13'], ['2020-02-15'], ['2020-03-19'], ['2020-04-15'], ['2020-05-04'], ['2020-05-27'], ['2020-06-11'], ['2020-06-18'], ['2020-07-07'], ['2020-07-27'], ['2020-08-04'], ['2020-09-22'], ['2020-09-24'], ['2020-10-15']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([37.6585, -122.121]),
- // aoiID: 'US034',
- // country: ['US'],
- // city: 'Hayward',
- // siteName: 'Hayward Executive Airport - HWD',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Hayward Executive Airport - HWD, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-122.132 37.653, -122.11 37.653, -122.11 37.664, -122.132 37.664, -122.132 37.653))').toJson(),
- // }],
- // },
- // time: [['2020-01-13'], ['2020-02-18'], ['2020-03-12'], ['2020-04-22'], ['2020-05-19']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([38.216, -122.276]),
- // aoiID: 'US035',
- // country: ['US'],
- // city: 'Napa',
- // siteName: 'Napa County Airport - APC',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Napa County Airport - APC, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-122.286 38.206, -122.266 38.206, -122.266 38.226, -122.286 38.226, -122.286 38.206))').toJson(),
- // }],
- // },
- // time: [['2020-01-13'], ['2020-02-06'], ['2020-03-10'], ['2020-04-07'], ['2020-06-28'], ['2020-07-17'], ['2020-07-25'], ['2020-08-09'], ['2020-09-04'], ['2020-10-21'], ['2020-10-28']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([38.144, -122.557]),
- // aoiID: 'US036',
- // country: ['US'],
- // city: 'Marin',
- // siteName: 'Marin County Airport - NOT',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Marin County Airport - NOT, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-122.565 38.137, -122.55 38.137, -122.55 38.150, -122.565 38.150, -122.565 38.137))').toJson(),
- // }],
- // },
- // time: [['2020-02-07'], ['2020-03-12'], ['2020-04-02']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([37.99, -122.057]),
- // aoiID: 'US037',
- // country: ['US'],
- // city: 'Buchannan',
- // siteName: 'Buchannan Field Airport - CCR',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Buchannan Field Airport - CCR, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-122.064 37.98, -122.05 37.98, -122.05 38.0, -122.064 38.0, -122.064 37.98))').toJson(),
- // }],
- // },
- // time: [['2020-03-12']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([40.642, -73.788]),
- // aoiID: 'US041',
- // country: ['US'],
- // city: 'New York',
- // siteName: 'John F. Kennedy International Airport - JFK',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'John F. Kennedy International Airport - JFK, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-73.825 40.62, -73.753 40.62, -73.753 40.664, -73.825 40.664, -73.825 40.62))').toJson(),
- // }],
- // },
- // time: [['2020-01-16'], ['2020-02-17'], ['2020-03-15'], ['2020-04-15'], ['2020-05-14'], ['2020-05-27'], ['2020-05-30'], ['2020-06-04'], ['2020-06-10'], ['2020-07-02'], ['2020-07-06'], ['2020-08-10'], ['2020-08-26'], ['2020-09-16'], ['2020-09-25'], ['2020-10-06']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([40.689, -74.172]),
- // aoiID: 'US042',
- // country: ['US'],
- // city: 'Newark',
- // siteName: 'Newark Liberty International Airport - EWR',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Newark Liberty International Airport - EWR, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-74.19 40.67, -74.155 40.67, -74.155 40.708, -74.19 40.708, -74.19 40.67))').toJson(),
- // }],
- // },
- // time: [['2020-01-20'], ['2020-02-19'], ['2020-03-09'], ['2020-04-06'], ['2020-05-05'], ['2020-05-20'], ['2020-05-31'], ['2020-06-01'], ['2020-06-09'], ['2020-07-19'], ['2020-07-21'], ['2020-08-03'], ['2020-08-17'], ['2020-09-13'], ['2020-09-21'], ['2020-10-08'], ['2020-10-15']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([40.072, 116.593]),
- // aoiID: 'CN011',
- // country: ['CN'],
- // city: 'Beijing',
- // siteName: 'Beijing Capital International Airport - PEK',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Beijing Capital International Airport - PEK, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((116.566 40.05, 116.621 40.05, 116.621 40.105, 116.566 40.105, 116.566 40.05))').toJson(),
- // }],
- // },
- // time: [['2020-01-12'], ['2020-02-10'], ['2020-03-12'], ['2020-04-11'], ['2020-05-05']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([39.495, 116.419]),
- // aoiID: 'CN012',
- // country: ['CN'],
- // city: 'Beijing Daxing',
- // siteName: 'Beijing Daxing International Airport - PKX',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Beijing Daxing International Airport - PKX, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((116.362 39.466, 116.476 39.466, 116.476 39.524, 116.362 39.524, 116.362 39.466))').toJson(),
- // }],
- // },
- // time: [['2020-01-09'], ['2020-01-12'], ['2020-01-14'], ['2020-02-18'], ['2020-03-13'], ['2020-03-19'], ['2020-04-11'], ['2020-05-14']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([35.774, 140.385]),
- // aoiID: 'JP012',
- // country: ['JP'],
- // city: 'Narita',
- // siteName: 'Narita International Airport - NRT',
- // description: 'Airports: throughput',
- // indicator: 'E13b',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Narita International Airport - NRT, Throughput at principal hub airports',
- // lastColorCode: 'BLUE',
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((140.364 35.742, 140.406 35.742, 140.406 35.806, 140.364 35.806, 140.364 35.742))').toJson(),
- // }],
- // },
- // time: [['2020-01-19'], ['2020-02-05'], ['2020-03-19'], ['2020-04-10'], ['2020-05-16'], ['2020-08-11'], ['2020-08-11'], ['2020-08-14'], ['2020-09-02'], ['2020-09-09'], ['2020-09-10'], ['2020-10-02'], ['2020-10-22'], ['2020-10-25']],
- // inputData: ['airports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([34.05, -118.251]),
- // aoiID: 'US02',
- // country: ['US'],
- // city: 'Los Angeles',
- // siteName: 'Los Angeles',
- // description: 'Ports: Ship throughput',
- // indicator: 'E13c',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Number of Ships in Port',
- // lastColorCode: 'BLUE',
- // eoSensor: ['Planet Labs/NASA (PlanetScope)'],
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-118.78075 33.42020,-118.78075 33.95016,-117.92406 33.95016,-117.92406 33.42020,-118.78075 33.42020))').toJson(),
- // }],
- // },
- // time: ['2020-01-01', '2020-01-06', '2020-01-07', '2020-01-09', '2020-01-10', '2020-01-12', '2020-01-13', '2020-01-14', '2020-01-17', '2020-01-18', '2020-01-19', '2020-01-22', '2020-01-23', '2020-01-24', '2020-01-27', '2020-01-28', '2020-01-29', '2020-01-30', '2020-01-31', '2020-02-02', '2020-02-03', '2020-02-27', '2020-02-29', '2020-03-03', '2020-03-08', '2020-03-15', '2020-03-21', '2020-03-22', '2020-03-27', '2020-04-23', '2020-04-24', '2020-05-01', '2020-05-02', '2020-05-03', '2020-05-04', '2020-05-05', '2020-05-06', '2020-05-07', '2020-05-08', '2020-05-09', '2020-05-11', '2020-05-12', '2020-05-13', '2020-05-14', '2020-05-15', '2020-05-16', '2020-05-17', '2020-05-19', '2020-05-20', '2020-05-21', '2021-06-23', '2021-08-27', '2021-10-09', '2021-10-15'],
- // inputData: ['ports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([40.6, -74.05]),
- // aoiID: 'US01',
- // country: ['US'],
- // city: 'New York',
- // siteName: 'New York',
- // description: 'Ports: Ship throughput',
- // indicator: 'E13c',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Number of Ships in Port',
- // lastColorCode: 'BLUE',
- // eoSensor: ['Planet Labs/NASA (PlanetScope)'],
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-73.97302 40.77222,-74.03550 40.76234,-74.11241 40.66345,-74.19480 40.64366,-74.30329 40.50440,-74.22639 40.44643,-73.99087 40.40461,-73.79311 40.39520,-73.64617 40.44695,-73.61665 40.58319,-73.75123 40.59519,-73.79174 40.66033,-73.87895 40.65720,-73.97576 40.61187,-74.00117 40.66189,-73.93868 40.74830,-73.97302 40.77222))').toJson(),
- // }],
- // },
- // time: ['2020-01-02', '2020-01-09', '2020-01-11', '2020-01-16', '2020-01-17', '2020-01-19', '2020-01-20', '2020-01-21', '2020-01-22', '2020-01-23', '2020-01-24', '2020-01-30', '2020-02-02', '2020-02-03', '2020-02-29', '2020-03-08', '2020-03-18', '2020-03-22', '2020-03-27', '2020-05-02', '2020-05-05', '2020-05-09', '2020-05-10', '2020-05-13', '2020-05-14', '2020-05-16', '2020-05-19', '2020-05-20', '2020-05-21'],
- // inputData: ['ports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([37.7775, -122.41638]),
- // aoiID: 'US03',
- // country: ['US'],
- // city: 'San Francisco',
- // siteName: 'San Francisco',
- // description: 'Ports: Ship throughput',
- // indicator: 'E13c',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Number of Ships in Port',
- // lastColorCode: 'BLUE',
- // eoSensor: ['Planet Labs/NASA (PlanetScope)'],
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((-122.63488 37.61314, -122.25654 37.61314, -122.25654 37.88081, -122.63488 37.88081, -122.63488 37.61314))').toJson(),
- // }],
- // },
- // time: ['2020-01-02', '2020-01-03', '2020-01-05', '2020-01-07', '2020-01-10', '2020-01-11', '2020-01-12', '2020-01-13', '2020-01-14', '2020-01-17', '2020-01-18', '2020-01-22', '2020-01-23', '2020-01-27', '2020-01-30', '2020-01-31', '2020-02-03', '2020-02-27', '2020-02-29', '2020-03-03', '2020-03-08', '2020-03-10', '2020-03-11', '2020-04-21', '2020-05-01', '2020-05-03', '2020-05-04', '2020-05-05', '2020-05-06', '2020-05-07', '2020-05-08', '2020-05-09', '2020-05-15', '2020-05-16', '2020-05-17', '2020-05-19', '2020-05-20', '2020-05-21'],
- // inputData: ['ports'],
- // },
- // },
- // },
- // {
- // properties: {
- // indicatorObject: {
- // aoi: latLng([30.05, 32.56]),
- // aoiID: 'EG01',
- // country: ['EG'],
- // city: 'Suez',
- // siteName: 'Suez Canal',
- // description: 'Ports: Ship throughput',
- // indicator: 'E13c',
- // lastIndicatorValue: 'normal',
- // indicatorName: 'Number of Ships in Port',
- // lastColorCode: 'BLUE',
- // eoSensor: ['Planet Labs/NASA (PlanetScope)'],
- // subAoi: {
- // type: 'FeatureCollection',
- // features: [{
- // type: 'Feature',
- // properties: {},
- // geometry: wkt.read('POLYGON((32.11595 30.28275,31.88249 31.09994,31.95115 31.72112,32.73942 31.67906,32.78062 31.56211,32.59111 30.32306,32.65428 29.99058,32.64878 29.81916,32.44554 29.84060,32.39335 30.15221,32.11595 30.28275))').toJson(),
- // }],
- // },
- // time: ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05', '2020-01-06', '2020-01-07', '2020-01-08', '2020-01-09', '2020-01-12', '2020-01-13', '2020-01-14', '2020-01-15', '2020-01-17', '2020-01-18', '2020-01-19', '2020-01-21', '2020-01-22', '2020-01-23', '2020-01-24', '2020-01-25', '2020-01-26', '2020-01-27', '2020-01-28', '2020-01-29', '2020-01-30', '2020-01-31', '2020-02-02', '2020-02-03', '2020-02-27', '2020-02-29', '2020-03-03', '2020-03-08', '2020-04-21', '2020-04-23', '2020-04-24', '2020-05-01', '2020-05-02', '2020-05-03', '2020-05-04', '2020-05-05', '2020-05-06', '2020-05-08', '2020-05-09', '2020-05-10', '2020-05-11', '2020-05-12', '2020-05-13', '2020-05-14', '2020-05-15', '2020-05-16', '2020-05-17', '2020-05-19', '2020-05-20', '2020-05-21', '2020-08-06', '2020-08-07', '2020-08-08', '2020-08-09', '2020-08-10'],
- // inputData: [''],
- // display: {
- // url: 'https://8ib71h0627.execute-api.us-east-1.amazonaws.com/v1/planet/{z}/{x}/{y}?date={time}&site=sc',
- // protocol: 'xyz',
- // tileSize: 256,
- // dateFormatFunction: (date) => DateTime.fromISO(date).toFormat('yyyy_MM_dd'),
- // features: {
- // name: 'Ship detections',
- // dateFormatFunction: (date) => DateTime.fromISO(date).toFormat('yyyy_MM_dd'),
- // url: 'https://8ib71h0627.execute-api.us-east-1.amazonaws.com/v1/detections/ship/sc/{featuresTime}.geojson',
- // },
- // },
- // },
- // },
- // },
{
properties: {
// nonstandard way that each layer is different time
@@ -1316,7 +835,7 @@ export const globalIndicators = [
{
properties: {
indicatorObject: {
- indicator: 'sen4ama',
+ indicator: 'MCD',
display: {
baseLayers: cloudlessBaseLayerDefault,
baseUrl: `https://services.sentinel-hub.com/ogc/wms/${shConfig.shInstanceId}`,
diff --git a/app/src/main.js b/app/src/main.js
index 163a0e3562..3e9bc058b2 100644
--- a/app/src/main.js
+++ b/app/src/main.js
@@ -35,6 +35,7 @@ import '@eox/map';
import '@eox/map/dist/eox-map-advanced-layers-and-sources';
import '@eox/jsonform';
import '@eox/storytelling';
+import '@eox/geosearch';
// Set UTC as default time zone behavior for whole client
Settings.defaultZoneName = 'utc';
@@ -50,6 +51,7 @@ Vue.config.ignoredElements = [
'eox-map',
'eox-jsonform',
'eox-storytelling',
+ 'eox-geosearch',
];
Vue.use(VuePapaParse);
diff --git a/app/src/utils.js b/app/src/utils.js
index e5fba045f6..22172a3b21 100644
--- a/app/src/utils.js
+++ b/app/src/utils.js
@@ -23,6 +23,16 @@ function clamp(value, low, high) {
return Math.max(low, Math.min(value, high));
}
+function sanitizeBbox(bbox) {
+ const [x1, y1, x2, y2] = bbox;
+ // Calculate the minimum and maximum values for x and y
+ const xmin = Math.min(x1, x2);
+ const xmax = Math.max(x1, x2);
+ const ymin = Math.min(y1, y2);
+ const ymax = Math.max(y1, y2);
+ return [xmin, ymin, xmax, ymax];
+}
+
export function simplifiedshTimeFunction(date) {
let tempDate = date;
if (!Array.isArray(tempDate)) {
@@ -165,7 +175,9 @@ function createXYZTilesMarineDatastoreDisplay(config, name) {
// const vmax = searchParams.get('vmax') || 1;
const display = {
protocol: 'xyz',
- url: `https://wmts.marine.copernicus.eu/teroWmts?service=WMTS&version=1.0.0&request=GetTile&tilematrixset=EPSG:4326&tilematrix={z-1}&tilerow={y}&tilecol={x}&layer=${config['wmts:layer']}&elevation=${config['wmts:dimensions'].elevation}&time={time}&style=${config['wmts:dimensions'].style}`,
+ // TODO FIXME - change to 4326 and z-1 offset
+ url: `https://wmts.marine.copernicus.eu/teroWmts?service=WMTS&version=1.0.0&request=GetTile&tilematrixset=EPSG:3857&tilematrix={z}&tilerow={y}&tilecol={x}&layer=${config['wmts:layer']}&elevation=${config['wmts:dimensions'].elevation}&time={time}&style=${config['wmts:dimensions'].style}`,
+ tileSize: 512,
name,
dateFormatFunction: (date) => `${date}`,
// commenting out for now due to a endless loop of fetching tiles (something triggers layercontrol xyz source update) and that fetches tiles, which triggers layercontrol xyz "slider" update
@@ -359,8 +371,10 @@ export async function loadFeatureData(baseConfig, feature) {
};
}
}
+ // if coordinates of bbox are switched in source, client breaks in OL part
+ const bbox = sanitizeBbox(jsonData.extent.spatial.bbox[0]);
// Add collection extent as subaoi
- const coords = fromExtent(jsonData.extent.spatial.bbox[0]).getCoordinates();
+ const coords = fromExtent(bbox).getCoordinates();
const features = {
type: 'MultiPolygon',
coordinates: [coords],
diff --git a/app/src/views/Dashboard.vue b/app/src/views/Dashboard.vue
index e21e202c09..8786e05a48 100644
--- a/app/src/views/Dashboard.vue
+++ b/app/src/views/Dashboard.vue
@@ -39,6 +39,7 @@
for="#centerMap"
:titleProperty.prop="'name'"
:tools.prop="['info', 'config', 'opacity', 'sort']"
+ height-percentage-both-open=30
:styleOverride.prop="appConfig.id === 'gtif' ?`button.icon[slot=opacity-icon]::before {content: url(${require('../../public/img/gtif/icons/circle-opacity.svg')}) !important;}
button.icon[slot=info-icon]::before {content: url(${require('../../public/img/gtif/icons/drop-icon.svg')}) !important;} [data-type=vector] .title::before { content: ''!important; width: 0px!important; height: 0px!important; min-width: 0px!important; margin-right: 0px!important; } [data-type=raster] .title::before {content: ''!important; width: 0px!important; height: 0px!important; min-width: 0px!important; margin-right: 0px!important;}* {font-family: 'NotesESA' !important;}` :`* {font-family: 'NotesESA' !important;}`"
class="pointerEvents">
diff --git a/app/src/views/StoryEditor.vue b/app/src/views/StoryEditor.vue
index f7f67b98d3..95153c6443 100644
--- a/app/src/views/StoryEditor.vue
+++ b/app/src/views/StoryEditor.vue
@@ -7,9 +7,9 @@
>
diff --git a/app/vue.config.js b/app/vue.config.js
index 9a1e35c6b4..b3ebd5c620 100644
--- a/app/vue.config.js
+++ b/app/vue.config.js
@@ -59,6 +59,7 @@ module.exports = {
'@eox/jsonform',
'@eox/storytelling',
'color-parse',
+ '@eox/geosearch',
],
configureWebpack: {
devServer: {