@eodash/eodash 5.4.0 → 5.5.1

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 (114) hide show
  1. package/core/client/App.vue +1 -1
  2. package/core/client/asWebComponent.js +1 -1
  3. package/core/client/composables/DefineWidgets.js +12 -2
  4. package/core/client/eodashSTAC/EodashCollection.js +12 -13
  5. package/core/client/eodashSTAC/createLayers.js +45 -18
  6. package/core/client/eodashSTAC/helpers.js +13 -5
  7. package/core/client/eodashSTAC/parquet.js +2 -1
  8. package/core/client/eodashSTAC/triggers.js +1 -2
  9. package/core/client/store/actions.js +17 -17
  10. package/core/client/store/states.js +26 -4
  11. package/core/client/types.ts +9 -0
  12. package/core/client/utils/index.js +18 -1
  13. package/dist/client/{DashboardLayout-CQOGHPW_.js → DashboardLayout-D_590Zle.js} +2 -2
  14. package/dist/client/{DynamicWebComponent-CoLO8FEf.js → DynamicWebComponent-67cfzL4o.js} +1 -1
  15. package/dist/client/EodashChart-BsW18Em1.js +144 -0
  16. package/dist/client/{EodashDatePicker-BZeQ6bcu.js → EodashDatePicker-BwyFIBlK.js} +10 -7
  17. package/dist/client/{EodashItemFilter-CmZkk7GK.js → EodashItemFilter-CgdrG-pX.js} +2 -2
  18. package/dist/client/{EodashLayerControl-D54fY-bX.js → EodashLayerControl-V98fahVJ.js} +2 -2
  19. package/dist/client/{EodashLayoutSwitcher-BCP3FvDb.js → EodashLayoutSwitcher-B4oI5PAx.js} +3 -3
  20. package/dist/client/EodashMapBtns-Ce2tFjJK.js +433 -0
  21. package/dist/client/{EodashStacInfo-BZbmT8vT.js → EodashStacInfo-Cb28jVEr.js} +11 -15
  22. package/dist/client/{EodashTimeSlider-DIcAJr6D.js → EodashTimeSlider-B5boxpCK.js} +2 -2
  23. package/dist/client/{EodashTools-Cz6X6hsF.js → EodashTools-RwiXxELa.js} +4 -4
  24. package/dist/client/{ExportState-DFVFAgKz.js → ExportState-Cp4ftu4f.js} +46 -21
  25. package/dist/client/{Footer-DLzQcjkI.js → Footer-xGfh2LUv.js} +1 -1
  26. package/dist/client/{Header-_D9Z-zFJ.js → Header-BggV8BVC.js} +127 -17
  27. package/dist/client/MobileLayout-BwXCBKFL.js +118 -0
  28. package/dist/client/{PopUp-DwI8V2gW.js → PopUp-C6x6Rpv0.js} +8 -59
  29. package/dist/client/{ProcessList-C9eAg2Sb.js → ProcessList-DDwo71cD.js} +9 -13
  30. package/dist/client/{VImg-COXTnCWE.js → VImg-DN23k6uX.js} +2 -2
  31. package/dist/client/{VMain-C74l1bv-.js → VMain-BT2ZxPLy.js} +1 -1
  32. package/dist/client/{VTooltip-BLS-cQ9N.js → VTooltip-CAkym6KY.js} +3 -4
  33. package/dist/client/{WidgetsContainer-D-VfMRxE.js → WidgetsContainer-CLYZgRgc.js} +1 -1
  34. package/dist/client/asWebComponent-C5YMrXyg.js +9206 -0
  35. package/dist/client/{async-D4G-FOIc.js → async-DHmiD7O-.js} +6 -8
  36. package/dist/client/eo-dash.js +1 -1
  37. package/dist/client/{forwardRefs-CRMFoNYN.js → forwardRefs-YqjFe8WZ.js} +196 -37
  38. package/dist/client/{handling-DTAhQuPh.js → handling-DRaAJMSG.js} +93 -53
  39. package/dist/client/{helpers-CsjKHAcK.js → helpers-Bi-qmnbZ.js} +188 -87
  40. package/dist/client/{index-BoCcZ0l4.js → index-BtY2y1sL.js} +15 -16
  41. package/dist/client/{index-DEmHaCL3.js → index-D4GBjamF.js} +5 -3
  42. package/dist/client/{index-BIcmbjr0.js → index-DYLTaaU8.js} +27 -14
  43. package/dist/client/{index-BHilH1qx.js → index-bSHJLUNu.js} +30 -73
  44. package/dist/client/templates.js +64 -5
  45. package/dist/client/{transition-6MJLK-_H.js → transition-C4YbXuIb.js} +1 -1
  46. package/dist/node/cli.js +1 -1
  47. package/dist/types/core/client/App.vue.d.ts +16 -6
  48. package/dist/types/core/client/asWebComponent.d.ts +2 -2
  49. package/dist/types/core/client/components/DashboardLayout.vue.d.ts +2 -1
  50. package/dist/types/core/client/components/DynamicWebComponent.vue.d.ts +36 -16
  51. package/dist/types/core/client/components/EodashOverlay.vue.d.ts +2 -1
  52. package/dist/types/core/client/components/ErrorAlert.vue.d.ts +9 -1
  53. package/dist/types/core/client/components/Footer.vue.d.ts +2 -1
  54. package/dist/types/core/client/components/Header.vue.d.ts +2 -1
  55. package/dist/types/core/client/components/IframeWrapper.vue.d.ts +12 -6
  56. package/dist/types/core/client/components/Loading.vue.d.ts +2 -1
  57. package/dist/types/core/client/components/MobileLayout.vue.d.ts +2 -1
  58. package/dist/types/core/client/eodashSTAC/helpers.d.ts +2 -0
  59. package/dist/types/core/client/store/actions.d.ts +1 -2
  60. package/dist/types/core/client/store/states.d.ts +22 -4
  61. package/dist/types/core/client/types.d.ts +6 -1
  62. package/dist/types/core/client/utils/index.d.ts +1 -0
  63. package/dist/types/core/client/views/Dashboard.vue.d.ts +20 -8
  64. package/dist/types/templates/compare.d.ts +20 -0
  65. package/dist/types/templates/expert.d.ts +30 -1
  66. package/dist/types/widgets/EodashChart.vue.d.ts +28 -0
  67. package/dist/types/widgets/EodashDatePicker.vue.d.ts +38 -9
  68. package/dist/types/widgets/EodashItemCatalog/index.vue.d.ts +88 -13
  69. package/dist/types/widgets/EodashItemCatalog/methods/map.d.ts +1 -1
  70. package/dist/types/widgets/EodashItemFilter.vue.d.ts +169 -26
  71. package/dist/types/widgets/EodashLayerControl.vue.d.ts +38 -10
  72. package/dist/types/widgets/EodashLayoutSwitcher.vue.d.ts +22 -7
  73. package/dist/types/widgets/EodashMap/EodashMapBtns.vue.d.ts +94 -21
  74. package/dist/types/widgets/EodashMap/index.vue.d.ts +646 -93
  75. package/dist/types/widgets/EodashMap/methods/btns.d.ts +14 -0
  76. package/dist/types/widgets/EodashProcess/ProcessList.vue.d.ts +24 -7
  77. package/dist/types/widgets/EodashProcess/index.vue.d.ts +26 -7
  78. package/dist/types/widgets/EodashProcess/methods/composables.d.ts +1 -2
  79. package/dist/types/widgets/EodashProcess/methods/handling.d.ts +9 -14
  80. package/dist/types/widgets/EodashProcess/methods/outputs.d.ts +2 -2
  81. package/dist/types/widgets/EodashProcess/methods/utils.d.ts +2 -2
  82. package/dist/types/widgets/EodashStacInfo.vue.d.ts +67 -18
  83. package/dist/types/widgets/EodashTimeSlider.vue.d.ts +14 -6
  84. package/dist/types/widgets/EodashTools.vue.d.ts +437 -47
  85. package/dist/types/widgets/ExportState.vue.d.ts +26 -8
  86. package/dist/types/widgets/PopUp.vue.d.ts +61 -11
  87. package/dist/types/widgets/WidgetsContainer.vue.d.ts +22 -6
  88. package/package.json +33 -34
  89. package/templates/baseConfig.js +14 -0
  90. package/templates/compare.js +30 -3
  91. package/templates/expert.js +20 -2
  92. package/templates/lite.js +1 -1
  93. package/widgets/EodashChart.vue +139 -0
  94. package/widgets/EodashDatePicker.vue +5 -2
  95. package/widgets/EodashItemCatalog/index.vue +2 -2
  96. package/widgets/EodashItemCatalog/methods/map.js +9 -10
  97. package/widgets/EodashMap/EodashMapBtns.vue +58 -93
  98. package/widgets/EodashMap/index.vue +10 -2
  99. package/widgets/EodashMap/methods/btns.js +155 -0
  100. package/widgets/EodashMap/methods/create-layers-config.js +3 -3
  101. package/widgets/EodashMap/methods/index.js +2 -1
  102. package/widgets/EodashProcess/ProcessList.vue +2 -3
  103. package/widgets/EodashProcess/index.vue +24 -63
  104. package/widgets/EodashProcess/methods/async.js +1 -1
  105. package/widgets/EodashProcess/methods/composables.js +1 -6
  106. package/widgets/EodashProcess/methods/custom-endpoints/chart/veda-endpoint.js +10 -6
  107. package/widgets/EodashProcess/methods/handling.js +42 -40
  108. package/widgets/EodashProcess/methods/outputs.js +44 -4
  109. package/widgets/EodashProcess/methods/utils.js +3 -5
  110. package/widgets/EodashStacInfo.vue +10 -23
  111. package/widgets/ExportState.vue +9 -15
  112. package/dist/client/EodashMapBtns-D-HulIl1.js +0 -306
  113. package/dist/client/MobileLayout-3Ko9XSfO.js +0 -118
  114. package/dist/client/asWebComponent-Bw03Jutr.js +0 -9090
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eodash/eodash",
3
- "version": "5.4.0",
3
+ "version": "5.5.1",
4
4
  "type": "module",
