@eodash/eodash 5.0.0-rc.2.2 → 5.0.0-rc.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/core/client/components/EodashOverlay.vue +56 -0
  2. package/core/client/components/Footer.vue +1 -15
  3. package/core/client/composables/EodashProcess.js +4 -0
  4. package/core/client/eodash.js +4 -7
  5. package/core/client/eodashSTAC/EodashCollection.js +62 -31
  6. package/core/client/eodashSTAC/createLayers.js +15 -2
  7. package/core/client/eodashSTAC/helpers.js +1 -2
  8. package/core/client/types.ts +1 -1
  9. package/core/client/utils/states.js +43 -0
  10. package/core/client/views/Dashboard.vue +4 -1
  11. package/core/client/vite-env.d.ts +13 -0
  12. package/dist/client/{DashboardLayout-ByVMURpM.js → DashboardLayout-D1UcB3RV.js} +3 -3
  13. package/dist/client/{DynamicWebComponent-BRQQ5AXV.js → DynamicWebComponent-DtZ_mHL9.js} +2 -2
  14. package/dist/client/{EodashDatePicker-DyLo_JUC.js → EodashDatePicker-CYU0MZX5.js} +3 -3
  15. package/dist/client/{EodashItemFilter-BR572AaH.js → EodashItemFilter-SE9oW3oZ.js} +3 -3
  16. package/dist/client/{EodashLayerControl-C_mi-Hoo.js → EodashLayerControl-BuGe29Nt.js} +11 -4
  17. package/dist/client/{EodashLayoutSwitcher-D4ooLbys.js → EodashLayoutSwitcher-6wLl-Gtd.js} +3 -3
  18. package/dist/client/{EodashMap-CGFv4e85.js → EodashMap-DhVCoYMi.js} +11 -4
  19. package/dist/client/{EodashMapBtns-_M7SW7Is.js → EodashMapBtns-BWWu6eHG.js} +5 -5
  20. package/dist/client/{EodashProcess-ZQAMi9Pc.js → EodashProcess-GSj_LMsK.js} +23 -18
  21. package/dist/client/{EodashStacInfo-CwOCcsGl.js → EodashStacInfo-DjRSGLHM.js} +2 -2
  22. package/dist/client/{EodashTools-C_X0RPIp.js → EodashTools-CJ4hBH_X.js} +5 -5
  23. package/dist/client/{ExportState-DNUSRJSJ.js → ExportState-BqnlEpzR.js} +5 -5
  24. package/dist/client/Footer-C_3WrfI4.js +119 -0
  25. package/dist/client/{Header-BcHAtFqr.js → Header-D_hcGpNG.js} +4 -4
  26. package/dist/client/{IframeWrapper-BgM9aU8f.js → IframeWrapper-XzQDZy0T.js} +1 -1
  27. package/dist/client/{MobileLayout-CUHZFLDY.js → MobileLayout-CDbupC9v.js} +6 -6
  28. package/dist/client/{PopUp-CEmhdNIj.js → PopUp-Ba6mY2jQ.js} +5 -4
  29. package/dist/client/{VImg-Cdaw92OV.js → VImg-Yc9F9pYq.js} +4 -4
  30. package/dist/client/{VMain-B7G2T3Zv.js → VMain-BiS7HPEk.js} +1 -1
  31. package/dist/client/{VOverlay-Mf1pOmgW.js → VOverlay-B9mxXaCv.js} +4 -4
  32. package/dist/client/{VTooltip-9810qjB2.js → VTooltip-XJLaLrZQ.js} +3 -3
  33. package/dist/client/{WidgetsContainer-GUwXMh9d.js → WidgetsContainer-DRVb_73N.js} +2 -2
  34. package/dist/client/{asWebComponent--e4yqM3f.js → asWebComponent-DZpMGxEY.js} +329 -170
  35. package/dist/client/eo-dash.css +2 -2
  36. package/dist/client/eo-dash.js +1 -1
  37. package/dist/client/{forwardRefs-B9UH8QZK.js → forwardRefs-BtkfywIE.js} +1 -1
  38. package/dist/client/{index-D-lbt2my.js → index-f55xuyof.js} +3 -1
  39. package/dist/client/{transition-CTjQmgIS.js → transition-CtL4BoVi.js} +2 -2
  40. package/dist/node/cli.js +2 -2
  41. package/dist/types/core/client/components/EodashOverlay.vue.d.ts +2 -0
  42. package/dist/types/core/client/components/MobileLayout.vue.d.ts +254 -241
  43. package/dist/types/core/client/eodashSTAC/EodashCollection.d.ts +40 -15
  44. package/dist/types/core/client/eodashSTAC/createLayers.d.ts +23 -3
  45. package/dist/types/core/client/eodashSTAC/helpers.d.ts +3 -78
  46. package/dist/types/core/client/utils/states.d.ts +43 -0
  47. package/dist/types/widgets/PopUp.vue.d.ts +2 -2
  48. package/package.json +20 -20
  49. package/widgets/EodashItemFilter.vue +1 -1
  50. package/widgets/EodashLayerControl.vue +7 -0
  51. package/widgets/EodashMap.vue +8 -1
  52. package/widgets/EodashProcess.vue +18 -13
  53. package/dist/client/Footer-FUp1Te0L.js +0 -141
