@eodash/eodash 5.5.2 → 5.6.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 (73) hide show
  1. package/core/client/App.vue +1 -1
  2. package/core/client/eodashSTAC/EodashCollection.js +12 -5
  3. package/core/client/eodashSTAC/auth.js +19 -9
  4. package/core/client/eodashSTAC/createLayers.js +130 -24
  5. package/core/client/eodashSTAC/helpers.js +27 -60
  6. package/core/client/store/stac.js +9 -0
  7. package/core/client/types.ts +1 -0
  8. package/dist/client/{DashboardLayout-BAB1tPv0.js → DashboardLayout-CqMb7OXc.js} +3 -3
  9. package/dist/client/{DynamicWebComponent-qVeu4sqS.js → DynamicWebComponent-DqKqTf7l.js} +2 -2
  10. package/dist/client/{EodashChart-CXnNxlhk.js → EodashChart-PkUQfH0k.js} +5 -5
  11. package/dist/client/{EodashDatePicker-KyJXPgAq.js → EodashDatePicker-DLJGdTtX.js} +4 -4
  12. package/dist/client/{EodashItemFilter-CAlyUnje.js → EodashItemFilter-Dk8KjFcX.js} +2 -2
  13. package/dist/client/{EodashLayerControl-D8VobuZJ.js → EodashLayerControl-CC1Cogrn.js} +18 -4
  14. package/dist/client/{EodashLayoutSwitcher-DI6uGF_7.js → EodashLayoutSwitcher-5WZYd6rr.js} +4 -4
  15. package/dist/client/EodashMapBtns-BHrSDNoC.js +435 -0
  16. package/dist/client/{EodashStacInfo-Cb28jVEr.js → EodashStacInfo-B90wobPc.js} +42 -7
  17. package/dist/client/{EodashTimeSlider-UIpnhO4N.js → EodashTimeSlider-5vm7F3ju.js} +3 -3
  18. package/dist/client/{EodashTools-vxReGN8p.js → EodashTools-CGZtTh45.js} +5 -5
  19. package/dist/client/{ExportState-D6CBpKUU.js → ExportState-Ce0ZnrX_.js} +9 -7
  20. package/dist/client/{Footer-CUgMupXk.js → Footer-CnZqEiop.js} +2 -2
  21. package/dist/client/{Header-BZ53ACvp.js → Header-Dr5PBIm8.js} +10 -6
  22. package/dist/client/{IframeWrapper-XzQDZy0T.js → IframeWrapper-BgM9aU8f.js} +1 -1
  23. package/dist/client/MobileLayout-DyMjaeif.js +118 -0
  24. package/dist/client/{PopUp-C6HJH8wM.js → PopUp-DjvE_71e.js} +3 -3
  25. package/dist/client/{ProcessList-DQjvv7Cc.js → ProcessList-kf3olI7W.js} +5 -5
  26. package/dist/client/{VImg-CWCCg87G.js → VImg-Bj6uWt6j.js} +51 -22
  27. package/dist/client/{VMain-CAzXMN4O.js → VMain-Cm0UmKGi.js} +1 -1
  28. package/dist/client/{VTooltip-B1_FzBl_.js → VTooltip-DbBu-ky3.js} +2 -2
  29. package/dist/client/{WidgetsContainer-Bc8pGq_X.js → WidgetsContainer-CfLnd44U.js} +2 -2
  30. package/dist/client/asWebComponent-DfULAbpq.js +9387 -0
  31. package/dist/client/{async-Byq11ZKl.js → async-CIbKXEEe.js} +32 -51
  32. package/dist/client/eo-dash.js +1 -1
  33. package/dist/client/{forwardRefs-D3na5VY2.js → forwardRefs-yj3VWOK5.js} +2 -2
  34. package/dist/client/{handling-7IVxQxtQ.js → handling-s8xt2JwF.js} +390 -90
  35. package/dist/client/{helpers-Bi-qmnbZ.js → helpers-DAVGYl_f.js} +353 -320
  36. package/dist/client/{index-Ch4PgFGP.js → index-4TrjfJ32.js} +24 -11
  37. package/dist/client/{index-FQrkgCu_.js → index-Bu8BMA9q.js} +40 -32
  38. package/dist/client/{index-CJOvBxMx.js → index-CYz6dT7K.js} +2 -2
  39. package/dist/client/{index-Dk5_G7Aw.js → index-CugS__t5.js} +4 -4
  40. package/dist/client/templates.js +6 -15
  41. package/dist/client/{transition-Bp5R_Vzd.js → transition-DaOsiD4u.js} +1 -1
  42. package/dist/types/core/client/eodashSTAC/EodashCollection.d.ts +2 -5
  43. package/dist/types/core/client/eodashSTAC/auth.d.ts +6 -2
  44. package/dist/types/core/client/eodashSTAC/createLayers.d.ts +1 -4
  45. package/dist/types/core/client/eodashSTAC/helpers.d.ts +1 -2
  46. package/dist/types/core/client/store/stac.d.ts +4 -1
  47. package/dist/types/core/client/types.d.ts +1 -0
  48. package/dist/types/templates/baseConfig.d.ts +1 -0
  49. package/dist/types/widgets/EodashMap/methods/index.d.ts +1 -1
  50. package/dist/types/widgets/EodashProcess/methods/composables.d.ts +1 -2
  51. package/dist/types/widgets/EodashProcess/methods/custom-endpoints/layers/eoxhub-workspaces-endpoint.d.ts +1 -1
  52. package/dist/types/widgets/EodashProcess/methods/handling.d.ts +6 -6
  53. package/dist/types/widgets/EodashProcess/methods/outputs.d.ts +3 -1
  54. package/dist/types/widgets/EodashProcess/methods/template-helpers.d.ts +99 -0
  55. package/dist/types/widgets/EodashProcess/methods/utils.d.ts +1 -6
  56. package/dist/types/widgets/EodashProcess/types.d.ts +1 -0
  57. package/dist/types/widgets/EodashStacInfo.vue.d.ts +140 -25
  58. package/package.json +31 -31
  59. package/templates/baseConfig.js +5 -14
  60. package/widgets/EodashMap/EodashMapBtns.vue +15 -12
  61. package/widgets/EodashMap/index.vue +5 -1
  62. package/widgets/EodashMap/methods/index.js +13 -4
  63. package/widgets/EodashProcess/index.vue +16 -12
  64. package/widgets/EodashProcess/methods/composables.js +18 -15
  65. package/widgets/EodashProcess/methods/handling.js +78 -62
  66. package/widgets/EodashProcess/methods/outputs.js +74 -29
  67. package/widgets/EodashProcess/methods/template-helpers.js +246 -0
  68. package/widgets/EodashProcess/methods/utils.js +29 -48
  69. package/widgets/EodashProcess/types.ts +1 -0
  70. package/widgets/EodashStacInfo.vue +40 -5
  71. package/dist/client/EodashMapBtns-BjF8Yrpd.js +0 -433
  72. package/dist/client/MobileLayout-jnu24OJM.js +0 -118
  73. package/dist/client/asWebComponent-C-6K08Kk.js +0 -9206
