@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-arcgis-block",
3
- "version": "0.1.159",
3
+ "version": "0.1.160",
4
4
  "description": "volto-arcgis-block: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: CodeSyntax",
@@ -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 (dataset.IsTimeSeries && !checkTimeData(dataset)) {
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 (dataset.IsTimeSeries && !checkTimeData(dataset)) {
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('active_label');
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('active_label');
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
- // let group = this.getGroup(
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
- // if (group && groupLayers.length > 1) {
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
- // let group = this.getGroup(document.getElementById(layer));
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
  );