@@ -0,0 +1,56 @@
1
+ <template>
2
+ <div class="eodash-overlay" v-if="$vuetify.display.mdAndUp">
3
+ <p>
4
+ <a href="https://github.com/eodash/eodash" target="_blank"
5
+ >eodash v{{ version }}</a
6
+ >
7
+ by
8
+ <a href="https://eox.at" target="_blank">
9
+ <img :src="`data:image/svg+xml;base64,${base64Logo}`" height="9px" />
10
+ </a>
11
+ </p>
12
+ </div>
13
+ </template>
14
+ <script setup>
15
+ import { useTheme } from "vuetify/lib/framework.mjs";
16
+ import pkgJson from "../../../package.json";
17
+ const { computedThemes } = useTheme();
18
+
19
+ const version = pkgJson.version;
20
+
21
+ const eoxLogo = `<svg width="100%" height="100%" viewBox="0 0 355 85" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><g id="ink_ext_XXXXXX"><path id="path5076" d="M152.986,40.52l-0.75,-0.019l-0.737,-0.056l-0.725,-0.093l-0.713,-0.127l-0.7,-0.162l-0.7,-0.196l-0.675,-0.228l-0.65,-0.261l-0.65,-0.292l-0.625,-0.319l-0.612,-0.352l-0.588,-0.377l-0.562,-0.407l-0.55,-0.431l-0.538,-0.457l-0.5,-0.481l-0.487,-0.505l-0.45,-0.528l-0.438,-0.55l-0.4,-0.57l-0.375,-0.59l-0.35,-0.609l-0.325,-0.627l-0.287,-0.645l-0.263,-0.66l-0.225,-0.676l-0.2,-0.69l-0.162,-0.704l-0.125,-0.717l-0.1,-0.728l-0.05,-0.739l-0.025,-0.748c0,-8.023 6.512,-14.532 14.537,-14.532c8.038,0 14.538,6.509 14.538,14.532c0,8.036 -6.5,14.544 -14.538,14.544Z" style="fill:none;"/><path id="path5078" d="M165.748,-0.002c-42.009,0 -76.06,18.985 -76.06,42.402c0,13.268 10.921,25.102 28.021,32.875c-8.081,-5.487 -13.403,-12.973 -14.584,-21.859c-2.685,-20.186 16.83,-40.82 45.148,-49.615c-14.687,6.665 -24.923,21.427 -24.923,38.599c0,23.218 18.648,42.046 41.773,42.383c-0.037,0.005 -0.087,0.015 -0.137,0.02c0.263,0 0.512,0.009 0.762,0.009c42.013,0 76.076,-18.984 76.076,-42.412c0,-13.261 -10.937,-25.097 -28.037,-32.871l0.75,0.522l0.736,0.531l0.713,0.543l0.7,0.555l0.687,0.566l0.664,0.578l0.649,0.588l0.625,0.6l0.613,0.609l0.588,0.621l0.574,0.631l0.562,0.643l0.538,0.652l0.513,0.662l0.5,0.672l0.475,0.684l0.449,0.693l0.438,0.703l0.425,0.713l0.387,0.723l0.375,0.73l0.352,0.74l0.336,0.75l0.3,0.76l0.287,0.77l0.264,0.777l0.25,0.787l0.211,0.795l0.188,0.805l0.175,0.812l0.151,0.82l0.125,0.831c2.675,20.19 -16.838,40.825 -45.151,49.619c14.688,-6.665 24.926,-21.426 24.926,-38.614c0,-23.202 -18.65,-42.026 -41.775,-42.367c0.05,-0.005 0.1,-0.015 0.15,-0.025c-0.262,0 -0.526,-0.01 -0.789,-0.01Zm-13.248,11.314c7.817,0 14.25,6.433 14.25,14.25c0,0.001 0,0.001 0,0.001c0,7.817 -6.433,14.249 -14.25,14.249c-7.817,0 -14.25,-6.432 -14.25,-14.249c0,-0.001 0,-0.001 0,-0.001c0,-7.817 6.433,-14.25 14.25,-14.25Z"
22
+ style="fill:${computedThemes.value["dashboardTheme"].colors["on-secondary"]};fill-rule:nonzero;"/><path id="path5080" d="M213.786,9.529l0.75,0.521l0.738,0.532l0.712,0.544l0.7,0.555l0.688,0.566l0.662,0.577l0.65,0.588l0.625,0.6l0.613,0.61l0.587,0.62l0.575,0.631l0.563,0.643l0.537,0.652l0.513,0.663l0.5,0.672l0.475,0.684l0.45,0.692l0.437,0.703l0.425,0.712l0.388,0.723l0.375,0.731l0.35,0.741l0.337,0.75l0.3,0.76l0.288,0.769l0.262,0.777l0.25,0.786l0.213,0.797l0.187,0.804l0.175,0.812l0.15,0.821l0.125,0.83c2.675,20.19 -16.837,40.825 -45.15,49.619c14.688,-6.665 24.925,-21.426 24.925,-38.614c0,-23.202 -18.65,-42.025 -41.775,-42.367c0.05,-0.005 0.1,-0.015 0.15,-0.025c-0.262,0 -0.525,-0.01 -0.787,-0.01c-42.01,0 -76.062,18.985 -76.062,42.402c0,13.268 10.922,25.103 28.022,32.876c-8.081,-5.487 -13.403,-12.973 -14.584,-21.859c-2.685,-20.187 16.831,-40.82 45.149,-49.615c-14.688,6.665 -24.925,21.426 -24.925,38.598c0,23.218 18.65,42.046 41.775,42.383c-0.038,0.005 -0.088,0.015 -0.138,0.02c0.263,0 0.513,0.01 0.763,0.01c42.012,-0.001 76.075,-18.985 76.075,-42.413c0,-13.261 -10.938,-25.097 -28.038,-32.871Z" style="fill:none;"/><path id="path5082" d="M354.323,82.586l-41.999,-42.002l38.524,-38.515l-29.913,0l-23.562,23.559l-23.563,-23.559l-29.924,0l38.525,38.515l-42,42.002l29.913,0l27.049,-27.046l27.05,27.046l29.9,0"
23
+ style="fill:${computedThemes.value["dashboardTheme"].colors["on-secondary"]};fill-rule:nonzero;"/><path id="path5084" d="M354.323,82.586l-41.999,-42.002l38.524,-38.515l-29.913,0l-23.562,23.559l-23.563,-23.559l-29.924,0l38.525,38.515l-42,42.002l29.913,0l27.049,-27.046l27.05,27.046l29.9,0Z" style="fill:none;"/><path id="path5086" d="M0,2.069l75.033,0l0,16.489l-51.629,0l0,14.931l40.258,0l0,16.495l-40.258,0l0,16.05l53.124,0l0,16.488l-76.528,0l0,-80.453"
24
+ style="fill:${computedThemes.value["dashboardTheme"].colors["on-secondary"]};fill-rule:nonzero;"/><path id="path5088" d="M0,2.069l75.033,0l0,16.489l-51.629,0l0,14.931l40.258,0l0,16.495l-40.258,0l0,16.05l53.124,0l0,16.488l-76.528,0l0,-80.453Z" style="fill:none;"/></g></svg>`;
25
+ const base64Logo = btoa(eoxLogo);
26
+ </script>
27
+ <style scoped lang="scss">
28
+ .eodash-overlay {
29
+ position: fixed;
30
+ top: 0;
31
+ left: 0;
32
+ width: 100%;
33
+ height: 100%;
34
+ font-size: 0.7em;
35
+ font-weight: bold;
36
+ background: linear-gradient(
37
+ 181deg,
38
+ transparent 97%,
39
+ rgba(var(--v-theme-secondary), 0.5)
40
+ );
41
+ z-index: 9999;
42
+ pointer-events: none;
43
+ p {
44
+ position: absolute;
45
+ bottom: -4px;
46
+ left: 95px;
47
+ transform: translate(-50%, -50%);
48
+ color: rgba(var(--v-theme-on-secondary), 1);
49
+ }
50
+ a {
51
+ pointer-events: all;
52
+ text-decoration: dashed;
53
+ color: rgba(var(--v-theme-on-secondary), 1);
54
+ }
55
+ }
56
+ </style>
@@ -4,23 +4,11 @@
4
4
  :height="mdAndDown ? '48px' : 'auto'"