@@ -4,6 +4,7 @@ export interface CustomEnpointInput {
4
4
  links: StacLink[];
5
5
  jsonformSchema: Record<string, any>;
6
6
  jsonformValue: Record<string, any>;
7
+ rawJsonformValue?: Record<string, any>;
7
8
  selectedStac: StacCollection;
8
9
  isPolling?: Ref<boolean>;
9
10
  enableCompare?: boolean;
@@ -6,28 +6,78 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
6
6
  default: boolean;
7
7
  };
8
8
  header: {
9
- /** @type {import("vue").PropType<string[]>} */
10
- type: import("vue").PropType<string[]>;
9
+ /**
10
+ * @type {import("vue").PropType<
11
+ * (string | {
12
+ * key: string,
13
+ * filter?: (item: any) => boolean
14
+ * })[]
15
+ * >}
16
+ */
17
+ type: import("vue").PropType<(string | {
18
+ key: string;
19
+ filter?: (item: any) => boolean;
20
+ })[]>;
11
21
  default: () => string[];
12
22
  };
13
23
  tags: {
14
- /** @type {import("vue").PropType<string[]>} */
15
- type: import("vue").PropType<string[]>;
24
+ /**
25
+ * @type {import("vue").PropType<
26
+ * (string | {
27
+ * key: string,
28
+ * filter?: (item: any) => boolean
29
+ * })[]
30
+ * >}
31
+ */
32
+ type: import("vue").PropType<(string | {
33
+ key: string;
34
+ filter?: (item: any) => boolean;
35
+ })[]>;
16
36
  default: () => string[];
17
37
  };
