@eodash/eodash 5.2.0 → 5.3.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 (119) hide show
  1. package/core/client/components/DashboardLayout.vue +0 -1
  2. package/core/client/composables/index.js +53 -59
  3. package/core/client/eodashSTAC/EodashCollection.js +196 -94
  4. package/core/client/eodashSTAC/auth.js +86 -0
  5. package/core/client/eodashSTAC/createLayers.js +204 -4
  6. package/core/client/eodashSTAC/helpers.js +254 -62
  7. package/core/client/eodashSTAC/parquet.js +0 -13
  8. package/core/client/eodashSTAC/triggers.js +1 -1
  9. package/core/client/store/actions.js +14 -0
  10. package/core/client/store/stac.js +46 -8
  11. package/core/client/store/states.js +6 -0
  12. package/core/client/types.ts +206 -3
  13. package/core/client/utils/bands-editor/arithmetic.js +144 -0
  14. package/core/client/utils/bands-editor/colors.js +36 -0
  15. package/core/client/utils/bands-editor/dom.js +196 -0
  16. package/core/client/utils/bands-editor/exampleSchema.json +1320 -0
  17. package/core/client/utils/bands-editor/index.js +68 -0
  18. package/core/client/utils/bands-editor/rgb.js +102 -0
  19. package/core/client/utils/index.js +5 -2
  20. package/core/client/views/Dashboard.vue +1 -1
  21. package/core/client/vite-env.d.ts +122 -0
  22. package/dist/client/{DashboardLayout-Dq9Kfe6O.js → DashboardLayout-BAstYnhU.js} +4 -5
  23. package/dist/client/{DynamicWebComponent-DCBMXskE.js → DynamicWebComponent-7v4_DFqP.js} +1 -1
  24. package/dist/client/{EodashDatePicker-DtngxU6s.js → EodashDatePicker-IVHLv9UN.js} +20 -22
  25. package/dist/client/{EodashItemFilter-ClQebJQt.js → EodashItemFilter-BPMpnXjo.js} +46 -31
  26. package/dist/client/EodashLayerControl-CSnQh2tb.js +1517 -0
  27. package/dist/client/{EodashLayoutSwitcher-DQ8SfVDd.js → EodashLayoutSwitcher-CPpGM8Pb.js} +4 -4
  28. package/dist/client/EodashMapBtns-C_jyUJ2x.js +301 -0
  29. package/dist/client/{EodashStacInfo-Dt1nF06x.js → EodashStacInfo-DjuWc0Iz.js} +1 -1
  30. package/dist/client/EodashTimeSlider-CDh9Lf02.js +53 -0
  31. package/dist/client/{EodashTools-DV5ykmWc.js → EodashTools-DSvDUUlL.js} +10 -7
  32. package/dist/client/{ExportState-B6zZQUmE.js → ExportState-BhjxS0jG.js} +145 -120
  33. package/dist/client/{Footer-DNhXs8k6.js → Footer-C3PPcdjv.js} +1 -1
  34. package/dist/client/{Header-BjhN5JY4.js → Header-E5NbT7HE.js} +2 -2
  35. package/dist/client/MobileLayout-DY7OHr1k.js +118 -0
  36. package/dist/client/{PopUp-CgpvNr3o.js → PopUp-CSPXdqKI.js} +79 -43
  37. package/dist/client/{ProcessList-vecpxThi.js → ProcessList-C3HV7G0b.js} +5 -6
  38. package/dist/client/{VImg-CETuikH2.js → VImg-FoXcOnWF.js} +6 -3
  39. package/dist/client/{VMain-Ci9DyaGU.js → VMain-Ck2g1QOG.js} +1 -1
  40. package/dist/client/{VTooltip-J4ac48X7.js → VTooltip-F_1Zcvhp.js} +2 -2
  41. package/dist/client/{WidgetsContainer-CCML4TyV.js → WidgetsContainer-Cq9uZEuN.js} +1 -1
  42. package/dist/client/asWebComponent-DZeEbWG0.js +8895 -0
  43. package/dist/client/{async-B7jIrM53.js → async-Dk79llLt.js} +2 -2
  44. package/dist/client/easing-CH0-9wR8.js +35 -0
  45. package/dist/client/eo-dash.js +1 -1
  46. package/dist/client/{forwardRefs-BQclvjMq.js → forwardRefs-BbvoXHtj.js} +58 -45
  47. package/dist/client/{handling-BS24aG1q.js → handling-DxucYlYh.js} +12 -6
  48. package/dist/client/{helpers-wXK7Ywio.js → helpers-CI_7CUmn.js} +568 -281
  49. package/dist/client/index-BO5uGfUe.js +571 -0
  50. package/dist/client/{index-9KR-G20t.js → index-C13BiO9C.js} +2 -2
  51. package/dist/client/{index-4UCzZi8B.js → index-DcCcdbgR.js} +26 -13
  52. package/dist/client/{index-B2XpdgR6.js → index-KrGHjH-_.js} +63 -36
  53. package/dist/client/templates.js +82 -15
  54. package/dist/client/{transition-yBii4fu6.js → transition-Ctkv90El.js} +1 -1
  55. package/dist/node/cli.js +6 -6
  56. package/dist/types/core/client/eodashSTAC/EodashCollection.d.ts +24 -10
  57. package/dist/types/core/client/eodashSTAC/auth.d.ts +7 -0
  58. package/dist/types/core/client/eodashSTAC/createLayers.d.ts +15 -3
  59. package/dist/types/core/client/eodashSTAC/helpers.d.ts +47 -16
  60. package/dist/types/core/client/plugins/vuetify.d.ts +14 -14
  61. package/dist/types/core/client/store/actions.d.ts +2 -0
  62. package/dist/types/core/client/store/stac.d.ts +16 -7
  63. package/dist/types/core/client/store/states.d.ts +4 -0
  64. package/dist/types/core/client/types.d.ts +170 -2
  65. package/dist/types/core/client/utils/bands-editor/arithmetic.d.ts +8 -0
  66. package/dist/types/core/client/utils/bands-editor/colors.d.ts +15 -0
  67. package/dist/types/core/client/utils/bands-editor/dom.d.ts +42 -0
  68. package/dist/types/core/client/utils/bands-editor/index.d.ts +20 -0
  69. package/dist/types/core/client/utils/bands-editor/rgb.d.ts +15 -0
  70. package/dist/types/core/client/utils/index.d.ts +1 -1
  71. package/dist/types/templates/baseConfig.d.ts +87 -1
  72. package/dist/types/templates/expert.d.ts +6 -6
  73. package/dist/types/templates/explore.d.ts +67 -0
  74. package/dist/types/templates/index.d.ts +1 -1
  75. package/dist/types/templates/{light.d.ts → lite.d.ts} +5 -5
  76. package/dist/types/widgets/EodashItemCatalog/index.vue.d.ts +21 -0
  77. package/dist/types/widgets/EodashItemCatalog/methods/filters.d.ts +49 -0
  78. package/dist/types/widgets/EodashItemCatalog/methods/handlers.d.ts +4 -0
  79. package/dist/types/widgets/EodashItemCatalog/methods/map.d.ts +12 -0
  80. package/dist/types/widgets/EodashItemCatalog/types.d.ts +14 -0
  81. package/dist/types/widgets/EodashMap/EodashMapBtns.vue.d.ts +2 -0
  82. package/dist/types/widgets/EodashMap/index.vue.d.ts +108 -2
  83. package/dist/types/widgets/EodashMap/methods/create-layers-config.d.ts +1 -1
  84. package/dist/types/widgets/EodashMap/methods/index.d.ts +1 -1
  85. package/dist/types/widgets/EodashProcess/methods/custom-endpoints/layers/eoxhub-workspaces-endpoint.d.ts +1 -1
  86. package/dist/types/widgets/EodashTimeSlider.vue.d.ts +7 -0
  87. package/dist/types/widgets/EodashTools.vue.d.ts +10 -10
  88. package/dist/types/widgets/ExportState.vue.d.ts +2 -0
  89. package/package.json +28 -27
  90. package/templates/baseConfig.js +10 -5
  91. package/templates/compare.js +2 -2
  92. package/templates/expert.js +5 -5
  93. package/templates/explore.js +62 -0
  94. package/templates/index.js +1 -1
  95. package/templates/{light.js → lite.js} +1 -1
  96. package/widgets/EodashDatePicker.vue +15 -18
  97. package/widgets/EodashItemCatalog/index.vue +161 -0
  98. package/widgets/EodashItemCatalog/methods/filters.js +216 -0
  99. package/widgets/EodashItemCatalog/methods/handlers.js +50 -0
  100. package/widgets/EodashItemCatalog/methods/map.js +144 -0
  101. package/widgets/EodashItemCatalog/types.ts +15 -0
  102. package/widgets/EodashItemFilter.vue +35 -28
  103. package/widgets/EodashLayerControl.vue +10 -6
  104. package/widgets/EodashLayoutSwitcher.vue +1 -1
  105. package/widgets/EodashMap/EodashMapBtns.vue +18 -9
  106. package/widgets/EodashMap/index.vue +22 -12
  107. package/widgets/EodashMap/methods/create-layers-config.js +9 -6
  108. package/widgets/EodashMap/methods/index.js +27 -13
  109. package/widgets/EodashProcess/index.vue +17 -1
  110. package/widgets/EodashProcess/methods/custom-endpoints/chart/veda-endpoint.js +9 -3
  111. package/widgets/EodashProcess/methods/handling.js +2 -0
  112. package/widgets/EodashProcess/methods/outputs.js +1 -0
  113. package/widgets/EodashTimeSlider.vue +40 -0
  114. package/widgets/EodashTools.vue +7 -3
  115. package/widgets/ExportState.vue +53 -22
  116. package/dist/client/EodashLayerControl-BLBds28C.js +0 -154
  117. package/dist/client/EodashMapBtns-B89_YBDw.js +0 -326
  118. package/dist/client/MobileLayout-JelB6w1G.js +0 -118
  119. package/dist/client/asWebComponent-ZyEzWOOf.js +0 -19092