5
5
  color="secondary"
6
6
  app
7
- class="d-flex justify-space-between"
7
+ class="d-flex justify-end"
8
8
  >
9
9
  <p class="pt-0 footer-text">
10
10
  {{ eodash.brand.footerText ?? "" }}
11
11
  </p>
12
- <div>
13
- <a
14
- href="https://github.com/eodash/eodash"
15
- class="text-white"
16
- target="_blank"
17
- >eodash</a
18
- >
19
- by
20
- <a href="https://eox.at" target="_blank" class="text-white">
21
- <img :src="`data:image/svg+xml;base64,${base64Logo}`" height="11px" />
22
- </a>
23
- </div>
24
12
  </v-footer>
25
13
  </template>
26
14
  <script setup>
@@ -40,8 +28,6 @@ const footer = ref(null);
40
28
  const eodash = /** @type {import("@/types").Eodash} */ (inject(eodashKey));
41
29
 
42
30
  const { mdAndDown } = useDisplay();
43
- const eoxLogo = `<svg width="100%" height="100%" viewBox="0 0 355 85" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><g id="ink_ext_XXXXXX"><path id="path5076" d="M152.986,40.52l-0.75,-0.019l-0.737,-0.056l-0.725,-0.093l-0.713,-0.127l-0.7,-0.162l-0.7,-0.196l-0.675,-0.228l-0.65,-0.261l-0.65,-0.292l-0.625,-0.319l-0.612,-0.352l-0.588,-0.377l-0.562,-0.407l-0.55,-0.431l-0.538,-0.457l-0.5,-0.481l-0.487,-0.505l-0.45,-0.528l-0.438,-0.55l-0.4,-0.57l-0.375,-0.59l-0.35,-0.609l-0.325,-0.627l-0.287,-0.645l-0.263,-0.66l-0.225,-0.676l-0.2,-0.69l-0.162,-0.704l-0.125,-0.717l-0.1,-0.728l-0.05,-0.739l-0.025,-0.748c0,-8.023 6.512,-14.532 14.537,-14.532c8.038,0 14.538,6.509 14.538,14.532c0,8.036 -6.5,14.544 -14.538,14.544Z" style="fill:none;"/><path id="path5078" d="M165.748,-0.002c-42.009,0 -76.06,18.985 -76.06,42.402c0,13.268 10.921,25.102 28.021,32.875c-8.081,-5.487 -13.403,-12.973 -14.584,-21.859c-2.685,-20.186 16.83,-40.82 45.148,-49.615c-14.687,6.665 -24.923,21.427 -24.923,38.599c0,23.218 18.648,42.046 41.773,42.383c-0.037,0.005 -0.087,0.015 -0.137,0.02c0.263,0 0.512,0.009 0.762,0.009c42.013,0 76.076,-18.984 76.076,-42.412c0,-13.261 -10.937,-25.097 -28.037,-32.871l0.75,0.522l0.736,0.531l0.713,0.543l0.7,0.555l0.687,0.566l0.664,0.578l0.649,0.588l0.625,0.6l0.613,0.609l0.588,0.621l0.574,0.631l0.562,0.643l0.538,0.652l0.513,0.662l0.5,0.672l0.475,0.684l0.449,0.693l0.438,0.703l0.425,0.713l0.387,0.723l0.375,0.73l0.352,0.74l0.336,0.75l0.3,0.76l0.287,0.77l0.264,0.777l0.25,0.787l0.211,0.795l0.188,0.805l0.175,0.812l0.151,0.82l0.125,0.831c2.675,20.19 -16.838,40.825 -45.151,49.619c14.688,-6.665 24.926,-21.426 24.926,-38.614c0,-23.202 -18.65,-42.026 -41.775,-42.367c0.05,-0.005 0.1,-0.015 0.15,-0.025c-0.262,0 -0.526,-0.01 -0.789,-0.01Zm-13.248,11.314c7.817,0 14.25,6.433 14.25,14.25c0,0.001 0,0.001 0,0.001c0,7.817 -6.433,14.249 -14.25,14.249c-7.817,0 -14.25,-6.432 -14.25,-14.249c0,-0.001 0,-0.001 0,-0.001c0,-7.817 6.433,-14.25 14.25,-14.25Z" style="fill:#fff;fill-rule:nonzero;"/><path id="path5080" d="M213.786,9.529l0.75,0.521l0.738,0.532l0.712,0.544l0.7,0.555l0.688,0.566l0.662,0.577l0.65,0.588l0.625,0.6l0.613,0.61l0.587,0.62l0.575,0.631l0.563,0.643l0.537,0.652l0.513,0.663l0.5,0.672l0.475,0.684l0.45,0.692l0.437,0.703l0.425,0.712l0.388,0.723l0.375,0.731l0.35,0.741l0.337,0.75l0.3,0.76l0.288,0.769l0.262,0.777l0.25,0.786l0.213,0.797l0.187,0.804l0.175,0.812l0.15,0.821l0.125,0.83c2.675,20.19 -16.837,40.825 -45.15,49.619c14.688,-6.665 24.925,-21.426 24.925,-38.614c0,-23.202 -18.65,-42.025 -41.775,-42.367c0.05,-0.005 0.1,-0.015 0.15,-0.025c-0.262,0 -0.525,-0.01 -0.787,-0.01c-42.01,0 -76.062,18.985 -76.062,42.402c0,13.268 10.922,25.103 28.022,32.876c-8.081,-5.487 -13.403,-12.973 -14.584,-21.859c-2.685,-20.187 16.831,-40.82 45.149,-49.615c-14.688,6.665 -24.925,21.426 -24.925,38.598c0,23.218 18.65,42.046 41.775,42.383c-0.038,0.005 -0.088,0.015 -0.138,0.02c0.263,0 0.513,0.01 0.763,0.01c42.012,-0.001 76.075,-18.985 76.075,-42.413c0,-13.261 -10.938,-25.097 -28.038,-32.871Z" style="fill:none;"/><path id="path5082" d="M354.323,82.586l-41.999,-42.002l38.524,-38.515l-29.913,0l-23.562,23.559l-23.563,-23.559l-29.924,0l38.525,38.515l-42,42.002l29.913,0l27.049,-27.046l27.05,27.046l29.9,0" style="fill:#fff;fill-rule:nonzero;"/><path id="path5084" d="M354.323,82.586l-41.999,-42.002l38.524,-38.515l-29.913,0l-23.562,23.559l-23.563,-23.559l-29.924,0l38.525,38.515l-42,42.002l29.913,0l27.049,-27.046l27.05,27.046l29.9,0Z" style="fill:none;"/><path id="path5086" d="M0,2.069l75.033,0l0,16.489l-51.629,0l0,14.931l40.258,0l0,16.495l-40.258,0l0,16.05l53.124,0l0,16.488l-76.528,0l0,-80.453" style="fill:#fff;fill-rule:nonzero;"/><path id="path5088" d="M0,2.069l75.033,0l0,16.489l-51.629,0l0,14.931l40.258,0l0,16.495l-40.258,0l0,16.05l53.124,0l0,16.488l-76.528,0l0,-80.453Z" style="fill:none;"/></g></svg>`;
44
- const base64Logo = window.btoa(eoxLogo);
45
31
  </script>