18
38
  body: {
19
- /** @type {import("vue").PropType<string[]>} */
20
- type: import("vue").PropType<string[]>;
39
+ /**
40
+ * @type {import("vue").PropType<
41
+ * (string | {
42
+ * key: string,
43
+ * filter?: (item: any) => boolean
44
+ * })[]
45
+ * >}
46
+ */
47
+ type: import("vue").PropType<(string | {
48
+ key: string;
49
+ filter?: (item: any) => boolean;
50
+ })[]>;
21
51
  default: () => string[];
22
52
  };
23
53
  featured: {
24
- /** @type {import("vue").PropType<string[]>} */
25
- type: import("vue").PropType<string[]>;
54
+ /**
55
+ * @type {import("vue").PropType<
56
+ * (string | {
57
+ * key: string,
58
+ * filter?: (item: any) => boolean
59
+ * })[]
60
+ * >}
61
+ */
62
+ type: import("vue").PropType<(string | {
63
+ key: string;
64
+ filter?: (item: any) => boolean;
65
+ })[]>;
26
66
  default: () => string[];
27
67
  };
28
68
  footer: {
29
- /** @type {import("vue").PropType<string[]>} */
30
- type: import("vue").PropType<string[]>;
69
+ /**
70
+ * @type {import("vue").PropType<
71
+ * (string | {
72
+ * key: string,
73
+ * filter?: (item: any) => boolean
74
+ * })[]
75
+ * >}
76
+ */
77
+ type: import("vue").PropType<(string | {
78
+ key: string;
79
+ filter?: (item: any) => boolean;
80
+ })[]>;
31
81
  default: () => string[];
32
82
  };
33
83
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -36,35 +86,100 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
36
86
  default: boolean;
37
87
  };
38
88
  header: {
39
- /** @type {import("vue").PropType<string[]>} */
40
- type: import("vue").PropType<string[]>;
89
+ /**
90
+ * @type {import("vue").PropType<
91
+ * (string | {
92
+ * key: string,
93
+ * filter?: (item: any) => boolean
94
+ * })[]
95
+ * >}
96
+ */
97
+ type: import("vue").PropType<(string | {
98
+ key: string;
99
+ filter?: (item: any) => boolean;
100
+ })[]>;
41
101
  default: () => string[];
42
102
  };
43
103
  tags: {
44
- /** @type {import("vue").PropType<string[]>} */
45
- type: import("vue").PropType<string[]>;
104
+ /**
105
+ * @type {import("vue").PropType<
106
+ * (string | {
107
+ * key: string,
108
+ * filter?: (item: any) => boolean
109
+ * })[]
110
+ * >}
111
+ */
112
+ type: import("vue").PropType<(string | {
113
+ key: string;
114
+ filter?: (item: any) => boolean;
115
+ })[]>;
46
116
  default: () => string[];
47
117
  };
48
118
  body: {
49
- /** @type {import("vue").PropType<string[]>} */
50
- type: import("vue").PropType<string[]>;
119
+ /**
120
+ * @type {import("vue").PropType<
121
+ * (string | {
122
+ * key: string,
123
+ * filter?: (item: any) => boolean
124
+ * })[]
125
+ * >}
126
+ */
127
+ type: import("vue").PropType<(string | {
128
+ key: string;
129
+ filter?: (item: any) => boolean;
130
+ })[]>;
51
131
  default: () => string[];
52
132
  };
53
133
  featured: {
54
- /** @type {import("vue").PropType<string[]>} */
55
- type: import("vue").PropType<string[]>;
134
+ /**
135
+ * @type {import("vue").PropType<
136
+ * (string | {
137
+ * key: string,
138
+ * filter?: (item: any) => boolean
139
+ * })[]
140
+ * >}
141
+ */
142
+ type: import("vue").PropType<(string | {
143
+ key: string;
144
+ filter?: (item: any) => boolean;
145
+ })[]>;
56
146
  default: () => string[];
57
147
  };