@@ -0,0 +1,40 @@
1
+ <template>
2
+ <eox-timeslider
3
+ v-if="hasMultipleItems"
4
+ :key="mapEl"
5
+ @update="update"
6
+ .externalMapRendering="true"
7
+ .filters="filters"
8
+ titleKey="title"
9
+ layerIdKey="id"
10
+ for="eox-map#main"
11
+ />
12
+ </template>
13
+ <script setup>
14
+ import { datetime, mapEl } from "@/store/states";
15
+ import { eodashCollections } from "@/utils/states";
16
+ import "@eox/timeslider";
17
+ import { computed } from "vue";
18
+
19
+ defineProps({
20
+ filters: {
21
+ type: Array,
22
+ default: () => [],
23
+ },
24
+ });
25
+
26
+ const hasMultipleItems = computed(() => {
27
+ return eodashCollections.some((ec) => {
28
+ const itemLinks = ec.collectionStac?.links.filter((l) => l.rel === "item");
29
+ const itemsLink = ec.collectionStac?.links.some((l) => l.rel === "items");
30
+ return (itemLinks && itemLinks.length > 1) || itemsLink;
31
+ });
32
+ });
33
+ /**
34
+ *
35
+ * @param {CustomEvent} e
36
+ */
37
+ const update = (e) => {
38
+ datetime.value = e.detail.date.toISOString();
39
+ };
40
+ </script>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div ref="rootEl" class="d-flex flex-column fill-height bg-primary">
3
3
  <div