5
5
  "types": "./dist/types/core/client/types.d.ts",
6
6
  "files": [
@@ -65,71 +65,70 @@
65
65
  "docs:generate": "npm run build:cli && npm run build:types && typedoc --options typedoc.config.json"
66
66
  },
67
67
  "dependencies": {
68
- "@eox/chart": "^1.0.1",
68
+ "@eox/chart": "^1.1.0",
69
69
  "@eox/drawtools": "^1.1.5",
70
70
  "@eox/geosearch": "^1.1.0",
71
- "@eox/itemfilter": "^1.13.0",
72
- "@eox/jsonform": "^1.4.2",
73
- "@eox/layercontrol": "^1.3.1",
71
+ "@eox/itemfilter": "^1.13.3",
72
+ "@eox/jsonform": "^1.8.0",
73
+ "@eox/layercontrol": "^1.4.0",
74
74
  "@eox/layout": "^1.0.0",
75
- "@eox/map": "^1.26.2",
75
+ "@eox/map": "^2.0.2",
76
76
  "@eox/stacinfo": "^1.0.2",
77
- "@eox/timecontrol": "^1.0.2",
77
+ "@eox/timecontrol": "^2.1.0",
78
78
  "@eox/timeslider": "https://pkg.pr.new/EOX-A/EOxElements/@eox/timeslider@9873028",
79
- "@eox/ui": "^0.4.0",
79
+ "@eox/ui": "^0.5.1",
80
80
  "@mdi/js": "^7.4.47",
81
- "@vitejs/plugin-vue": "^5.2.4",
82
- "@vueuse/core": "^13.9.0",
81
+ "@vitejs/plugin-vue": "^6.0.3",
82
+ "@vueuse/core": "^14.1.0",
83
83
  "animated-details": "gist:2912bb049fa906671807415eb0e87188",
84
- "axios": "^1.12.2",
85
- "axios-cache-interceptor": "^1.8.3",
84
+ "axios": "^1.13.2",
85
+ "axios-cache-interceptor": "^1.10.0",
86
86
  "color-legend-element": "^1.3.0",
87
- "commander": "^14.0.1",
88
- "core-js": "^3.45.1",
87
+ "commander": "^14.0.2",
88
+ "core-js": "^3.47.0",
89
89
  "dotenv": "^17.2.3",
90
- "hyparquet": "^1.20.1",
90
+ "hyparquet": "^1.23.3",
91
91
  "loglevel": "^1.9.2",
92
92
  "mustache": "^4.2.0",
93
- "pinia": "^3.0.3",
94
- "proj4": "^2.19.10",
95
- "sass": "^1.93.2",
93
+ "pinia": "^3.0.4",
94
+ "proj4": "^2.20.2",
95
+ "sass": "^1.97.1",
96
96
  "stac-js": "^0.1.9",
97
97
  "stac-ts": "^1.0.4",
98
98
  "v-calendar": "3.0.0",
99
- "vega": "^5.33.0",
100
99
  "vega-embed": "^6.29.0",
101
100
  "vega-lite": "^5.23.0",
102
- "vite": "^6.3.6",
101
+ "vite": "^7.3.0",
103
102
  "vite-plugin-vuetify": "^2.1.2",
104
- "vue": "^3.5.17",
105
- "vuetify": "^3.10.5",
103
+ "vue": "^3.5.25",
104
+ "vuetify": "^3.11.4",
106
105
  "webfontloader": "^1.6.28"
107
106
  },
