@eeacms/volto-arcgis-block 0.1.159 → 0.1.160
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.
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file. Dates are d
|
|
|
4
4
|
|
|
5
5
|
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
6
6
|
|
|
7
|
+
### [0.1.160](https://github.com/eea/volto-arcgis-block/compare/0.1.159...0.1.160) - 22 June 2023
|
|
8
|
+
|
|
9
|
+
#### :hammer_and_wrench: Others
|
|
10
|
+
|
|
11
|
+
- LINT [martinman - [`f712d49`](https://github.com/eea/volto-arcgis-block/commit/f712d49a76f2d86bc85890ffd60af74f023c0a46)]
|
|
12
|
+
- LINT [martinman - [`dd12c53`](https://github.com/eea/volto-arcgis-block/commit/dd12c53ed74a7afec897c0c3499dfa61c4e88f81)]
|
|
13
|
+
- LINT [martinman - [`d5004b5`](https://github.com/eea/volto-arcgis-block/commit/d5004b5f53f7420fa34845037ee7a92247f7c77e)]
|
|
14
|
+
- LINT [martinman - [`621beb7`](https://github.com/eea/volto-arcgis-block/commit/621beb7adbcdb47a91a77b82e5f3d6213fa73020)]
|
|
15
|
+
- REFACTOR code [martinman - [`bdbb6dd`](https://github.com/eea/volto-arcgis-block/commit/bdbb6ddd7f7e7d512fd592dbda7ae98c26c5a184)]
|
|
16
|
+
- FEAT: Calendar and time slider remove from Custom and General Mapviewer. Next perform tests [martinman - [`d164cb0`](https://github.com/eea/volto-arcgis-block/commit/d164cb0a0e0efc362611837cb9d0f73f99b6934a)]
|
|
17
|
+
- First commit [martinman - [`dee1bc8`](https://github.com/eea/volto-arcgis-block/commit/dee1bc8e9965e8f8eb5f2482f3858f42f1f0b85d)]
|
|
7
18
|
### [0.1.159](https://github.com/eea/volto-arcgis-block/compare/0.1.158...0.1.159) - 20 June 2023
|
|
8
19
|
|
|
9
20
|
### [0.1.158](https://github.com/eea/volto-arcgis-block/compare/0.1.157...0.1.158) - 14 June 2023
|
package/package.json
CHANGED
|
@@ -76,43 +76,16 @@ export const AddCartItem = ({
|
|
|
76
76
|
dataset = cartData[0].Products[0].Datasets[0];
|
|
77
77
|
}
|
|
78
78
|
let id = dataset.DatasetId;
|
|
79
|
-
let datasetElem = document.querySelector('[datasetid="' + id + '"]');
|
|
80
79
|
let datasetData = {
|
|
81
80
|
id: id,
|
|
82
81
|
UID: id,
|
|
83
82
|
unique_id: `${id}-${new Date().getTime()}`,
|
|
84
83
|
area: area,
|
|
85
84
|
};
|
|
86
|
-
if (dataset.IsTimeSeries) {
|
|
87
|
-
let hasTimeStart = checkTimeData(dataset);
|
|
88
|
-
if (hasTimeStart) {
|
|
89
|
-
let datasetInput = document.querySelector(
|
|
90
|
-
'#active_' +
|
|
91
|
-
datasetElem.querySelector('.map-menu-layer input:checked').id,
|
|
92
|
-
);
|
|
93
|
-
let time = {
|
|
94
|
-
start: parseInt(datasetInput.getAttribute('time-start')),
|
|
95
|
-
end: parseInt(datasetInput.getAttribute('time-end')),
|
|
96
|
-
};
|
|
97
|
-
datasetData.timeExtent = [time.start, time.end];
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
85
|
let data = [datasetData];
|
|
101
86
|
return data;
|
|
102
87
|
};
|
|
103
88
|
|
|
104
|
-
const openCalendar = (dataset) => {
|
|
105
|
-
document.getElementById('active_label').click();
|
|
106
|
-
if (!document.querySelector('.timeslider-container')) {
|
|
107
|
-
let layerId = document.querySelector(
|
|
108
|
-
'[datasetid="' + dataset.DatasetId + '"] .map-menu-layer input:checked',
|
|
109
|
-
).id;
|
|
110
|
-
document
|
|
111
|
-
.querySelector("[layer-id='" + layerId + "'] .active-layer-time")
|
|
112
|
-
.click();
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
|
|
116
89
|
const showMessageTimer = (msg, type, title) => {
|
|
117
90
|
toast[type](<Toast autoClose={4000} title={title} content={msg} />, {
|
|
118
91
|
position: 'top-center',
|
|
@@ -125,16 +98,6 @@ export const AddCartItem = ({
|
|
|
125
98
|
});
|
|
126
99
|
};
|
|
127
100
|
|
|
128
|
-
const checkTimeData = (dataset) => {
|
|
129
|
-
let id = dataset.DatasetId;
|
|
130
|
-
let datasetElem = document.querySelector('[datasetid="' + id + '"]');
|
|
131
|
-
let datasetActive = document.querySelector(
|
|
132
|
-
'#active_' +
|
|
133
|
-
datasetElem.querySelector('.map-menu-layer input:checked').id,
|
|
134
|
-
);
|
|
135
|
-
return datasetActive ? datasetActive.hasAttribute('time-start') : false;
|
|
136
|
-
};
|
|
137
|
-
|
|
138
101
|
if (!dataset) {
|
|
139
102
|
dataset = cartData[0].Products[0].Datasets[0];
|
|
140
103
|
}
|
|
@@ -159,25 +122,7 @@ export const AddCartItem = ({
|
|
|
159
122
|
) {
|
|
160
123
|
document.getElementById('products_label').click();
|
|
161
124
|
} else {
|
|
162
|
-
if (
|
|
163
|
-
dataset.IsTimeSeries &&
|
|
164
|
-
!checkTimeData(dataset) &&
|
|
165
|
-
!dataset.MarkAsDownloadableNoServiceToVisualize
|
|
166
|
-
) {
|
|
167
|
-
document.getElementById('active_label').click();
|
|
168
|
-
if (!document.querySelector('.timeslider-container')) {
|
|
169
|
-
let layerId = document.querySelector(
|
|
170
|
-
'[datasetid="' +
|
|
171
|
-
dataset.DatasetId +
|
|
172
|
-
'"] .map-menu-layer input:checked',
|
|
173
|
-
).id;
|
|
174
|
-
document
|
|
175
|
-
.querySelector(
|
|
176
|
-
"[layer-id='" + layerId + "'] .active-layer-time",
|
|
177
|
-
)
|
|
178
|
-
.click(e);
|
|
179
|
-
}
|
|
180
|
-
} else if (areaData) {
|
|
125
|
+
if (areaData) {
|
|
181
126
|
checkArea(e);
|
|
182
127
|
}
|
|
183
128
|
}
|
|
@@ -185,15 +130,6 @@ export const AddCartItem = ({
|
|
|
185
130
|
>
|
|
186
131
|
Add to cart
|
|
187
132
|
</button>
|
|
188
|
-
{dataset.IsTimeSeries && (
|
|
189
|
-
<button
|
|
190
|
-
id="map_download_cancel"
|
|
191
|
-
className="ccl-button ccl-button--default"
|
|
192
|
-
onClick={() => openCalendar(dataset)}
|
|
193
|
-
>
|
|
194
|
-
Open calendar
|
|
195
|
-
</button>
|
|
196
|
-
)}
|
|
197
133
|
</div>
|
|
198
134
|
) : isLoggedIn ? ( // If isLoggedIn == true and user clicks download
|
|
199
135
|
<Popup
|
|
@@ -204,21 +140,7 @@ export const AddCartItem = ({
|
|
|
204
140
|
(isLoggedIn ? ' logged' : '')
|
|
205
141
|
}
|
|
206
142
|
onClick={(e) => {
|
|
207
|
-
if (
|
|
208
|
-
document.getElementById('active_label').click();
|
|
209
|
-
if (!document.querySelector('.timeslider-container')) {
|
|
210
|
-
let layerId = document.querySelector(
|
|
211
|
-
'[datasetid="' +
|
|
212
|
-
dataset.DatasetId +
|
|
213
|
-
'"] .map-menu-layer input:checked',
|
|
214
|
-
).id;
|
|
215
|
-
document
|
|
216
|
-
.querySelector(
|
|
217
|
-
"[layer-id='" + layerId + "'] .active-layer-time",
|
|
218
|
-
)
|
|
219
|
-
.click(e);
|
|
220
|
-
}
|
|
221
|
-
} else if (!areaData) {
|
|
143
|
+
if (!areaData) {
|
|
222
144
|
if (
|
|
223
145
|
!mapViewer.activeWidget ||
|
|
224
146
|
!mapViewer.activeWidget.container.current.classList.contains(
|
|
@@ -232,21 +154,7 @@ export const AddCartItem = ({
|
|
|
232
154
|
}
|
|
233
155
|
}}
|
|
234
156
|
onKeyDown={(e) => {
|
|
235
|
-
if (
|
|
236
|
-
document.getElementById('active_label').click();
|
|
237
|
-
if (!document.querySelector('.timeslider-container')) {
|
|
238
|
-
let layerId = document.querySelector(
|
|
239
|
-
'[datasetid="' +
|
|
240
|
-
dataset.DatasetId +
|
|
241
|
-
'"] .map-menu-layer input:checked',
|
|
242
|
-
).id;
|
|
243
|
-
document
|
|
244
|
-
.querySelector(
|
|
245
|
-
"[layer-id='" + layerId + "'] .active-layer-time",
|
|
246
|
-
)
|
|
247
|
-
.click(e);
|
|
248
|
-
}
|
|
249
|
-
} else if (!areaData) {
|
|
157
|
+
if (!areaData) {
|
|
250
158
|
if (
|
|
251
159
|
!mapViewer.activeWidget ||
|
|
252
160
|
!mapViewer.activeWidget.container.current.classList.contains(
|
|
@@ -592,11 +500,8 @@ class MenuWidget extends React.Component {
|
|
|
592
500
|
bubbles: true,
|
|
593
501
|
cancelable: false,
|
|
594
502
|
});
|
|
595
|
-
let el = document.getElementById('
|
|
503
|
+
let el = document.getElementById('download_label');
|
|
596
504
|
el.dispatchEvent(event);
|
|
597
|
-
//open time slider
|
|
598
|
-
let layerElem = document.getElementById(layerid);
|
|
599
|
-
this.showTimeSlider(layerElem, true);
|
|
600
505
|
break;
|
|
601
506
|
}
|
|
602
507
|
}
|
|
@@ -635,11 +540,8 @@ class MenuWidget extends React.Component {
|
|
|
635
540
|
bubbles: true,
|
|
636
541
|
cancelable: false,
|
|
637
542
|
});
|
|
638
|
-
let el = document.getElementById('
|
|
543
|
+
let el = document.getElementById('download_label');
|
|
639
544
|
el.dispatchEvent(event);
|
|
640
|
-
//open time slider
|
|
641
|
-
let layerElem = document.getElementById(layerid);
|
|
642
|
-
this.showTimeSlider(layerElem, true);
|
|
643
545
|
break;
|
|
644
546
|
}
|
|
645
547
|
}
|
|
@@ -664,11 +566,9 @@ class MenuWidget extends React.Component {
|
|
|
664
566
|
bubbles: true,
|
|
665
567
|
cancelable: false,
|
|
666
568
|
});
|
|
667
|
-
let el = document.getElementById('active_label');
|
|
569
|
+
// let el = document.getElementById('active_label');
|
|
570
|
+
let el = document.getElementById('download_label');
|
|
668
571
|
el.dispatchEvent(event);
|
|
669
|
-
//open time slider
|
|
670
|
-
let layerElem = document.getElementById(layerid);
|
|
671
|
-
this.showTimeSlider(layerElem, true);
|
|
672
572
|
}
|
|
673
573
|
}
|
|
674
574
|
}, 1000);
|
|
@@ -1287,6 +1187,7 @@ class MenuWidget extends React.Component {
|
|
|
1287
1187
|
)}
|
|
1288
1188
|
</legend>
|
|
1289
1189
|
</label>
|
|
1190
|
+
|
|
1290
1191
|
<div className="map-menu-icons">
|
|
1291
1192
|
{!this.props.download && dataset.IsTimeSeries && (
|
|
1292
1193
|
<Popup
|
|
@@ -1328,6 +1229,7 @@ class MenuWidget extends React.Component {
|
|
|
1328
1229
|
/>
|
|
1329
1230
|
</a>
|
|
1330
1231
|
)}
|
|
1232
|
+
|
|
1331
1233
|
{!this.props.download &&
|
|
1332
1234
|
dataset.Downloadable &&
|
|
1333
1235
|
document.getElementById(checkIndex) &&
|
|
@@ -1681,15 +1583,11 @@ class MenuWidget extends React.Component {
|
|
|
1681
1583
|
this.visibleLayers[elem.id] = ['fas', 'eye'];
|
|
1682
1584
|
this.timeLayers[elem.id] = ['far', 'clock'];
|
|
1683
1585
|
if (group) {
|
|
1684
|
-
// let dataset = document
|
|
1685
|
-
// .querySelector('[datasetid="' + group + '"]')
|
|
1686
|
-
// .querySelector('input');
|
|
1687
1586
|
elem.title = this.getLayerTitle(this.layers[elem.id]);
|
|
1688
1587
|
let groupLayers = this.getGroupLayers(group);
|
|
1689
1588
|
if (groupLayers.length > 0 && groupLayers[0] in this.activeLayersJSON) {
|
|
1690
1589
|
elem.hide = true;
|
|
1691
1590
|
}
|
|
1692
|
-
|
|
1693
1591
|
this.activeLayersJSON[elem.id] = this.addActiveLayer(
|
|
1694
1592
|
elem,
|
|
1695
1593
|
Object.keys(this.activeLayersJSON).length,
|
|
@@ -1721,7 +1619,6 @@ class MenuWidget extends React.Component {
|
|
|
1721
1619
|
delete this.timeLayers[elem.id];
|
|
1722
1620
|
}
|
|
1723
1621
|
this.updateCheckDataset(parentId);
|
|
1724
|
-
//this.toggleHotspotWidget();
|
|
1725
1622
|
this.layersReorder();
|
|
1726
1623
|
this.checkInfoWidget();
|
|
1727
1624
|
// toggle custom legend for WMTS and TMS
|
|
@@ -1734,7 +1631,6 @@ class MenuWidget extends React.Component {
|
|
|
1734
1631
|
this.checkForHotspots(elem, productContainerId);
|
|
1735
1632
|
// update DOM
|
|
1736
1633
|
this.setState({});
|
|
1737
|
-
//this.activeLayersHandler(this.activeLayersAsArray);
|
|
1738
1634
|
}
|
|
1739
1635
|
|
|
1740
1636
|
//CLMS-1634 - This shows the zoom message for the checked dataset under the Snow and Ice Parameters Products dropdown only.
|
|
@@ -1910,7 +1806,6 @@ class MenuWidget extends React.Component {
|
|
|
1910
1806
|
activeLayers.indexOf(a.props['layer-id']) -
|
|
1911
1807
|
activeLayers.indexOf(b.props['layer-id']),
|
|
1912
1808
|
);
|
|
1913
|
-
//this.props.mapDispatchToProps(activeLayersArray);
|
|
1914
1809
|
this.activeLayersHandler(activeLayersArray);
|
|
1915
1810
|
return data;
|
|
1916
1811
|
}
|
|
@@ -2209,7 +2104,6 @@ class MenuWidget extends React.Component {
|
|
|
2209
2104
|
const xmlDoc = response.data;
|
|
2210
2105
|
const parser = new DOMParser();
|
|
2211
2106
|
this.xml = parser.parseFromString(xmlDoc, 'text/html');
|
|
2212
|
-
//this.xml = response.data; // assign the response data to this.xml
|
|
2213
2107
|
})
|
|
2214
2108
|
.catch(() => {});
|
|
2215
2109
|
};
|
|
@@ -2440,34 +2334,13 @@ class MenuWidget extends React.Component {
|
|
|
2440
2334
|
//First, we decide how to insert the element in the DOM
|
|
2441
2335
|
let init_ord = this.draggingElement.getAttribute('layer-order');
|
|
2442
2336
|
let dst_ord = dst.getAttribute('layer-order');
|
|
2443
|
-
|
|
2444
|
-
// document.getElementById(this.draggingElement.getAttribute('layer-id')),
|
|
2445
|
-
// )
|
|
2446
|
-
// ? this.getGroup(
|
|
2447
|
-
// document.getElementById(
|
|
2448
|
-
// this.draggingElement.getAttribute('layer-id'),
|
|
2449
|
-
// ),
|
|
2450
|
-
// )
|
|
2451
|
-
// : this.getGroup(document.getElementById(dst.getAttribute('layer-id')));
|
|
2452
|
-
//let groupLayers = this.getGroupLayers(group);
|
|
2337
|
+
|
|
2453
2338
|
if (init_ord > dst_ord) {
|
|
2454
2339
|
dst.parentElement.insertBefore(this.draggingElement, dst.nextSibling);
|
|
2455
2340
|
} else {
|
|
2456
2341
|
dst.parentElement.insertBefore(this.draggingElement, dst);
|
|
2457
2342
|
}
|
|
2458
|
-
|
|
2459
|
-
// groupLayers.forEach((item, index) => {
|
|
2460
|
-
// if (
|
|
2461
|
-
// this.draggingElement.getAttribute('layer-id') !== item ||
|
|
2462
|
-
// dst.getAttribute('layer-id') !== item
|
|
2463
|
-
// ) {
|
|
2464
|
-
// dst.parentElement.insertBefore(
|
|
2465
|
-
// document.getElementById('active_' + item),
|
|
2466
|
-
// this.draggingElement.nextSibling,
|
|
2467
|
-
// );
|
|
2468
|
-
// }
|
|
2469
|
-
// });
|
|
2470
|
-
// }
|
|
2343
|
+
|
|
2471
2344
|
this.layersReorder();
|
|
2472
2345
|
this.saveLayerOrder();
|
|
2473
2346
|
}
|
|
@@ -2769,17 +2642,7 @@ class MenuWidget extends React.Component {
|
|
|
2769
2642
|
setOpacity() {
|
|
2770
2643
|
let layer = document.querySelector('.opacity-slider input').dataset.layer;
|
|
2771
2644
|
let value = document.querySelector('.opacity-panel input').value;
|
|
2772
|
-
|
|
2773
|
-
// let groupLayers = this.getGroupLayers(group);
|
|
2774
|
-
// if (group && groupLayers.length > 1) {
|
|
2775
|
-
// groupLayers.forEach((item) => {
|
|
2776
|
-
// this.layers[item].opacity = value / 100;
|
|
2777
|
-
// this.saveOpacity(item, value / 100);
|
|
2778
|
-
// document.querySelector(
|
|
2779
|
-
// '.active-layer[layer-id="' + item + '"] .active-layer-opacity',
|
|
2780
|
-
// ).dataset.opacity = value;
|
|
2781
|
-
// });
|
|
2782
|
-
// } else {
|
|
2645
|
+
|
|
2783
2646
|
if (this.layers['lcc_filter'] && layer.includes('all_lcc')) {
|
|
2784
2647
|
this.layers['lcc_filter'].opacity = value / 100;
|
|
2785
2648
|
this.saveOpacity(this.layers['lcc_filter'], value / 100);
|
|
@@ -2936,7 +2799,6 @@ class MenuWidget extends React.Component {
|
|
|
2936
2799
|
}
|
|
2937
2800
|
|
|
2938
2801
|
this.saveVisibility();
|
|
2939
|
-
|
|
2940
2802
|
this.activeLayersJSON[elem.id] = this.addActiveLayer(elem, 0);
|
|
2941
2803
|
this.layersReorder();
|
|
2942
2804
|
this.saveLayerOrder();
|
|
@@ -3006,19 +2868,6 @@ class MenuWidget extends React.Component {
|
|
|
3006
2868
|
* @param {*} id id from elem
|
|
3007
2869
|
*/
|
|
3008
2870
|
deleteCrossEvent(elem) {
|
|
3009
|
-
// let group = this.getGroup(elem);
|
|
3010
|
-
// let groupLayers = this.getGroupLayers(group);
|
|
3011
|
-
// if (group && groupLayers.length > 1) {
|
|
3012
|
-
// // are we sure we want to delete all sublayers when one is deleted?
|
|
3013
|
-
// groupLayers.forEach((item) => {
|
|
3014
|
-
// elem = document.getElementById(item);
|
|
3015
|
-
// // elem has to be unchecked
|
|
3016
|
-
// elem.checked = false;
|
|
3017
|
-
// this.toggleLayer(elem);
|
|
3018
|
-
// delete this.activeLayersJSON[elem.id];
|
|
3019
|
-
// });
|
|
3020
|
-
// } else {
|
|
3021
|
-
// elem has to be unchecked
|
|
3022
2871
|
elem.checked = false;
|
|
3023
2872
|
this.toggleLayer(elem);
|
|
3024
2873
|
delete this.activeLayersJSON[elem.id];
|
|
@@ -3129,12 +2978,6 @@ class MenuWidget extends React.Component {
|
|
|
3129
2978
|
* Method to load previously checked layers
|
|
3130
2979
|
*/
|
|
3131
2980
|
loadLayers() {
|
|
3132
|
-
// let event = new MouseEvent('click', {
|
|
3133
|
-
// view: window,
|
|
3134
|
-
// bubbles: true,
|
|
3135
|
-
// cancelable: false,
|
|
3136
|
-
// });
|
|
3137
|
-
|
|
3138
2981
|
let layers = JSON.parse(sessionStorage.getItem('checkedLayers'));
|
|
3139
2982
|
if (layers && !this.props.download) {
|
|
3140
2983
|
for (var i = layers.length - 1; i >= 0; i--) {
|
|
@@ -3312,6 +3155,7 @@ class MenuWidget extends React.Component {
|
|
|
3312
3155
|
if (!document.querySelector('.timeslider-container')) {
|
|
3313
3156
|
let layerId = this.findCheckedLayer(dataset, checkedLayers);
|
|
3314
3157
|
setTimeout(() => {
|
|
3158
|
+
// Display timeslider with no calendar.
|
|
3315
3159
|
this.showTimeSlider(document.getElementById(layerId), true, true);
|
|
3316
3160
|
}, 100);
|
|
3317
3161
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React, { createRef } from 'react';
|
|
2
|
-
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
3
2
|
import { loadModules } from 'esri-loader';
|
|
4
|
-
import DatePicker from 'react-datepicker';
|
|
5
3
|
import 'react-datepicker/dist/react-datepicker.css';
|
|
6
4
|
var TimeSlider;
|
|
7
5
|
var TimeExtent;
|
|
@@ -556,10 +554,12 @@ class TimesliderWidget extends React.Component {
|
|
|
556
554
|
* @returns jsx
|
|
557
555
|
*/
|
|
558
556
|
render() {
|
|
557
|
+
/* eslint-disable no-unused-vars */
|
|
559
558
|
let inputStart;
|
|
560
559
|
let inputEnd;
|
|
561
560
|
let timeStart;
|
|
562
561
|
let timeEnd;
|
|
562
|
+
/* eslint-disable no-unused-vars */
|
|
563
563
|
if (!this.state.lockDatePanel && this.state.showCalendar) {
|
|
564
564
|
inputStart = this.formatDate(
|
|
565
565
|
this.state.inputStart
|
|
@@ -589,114 +589,6 @@ class TimesliderWidget extends React.Component {
|
|
|
589
589
|
style={this.state.styles}
|
|
590
590
|
>
|
|
591
591
|
<div className="timeslider-panel"></div>
|
|
592
|
-
{this.state.showDatePanel && (
|
|
593
|
-
<div className="timeslider-calendar-button">
|
|
594
|
-
{this.props.logged || this.props.download ? (
|
|
595
|
-
<button
|
|
596
|
-
onClick={() => {
|
|
597
|
-
this.showCalendar();
|
|
598
|
-
}}
|
|
599
|
-
className={this.state.lockDatePanel ? 'locked' : ''}
|
|
600
|
-
>
|
|
601
|
-
<FontAwesomeIcon icon={['fas', 'calendar']} />
|
|
602
|
-
{this.state.dateStart && this.state.dateEnd ? (
|
|
603
|
-
<>
|
|
604
|
-
{new Date(this.state.dateStart).toLocaleDateString(
|
|
605
|
-
'en-gb',
|
|
606
|
-
)}{' '}
|
|
607
|
-
-{' '}
|
|
608
|
-
{new Date(this.state.dateEnd).toLocaleDateString('en-gb')}{' '}
|
|
609
|
-
</>
|
|
610
|
-
) : (
|
|
611
|
-
<>Select temporal interval to download</>
|
|
612
|
-
)}
|
|
613
|
-
</button>
|
|
614
|
-
) : (
|
|
615
|
-
<button
|
|
616
|
-
onClick={() => {
|
|
617
|
-
document.querySelector('.header-login-link').click();
|
|
618
|
-
}}
|
|
619
|
-
>
|
|
620
|
-
<FontAwesomeIcon icon={['fas', 'calendar']} />
|
|
621
|
-
Login to select the temporal interval to download
|
|
622
|
-
</button>
|
|
623
|
-
)}
|
|
624
|
-
</div>
|
|
625
|
-
)}
|
|
626
|
-
{!this.state.lockDatePanel && this.state.showCalendar && (
|
|
627
|
-
<div className="timeslider-calendar-container">
|
|
628
|
-
<div className="timeslider-calendar-header">
|
|
629
|
-
<b>Select temporal interval to download</b>
|
|
630
|
-
<div
|
|
631
|
-
className="esri-icon-close"
|
|
632
|
-
id="timeslider_calendar_close"
|
|
633
|
-
role="button"
|
|
634
|
-
tabIndex="0"
|
|
635
|
-
onClick={() => this.showCalendar()}
|
|
636
|
-
onKeyDown={() => this.showCalendar()}
|
|
637
|
-
></div>
|
|
638
|
-
</div>
|
|
639
|
-
<div className="timeslider-calendar-panel">
|
|
640
|
-
{this.state.periodicity && (
|
|
641
|
-
<p>
|
|
642
|
-
The periodicity of this dataset is {this.getPeriodicity()}
|
|
643
|
-
</p>
|
|
644
|
-
)}
|
|
645
|
-
<div className="timeslider-calendar-row">
|
|
646
|
-
<label htmlFor="start">From</label>
|
|
647
|
-
<DatePicker
|
|
648
|
-
id="date_start"
|
|
649
|
-
minDate={new Date(timeStart)}
|
|
650
|
-
maxDate={
|
|
651
|
-
new Date(
|
|
652
|
-
Date.parse(inputEnd) < Date.parse(timeEnd)
|
|
653
|
-
? inputEnd
|
|
654
|
-
: timeEnd,
|
|
655
|
-
)
|
|
656
|
-
}
|
|
657
|
-
selected={new Date(inputStart)}
|
|
658
|
-
onChange={(e) => this.handleInputChange(e, 'date_start')}
|
|
659
|
-
includeDates={this.TimesliderWidget.stops.dates}
|
|
660
|
-
dateFormat="dd/MM/yyyy"
|
|
661
|
-
calendarStartDay={1}
|
|
662
|
-
showMonthDropdown
|
|
663
|
-
showYearDropdown
|
|
664
|
-
dropdownMode="select"
|
|
665
|
-
/>
|
|
666
|
-
</div>
|
|
667
|
-
<div className="timeslider-calendar-row">
|
|
668
|
-
<label htmlFor="start">To</label>
|
|
669
|
-
<DatePicker
|
|
670
|
-
id="date_end"
|
|
671
|
-
minDate={
|
|
672
|
-
new Date(
|
|
673
|
-
Date.parse(inputStart) > Date.parse(timeStart)
|
|
674
|
-
? inputStart
|
|
675
|
-
: timeStart,
|
|
676
|
-
)
|
|
677
|
-
}
|
|
678
|
-
maxDate={new Date(timeEnd)}
|
|
679
|
-
selected={new Date(inputEnd)}
|
|
680
|
-
onChange={(e) => this.handleInputChange(e, 'date_end')}
|
|
681
|
-
includeDates={this.TimesliderWidget.stops.dates}
|
|
682
|
-
dateFormat="dd/MM/yyyy"
|
|
683
|
-
calendarStartDay={1}
|
|
684
|
-
showMonthDropdown
|
|
685
|
-
showYearDropdown
|
|
686
|
-
dropdownMode="select"
|
|
687
|
-
/>
|
|
688
|
-
</div>
|
|
689
|
-
<button
|
|
690
|
-
className="ccl-button ccl-button-white"
|
|
691
|
-
onClick={() => {
|
|
692
|
-
this.applyDate();
|
|
693
|
-
}}
|
|
694
|
-
>
|
|
695
|
-
Apply
|
|
696
|
-
</button>
|
|
697
|
-
</div>
|
|
698
|
-
</div>
|
|
699
|
-
)}
|
|
700
592
|
</div>
|
|
701
593
|
</>
|
|
702
594
|
);
|