4
- class="d-flex flex-row align-center fill-height justify-space-between pa-2 align-center"
4
+ class="d-flex flex-row align-center fill-height justify-space-between pa-1 align-center"
5
5
  >
6
6
  <v-btn
7
7
  v-if="props.showIndicatorsBtn"
@@ -61,7 +61,7 @@ const props = defineProps({
61
61
  },
62
62
  layoutTarget: {
63
63
  type: String,
64
- default: "light",
64
+ default: "lite",
65
65
  },
66
66
  // mdi/js icon
67
67
  layoutIcon: {
@@ -81,4 +81,8 @@ const props = defineProps({
81
81
  const rootEl = ref(null);
82
82
  useTransparentPanel(rootEl);
83
83
  </script>
84
- <style lang="scss" scoped></style>
84
+ <style lang="scss" scoped>
85
+ .v-btn--size-default {
86
+ --v-btn-height: 30px;
87
+ }
88
+ </style>
@@ -6,12 +6,19 @@
6
6
  </v-card-title>
7
7
 
8
8
  <v-card-text class="py-5 overflow-auto" style="height: 400px">
9
- <p class="text-body-2">
10
- Copy and paste this code into the map <b>layers field</b> of the
11
- storytelling editor:
12
- </p>
13
- <div class="pa-3 code-block">
14
- {{ removeUnneededProperties(getLayers()) }}
9
+ <div class="d-flex flex-wrap gap-2 mb-4">
10
+ <v-btn
11
+ v-for="btn in copyBtns"
12
+ v-show="!btn.showIf || btn.showIf()"
13
+ class="text-body-2"
14
+ @click="btn.copyFn"
15
+ :key="btn.id"
16
+ small
17
+ variant="text"
18
+ :prepend-icon="[mdiContentCopy]"
19
+ >
20
+ copy as {{ btn.copyAs }}
21
+ </v-btn>
15
22
  </div>
16
23
 
17
24
  <div style="position: absolute; bottom: 15px">
@@ -22,21 +29,22 @@
22
29
  </div>
23
30
  </v-expand-transition>
24
31
  </div>
25
- <v-row class="d-flex pt-3 justify-end">
26
- <v-col cols="6" class="flex-column align-center text-end">
27
- <v-btn
28
- v-for="btn in copyBtns"
29
- class="text-body-2"
30
- @click="btn.copyFn"
31
- :key="btn.id"
32
- small
33
- variant="text"
34
- :prepend-icon="[mdiContentCopy]"
35
- >
36
- copy as {{ btn.copyAs }}
37
- </v-btn>
38
- </v-col>
39
- </v-row>
32
+
33
+ <p class="text-body-2 mb-2">
34
+ <strong>Map Layers Configuration</strong>
35
+ </p>
36
+ <div class="pa-3 code-block mb-4">
37
+ {{ removeUnneededProperties(getLayers()) }}
38
+ </div>
39
+
40
+ <div v-if="props.getChartSpec?.()" class="mb-4">
41
+ <p class="text-body-2 mb-2">
42
+ <strong>Chart Spec (for export)</strong>
43
+ </p>
44
+ <div class="pa-3 code-block">
45
+ {{ getChartExportCode() }}
46
+ </div>
47
+ </div>
40
48
  </v-card-text>
41
49
 
42
50
  <v-divider></v-divider>
@@ -53,7 +61,10 @@ import { mdiClipboardCheckOutline, mdiContentCopy } from "@mdi/js";
53
61
  import PopUp from "./PopUp.vue";
54
62
  import { copyToClipBoard } from "@/utils";
55
63
  import { ref } from "vue";
56
- import { getLayers as getLayerAction } from "@/store/actions";
64
+ import {
65
+ getLayers as getLayerAction,
66
+ getChartSpec as getChartSpecAction,
67
+ } from "@/store/actions";
57
68
  import { mapPosition, availableMapProjection } from "@/store/states";
58
69
  import { removeUnneededProperties } from "@/eodashSTAC/helpers";
59
70
 
@@ -64,6 +75,10 @@ const props = defineProps({
64
75
  type: Function,
65
76
  default: getLayerAction,
66
77
  },
78
+ getChartSpec: {
79
+ type: Function,
80
+ default: getChartSpecAction,
81
+ },
67
82
  });
68
83
 
69
84
  const copySuccess = ref(false);
@@ -85,6 +100,13 @@ const copyBtns = [
85
100
  copyFn: async () => await copyToClipBoard(getMapStepCode(), copySuccess),
86
101
  copyAs: "map tour section",
87
102
  },
103
+ {
104
+ id: Symbol(),
105
+ copyFn: async () =>
106
+ await copyToClipBoard(getChartExportCode(), copySuccess),
107
+ copyAs: "chart",
108
+ showIf: () => !!props.getChartSpec?.(),
109
+ },
88
110
  ];
89
111
 
90
112
  const getMapStepCode = () => {
@@ -104,6 +126,15 @@ const getMapEntryCode = () => {
104
126
  const endTag = `zoom="${z}" center=[${[x, y]}] projection="${availableMapProjection.value}" }-->`;
105
127
  return `${preTag}'${JSON.stringify(removeUnneededProperties(props.getLayers()))}' ${endTag}`;
106
128
  };
129
+
130
+ const getChartExportCode = () => {
131
+ const chartSpec = props.getChartSpec?.();
132
+ if (!chartSpec) return "";
133
+ const preTag =
134
+ "## Chart Example <!" + '--{as="eox-chart" style="height: 300px;" spec=';
135
+ const endTag = " }-->";
136
+ return `${preTag}'${JSON.stringify(chartSpec)}'${endTag}`;
137
+ };
107
138
  </script>
108
139
  <style scoped>
109
140
  .code-block {
@@ -1,154 +0,0 @@
1
- import { computed, ref, createElementBlock, openBlock, createCommentVNode, mergeProps, unref, renderSlot, createElementVNode, toDisplayString } from 'vue';
2
- import '@eox/layercontrol';
3
- import '@eox/jsonform';
4
- import '@eox/timecontrol';
5
- import 'color-legend-element';
6
- import { I as mapCompareEl, d as mapEl, J as getColFromLayer } from './helpers-wXK7Ywio.js';
7
- import { _ as _export_sfc, E as useSTAcStore, K as layerControlFormValueCompare, L as layerControlFormValue, J as eodashCompareCollections, I as eodashCollections } from './asWebComponent-ZyEzWOOf.js';
8
- import { storeToRefs } from 'pinia';
9
-
10
- const _style_0 = "eox-layercontrol[data-v-88d02d9c]{overflow:auto}";
11
-
12
- const _hoisted_1 = { class: "d-flex flex-column" };
13
- const _hoisted_2 = ["for"];
14
- const _hoisted_3 = {
15
- key: 0,
16
- class: "mt-2 mb-2"
17
- };
18
-
19
-
20
- const _sfc_main = {
21
- __name: 'EodashLayerControl',
22
- props: {
23
- map: {
24
- /** @type {import("vue").PropType<"first" | "second">} */
25
- //@ts-expect-error todo
26
- type: String,
27
- default: "first",
28
- },
29
- tools: {
30
- type: Array,
31
- default: () => ["datetime", "info", "config", "legend", "opacity"],
32
- },
33
- title: {
34
- type: String || Boolean,
35
- default: "Layers",
36
- },
37
- cssVars: {
38
- type: Object,
39
- },
40
- },
41
- setup(__props) {
42
-
43
- const props = __props;
44
-
45
- const config = {
46
- tools: props.tools,
47
- style: props.cssVars,
48
- };
49
-
50
- const { selectedCompareStac, selectedStac } = storeToRefs(useSTAcStore());
51
- const showControls = computed(() => {
52
- if (props.map === "second") {
53
- return mapCompareEl.value !== null && selectedCompareStac.value !== null;
54
- }
55
- return mapEl.value !== null && selectedStac.value !== null;
56
- });
57
-
58
- const eodashCols =
59
- props.map === "second" ? eodashCompareCollections : eodashCollections;
60
- const mapElement = props.map === "second" ? mapCompareEl : mapEl;
61
-
62
- /** @type { import("vue").Ref<HTMLElement & Record<string,any> | null>} */
63
- const eoxLayercontrol = ref(null);
64
-
65
- /** @param {CustomEvent<{layer:import('ol/layer').Layer; datetime:string;}>} evt */
66
- const handleDatetimeUpdate = async (evt) => {
67
- const { layer, datetime } = evt.detail;
68
-
69
- const ec = await getColFromLayer(eodashCols, layer);
70
-
71
- /** @type {Record<string,any>[] | undefined} */
72
- let updatedLayers = [];
73
-
74
- if (ec) {
75
- updatedLayers = await ec.updateLayerJson(
76
- datetime,
77
- layer.get("id"),
78
- props.map,
79
- );
80
- }
81
- /** @type {Record<String,any>[] | undefined} */
82
- const dataLayers = updatedLayers?.find(
83
- (l) => l?.properties?.id === "AnalysisGroup",
84
- )?.layers;
85
-
86
- if (dataLayers?.length) {
87
- // Add expand to all analysis layers
88
- dataLayers?.forEach((dl) => {
89
- dl.properties.layerControlExpand = true;
90
- dl.properties.layerControlToolsExpand = true;
91
- });
92
- // assign layers to the map
93
- /** @type {HTMLElement & Record<string,any>} */
94
- (mapElement.value).layers = updatedLayers;
95
- }
96
- };
97
-
98
- // ----- debounce logic
99
- /** @type {NodeJS.Timeout | undefined} */
100
- let timeout;
101
-
102
- /**
103
- * @param {CustomEvent<{layer:import('ol/layer').Layer; datetime:string;}>} evt
104
- **/
105
- const debouncedHandleDateTime = (evt) => {
106
- clearTimeout(timeout);
107
- timeout = setTimeout(() => {
108
- handleDatetimeUpdate(evt);
109
- }, 500);
110
- };
111
- // ------
112
- /**
113
- *
114
- * @param {Event & {detail:{layer:import("ol/layer").Layer;jsonformValue:Record<string,any>}}} evt
115
- */
116
- const onLayerConfigChange = (evt) => {
117
- if (props.map === "second") {
118
- layerControlFormValueCompare.value = evt.detail.jsonformValue;
119
- } else {
120
- layerControlFormValue.value = evt.detail.jsonformValue;
121
- }
122
- };
123
-
124
- return (_ctx, _cache) => {
125
- return (openBlock(), createElementBlock("span", _hoisted_1, [
126
- (showControls.value)
127
- ? (openBlock(), createElementBlock("eox-layercontrol", mergeProps({ key: unref(mapElement) }, config, {
128
- for: unref(mapElement),
129
- "onDatetime:updated": debouncedHandleDateTime,
130
- toolsAsList: "true",
131
- style: {"--eox-background-color":"transparent"},
132
- ref_key: "eoxLayercontrol",
133
- ref: eoxLayercontrol,
134
- "on:layerConfig:change": onLayerConfigChange
135
- }), [
136
- renderSlot(_ctx.$slots, "layerstitle", {}, () => [
137
- createElementVNode("div", null, [
138
- (__props.title)
139
- ? (openBlock(), createElementBlock("p", _hoisted_3, [
140
- createElementVNode("strong", null, toDisplayString(__props.title), 1 /* TEXT */)
141
- ]))
142
- : createCommentVNode("v-if", true)
143
- ])
144
- ], true)
145
- ], 16 /* FULL_PROPS */, _hoisted_2))
146
- : createCommentVNode("v-if", true)
147
- ]))
148
- }
149
- }
150
-
151
- };
152
- const EodashLayerControl = /*#__PURE__*/_export_sfc(_sfc_main, [['styles',[_style_0]],['__scopeId',"data-v-88d02d9c"]]);
153
-
154
- export { EodashLayerControl as default };