58
148
  footer: {
59
- /** @type {import("vue").PropType<string[]>} */
60
- type: import("vue").PropType<string[]>;
149
+ /**
150
+ * @type {import("vue").PropType<
151
+ * (string | {
152
+ * key: string,
153
+ * filter?: (item: any) => boolean
154
+ * })[]
155
+ * >}
156
+ */
157
+ type: import("vue").PropType<(string | {
158
+ key: string;
159
+ filter?: (item: any) => boolean;
160
+ })[]>;
61
161
  default: () => string[];
62
162
  };
63
163
  }>> & Readonly<{}>, {
64
- body: string[];
65
- footer: string[];
66
- header: string[];
164
+ body: (string | {
165
+ key: string;
166
+ filter?: (item: any) => boolean;
167
+ })[];
168
+ footer: (string | {
169
+ key: string;
170
+ filter?: (item: any) => boolean;
171
+ })[];
172
+ header: (string | {
173
+ key: string;
174
+ filter?: (item: any) => boolean;
175
+ })[];
67
176
  allowHtml: boolean;
68
- tags: string[];
69
- featured: string[];
177
+ tags: (string | {
178
+ key: string;
179
+ filter?: (item: any) => boolean;
180
+ })[];
181
+ featured: (string | {
182
+ key: string;
183
+ filter?: (item: any) => boolean;
184
+ })[];
70
185
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eodash/eodash",
3
- "version": "5.5.2",
3
+ "version": "5.6.1",
4
4
  "type": "module",
5
5
  "types": "./dist/types/core/client/types.d.ts",
6
6
  "files": [
@@ -70,69 +70,69 @@
70
70
  },
71
71
  "dependencies": {
72
72
  "@eox/chart": "^1.1.0",
73
- "@eox/drawtools": "^1.1.5",
73
+ "@eox/drawtools": "1.1.5",
74
74
  "@eox/geosearch": "^1.1.0",
75
- "@eox/itemfilter": "^1.13.3",
76
- "@eox/jsonform": "^1.8.0",
75
+ "@eox/itemfilter": "^1.14.0",
76
+ "@eox/jsonform": "^1.9.0",
77
77
  "@eox/layercontrol": "^1.4.0",
78
78
  "@eox/layout": "^1.0.0",
79
- "@eox/map": "^2.0.2",
80
- "@eox/stacinfo": "^1.0.2",
81
- "@eox/timecontrol": "^2.1.1",
79
+ "@eox/map": "^2.2.0",
80
+ "@eox/stacinfo": "^1.1.0",
81
+ "@eox/timecontrol": "^2.1.2",
82
82
  "@eox/timeslider": "https://pkg.pr.new/EOX-A/EOxElements/@eox/timeslider@9873028",
83
- "@eox/ui": "^0.5.1",
83
+ "@eox/ui": "^0.6.0",
84
84
  "@mdi/js": "^7.4.47",
85
- "@vitejs/plugin-vue": "^6.0.3",
86
- "@vueuse/core": "^14.1.0",
85
+ "@vitejs/plugin-vue": "^6.0.4",
86
+ "@vueuse/core": "^14.2.1",
87
87
  "animated-details": "gist:2912bb049fa906671807415eb0e87188",
88
- "axios": "^1.13.2",
89
- "axios-cache-interceptor": "^1.10.0",
88
+ "axios": "^1.13.5",
89
+ "axios-cache-interceptor": "^1.11.4",
90
90
  "color-legend-element": "^1.3.0",
91
- "commander": "^14.0.2",
92
- "core-js": "^3.47.0",
93
- "dotenv": "^17.2.3",
94
- "hyparquet": "^1.23.3",
91
+ "commander": "^14.0.3",
92
+ "core-js": "^3.48.0",
93
+ "dotenv": "^17.3.1",
94
+ "hyparquet": "^1.25.0",
95
95
  "loglevel": "^1.9.2",
96
96
  "mustache": "^4.2.0",
97
97
  "pinia": "^3.0.4",
98
98
  "proj4": "^2.20.2",
99
- "sass": "^1.97.1",
100
- "stac-js": "^0.1.9",
99
+ "sass": "^1.97.3",
100
+ "stac-js": "^0.2.1",
101
101
  "stac-ts": "^1.0.4",
102
102
  "v-calendar": "3.0.0",
103
103
  "vega-embed": "^6.29.0",
104
104
  "vega-lite": "^5.23.0",
105
- "vite": "^7.3.0",
106
- "vite-plugin-vuetify": "^2.1.2",
107
- "vue": "^3.5.25",
105
+ "vite": "^7.3.1",
106
+ "vite-plugin-vuetify": "^2.1.3",
107
+ "vue": "^3.5.29",
108
108
  "vuetify": "^3.11.4",
109
109
  "webfontloader": "^1.6.28"
110
110
  },
111
111
  "devDependencies": {
112
- "@babel/types": "^7.28.5",
112
+ "@babel/types": "^7.29.0",
113
113
  "@eox/eslint-config": "^2.0.0",
114
114
  "@pinia/testing": "^1.0.3",
115
115
  "@types/json-schema": "^7.0.15",
116
116
  "@types/mustache": "^4.2.6",
117
- "@types/node": "^25.0.3",
117
+ "@types/node": "^25.3.1",
118
118
  "@types/openlayers": "^4.6.23",
119
119
  "@types/webfontloader": "^1.6.38",
120
- "cypress": "^15.8.1",
120
+ "cypress": "^15.11.0",
121
121
  "eslint": "^9.39.2",
122
122
  "eslint-plugin-vue": "^9.33.0",
123
- "pkg-pr-new": "^0.0.62",
124
- "prettier": "^3.7.4",
125
- "rollup": "^4.54.0",
123
+ "pkg-pr-new": "^0.0.63",
124
+ "prettier": "^3.8.1",
125
+ "rollup": "^4.59.0",
126
126
  "terminate": "^2.8.0",
127
127
  "tsc-alias": "^1.8.16",
128
- "typedoc": "^0.28.15",
129
- "typedoc-plugin-markdown": "^4.9.0",
128
+ "typedoc": "^0.28.17",
129
+ "typedoc-plugin-markdown": "^4.10.0",
130
130
  "typedoc-plugin-vue": "^1.5.1",
131
131
  "typedoc-vitepress-theme": "^1.1.2",
132
132
  "typescript": "^5.9.3",
133
133
  "vitepress": "^1.6.4",
134
- "vitest": "^4.0.16",
135
- "vue-tsc": "3.1.8"
134
+ "vitest": "^4.0.18",
135
+ "vue-tsc": "3.2.5"
136
136
  },
137
137
  "engines": {
138
138
  "node": ">=20.15.1"
@@ -13,21 +13,12 @@ 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",
16
+ // "https://api.explorer.eopf.copernicus.eu/stac",
28
17
  // api: true,
29
- // rasterEndpoint: "https://api.explorer.eopf.copernicus.eu/raster/",
30
- api: false,
18
+ supportedUpscalingEndpoints: [
19
+ "openveda.cloud",
20
+ "api.explorer.eopf.copernicus.eu",
21
+ ],
31
22
  },
32
23
  brand: {
33
24
  noLayout: true,
@@ -210,18 +210,20 @@ const isInCompareMode = computed(
210
210
  const compareIcon = computed(() =>
211
211
  isInCompareMode.value ? mdiCompareRemove : mdiCompare,
212
212
  );
213
- const itemFilterConfig = {
214
- enableHighlighting: false,
215
- resultType: "cards",
216
- style: "--select-filter-max-items: 8",
217
- "filters-title": "Select an indicator to compare",
218
- subTitleProperty: "subtitle",
219
- imageProperty: "thumbnail",
220
- aggregateResults: "collection_group",
221
- "results-title": "",
222
- ...(typeof compareIndicators === "object" &&
223
- compareIndicators.itemFilterConfig),
224
- };
213
+ const itemFilterConfig = computed(() => {
214
+ return {
215
+ enableHighlighting: false,
216
+ resultType: "cards",
217
+ style: "--select-filter-max-items: 8",
218
+ "filters-title": "Select an indicator to compare",
219
+ subTitleProperty: "subtitle",
220
+ imageProperty: "thumbnail",
221
+ aggregateResults: "collection_group",
222
+ "results-title": "",
223
+ ...(typeof compareIndicators === "object" &&
224
+ compareIndicators.itemFilterConfig),
225
+ };
226
+ });
225
227
 
226
228
  /** @type {import("vue").Ref<HTMLDivElement|null>} */
227
229
  const rootRef = ref(null);
@@ -252,6 +254,7 @@ const opencageUrl = `https://api.opencagedata.com/geocode/v1/json?key=${opencage
252
254
  /* Container constraints removal */
253
255
  eox-geosearch {
254
256
  position: relative !important;
257
+ width: 40px;
255
258
  overflow: visible !important;
256
259
  z-index: 10;
257
260
  }
@@ -313,7 +313,11 @@ onMounted(() => {
313
313
  false,
314
314
  );
315
315
 
316
- useUpdateTooltipProperties(eodashCollections, compareTooltipProperties);
316
+ useUpdateTooltipProperties(
317
+ eodashCollections,
318
+ compareTooltipProperties,
319
+ true,
320
+ );
317
321
  }
318
322
 
319
323
  useInitMap(
@@ -238,15 +238,24 @@ export const useInitMap = (
238
238
  *
239
239
  * @param {import("@/eodashSTAC/EodashCollection").EodashCollection[]} eodashCols
240
240
  * @param {import("vue").Ref<Exclude<import("@/types").EodashStyleJson["tooltip"],undefined>>} tooltipProperties
241
+ * @param {boolean} enableCompare
241
242
  */
242
243
 
243
- export const useUpdateTooltipProperties = (eodashCols, tooltipProperties) => {
244
+ export const useUpdateTooltipProperties = (
245
+ eodashCols,
246
+ tooltipProperties,
247
+ enableCompare = false,
248
+ ) => {
249
+ /**
250
+ * Listen to events related to the main or compare map based on the enableCompare flag
251
+ * @param {string} evt */
252
+ const listenTo = (evt) =>
253
+ enableCompare ? evt.includes("compare") : !evt.includes("compare");
244
254
  useOnLayersUpdate(async (evt, _payload) => {
245
- if (evt.includes("compare")) {
246
- // TODO: support compare map tooltips
247
- // Do not update tooltip properties on compare map
255
+ if (!listenTo(evt)) {
248
256
  return;
249
257
  }
258
+
250
259
  const tooltips = [];
251
260
  for (const ec of eodashCols) {
252
261
  tooltips.push(...(await ec.getToolTipProperties()));
@@ -60,7 +60,7 @@ import {
60
60
  compareChartSpec,
61
61
  areChartsSeparateLayout,
62
62
  } from "@/store/states";
63
- import { download, getDrawToolsProperty } from "./methods/utils";
63
+ import { download, getDrawToolsProperties } from "./methods/utils";
64
64
  import { compareJobs, jobs } from "./states";
65
65
  import { mdiCogPlayOutline, mdiDownloadCircleOutline } from "@mdi/js";
66
66
 
@@ -111,13 +111,15 @@ const currentIndicator = enableCompare ? compareIndicator : indicator;
111
111
  const currentJobs = enableCompare ? compareJobs : jobs;
112
112
 
113
113
  const jsonformKey = computed(
114
- () => currentIndicator.value + mapElement.value?.id,
114
+ () =>
115
+ currentIndicator.value +
116
+ mapElement.value?.id +
117
+ JSON.stringify(jsonformSchema.value),
115
118
  );
116
119
 
117
120
  useInitProcess({
118
121
  selectedStac: currentSelectedStac,
119
122
  mapElement: mapElement.value,
120
- jsonformEl,
121
123
  jsonformSchema,
122
124
  isProcessed,
123
125
  processResults,
@@ -144,15 +146,17 @@ const downloadResults = () => {
144
146
  };
145
147
 
146
148
  const startProcess = async () => {
147
- const drawToolsProperty = getDrawToolsProperty(jsonformSchema.value);
148
- const propertyIsEmpty =
149
- drawToolsProperty &&
150
- //@ts-expect-error jsonfrom.value is not typed
151
- Array.isArray(jsonformEl.value?.value[drawToolsProperty]) &&
152
- //@ts-expect-error jsonfrom.value is not typed
153
- !jsonformEl.value?.value[drawToolsProperty].length;
154
-
155
- if (propertyIsEmpty) {
149
+ const drawToolsProperties = getDrawToolsProperties(jsonformSchema.value);
150
+
151
+ const anyDrawtoolPropertyEmpty = drawToolsProperties.some(
152
+ (drawToolsProperty) =>
153
+ //@ts-expect-error jsonfrom.value is not typed
154
+ Array.isArray(jsonformEl.value?.value[drawToolsProperty]) &&
155
+ //@ts-expect-error jsonfrom.value is not typed
156
+ !jsonformEl.value?.value[drawToolsProperty].length,
157
+ );
158
+
159
+ if (anyDrawtoolPropertyEmpty) {
156
160
  isProcessed.value = false;
157
161
  const usedChartSpec = enableCompare ? compareChartSpec : chartSpec;
158
162
  usedChartSpec.value = null;
@@ -3,7 +3,6 @@ import { useEventBus } from "@vueuse/core";
3
3
  import { nextTick, onMounted, watch } from "vue";
4
4
  import { eoxLayersKey } from "@/utils/keys";
5
5
  import { useOnLayersUpdate } from "@/composables";
6
-
7
6
  /**
8
7
  * Composable resposible of timing the Initialization of the process
9
8
  *
@@ -11,7 +10,6 @@ import { useOnLayersUpdate } from "@/composables";
11
10
  * @async
12
11
  * @param {Object} params
13
12
  * @param {import("vue").Ref<import("stac-ts").StacCollection | null>} params.selectedStac
14
- * @param {import("vue").Ref<import("@eox/jsonform").EOxJSONForm | null>} params.jsonformEl
15
13
  * @param {import("vue").Ref<Record<string,any> | null>} params.jsonformSchema
16
14
  * @param {import("vue").Ref<any[]>} params.processResults
17
15
  * @param {import("vue").Ref<boolean>} params.isProcessed
@@ -21,7 +19,6 @@ import { useOnLayersUpdate } from "@/composables";
21
19
  */
22
20
  export const useInitProcess = ({
23
21
  selectedStac,
24
- jsonformEl,
25
22
  jsonformSchema,
26
23
  isProcessed,
27
24
  processResults,
@@ -37,7 +34,6 @@ export const useInitProcess = ({
37
34
  await initProcess({
38
35
  enableCompare: mapElement?.id === "compare",
39
36
  selectedStac,
40
- jsonformEl,
41
37
  jsonformSchema,
42
38
  isProcessed,
43
39
  processResults,
@@ -49,7 +45,6 @@ export const useInitProcess = ({
49
45
  await initProcess({
50
46
  enableCompare: mapElement?.id === "compare",
51
47
  selectedStac,
52
- jsonformEl,
53
48
  jsonformSchema,
54
49
  isProcessed,
55
50
  loading,
@@ -59,9 +54,8 @@ export const useInitProcess = ({
59
54
  });
60
55
  }
61
56
  });
62
-
63
- const evtKey =
64
- mapElement?.id === "compare" ? "compareLayers:updated" : "layers:updated";
57
+ const enableCompare = mapElement?.id === "compare";
58
+ const evtKey = enableCompare ? "compareLayers:updated" : "layers:updated";
65
59
  useOnLayersUpdate(async (evt, _payload) => {
66
60
  if (
67
61
  evt == "layertime:updated" ||
@@ -69,19 +63,28 @@ export const useInitProcess = ({
69
63
  evt == "time:updated" ||
70
64
  evt == "compareTime:updated"
71
65
  ) {
72
- await updateJsonformIdentifier({
73
- jsonformSchema: jsonformSchema.value,
74
- // @ts-expect-error TODO payload coming from time update events is not an object with layers property
75
- newLayers: _payload,
76
- });
66
+ const shouldMainJsonFormUpdate =
67
+ ["layertime:updated", "time:updated"].includes(evt) && !enableCompare;
68
+ const shouldCompareJsonFormUpdate =
69
+ ["compareLayertime:updated", "compareTime:updated"].includes(evt) &&
70
+ enableCompare;
71
+ // we need to update jsonform on time change in cases when the feature selection layer was time-based, so that it attaches to a correct new layer
72
+ if (shouldMainJsonFormUpdate || shouldCompareJsonFormUpdate) {
73
+ const newJsonForm = await updateJsonformIdentifier({
74
+ jsonformSchema: jsonformSchema.value,
75
+ // @ts-expect-error TODO payload coming from time update events is not an object with layers property
76
+ newLayers: _payload,
77
+ enableCompare,
78
+ });
79
+ jsonformSchema.value = newJsonForm;
80
+ }
77
81
  }
78
82
  if (evt !== evtKey) {
79
83
  return;
80
84
  }
81
85
  await initProcess({
82
- enableCompare: mapElement?.id === "compare",
86
+ enableCompare,
83
87
  selectedStac,
84
- jsonformEl,
85
88
  jsonformSchema,
86
89
  isProcessed,
87
90
  processResults,