108
107
  "devDependencies": {
109
- "@babel/types": "^7.28.4",
108
+ "@babel/types": "^7.28.5",
110
109
  "@eox/eslint-config": "^2.0.0",
111
- "@pinia/testing": "^1.0.2",
110
+ "@pinia/testing": "^1.0.3",
112
111
  "@types/json-schema": "^7.0.15",
113
112
  "@types/mustache": "^4.2.6",
114
- "@types/node": "^24.7.0",
113
+ "@types/node": "^25.0.3",
115
114
  "@types/openlayers": "^4.6.23",
116
115
  "@types/webfontloader": "^1.6.38",
117
- "cypress": "^14.5.4",
118
- "eslint": "^9.37.0",
116
+ "cypress": "^15.8.1",
117
+ "eslint": "^9.39.2",
119
118
  "eslint-plugin-vue": "^9.33.0",
120
- "pkg-pr-new": "^0.0.54",
121
- "prettier": "^3.6.2",
122
- "rollup": "^4.52.4",
119
+ "pkg-pr-new": "^0.0.62",
120
+ "prettier": "^3.7.4",
121
+ "rollup": "^4.54.0",
123
122
  "terminate": "^2.8.0",
124
123
  "tsc-alias": "^1.8.16",
125
- "typedoc": "^0.28.13",
124
+ "typedoc": "^0.28.15",
126
125
  "typedoc-plugin-markdown": "^4.9.0",
127
- "typedoc-plugin-vue": "^1.5.0",
126
+ "typedoc-plugin-vue": "^1.5.1",
128
127
  "typedoc-vitepress-theme": "^1.1.2",
129
128
  "typescript": "^5.9.3",
130
129
  "vitepress": "^1.6.4",
131
- "vitest": "^3.2.4",
132
- "vue-tsc": "3.0.1"
130
+ "vitest": "^4.0.16",
131
+ "vue-tsc": "3.1.8"
133
132
  },