46
32
  <style scoped>
47
33
  .footer-text {
@@ -184,6 +184,7 @@ export function extractGeometries(jsonformValue, jsonformSchema) {
184
184
  * @param {import("@eox/jsonform").EOxJSONForm | null} jsonFormEl
185
185
  **/
186
186
  export function injectJsonformCSS(jsonFormEl) {
187
+ //@ts-expect-error TODO
187
188
  if (!jsonFormEl?.shadowRoot) {
188
189
  console.error("jsonform has no shadowRoot");
189
190
  return;
@@ -192,6 +193,7 @@ export function injectJsonformCSS(jsonFormEl) {
192
193
  stylesheet.replaceSync(`.je-indented-panel {
193
194
  border: none !important;
194
195
  }`);
196
+ //@ts-expect-error TODO
195
197
  jsonFormEl.shadowRoot.adoptedStyleSheets = [stylesheet];
196
198
  }
197
199
 
@@ -446,6 +448,7 @@ export async function handleProcesses({
446
448
  );
447
449
  const bboxProperty = getBboxProperty(jsonformSchema.value);
448
450
  const jsonformValue = /** @type {Record<string,any>} */ (
451
+ //@ts-expect-error todo
449
452
  jsonformEl.value?.value
450
453
  );
451
454
 
@@ -601,6 +604,7 @@ export async function initProcess({
601
604
  processResults,
602
605
  });
603
606
  if (selectedStac.value["eodash:jsonform"]) {
607
+ //@ts-expect-error todo
604
608
  jsonformEl.value?.editor.destroy();
605
609
  // wait for the layers to be rendered
606
610
  jsonformSchema.value = await axios
@@ -10,13 +10,14 @@ import { reactive } from "vue";
10
10
  export const eodash = reactive({
11
11
  id: "demo",
12
12
  stacEndpoint:
13
- // "https://eurodatacube.github.io/eodash-catalog/RACE/catalog.json",
13
+ // "https://esa-eodash.github.io/RACE-catalog/RACE/catalog.json",
14
14
  // "https://gtif-cerulean.github.io/catalog/cerulean/catalog.json",
15
15
  // "https://eodashcatalog.eox.at/samplecatalog/samples/catalog.json",
16
16
  // "https://eodashcatalog.eox.at/test-style/trilateral/catalog.json",
17
17
  // "https://gtif-cerulean.github.io/catalog/cerulean/catalog.json",
18
18
  // "https://gtif-cerulean.github.io/deside-catalog/deside/catalog.json",
19
- "https://gtif-cerulean.github.io/cerulean-catalog/cerulean/catalog.json",
19
+ // "https://gtif-cerulean.github.io/cerulean-catalog/cerulean/catalog.json",
20
+ "https://gtif-austria.github.io/public-catalog/GTIF-Austria/catalog.json",
20
21
  brand: {
21
22
  noLayout: true,
22
23
  name: "Demo",
@@ -247,10 +248,6 @@ export const eodash = reactive({
247
248
  type: "internal",
248
249
  widget: {
249
250
  name: "EodashStacInfo",
250
- properties: {
251
- showIndicatorsBtn: false,
252
- showLayoutSwitcher: false,
253
- },
254
251
  },
255
252
  }
256
253
  : null;
@@ -298,7 +295,7 @@ export const eodash = reactive({
298
295
  id: "Processes",
299
296
  type: "internal",
300
297
  title: "Processes",
301
- layout: { x: 9, y: 7, w: 3, h: 5 },
298
+ layout: { x: 9, y: 6, w: 3, h: 5 },
302
299
  widget: {
303
300
  name: "EodashProcess",
304
301
  },
@@ -17,6 +17,7 @@ import {
17
17
  import { createLayersFromAssets, createLayersFromLinks } from "./createLayers";
18
18
  import axios from "@/plugins/axios";
19
19
  import log from "loglevel";
20
+ import { dataThemesBrands } from "@/utils/states";
20
21
 
21
22
  export class EodashCollection {
22
23
  #collectionUrl = "";
@@ -419,38 +420,68 @@ export class EodashCollection {
419
420
  allFeatures.push(collectionFeatures);
420
421
  }
421
422
  }
422
- if (allFeatures.length) {
423
- const featureCollection = {
424
- type: "FeatureCollection",
425
- crs: {
426
- type: "name",
427
- properties: {
428
- name: "EPSG:4326",
429
- },
430
- },
431
- features: allFeatures.flat(),
432
- };
433
- return {
434
- type: "Vector",
423
+ if (!allFeatures.length) {
424
+ return null;
425
+ }
426
+
427
+ const featureCollection = {
428
+ type: "FeatureCollection",
429
+ crs: {
430
+ type: "name",
435
431
  properties: {
436
- id: "geodb-collection",
437
- title: "Observation Points",
438
- },
439
- source: {
440
- type: "Vector",
441
- url: "data:," + encodeURIComponent(JSON.stringify(featureCollection)),
442
- format: "GeoJSON",
432
+ name: "EPSG:4326",
443
433
  },
444
- style: {
445
- "circle-radius": 5,
446
- "circle-fill-color": "#00417077",
447
- "circle-stroke-color": "#004170",
448
- "fill-color": "#00417077",
449
- "stroke-color": "#004170",
450
- },
451
- interactions: [],
452
- };
453
- }
454
- return null;
434
+ },
435
+ features: allFeatures.flat(),
436
+ };
437
+ return {
438
+ type: "Vector",
439
+ properties: {
440
+ id: "geodb-collection",
441
+ title: "Observation Points",
442
+ },
443
+ source: {
444
+ type: "Vector",
445
+ url: "data:," + encodeURIComponent(JSON.stringify(featureCollection)),
446
+ format: "GeoJSON",
447
+ },
448
+ style: (() => {
449
+ // generate flat style rules for each theme
450
+ /** @param {*} theme */
451
+ const generateIconSrc = (theme) => {
452
+ const svgString = `
453
+ <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 70 70">
454
+ <circle cx="35" cy="35" r="30" stroke="white" fill="${theme.color}" stroke-width="4"/>
455
+ <path d="${theme.icon}" fill="#fff" transform="translate(19.5, 20) scale(1.3) "/>
456
+ </svg>
457
+ `;
458
+ return `data:image/svg+xml,${encodeURIComponent(svgString)}`;
459
+ };
460
+
461
+ return [
462
+ ...Object.keys(dataThemesBrands).map((theme, idx) => {
463
+ return {
464
+ ...(idx !== 0 && { else: true }),
465
+ filter: ["==", ["get", "themes", 0], theme],
466
+ style: {
467
+ //@ts-expect-error string index
468
+ "icon-src": generateIconSrc(dataThemesBrands[theme]),
469
+ },
470
+ };
471
+ }),
472
+ {
473
+ else: true,
474
+ style: {
475
+ "circle-radius": 10,
476
+ "circle-fill-color": "#00417077",
477
+ "circle-stroke-color": "#004170",
478
+ "fill-color": "#0417077",
479
+ "stroke-color": "#004170",
480
+ },
481
+ },
482
+ ];
483
+ })(),
484
+ interactions: [],
485
+ };
455
486
  }
456
487
  }
@@ -36,6 +36,7 @@ export async function createLayersFromAssets(
36
36
  let geoTIFFIdx = null;
37
37
  // let geoJsonLayers = [];
38
38
  let geoJsonIdx = 0;
39
+ let geoJsonAttributions = [];
39
40
 
40
41
  const geoJsonSources = [];
41
42
  let geoJsonRoles = {};
@@ -50,6 +51,8 @@ export async function createLayersFromAssets(
50
51
  if (assets[ast]?.type === "application/geo+json") {
51
52
  geoJsonSources.push(assets[ast].href);
52
53
  geoJsonIdx = idx;
54
+ if (assets[ast].attribution)
55
+ geoJsonAttributions.push(assets[ast].attribution);
53
56
  extractRoles(geoJsonRoles, assets[ast]);
54
57
  } else if (assets[ast]?.type === "application/vnd.flatgeobuf") {
55
58
  const assetId = createAssetID(collectionId, item.id, idx);
@@ -61,6 +64,7 @@ export async function createLayersFromAssets(
61
64
  type: "FlatGeoBuf",
62
65
  url: assets[ast].href,
63
66
  format: "GeoJSON",
67
+ attributions: assets[ast].attribution,
64
68
  },
65
69
  properties: {
66
70
  id: assetId,
@@ -74,11 +78,12 @@ export async function createLayersFromAssets(
74
78
  }),
75
79
  },
76
80
  ...(!style?.variables && { style }),
81
+ interactions: [],
77
82
  };
78
83
  // add tooltip interaction if style has tooltip
79
84
  if (style?.tooltip) {
80
- // @ts-expect-error no type for eox-map layer
81
85
  layer.interactions = [
86
+ // @ts-expect-error no type for eox-map layer
82
87
  {
83
88
  type: "select",
84
89
  options: {
@@ -100,7 +105,10 @@ export async function createLayersFromAssets(
100
105
  jsonArray.push(layer);
101
106
  } else if (assets[ast]?.type === "image/tiff") {
102
107
  geoTIFFIdx = idx;
103
- geoTIFFSources.push({ url: assets[ast].href });
108
+ geoTIFFSources.push({
109
+ url: assets[ast].href,
110
+ attributions: assets[ast].attribution,
111
+ });
104
112
  }
105
113
  }
106
114
 
@@ -114,6 +122,7 @@ export async function createLayersFromAssets(
114
122
  type: "Vector",
115
123
  url: await mergeGeojsons(geoJsonSources),
116
124
  format: "GeoJSON",
125
+ attributions: geoJsonAttributions,
117
126
  },
118
127
  properties: {
119
128
  ...geoJsonRoles,
@@ -227,6 +236,7 @@ export const createLayersFromLinks = async (
227
236
  tileGrid: {
228
237
  tileSize,
229
238
  },
239
+ attributions: wmsLink.attribution,
230
240
  params: {
231
241
  LAYERS: wmsLink["wms:layers"],
232
242
  TILED: true,
@@ -297,6 +307,7 @@ export const createLayersFromLinks = async (
297
307
  tileGrid: {
298
308
  tileSize: [128, 128],
299
309
  },
310
+ attributions: wmtsLink.attribution,
300
311
  dimensions: dimensionsWithoutStyle,
301
312
  },
302
313
  };
@@ -322,6 +333,7 @@ export const createLayersFromLinks = async (
322
333
  tileGrid: {
323
334
  tileSize: [512, 512],
324
335
  },
336
+ attributions: wmtsLink.attribution,
325
337
  dimensions: dimensionsWithoutStyle,
326
338
  },
327
339
  };
@@ -359,6 +371,7 @@ export const createLayersFromLinks = async (
359
371
  type: "XYZ",
360
372
  url: xyzLink.href,
361
373
  projection: projectionCode,
374
+ attributions: xyzLink.attribution,
362
375
  },
363
376
  };
364
377
 
@@ -118,9 +118,8 @@ export const extractRoles = (properties, linkOrAsset) => {
118
118
  if (role === "overlay" || role === "baselayer") {
119
119
  properties.group = role;
120
120
  }
121
-
122
- return properties;
123
121
  });
122
+ return properties;
124
123
  };
125
124
 
126
125
  /**
@@ -323,7 +323,7 @@ export declare const store: typeof import("@/store").default;
323
323
  /////
324
324
 
325
325
  export * from "./main.js";
326
-
326
+ //@ts-expect-error todo
327
327
  export type EodashStyleJson = import("ol/style/webgl.js").WebGLStyle & {
328
328
  variables?: Record<string, string | number | boolean | null | undefined>;
329
329
  legend?: import("@eox/layercontrol/src/components/layer-config.js").EOxLayerControlLayerConfig["layerConfig"]["legend"];
@@ -1,3 +1,12 @@
1
+ import {
2
+ mdiBarley,
3
+ mdiCurrencyEur,
4
+ mdiHospitalBoxOutline,
5
+ mdiImageFilterHdr,
6
+ mdiSetCenter,
7
+ mdiWater,
8
+ mdiWeatherWindy,
9
+ } from "@mdi/js";
1
10
  import { reactive, ref, shallowReactive } from "vue";
2
11
 
3
12
  /**
@@ -37,3 +46,37 @@ export const collectionsPalette = reactive([
37
46
  "#56B4E9",
38
47
  "#D55E00",
39
48
  ]);
49
+
50
+ /**
51
+ * Object containing data themes and their associated brand properties (icon and color).
52
+ */
53
+ export const dataThemesBrands = {
54
+ agriculture: {
55
+ icon: mdiBarley,
56
+ color: "#F2AF25",
57
+ },
58
+ water: {
59
+ icon: mdiWater,
60
+ color: "#73A6C7",
61
+ },
62
+ land: {
63
+ icon: mdiImageFilterHdr,
64
+ color: "#019E73",
65
+ },
66
+ health: {
67
+ icon: mdiHospitalBoxOutline,
68
+ color: "#497FA9",
69
+ },
70
+ combined: {
71
+ icon: mdiSetCenter,
72
+ color: "#56B4E9",
73
+ },
74
+ air: {
75
+ icon: mdiWeatherWindy,
76
+ color: "#475faf",
77
+ },
78
+ economy: {
79
+ icon: mdiCurrencyEur,
80
+ color: "#8E81AF",
81
+ },
82
+ };
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <HeaderComponent v-if="!eodash.brand.noLayout" />
3
3
  <ErrorAlert v-model="error" />
4
+ <EodashOverlay />
4
5
  <Suspense>
5
6
  <TemplateComponent :style="{ height: templateHeight }" />
6
7
  <template #fallback>
@@ -21,6 +22,7 @@ import { useDisplay } from "vuetify/lib/framework.mjs";
21
22
  import { loadFont } from "@/utils";
22
23
  import Loading from "@/components/Loading.vue";
23
24
  import ErrorAlert from "@/components/ErrorAlert.vue";
25
+ import EodashOverlay from "@/components/EodashOverlay.vue";
24
26
 
25
27
  const props = defineProps({
26
28
  config: {
@@ -86,6 +88,7 @@ eo-dash {
86
88
  overflow: hidden;
87
89
  }
88
90
  /* set eox-elements colors css vars to match the theme */
91
+ /*
89
92
  eox-layercontrol,
90
93
  eox-map,
91
94
  eox-drawtools,
@@ -104,5 +107,5 @@ eox-itemfilter {
104
107
  --eox-warning-color: rgb(var(--v-theme-warning));
105
108
  --range-slider-color: rgb(var(--v-theme-primary));
106
109
  --range-slider-track-color: rgb(var(--v-theme-on-primary));
107
- }
110
+ } */
108
111
  </style>
@@ -5,6 +5,19 @@ declare module "*.vue" {
5
5
  const component: DefineComponent<object, object, unknown>;
6
6
  export default component;
7
7
  }
8
+ declare module "@eox/jsonform" {
9
+ class EOxJSONForm extends import("lit").LitElement{
10
+ constructor(){
11
+ super();
12
+ }
13
+ }
14
+ export { EOxJSONForm };
15
+ }
16
+
17
+ declare module "@eox/jsonform/src/custom-inputs/spatial/utils" {
18
+ const isMulti:(value:any)=> boolean;
19
+ export { isMulti };
20
+ }
8
21
  declare interface Window {
9
22
  eodashStore: typeof import("@/store").default;
10
23
  setEodashLoglevel: typeof import("loglevel").setLevel;
@@ -1,7 +1,7 @@
1
- import { openBlock, createBlock, withCtx, createElementVNode, unref, normalizeStyle, createElementBlock, Suspense, resolveDynamicComponent, mergeProps, createCommentVNode, Fragment, renderList, Transition } from 'vue';
1
+ import { createBlock, openBlock, withCtx, createElementVNode, normalizeStyle, unref, createElementBlock, createCommentVNode, Suspense, resolveDynamicComponent, mergeProps, Fragment, renderList, Transition } from 'vue';
2
2
  import '@eox/layout';
3
- import { _ as _export_sfc, F as useDefineTemplate } from './asWebComponent--e4yqM3f.js';
4
- import { V as VMain } from './VMain-B7G2T3Zv.js';
3
+ import { _ as _export_sfc, F as useDefineTemplate } from './asWebComponent-DZpMGxEY.js';
4
+ import { V as VMain } from './VMain-BiS7HPEk.js';
5
5
 
6
6
  const _hoisted_1 = ["gap"];
7
7
  const _hoisted_2 = ["id", "h", "w", "x", "y"];
@@ -1,5 +1,5 @@
1
- import { withAsyncContext, ref, onMounted, onUnmounted, openBlock, createElementBlock, createBlock, resolveDynamicComponent, mergeProps } from 'vue';
2
- import { $ as useSTAcStore } from './asWebComponent--e4yqM3f.js';
1
+ import { withAsyncContext, ref, onMounted, onUnmounted, createElementBlock, openBlock, createBlock, resolveDynamicComponent, mergeProps } from 'vue';
2
+ import { $ as useSTAcStore } from './asWebComponent-DZpMGxEY.js';
3
3
 
4
4
  const _hoisted_1 = { class: "d-flex flex-column fill-height overflow-auto" };
5
5
 
@@ -1,9 +1,9 @@
1
- import { resolveComponent, render, h, mergeProps, useCssVars, useTemplateRef, customRef, ref, computed, reactive, toRef, watch, onMounted, openBlock, createElementBlock, createVNode, unref, createSlots, withCtx, createElementVNode, withDirectives, createBlock, createCommentVNode, toHandlers } from 'vue';
1
+ import { resolveComponent, render, h, mergeProps, useCssVars, ref, useTemplateRef, customRef, computed, reactive, toRef, watch, onMounted, createElementBlock, openBlock, createVNode, unref, createSlots, withCtx, createElementVNode, withDirectives, createCommentVNode, createBlock, toHandlers } from 'vue';
2
2
  import { DatePicker } from 'v-calendar';
3
- import { E as isObject, Y as consoleError, t as useDisplay, Z as datetime, $ as useSTAcStore, a0 as eodashCollections, a1 as collectionsPalette, a2 as makePanelTransparent, V as VBtn, y as VIcon } from './asWebComponent--e4yqM3f.js';
3
+ import { E as isObject, Y as consoleError, r as useDisplay, Z as datetime, $ as useSTAcStore, a0 as eodashCollections, a1 as collectionsPalette, a2 as makePanelTransparent, V as VBtn, v as VIcon } from './asWebComponent-DZpMGxEY.js';
4
4
  import { mdiRayEndArrow, mdiRayStartArrow } from '@mdi/js';
5
5
  import log from 'loglevel';
6
- import { V as VTooltip } from './VTooltip-9810qjB2.js';
6
+ import { V as VTooltip } from './VTooltip-XJLaLrZQ.js';
7
7
 
8
8
  // Utilities
9
9
  function useDirectiveComponent(component, props) {
@@ -1,5 +1,5 @@
1
- import { computed, ref, openBlock, createElementBlock, mergeProps, unref, createElementVNode, toDisplayString } from 'vue';
2
- import { t as useDisplay, $ as useSTAcStore } from './asWebComponent--e4yqM3f.js';
1
+ import { computed, ref, createElementBlock, openBlock, mergeProps, unref, createElementVNode, toDisplayString } from 'vue';
2
+ import { r as useDisplay, $ as useSTAcStore } from './asWebComponent-DZpMGxEY.js';
3
3
  import '@eox/itemfilter';
4
4
 
5
5
  const _hoisted_1 = [".items"];
@@ -138,7 +138,7 @@ return (_ctx, _cache) => {
138
138
  ref: eoxItemFilter,
139
139
  style: {"overflow":"auto","--background-color":"none"},
140
140
  onSelect: onSelect,
141
- ".items": unref(store).stac?.filter((item) => item.rel === "child")
141
+ ".items": unref(store).stac?.filter((item) => item.rel === 'child')
142
142
  }), [
143
143
  createElementVNode("h4", _hoisted_2, toDisplayString(__props.filtersTitle), 1 /* TEXT */),
144
144
  createElementVNode("h4", _hoisted_3, toDisplayString(__props.resultsTitle), 1 /* TEXT */)
@@ -1,14 +1,19 @@
1
- import { computed, ref, openBlock, createElementBlock, mergeProps, unref, createCommentVNode } from 'vue';
1
+ import { computed, ref, createElementBlock, openBlock, createCommentVNode, mergeProps, unref } from 'vue';
2
2
  import '@eox/layercontrol';
3
3
  import '@eox/jsonform';
4
4
  import '@eox/timecontrol';
5
5
  import 'color-legend-element';
6
- import { $ as useSTAcStore, a3 as mapCompareEl, a4 as mapEl, a5 as eodashCompareCollections, a0 as eodashCollections, a6 as layerControlFormValue, a7 as getColFromLayer } from './asWebComponent--e4yqM3f.js';
6
+ import { $ as useSTAcStore, a3 as mapCompareEl, a4 as mapEl, a5 as eodashCompareCollections, a0 as eodashCollections, a6 as layerControlFormValue, a7 as getColFromLayer } from './asWebComponent-DZpMGxEY.js';
7
7
  import { storeToRefs } from 'pinia';
8
8
 
9
9
  const _hoisted_1 = { class: "d-flex flex-column fill-height overflow-auto" };
10
10
  const _hoisted_2 = ["for"];
11
11
 
12
+ const styleOverride = `
13
+ input[type="range"] {
14
+ background:transparent !important;
15
+ }
16
+ `;
12
17
 
13
18
  const _sfc_main = {
14
19
  __name: 'EodashLayerControl',
@@ -105,6 +110,7 @@ const onLayerConfigChange = (evt) => {
105
110
  layerControlFormValue.value = evt.detail.jsonformValue;
106
111
  };
107
112
 
113
+
108
114
  return (_ctx, _cache) => {
109
115
  return (openBlock(), createElementBlock("span", _hoisted_1, [
110
116
  (showControls.value)
@@ -116,8 +122,9 @@ return (_ctx, _cache) => {
116
122
  style: {"--eox-background-color":"transparent"},
117
123
  ref_key: "eoxLayercontrol",
118
124
  ref: eoxLayercontrol,
119
- "on:layerConfig:change": onLayerConfigChange
120
- }), null, 16 /* FULL_PROPS */, _hoisted_2))
125
+ "on:layerConfig:change": onLayerConfigChange,
126
+ ".styleOverride": styleOverride
127
+ }), null, 48 /* FULL_PROPS, NEED_HYDRATION */, _hoisted_2))
121
128
  : createCommentVNode("v-if", true)
122
129
  ]))
123
130
  }
@@ -1,7 +1,7 @@
1
- import { ref, openBlock, createElementBlock, createVNode, withCtx, mergeProps } from 'vue';
2
- import { a2 as makePanelTransparent, y as VIcon, al as activeTemplate } from './asWebComponent--e4yqM3f.js';
1
+ import { ref, createElementBlock, openBlock, createVNode, withCtx, mergeProps } from 'vue';
2
+ import { a2 as makePanelTransparent, v as VIcon, al as activeTemplate } from './asWebComponent-DZpMGxEY.js';
3
3
  import { mdiViewDashboard } from '@mdi/js';
4
- import { V as VTooltip } from './VTooltip-9810qjB2.js';
4
+ import { V as VTooltip } from './VTooltip-XJLaLrZQ.js';
5
5
 
6
6
  const _sfc_main = {
7
7
  __name: 'EodashLayoutSwitcher',
@@ -1,7 +1,7 @@
1
- import { onMounted, onUnmounted, watch, nextTick, ref, toRaw, computed, openBlock, createElementBlock, createElementVNode, unref, normalizeStyle } from 'vue';
1
+ import { onMounted, onUnmounted, watch, nextTick, ref, toRaw, computed, createElementBlock, openBlock, createElementVNode, unref, normalizeStyle } from 'vue';
2
2
  import '@eox/map';
3
3
  import '@eox/map/src/plugins/advancedLayersAndSources';
4
- import { a8 as eoxLayersKey, $ as useSTAcStore, a9 as setMapProjFromCol, aa as posIsSetFromUrl, ab as useOnLayersUpdate, ac as EodashCollection, ad as mapPosition, a4 as mapEl, a3 as mapCompareEl, Z as datetime, a0 as eodashCollections, a5 as eodashCompareCollections, a6 as layerControlFormValue } from './asWebComponent--e4yqM3f.js';
4
+ import { a8 as eoxLayersKey, $ as useSTAcStore, a9 as setMapProjFromCol, aa as posIsSetFromUrl, ab as useOnLayersUpdate, ac as EodashCollection, ad as mapPosition, a4 as mapEl, a3 as mapCompareEl, Z as datetime, a0 as eodashCollections, a6 as layerControlFormValue, a5 as eodashCompareCollections } from './asWebComponent-DZpMGxEY.js';
5
5
  import { storeToRefs } from 'pinia';
6
6
  import log from 'loglevel';
7
7
  import { useEventBus } from '@vueuse/core';
@@ -425,7 +425,12 @@ const props = __props;
425
425
 
426
426
  /** @type {import("vue").Ref<Exclude<import("@/types").EodashStyleJson["tooltip"], undefined>>} */
427
427
  const tooltipProperties = ref([]);
428
-
428
+ /** @type {import("@eox/map").EOxMap["controls"]} */
429
+ const controls = {
430
+ Attribution: {
431
+ collapsible: true,
432
+ },
433
+ };
429
434
  const initialCenter = toRaw([
430
435
  mapPosition.value?.[0] ?? props.center?.[0],
431
436
  mapPosition.value?.[1] ?? props.center?.[1],
@@ -522,6 +527,7 @@ const tooltipPropertyTransform = (param) => {
522
527
  }),
523
528
  );
524
529
 
530
+ //@ts-expect-error todo
525
531
  const tooltipProp = updatedProperties?.find((prop) => prop.id === param.key);
526
532
  if (!tooltipProp) {
527
533
  return undefined;
@@ -553,7 +559,8 @@ return (_ctx, _cache) => {
553
559
  ".animationOptions": animationOptions,
554
560
  ".center": unref(initialCenter),
555
561
  ".zoom": unref(initialZoom),
556
- ".layers": eoxMapLayers.value
562
+ ".layers": eoxMapLayers.value,
563
+ ".controls": controls
557
564
  }, [
558
565
  createElementVNode("eox-map-tooltip", {
559
566
  style: normalizeStyle(tooltipStyles.value),