134
133
  "engines": {
135
134
  "node": ">=20.15.1"
@@ -13,6 +13,20 @@ const baseConfig = {
13
13
  stacEndpoint: {
14
14
  endpoint:
15
15
  "https://esa-eodashboards.github.io/eodashboard-catalog/trilateral/catalog.json",
16
+ // "http://gtif-cerulean.github.io/cerulean-catalog/cerulean/catalog.json",
17
+ // "https://gtif-ukif.github.io/gtif-ukif-catalog/gtif-ukif/catalog.json",
18
+ // "https://esa-eodashboards.github.io/RACE-catalog/RACE/catalog.json",
19
+ // "https://gtif-austria.github.io/public-catalog/GTIF-Austria/catalog.json",
20
+ // "http://0.0.0.0:8000/baltic/catalog.json",
21
+ // "http://0.0.0.0:8000/gtif-ukif/catalog.json",
22
+ // "http://0.0.0.0:8002/RACE/catalog.json",
23
+ // "http://0.0.0.0:8000/trilateral/catalog.json",
24
+ // "http://0.0.0.0:8003/gtif-ukif/catalog.json",
25
+ // "http://0.0.0.0:8002/cerulean/catalog.json",
26
+ // "http://0.0.0.0:8001/trilateral/catalog.json",
27
+ // "http://0.0.0.0:8001/GTIF-Austria/catalog.json",
28
+ // api: true,
29
+ // rasterEndpoint: "https://api.explorer.eopf.copernicus.eu/raster/",
16
30
  api: false,
17
31
  },
18
32
  brand: {
@@ -1,4 +1,4 @@
1
- import { includesProcess } from "@/store/actions";
1
+ import { includesProcess, shouldShowChartWidget } from "@/store/actions";
2
2
 
3
3
  /** @type {import("@/types").Template} */
4
4
  export default {
@@ -118,18 +118,45 @@ export default {
118
118
  },
119
119
  },
120
120
  },
121
+ {
122
+ defineWidget: () =>
123
+ shouldShowChartWidget() && {
124
+ id: "ProcessResultChart",
125
+ type: "internal",
126
+ title: "Chart",
127
+ layout: { x: 0, y: 0, w: 6, h: 8 },
128
+ widget: {
129
+ name: "EodashChart",
130
+ },
131
+ },
132
+ },
133
+ {
134
+ defineWidget: () =>
135
+ shouldShowChartWidget(true) && {
136
+ id: "ProcessResultChartCompare",
137
+ type: "internal",
138
+ title: "Compare Chart",
139
+ layout: { x: 6, y: 0, w: 6, h: 8 },
140
+ widget: {
141
+ name: "EodashChart",
142
+ properties: {
143
+ enableCompare: true,
144
+ },
145
+ },
146
+ },
147
+ },
121
148
  {
122
149
  defineWidget: (selectedSTAC) => {
123
150
  return selectedSTAC
124
151
  ? {
125
152
  id: "expert-Datepicker",
126
153
  type: "internal",
127
- layout: { x: 4, y: 7, w: 4, h: 5 },
154
+ layout: { x: 4, y: 3, w: 4, h: 9 },
128
155
  title: "Date",
129
156
  widget: {
130
157
  name: "EodashDatePicker",
131
158
  properties: {
132
- hintText: `<b>Hint:</b> closest available date is displayed <br />
159
+ hintText: `<b>Hint:</b> closest available date is displayed<br />
133
160
  on map (see Analysis Layers)`,
134
161
  toggleCalendar: true,
135
162
  },
@@ -1,5 +1,5 @@
1
1
  import { mdiViewDashboard } from "@mdi/js";
2
- import { includesProcess } from "@/store/actions";
2
+ import { includesProcess, shouldShowChartWidget } from "@/store/actions";
3
3
 
4
4
  /** @type {import("@/types").Template} */
5
5
  export default {
@@ -35,6 +35,7 @@ export default {
35
35
  },
36
36
  enableBackToPOIs: true,
37
37
  enableSearch: true,
38
+ enableGlobe: true,
38
39
  // searchParams: {
39
40
  // countrycode: "gb,ie,fr"
40
41
  // bounds: "-84.26514,41.58998,-77.54150,46.14246"
@@ -75,6 +76,11 @@ export default {
75
76
  layout: { x: 0, y: 1, w: "3/3/2", h: 11 },
76
77
  widget: {
77
78
  name: "EodashLayerControl",
79
+ properties: {
80
+ cssVars: {
81
+ "--list-padding": "1rem",
82
+ },
83
+ },
78
84
  },
79
85
  },
80
86
  {
@@ -98,7 +104,7 @@ export default {
98
104
  ? {
99
105
  id: "expert-datepicker",
100
106
  type: "internal",
101
- layout: { x: 4, y: 7, w: 4, h: 5 },
107
+ layout: { x: 4, y: 3, w: 4, h: 9 },
102
108
  title: "Date",
103
109
  widget: {
104
110
  name: "EodashDatePicker",
@@ -124,5 +130,17 @@ export default {
124
130
  },
125
131
  },
126
132
  },
133
+ {
134
+ defineWidget: () =>
135
+ shouldShowChartWidget() && {
136
+ id: "ProcessResultChart",
137
+ type: "internal",
138
+ title: "Chart",
139
+ layout: { x: 0, y: 0, w: 12, h: 8 },
140
+ widget: {
141
+ name: "EodashChart",
142
+ },
143
+ },
144
+ },
127
145
  ],
128
146
  };
package/templates/lite.js CHANGED
@@ -122,7 +122,7 @@ export default {
122
122
  ? {
123
123
  id: "light-datepicker",
124
124
  type: "internal",
125
- layout: { x: 4, y: 7, w: 4, h: 5 },
125
+ layout: { x: 4, y: 3, w: 4, h: 9 },
126
126
  title: "Date",
127
127
  widget: {
128
128
  name: "EodashDatePicker",
@@ -0,0 +1,139 @@
1
+ <template>
2
+ <div ref="container">
3
+ <div class="chart-frame">
4
+ <button
5
+ v-if="usedChartData && usedChartSpec"
6
+ class="chart-toggle"
7
+ @click="toggleLayout"
8
+ v-tooltip="areChartsSeparateLayout ? 'Minimize' : 'Maximize'"
9
+ >
10
+ <svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true">
11
+ <path :d="toggleIcon" />
12
+ </svg>
13
+ </button>
14
+ <eox-chart
15
+ class="pa-2"
16
+ v-if="usedChartData && usedChartSpec"
17
+ .spec="toRaw(usedChartSpec)"
18
+ :key="chartRenderKey"
19
+ .dataValues="toRaw(usedChartData)"
20
+ @click:item="onChartClick"
21
+ :style="chartStyles"
22
+ .opt="vegaEmbedOptions"
23
+ />
24
+ </div>
25
+ </div>
26
+ </template>
27
+ <script setup>
28
+ import "@eox/chart";
29
+ import {
30
+ computed,
31
+ toRaw,
32
+ useTemplateRef,
33
+ ref,
34
+ onMounted,
35
+ onBeforeUnmount,
36
+ } from "vue";
37
+ import { onChartClick } from "./EodashProcess/methods/handling";
38
+ import {
39
+ chartData,
40
+ compareChartData,
41
+ chartSpec,
42
+ compareChartSpec,
43
+ areChartsSeparateLayout,
44
+ } from "@/store/states";
45
+ import { getOverlayParent } from "@/utils";
46
+ import { mdiArrowCollapse, mdiArrowExpand } from "@mdi/js";
47
+
48
+ const { enableCompare, vegaEmbedOptions } = defineProps({
49
+ enableCompare: {
50
+ type: Boolean,
51
+ default: false,
52
+ },
53
+ vegaEmbedOptions: {
54
+ type: Object,
55
+ default() {
56
+ return { actions: true };
57
+ },
58
+ },
59
+ });
60
+
61
+ const usedChartData = computed(() => {
62
+ return enableCompare ? compareChartData.value : chartData.value;
63
+ });
64
+
65
+ const usedChartSpec = computed(() => {
66
+ return enableCompare ? compareChartSpec.value : chartSpec.value;
67
+ });
68
+
69
+ const chartRenderKey = ref(0);
70
+ const frameHeight = ref(225);
71
+ const containerEl = useTemplateRef("container");
72
+
73
+ /**
74
+ @type { MutationObserver | null}
75
+ */
76
+ let observer = null;
77
+
78
+ onMounted(() => {
79
+ const el = containerEl.value;
80
+ if (!el) return;
81
+
82
+ const parent = el.parentElement?.parentElement;
83
+ if (parent) {
84
+ const parentHeight = parent.getBoundingClientRect().height;
85
+ frameHeight.value = Math.max(225, Math.floor(parentHeight));
86
+ }
87
+
88
+ // for mobile view, the overlay panel containing chart is initially hidden
89
+ // we create an observer when display of overlay is not none anymore
90
+ const overlay = getOverlayParent(el);
91
+ if (!overlay) return;
92
+
93
+ observer = new MutationObserver(async () => {
94
+ const style = getComputedStyle(overlay);
95
+ const visible = style.display !== "none";
96
+ if (visible) {
97
+ // forcibly rerender chart, otherwise size of canvas is 0
98
+ chartRenderKey.value = Math.random();
99
+ }
100
+ });
101
+
102
+ observer.observe(overlay, {
103
+ attributes: true,
104
+ attributeFilter: ["style", "class"],
105
+ });
106
+ });
107
+
108
+ onBeforeUnmount(() => {
109
+ observer?.disconnect();
110
+ });
111
+
112
+ const chartStyles = computed(() => {
113
+ const styles = {
114
+ height: `${frameHeight.value}px`,
115
+ };
116
+ return styles;
117
+ });
118
+
119
+ const toggleIcon = computed(() =>
120
+ areChartsSeparateLayout.value ? mdiArrowCollapse : mdiArrowExpand,
121
+ );
122
+
123
+ function toggleLayout() {
124
+ areChartsSeparateLayout.value = !areChartsSeparateLayout.value;
125
+ }
126
+ </script>
127
+ <style scoped>
128
+ .chart-frame {
129
+ position: relative;
130
+ }
131
+
132
+ .chart-toggle {
133
+ position: absolute;
134
+ top: 18px;
135
+ right: 46px;
136
+ z-index: 2;
137
+ cursor: pointer;
138
+ }
139
+ </style>
@@ -310,9 +310,12 @@ function jumpDate(reverse) {
310
310
  // fixes calendar dispalcement on lib mode
311
311
  const transform = ref("");
312
312
  onMounted(() => {
313
+ // keeping the reactive translate just in case,
314
+ // but seems like static css would work as well
315
+ // because the visual is same both in lib and in app mode
313
316
  transform.value = document.querySelector("eo-dash")
314
- ? "translate3d(50px,-80px,0)"
315
- : "translate3d(0px,-80px,0)";
317
+ ? "translate3d(30px,-50px,0)"
318
+ : "translate3d(30px,-50px,0)";
316
319
  });
317
320
 
318
321
  useTransparentPanel(rootEl);
@@ -34,7 +34,7 @@ import {
34
34
  import {
35
35
  useSearchOnMapMove,
36
36
  useRenderItemsFeatures,
37
- useRenderOnFeatureHover,
37
+ useHighlightOnFeatureHover,
38
38
  } from "./methods/map";
39
39
  import {
40
40
  createOnFilterHandler,
@@ -139,7 +139,7 @@ useRenderItemsFeatures(currentItems);
139
139
  // Search on map move logic
140
140
  useSearchOnMapMove(itemfilterEl, props.bboxFilter);
141
141
 
142
- useRenderOnFeatureHover(itemfilterEl);
142
+ useHighlightOnFeatureHover(itemfilterEl);
143
143
 
144
144
  onUnmounted(() => {
145
145
  store.selectedItem = null;
@@ -23,7 +23,7 @@ export function renderItemsFeatures(features) {
23
23
  },
24
24
  layers: [],
25
25
  };
26
- mapEl.value.layers = [analysisLayers, ...mapEl.value.layers.reverse()];
26
+ mapEl.value.layers = [...mapEl.value.layers, analysisLayers];
27
27
  }
28
28
 
29
29
  const stacItemsLayer = {
@@ -68,8 +68,8 @@ export function renderItemsFeatures(features) {
68
68
  return;
69
69
  } else {
70
70
  //@ts-expect-error todo
71
- analysisLayers.layers.unshift(stacItemsLayer);
72
- mapEl.value.layers = [...mapEl.value.layers].reverse();
71
+ analysisLayers.layers.push(stacItemsLayer);
72
+ mapEl.value.layers = [...mapEl.value.layers];
73
73
  }
74
74
  }
75
75
 
@@ -101,21 +101,20 @@ export const useSearchOnMapMove = (itemFilter, bboxFilter) => {
101
101
  * @param {import("vue").Ref<import("@/types").GeoJsonFeature[]>} currentItems
102
102
  */
103
103
  export const useRenderItemsFeatures = (currentItems) => {
104
- const renderOnUpdate = () =>
105
- useOnLayersUpdate(() => {
106
- // consider cases where this is not needed
107
- renderItemsFeatures(currentItems.value);
108
- });
109
104
  onMounted(() => {
110
105
  renderItemsFeatures(currentItems.value);
111
- renderOnUpdate();
106
+ });
107
+
108
+ useOnLayersUpdate(() => {
109
+ // consider cases where this is not needed
110
+ renderItemsFeatures(currentItems.value);
112
111
  });
113
112
  };
114
113
  /**
115
114
  *
116
115
  * @param {import("vue").Ref<any>} itemfilterEl
117
116
  */
118
- export function useRenderOnFeatureHover(itemfilterEl) {
117
+ export function useHighlightOnFeatureHover(itemfilterEl) {
119
118
  /**
120
119
  *
121
120
  * @param {CustomEvent} evt