PageSourceSearch

https://asce7tsunami.online/app/js/stores/MapStore.js?0.1.40

js asce7tsunami.online collected 2026-10-04 13:25:34 UTC 56,067 bytes, 1,234 lines download raw bytes

1define(['exports', 'esri/map', 'esri/SpatialReference', 'esri/dijit/Search', 'esri/dijit/BasemapGallery', 'esri/dijit/Legend', 'esri/toolbars/draw', 'esri/dijit/BasemapLayer', 'esri/dijit/Basemap', 'esri/geometry/Point', 'esri/geometry/Polygon', 'esri/dijit/Popup', 'esri/InfoTemplate', 'esri/graphic', 'esri/symbols/SimpleLineSymbol', 'esri/symbols/SimpleFillSymbol', 'esri/symbols/TextSymbol', 'esri/symbols/PictureMarkerSymbol', 'esri/symbols/SimpleMarkerSymbol', 'esri/Color', 'esri/symbols/Font', 'esri/geometry/webMercatorUtils', 'esri/geometry/geodesicUtils', 'esri/units', 'esri/tasks/FeatureSet', 'esri/urlUtils', 'dojo/Deferred', 'dojo/dom-construct', 'dojo/i18n!esri/nls/jsapi', 'esri/config', 'esri/tasks/IdentifyTask', 'esri/tasks/IdentifyParameters', 'esri/tasks/ImageServiceIdentifyTask', 'esri/tasks/ImageServiceIdentifyParameters', 'esri/request', 'esri/tasks/Geoprocessor', 'esri/toolbars/edit', 'esri/geometry/geometryEngine', 'js/alt', 'actions/MapActions', 'actions/CriteriaActions', 'stores/CriteriaStore', 'stores/LeftPanelStore', 'actions/HeaderActions', 'js/config/config', 'js/config/basemaps.config', 'utils/layerFactory', 'utils/Utilities', 'lodash'], function (exports, _esriMap, _esriSpatialReference, _esriDijitSearch, _esriDijitBasemapGallery, _esriDijitLegend, _esriToolbarsDraw, _esriDijitBasemapLayer, _esriDijitBasemap, _esriGeometryPoint, _esriGeometryPolygon, _esriDijitPopup, _esriInfoTemplate, _esriGraphic, _esriSymbolsSimpleLineSymbol, _esriSymbolsSimpleFillSymbol, _esriSymbolsTextSymbol, _esriSymbolsPictureMarkerSymbol, _esriSymbolsSimpleMarkerSymbol, _esriColor, _esriSymbolsFont, _esriGeometryWebMercatorUtils, _esriGeometryGeodesicUtils, _esriUnits, _esriTasksFeatureSet, _esriUrlUtils, _dojoDeferred, _dojoDomConstruct, _dojoI18nEsriNlsJsapi, _esriConfig, _esriTasksIdentifyTask, _esriTasksIdentifyParameters, _esriTasksImageServiceIdentifyTask, _esriTasksImageServiceIdentifyParameters, _esriRequest, _esriTasksGeoprocessor, _esriToolbarsEdit, _esriGeometryGeometryEngine, _jsAlt, _actionsMapActions, _actionsCriteriaActions, _storesCriteriaStore, _storesLeftPanelStore, _actionsHeaderActions, _jsConfigConfig, _jsConfigBasemapsConfig, _utilsLayerFactory, _utilsUtilities, _lodash) {
2  'use strict';
3
4  Object.defineProperty(exports, '__esModule', {
5    value: true
6  });
7
8  var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
9
10  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
11
12  var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
13
14  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
15
16  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
17
18  var _EsriMap = _interopRequireDefault(_esriMap);
19
20  var _SpatialReference = _interopRequireDefault(_esriSpatialReference);
21
22  // esri widgets
23
24  var _Search = _interopRequireDefault(_esriDijitSearch);
25
26  var _BasemapGallery = _interopRequireDefault(_esriDijitBasemapGallery);
27
28  var _Legend = _interopRequireDefault(_esriDijitLegend);
29
30  var _Draw = _interopRequireDefault(_esriToolbarsDraw);
31
32  var _BasemapLayer = _interopRequireDefault(_esriDijitBasemapLayer);
33
34  var _Basemap = _interopRequireDefault(_esriDijitBasemap);
35
36  //esri geometry
37
38  var _Point = _interopRequireDefault(_esriGeometryPoint);
39
40  var _Polygon = _interopRequireDefault(_esriGeometryPolygon);
41
42  //esri symbology & graphics
43
44  var _Popup = _interopRequireDefault(_esriDijitPopup);
45
46  var _InfoTemplate = _interopRequireDefault(_esriInfoTemplate);
47
48  var _Graphic = _interopRequireDefault(_esriGraphic);
49
50  var _SimpleLineSymbol = _interopRequireDefault(_esriSymbolsSimpleLineSymbol);
51
52  var _SimpleFillSymbol = _interopRequireDefault(_esriSymbolsSimpleFillSymbol);
53
54  var _TextSymbol = _interopRequireDefault(_esriSymbolsTextSymbol);
55
56  var _PictureMarkerSymbol = _interopRequireDefault(_esriSymbolsPictureMarkerSymbol);
57
58  var _SimpleMarkerSymbol = _interopRequireDefault(_esriSymbolsSimpleMarkerSymbol);
59
60  var _Color = _interopRequireDefault(_esriColor);
61
62  var _EsriFont = _interopRequireDefault(_esriSymbolsFont);
63
64  //esri utils
65
66  var _webMercatorUtils = _interopRequireDefault(_esriGeometryWebMercatorUtils);
67
68  var _geodesicUtils = _interopRequireDefault(_esriGeometryGeodesicUtils);
69
70  var _Units = _interopRequireDefault(_esriUnits);
71
72  var _FeatureSet = _interopRequireDefault(_esriTasksFeatureSet);
73
74  var _urlUtils = _interopRequireDefault(_esriUrlUtils);
75
76  var _Deferred = _interopRequireDefault(_dojoDeferred);
77
78  var _domConstruct = _interopRequireDefault(_dojoDomConstruct);
79
80  var _esriBundle = _interopRequireDefault(_dojoI18nEsriNlsJsapi);
81
82  var _esriConfig2 = _interopRequireDefault(_esriConfig);
83
84  //esri tasks
85
86  var _IdentifyTask = _interopRequireDefault(_esriTasksIdentifyTask);
87
88  var _IdentifyParameters = _interopRequireDefault(_esriTasksIdentifyParameters);
89
90  var _ImageServiceIdentifyTask = _interopRequireDefault(_esriTasksImageServiceIdentifyTask);
91
92  var _ImageServiceIdentifyParameters = _interopRequireDefault(_esriTasksImageServiceIdentifyParameters);
93
94  var _esriRequest2 = _interopRequireDefault(_esriRequest);
95
96  var _Geoprocessor = _interopRequireDefault(_esriTasksGeoprocessor);
97
98  var _Edit = _interopRequireDefault(_esriToolbarsEdit);
99
100  var _geometryEngine = _interopRequireDefault(_esriGeometryGeometryEngine);
101
102  //alt stores and actions
103
104  var _alt = _interopRequireDefault(_jsAlt);
105
106  //app config and utils
107
108  var _config = _interopRequireDefault(_jsConfigConfig);
109
110  var _layerFactory = _interopRequireDefault(_utilsLayerFactory);
111
112  //external modules
113
114  var _2 = _interopRequireDefault(_lodash);
115
116  var MapStore = (function () {
117    function MapStore() {
118      _classCallCheck(this, MapStore);
119
120      _esriBundle['default'].toolbars.draw.addShape = _config['default'].strings.addShapeInfo;
121      _esriBundle['default'].widgets.legend.NLS_noLegend = _config['default'].strings.noLegendInfo;
122
123      this.map = {};
124      this.editToolbar = {};
125      this.basemapGallery = {};
126      this.legend = {};
127      this.drawTool = null;
128
129      this.selectionState = 'address';
130      this.riskLevel = 'default';
131      this.address = 'default';
132      this.transectDrawType = '';
133      this.locationInInundationZone = false;
134      this.summaryTransect = null;
135      this.measurement = 'imperial'; //Already set in criteriaStore -> need it however for transects
136
137      this.showBasemapGallery = false;
138      this.showMeasureTool = false;
139      this.showShareLink = false;
140      this.showLegend = true;
141      this.showSummary = false;
142      this.showAmplitude = { display: false, target: '' };
143      this.lockMap = true;
144      this.showWarningCriteria = false;
145
146      this.colorIndex = 0;
147      this.inundationDepthTransects = [];
148      this.points = {};
149      this.deferred = {};
150      this.site = {};
151      this.modal = {
152        show: false,
153        title: '',
154        content: ''
155      };
156
157      this.protractorHidden = true;
158
159      this.bindListeners({
160        createMap: _actionsMapActions.mapActions.createMap,
161        addLegend: _actionsMapActions.mapActions.mapContainerLoaded,
162        saveBasemapGallery: _actionsMapActions.mapActions.saveBasemapGallery,
163
164        updateLayerVisibility: _actionsMapActions.mapActions.updateLayerVisibility,
165        updateLegend: _actionsMapActions.mapActions.updateLegend,
166        updateTransectLabel: _actionsMapActions.mapActions.updateTransectLabel,
167
168        selectionStateChange: _actionsCriteriaActions.criteriaActions.toggleLocationDiv,
169        setRiskLevel: _actionsCriteriaActions.criteriaActions.riskLevelSelection,
170        activateDrawTransect: _actionsMapActions.mapActions.activateDrawTransect,
171
172        setTransectDetails: _actionsMapActions.mapActions.setTransectDetails,
173        setMeasurement: _actionsCriteriaActions.criteriaActions.measurementsSelection,
174        updateStandardsVersion: _actionsCriteriaActions.criteriaActions.updateStandardVersion,
175
176        reverseGeocoder: _actionsMapActions.mapActions.reverseGeocoder,
177        searchAddress: _actionsMapActions.mapActions.searchAddress,
178        updateLocation: _actionsMapActions.mapActions.searchSelectResult,
179
180        toogleMeasureTool: _actionsHeaderActions.headerActions.toogleMeasureTool,
181        toogleBasemapGallery: _actionsHeaderActions.headerActions.toogleBasemapGallery,
182        toogleShareLink: _actionsHeaderActions.headerActions.toogleShareLink,
183        toggleLegend: _actionsMapActions.mapActions.toggleLegend,
184        toggleSummary: _actionsMapActions.mapActions.toggleSummary,
185        toggleAmplitude: _actionsMapActions.mapActions.toggleAmplitude,
186        toggleMapLock: _actionsMapActions.mapActions.toggleMapLock,
187        toggleWarningCriteria: _actionsMapActions.mapActions.toggleWarningCriteria,
188        toggleTransectPreloader: _actionsMapActions.mapActions.toggleTransectPreloader,
189
190        hideBasemapGallery: [_actionsHeaderActions.headerActions.hideBasemapGallery, _actionsMapActions.mapActions.closeBasemap],
191        hideMeasureTool: [_actionsHeaderActions.headerActions.hideMeasureTool, _actionsMapActions.mapActions.closeMeasure],
192        hideShareLink: _actionsHeaderActions.headerActions.hideShareLink,
193        hideLegend: _actionsMapActions.mapActions.hideLegend,
194
195        showLegendFunction: _actionsMapActions.mapActions.showLegend,
196
197        removeInundationDepth: _actionsMapActions.mapActions.removeInundationDepth,
198        toggleProtractor: _actionsMapActions.mapActions.toggleProtractor,
199        cancelTransectRequest: _actionsMapActions.mapActions.cancelTransectRequest,
200        resetApp: _actionsMapActions.mapActions.resetApp,
201        updateModal: _actionsMapActions.mapActions.updateModal
202      });
203    }
204
205    _createClass(MapStore, [{
206      key: 'toggleSummary',
207      value: function toggleSummary(value) {
208        this.showSummary = value;
209      }
210    }, {
211      key: 'toggleAmplitude',
212      value: function toggleAmplitude(ampObj) {
213        this.showAmplitude = {
214          display: ampObj.display,
215          target: ampObj.target
216        };
217      }
218    }, {
219      key: 'activateDrawTransect',
220      value: function activateDrawTransect(type) {
221        this.setState({ transectDrawType: type });
222        if (type === 'tsunamiAmplitude') {
223          this.drawTool.activate(_Draw['default'].RECTANGLE);
224        } else {
225          this.drawTool.activate(_Draw['default'].LINE);
226        }
227      }
228    }, {
229      key: 'setTransectDetails',
230      value: function setTransectDetails(item) {
231        this.summaryTransect = item;
232      }
233    }, {
234      key: 'setMeasurement',
235      value: function setMeasurement(id) {
236        var standardsVersion = _storesCriteriaStore.criteriaStore.getState().standardsVersion;
237
238        var previousMeasurement = id === 'imperial' ? 'si' : 'imperial';
239
240        this.measurement = id;
241        // Switch subsidence contour layer on measurement change
242        var layer = this.map.getLayer('subsidenceAndContour_' + standardsVersion);
243        // layer.setVisibleLayers(this.measurement === 'imperial' ? [2] : [6], true);
244        layer.setVisibleLayers(this.measurement === 'imperial' ? [7] : [8], true);
245        this.updateLegend();
246        layer.refresh();
247        _2['default'].map(this.inundationDepthTransects, function (transect) {
248          if (transect.measurementUnit !== id) {
249            (function () {
250              var unit = transect.measurementUnit;
251              var e = transect.elevationData.elevations.map(function (elevation) {
252                return (0, _utilsUtilities.standardsConversionFeetMeters)(elevation, 'si', id);
253              });
254              var i = transect.elevationData.intervals.map(function (interval) {
255                return (0, _utilsUtilities.standardsConversionFeetMeters)(interval, unit, id);
256              });
257              transect.measurementUnit = id;
258              transect.elevationData.elevations = e;
259              transect.elevationData.intervals = i;
260            })();
261          }
262        });
263
264        var elevationLabel = this.measurement === 'imperial' ? 'Elevation (MHW) (ft.)' : 'Elevation (MHW) (m)';
265        var gsLabel = this.measurement === 'imperial' ? 'Ground Subsidence (ft.)' : 'Ground Subsidence (m)';
266        this.site.elevation = (0, _utilsUtilities.standardsConversionFeetMeters)(this.site.elevation, previousMeasurement, id);
267        this.site.groundSubsidence = (0, _utilsUtilities.standardsConversionFeetMeters)(this.site.groundSubsidence, previousMeasurement, id);
268        var graphic = _2['default'].find(this.map.graphics.graphics, function (graphic) {
269          return graphic.hasOwnProperty('infoTemplate') && typeof graphic.infoTemplate === 'object' && graphic.infoTemplate.title === 'Site Information';
270        });
271        graphic.infoTemplate.setContent('<table><tr><th>Latitude</th><th>Longitude</th><th>' + elevationLabel + '</th><th>' + gsLabel + '</th></tr><tr><td>' + this.site.latitude + '</td><td>' + this.site.longitude + '</td><td>' + this.site.elevation + '</td><td>' + this.site.groundSubsidence + '</td></tr></table>');
272      }
273    }, {
274      key: 'toggleMapLock',
275      value: function toggleMapLock(bool) {
276        this.lockMap = bool;
277      }
278    }, {
279      key: 'toggleWarningCriteria',
280      value: function toggleWarningCriteria(bool) {
281        this.showWarningCriteria = bool;
282      }
283    }, {
284      key: 'updateTransectLabel',
285      value: function updateTransectLabel(labelObj) {
286        var _this = this;
287
288        var line = _2['default'].find(this.inundationDepthTransects, function (transect) {
289          return transect.id === labelObj.transect;
290        });
291        line.name = labelObj.text;
292
293        var graphics = this.map.graphics.graphics;
294        var graphicArray = [];
295
296        var graphicToReplace = _2['default'].forEach(graphics, function (graphic) {
297          if (graphic.hasOwnProperty('symbol') && typeof graphic.symbol === 'object' && graphic.symbol.type === 'textsymbol' && graphic.attributes.id === labelObj.transect) {
298            graphicArray.push(graphic);
299          }
300        });
301
302        _2['default'].forEach(graphicArray, function (g) {
303          var newSymbol = g.symbol;
304          newSymbol.setText(labelObj.text);
305
306          var newGraphic = new _Graphic['default'](g.geometry, newSymbol, g.attributes);
307          _this.map.graphics.remove(g);
308          _this.map.graphics.add(newGraphic);
309        });
310      }
311    }, {
312      key: 'cancelTransectRequest',
313      value: function cancelTransectRequest() {
314        this.deferred.cancel();
315      }
316    }, {
317      key: 'toggleTransectPreloader',
318      value: function toggleTransectPreloader() {
319        var preloader = document.getElementById('preloader');
320        var transectControl = document.getElementById('transect-control');
321
322        if (preloader.classList.contains('hidden')) {
323          transectControl.classList.add('hidden');
324          preloader.classList.remove('hidden');
325          document.getElementById('transect-control-btn').classList.remove('disabled');
326        } else {
327          transectControl.classList.remove('hidden');
328          preloader.classList.add('hidden');
329        }
330      }
331    }, {
332      key: 'removeInundationDepth',
333      value: function removeInundationDepth(id) {
334        var _this2 = this;
335
336        this.inundationDepthTransects = _2['default'].remove(this.inundationDepthTransects, function (transect) {
337          return transect.id !== id;
338        });
339
340        var graphicsToRemove = [];
341        _2['default'].map(this.map.graphics.graphics, function (graphic) {
342          if (typeof graphic.attributes === 'object' && graphic.attributes.id === id) {
343            graphicsToRemove.push(graphic);
344          }
345        });
346        _2['default'].map(graphicsToRemove, function (graphic) {
347          _this2.map.graphics.remove(graphic);
348        });
349      }
350    }, {
351      key: 'toggleProtractor',
352      value: function toggleProtractor() {
353        var graphic = _2['default'].find(this.map.graphics.graphics, function (g) {
354          return g.symbol && g.symbol.url === _config['default'].symbols.protractor;
355        });
356        if (graphic) {
357          var visible = graphic.visible;
358          if (visible) {
359            this.protractorHidden = true;
360            graphic.hide();
361            _actionsMapActions.mapActions.updateModal.defer({ show: false });
362          } else {
363            this.protractorHidden = false;
364            _actionsMapActions.mapActions.updateModal.defer({
365              show: true,
366              title: 'Click protractor to rotate guide'
367            });
368            graphic.show();
369          }
370        }
371      }
372    }, {
373      key: 'updateLocation',
374      value: function updateLocation(result) {
375        this.address = result.address.Address;
376      }
377    }, {
378      key: 'saveBasemapGallery',
379      value: function saveBasemapGallery(bmg) {
380        this.basemapGallery = bmg;
381      }
382    }, {
383      key: 'showLegendFunction',
384      value: function showLegendFunction() {
385        this.showLegend = true;
386      }
387    }, {
388      key: 'toogleBasemapGallery',
389      value: function toogleBasemapGallery() {
390        this.showBasemapGallery = !this.showBasemapGallery;
391      }
392    }, {
393      key: 'hideBasemapGallery',
394      value: function hideBasemapGallery() {
395        this.showBasemapGallery = false;
396      }
397    }, {
398      key: 'toogleMeasureTool',
399      value: function toogleMeasureTool() {
400        this.showMeasureTool = !this.showMeasureTool;
401      }
402    }, {
403      key: 'hideMeasureTool',
404      value: function hideMeasureTool() {
405        this.showMeasureTool = false;
406      }
407    }, {
408      key: 'toogleShareLink',
409      value: function toogleShareLink() {
410        this.showShareLink = !this.showShareLink;
411      }
412    }, {
413      key: 'hideShareLink',
414      value: function hideShareLink() {
415        this.showShareLink = false;
416      }
417    }, {
418      key: 'toggleLegend',
419      value: function toggleLegend() {
420        this.showLegend = !this.showLegend;
421      }
422    }, {
423      key: 'setRiskLevel',
424      value: function setRiskLevel(level) {
425        this.riskLevel = level;
426
427        if (this.address === 'default' || this.riskLevel === 'default') {
428          _actionsMapActions.mapActions.toggleWarningCriteria.defer(false);
429        } else {
430          _actionsMapActions.mapActions.toggleWarningCriteria.defer(true);
431        }
432      }
433    }, {
434      key: 'handleUSATopoBasemap',
435      value: function handleUSATopoBasemap() {
436        if (this.basemapGallery.getSelected().title === _jsConfigBasemapsConfig.USA_TOPO_BASEMAP_TITLE && this.map.getZoom() >= 16) {
437          var topographicBasemap = this.basemapGallery.basemaps.find(function (basemap) {
438            return basemap.title === _jsConfigBasemapsConfig.ESRI_TOPO_BASEMAP_TITLE;
439          });
440
441          if (topographicBasemap) {
442            this.basemapGallery.select(topographicBasemap.id);
443          }
444        }
445      }
446
447      /** Creating the map */
448    }, {
449      key: 'createMap',
450      value: function createMap() {
451        var _this3 = this;
452
453        var popup = new _Popup['default']({
454          fillSymbol: new _SimpleFillSymbol['default'](_SimpleFillSymbol['default'].STYLE_SOLID, new _SimpleLineSymbol['default'](_SimpleLineSymbol['default'].STYLE_SOLID, new _Color['default']([255, 0, 0]), 2), new _Color['default']([255, 255, 0, 0.25]))
455        }, _domConstruct['default'].create('div'));
456
457        this.map = new _EsriMap['default']('map', _extends({
458          infoWindow: popup
459        }, _config['default'].map.options));
460        this.map.infoWindow.resize(600, 400);
461
462        this.map.on('click', function (evt) {
463          // If the map is currently unlocked with a click state
464          if (_this3.lockMap === false && _this3.selectionState === 'mapclick') {
465            $('ul.tabs').tabs('select_tab', 'mapclickTab');
466            _this3.mapClickLocation(evt.mapPoint);
467            _this3.editToolbar.deactivate();
468            // If the measure tool is currently open -- do nothing
469          } else if (_this3.showMeasureTool) {
470              _this3.editToolbar.deactivate();
471              return;
472              // If the map is currently locked
473            } else if (_this3.lockMap) {
474                _this3.identifyPoint(evt.mapPoint);
475                var graphic = evt.graphic;
476                if (graphic && graphic.symbol && graphic.symbol.url && graphic.symbol.url === _config['default'].symbols.protractor) {
477                  _this3.editToolbar.activate(_Edit['default'].ROTATE, evt.graphic);
478                } else {
479                  _this3.editToolbar.deactivate();
480                }
481              }
482        });
483
484        this.map.on('load', function () {
485          _this3.addLoadLayers();
486          _this3.createEditToolbar();
487        });
488
489        // this.map.on('mouse-down', (evt) => { this.points.x1 = evt.clientX; this.points.y1 = evt.clientY; });
490        // this.map.on('mouse-up', (evt) => { this.points.x2 = evt.clientX; this.points.y2 = evt.clientY; });
491        this.map.on('update-end', function () {
492          _this3.updateLegend();
493        });
494
495        this.basemapGallery = new _BasemapGallery['default'](_extends({
496          map: this.map
497        }, _config['default'].widgets.basemapGallery), 'basemapGallery');
498
499        this.basemapGallery.on('load', function () {
500          var basemapTitles = _jsConfigBasemapsConfig.ESRI_BASEMAPS_TITLES;
501
502          var filteredEsriBasemaps = _this3.basemapGallery.basemaps.filter(function (basemap) {
503            return basemapTitles.includes(basemap.title);
504          });
505
506          _this3.basemapGallery.basemaps = filteredEsriBasemaps;
507
508          var basemapLayer = new _BasemapLayer['default']({
509            url: _jsConfigBasemapsConfig.USA_TOPO_BASEMAP_URL
510          });
511
512          var usaTopoBasemap = new _Basemap['default']({
513            layers: [basemapLayer],
514            title: _jsConfigBasemapsConfig.USA_TOPO_BASEMAP_TITLE,
515            thumbnailUrl: _jsConfigBasemapsConfig.USA_TOPO_BASEMAP_THUMBNAIL_URL
516          });
517
518          _this3.basemapGallery.basemaps.push(usaTopoBasemap);
519          _this3.basemapGallery.basemaps.sort(function (a, b) {
520            return a.title > b.title ? 1 : -1;
521          });
522
523          _this3.basemapGallery.startup();
524        });
525
526        this.basemapGallery.on('selection-change', function (evt) {
527          _this3.handleUSATopoBasemap();
528          _actionsHeaderActions.headerActions.toogleBasemapGallery();
529        });
530
531        this.map.on('zoom-end', function () {
532          if (_this3.basemapGallery.getSelected()) {
533            _this3.handleUSATopoBasemap();
534          }
535        });
536
537        this.basemapGallery.startup();
538
539        this.search = new _Search['default'](_extends({
540          map: this.map
541        }, _config['default'].widgets.search), 'geocoder');
542
543        this.search.on('focus', function () {
544          _this3.removeLocationMarker();
545        });
546
547        this.search.on('select-result', function (result) {
548          var fullAddress = result.result.name.split(',');
549          var response = {};
550
551          response.address = {
552            Address: typeof fullAddress[0] === 'undefined' ? '' : fullAddress[0].trim(),
553            City: typeof fullAddress[1] === 'undefined' ? '' : fullAddress[1].trim(),
554            Region: typeof fullAddress[2] === 'undefined' ? '' : fullAddress[2].trim(),
555            Postal: typeof fullAddress[3] === 'undefined' ? '' : fullAddress[3].trim()
556          };
557          response.location = result.result.feature.geometry;
558          _actionsMapActions.mapActions.searchSelectResult(response);
559
560          _this3.search.set('value', result.result.name);
561
562          _this3.identifySite(response.location, false, true);
563        });
564
565        window.map = this.map;
566      }
567
568      /**
569       * Adds layers from config.js to the map on page load
570       */
571    }, {
572      key: 'addLoadLayers',
573      value: function addLoadLayers() {
574        var _this4 = this;
575
576        var layers = _2['default'].map(_config['default'].layers, function (layer) {
577          return _layerFactory['default'].createLayer(layer);
578        });
579
580        this.map.addLayers(layers);
581        this.map.on('layers-add-result', function (results) {
582          _this4.addDrawAnalysisFunctionality();
583          _this4.updateStandardsVersion();
584        });
585      }
586    }, {
587      key: 'createEditToolbar',
588      value: function createEditToolbar() {
589        this.editToolbar = new _Edit['default'](this.map);
590        this.editToolbar.on('rotate', function (evt) {
591          var angle = evt.info.angle;
592          var symbol = evt.graphic.symbol;
593
594          symbol.angle = angle;
595        });
596      }
597    }, {
598      key: 'handlePolyline',
599      value: function handlePolyline(evt) {
600        var _this5 = this;
601
602        var standardsVersion = _storesCriteriaStore.criteriaStore.getState().standardsVersion;
603        // start the preloader
604        _actionsMapActions.mapActions.toggleTransectPreloader();
605        // determine the correct gp url
606        var task = new _IdentifyTask['default'](_config['default'].transectUrls['demBoundary_' + standardsVersion]);
607        var params = new _IdentifyParameters['default']();
608        params.geometry = evt.geometry;
609        params.mapExtent = this.map.extent;
610        params.layerIds = [0];
611        params.tolerance = 0;
612        params.layerOption = 'LAYER_OPTION_ALL';
613
614        task.execute(params).then(function (results) {
615          if (results.length) {
616            var _results = _slicedToArray(results, 1);
617
618            var result = _results[0];
619
620            var url = result.feature.attributes.URL;
621
622            var geographicDistance = _webMercatorUtils['default'].webMercatorToGeographic(evt.geometry);
623            var meters = _geodesicUtils['default'].geodesicLengths([geographicDistance], _Units['default'].METERS);
624            var interval = meters / 1000;
625
626            var graphic = new _Graphic['default'](evt.geographicGeometry, null, { OID: 1 });
627            var featureSet = new _FeatureSet['default']();
628            featureSet.features = [graphic];
629            featureSet.fields = [{
630              name: 'OID',
631              type: 'esriFieldTypeObjectID',
632              alias: 'OID'
633            }];
634            var geoprocessorParams = {
635              InputLineFeatures: featureSet,
636              ProfileIDField: null,
637              DEMResolution: 'FINEST',
638              MaximumSampleDistance: interval,
639              MaximumSampleDistanceUnits: 'Meters',
640              returnZ: true,
641              returnM: true,
642              outSR: 102100
643            };
644
645            var profileGeoprocessor = new _Geoprocessor['default'](url);
646
647            Promise.all([profileGeoprocessor.execute(geoprocessorParams)]).then(function (gpResults) {
648              console.log('GP Results', gpResults);
649
650              var _gpResults = _slicedToArray(gpResults, 1);
651
652              var profileOutput = _gpResults[0];
653
654              var profilePath = profileOutput[0].value.features[0].geometry.paths[0];
655
656              var longitudes = [];
657              var latitudes = [];
658              var intervals = [];
659              var elevations = [];
660
661              profilePath.forEach(function (point, i) {
662                var _point = _slicedToArray(point, 4);
663
664                var longitude = _point[0];
665                var latitude = _point[1];
666                var elevation = _point[2];
667                var interval = _point[3];
668
669                longitudes.push(longitude.toFixed(5));
670                latitudes.push(latitude.toFixed(5));
671                intervals.push((0, _utilsUtilities.standardsConversionFeetMeters)(interval, 'si', _this5.measurement));
672                elevations.push((0, _utilsUtilities.standardsConversionFeetMeters)(elevation, 'si', _this5.measurement));
673              });
674
675              var color = new _Color['default']([0, 0, 0]);
676              var attributes = {
677                id: (0, _utilsUtilities.generateUUID)(),
678                name: _config['default'].alphabet[_this5.inundationDepthTransects.length],
679                measurementUnit: _this5.measurement,
680                color: [0, 0, 0],
681                elevationData: {
682                  elevations: elevations,
683                  intervals: intervals,
684                  latitudes: latitudes,
685                  longitudes: longitudes
686                }
687              };
688
689              var symbol = new _SimpleLineSymbol['default'](_SimpleLineSymbol['default'].STYLE_SOLID, color, 3);
690              var lineGraphic = new _Graphic['default'](evt.geometry, symbol, attributes);
691
692              var text = _config['default'].alphabet[_this5.inundationDepthTransects.length];
693              var font = new _EsriFont['default']('20px', _EsriFont['default'].STYLE_NORMAL, _EsriFont['default'].VARIANT_NORMAL, _EsriFont['default'].WEIGHT_BOLDER, 'Roboto');
694              var textSymbol = new _TextSymbol['default']({
695                font: font,
696                text: text,
697                horizontalAlignment: 'justify',
698                verticalAlignment: 'middle',
699                color: color
700              });
701              textSymbol.setHaloColor(new _Color['default']([255, 255, 255, 1]));
702              textSymbol.setHaloSize(1);
703
704              var start = evt.geometry.paths[0][0];
705              var finish = evt.geometry.paths[0][1];
706              var startPoint = new _Point['default'](start[0], start[1], new _SpatialReference['default']({ wkid: 102100 }));
707              var finishPoint = new _Point['default'](finish[0], finish[1], new _SpatialReference['default']({ wkid: 102100 }));
708              var graphicStartLabel = new _Graphic['default'](startPoint, textSymbol, attributes);
709              var graphicFinishLabel = new _Graphic['default'](finishPoint, textSymbol, attributes);
710
711              _this5.map.graphics.add(lineGraphic);
712              _this5.map.graphics.add(graphicStartLabel);
713              _this5.map.graphics.add(graphicFinishLabel);
714              _this5.inundationDepthTransects.push(attributes);
715
716              _this5.setState({ transectDrawType: '' });
717              _actionsMapActions.mapActions.toggleTransectPreloader();
718            })['catch'](function (err) {
719              console.log('Error', err);
720              _actionsMapActions.mapActions.toggleTransectError(true);
721              _actionsMapActions.mapActions.toggleTransectPreloader();
722            });
723          }
724        });
725      }
726    }, {
727      key: 'addDrawAnalysisFunctionality',
728      value: function addDrawAnalysisFunctionality() {
729        var _this6 = this;
730
731        var standardsVersion = _storesCriteriaStore.criteriaStore.getState().standardsVersion;
732        var draw = new _Draw['default'](this.map);
733        this.drawTool = draw;
734
735        draw.on('draw-complete', function (evt) {
736          draw.deactivate();
737
738          if (evt.geometry.type === 'polyline') {
739            _this6.handlePolyline(evt);
740          } else if (evt.geometry.type === 'polygon') {
741            document.getElementById('add-offshore-btn').classList.remove('disabled');
742
743            var amplitudeIdentifyTask = new _IdentifyTask['default'](_config['default']['inudationQueryURL_' + standardsVersion]);
744            var amplitudeIdentifyParams = new _IdentifyParameters['default']();
745            amplitudeIdentifyParams.geometry = evt.geographicGeometry;
746            amplitudeIdentifyParams.layerIds = [3];
747            amplitudeIdentifyParams.tolerance = 1;
748            amplitudeIdentifyParams.mapExtent = _this6.map.extent;
749            amplitudeIdentifyParams.layerOption = 'LAYER_OPTION_ALL';
750            amplitudeIdentifyTask.execute(amplitudeIdentifyParams).then(function (results) {
751
752              if (results.length) {
753                (function () {
754                  var items = {
755                    id: (0, _utilsUtilities.generateUUID)(),
756                    amplitudeRange: []
757                  };
758                  _2['default'].forEach(results, function (result) {
759                    var image = result.feature.attributes.Disag_Link.substring(27);
760                    var newLink = _config['default'].disagFigureURL + image;
761                    var item = {
762                      latitude: result.feature.attributes.Latitude,
763                      longitude: result.feature.attributes.Longitude,
764                      amplitude: result.feature.attributes.Amp_ft,
765                      period: result.feature.attributes.T_min,
766                      id: result.feature.attributes.UID,
767                      image: newLink
768                    };
769                    items.amplitudeRange.push(item);
770                  });
771
772                  _actionsMapActions.mapActions.toggleAmplitude({ display: true, target: items });
773                  _this6.setState({ transectDrawType: '' });
774                })();
775              }
776            });
777          }
778        });
779      }
780    }, {
781      key: 'addLegend',
782      value: function addLegend() {
783        var legend = new _Legend['default']({
784          map: this.map,
785          autoUpdate: false,
786          layerInfos: []
787        }, 'legend');
788        legend.startup();
789
790        this.legend = legend;
791      }
792    }, {
793      key: 'updateStandardsVersion',
794      value: function updateStandardsVersion(updateObj) {
795        var _this7 = this;
796
797        this.resetApp();
798        var standardsVersion = _storesCriteriaStore.criteriaStore.getState().standardsVersion;
799        this.map.layerIds.forEach(function (id) {
800          if (id.includes('7-')) {
801            var layer = _this7.map.getLayer(id);
802            if (layer) {
803              layer.setVisibility(layer.id.includes(standardsVersion));
804            }
805          }
806        });
807        this.updateLegend();
808      }
809    }, {
810      key: 'updateLayerVisibility',
811      value: function updateLayerVisibility(updateObj) {
812        this.updateLegend();
813      }
814    }, {
815      key: 'hideLegend',
816      value: function hideLegend() {
817        this.legend.refresh([]);
818      }
819    }, {
820      key: 'updateLegend',
821      value: function updateLegend() {
822        var _this8 = this;
823
824        var layerInfos = [];
825        var layerIds = this.map.layerIds.concat(this.map.graphicsLayerIds);
826        _2['default'].forEach(layerIds, function (layerId) {
827          if (layerId === 'layer1' || layerId === 'layer0') {
828            return;
829          }
830          if (_this8.map.getLayer(layerId).visible) {
831            layerInfos.push({
832              layer: _this8.map.getLayer(layerId),
833              title: ' '
834            });
835          }
836        });
837        this.legend.refresh(layerInfos);
838      }
839    }, {
840      key: 'reverseGeocoder',
841      value: function reverseGeocoder(point) {
842        var lat = parseFloat(point.lat);
843        var long = parseFloat(point.long);
844        var lnglat = _webMercatorUtils['default'].lngLatToXY(long, lat);
845        var xcoord = parseFloat(lnglat[0].toFixed(6));
846        var ycoord = parseFloat(lnglat[1].toFixed(6));
847
848        if (typeof lat !== 'number' && typeof long !== 'number') {
849          return;
850        }
851
852        var geo = new _Point['default'](xcoord, ycoord, new _SpatialReference['default']({
853          wkid: 102100
854        }));
855
856        this.mapClickLocation(geo);
857      }
858    }, {
859      key: 'searchAddress',
860      value: function searchAddress(address) {
861        this.search.search(address);
862      }
863    }, {
864      key: 'mapClickLocation',
865      value: function mapClickLocation(point) {
866        this.removeLocationMarker();
867        this.map.centerAt(point);
868
869        if (!_storesCriteriaStore.criteriaStore.getState().snapToAddress) {
870          this.noAddressGeoSelection(point);
871          this.identifySite(point, false, false);
872        } else {
873          this.identifySite(point, true, false);
874        }
875      }
876    }, {
877      key: 'clearTransects',
878      value: function clearTransects() {
879        this.inundationDepthTransects = [];
880      }
881    }, {
882      key: 'cretePopupRunupDataTextNote',
883      value: function cretePopupRunupDataTextNote() {
884        return _config['default'].strings.popupRunupDataTextNote.map(function (text) {
885          return '<p class=\'popupRunupDataText\'>
885' + text + '</p>';
886        }).join('');
887      }
888    }, {
889      key: 'identifyPoint',
890      value: function identifyPoint(point) {
891        var _this9 = this;
892
893        var standardsVersion = _storesCriteriaStore.criteriaStore.getState().standardsVersion;
894        var identifyTsunamiFeatures = new _IdentifyTask['default'](_config['default']['inudationQueryURL_' + standardsVersion]);
895        var tsunamiFeatureParams = new _IdentifyParameters['default']();
896        tsunamiFeatureParams.geometry = point;
897        tsunamiFeatureParams.mapExtent = this.map.extent;
898        tsunamiFeatureParams.layerIds = [0, 1, 3, 11, 15];
899        tsunamiFeatureParams.tolerance = 2;
900        tsunamiFeatureParams.layerOption = 'LAYER_OPTION_ALL';
901
902        var identifyGroundSubsidence = new _ImageServiceIdentifyTask['default'](_config['default']['groundSubsidenceQueryURL_' + standardsVersion]);
903        var groundSubsidenceParams = new _ImageServiceIdentifyParameters['default']();
904        groundSubsidenceParams.geometry = point;
905        groundSubsidenceParams.returnGeometry = false;
906
907        var identifyState = new _IdentifyTask['default'](_config['default'].transectUrls['demBoundary_' + standardsVersion]);
908        var stateParams = new _IdentifyParameters['default']();
909        stateParams.geometry = point;
910        stateParams.mapExtent = this.map.extent;
911        stateParams.layerIds = [0];
912        stateParams.tolerance = 0;
913        stateParams.layerOption = 'LAYER_OPTION_ALL';
914
915        var executeTsunamiFeatures = identifyTsunamiFeatures.execute(tsunamiFeatureParams);
916        var executeGroundSubsidence = identifyGroundSubsidence.execute(groundSubsidenceParams);
917        var executeState = identifyState.execute(stateParams);
918
919        Promise.all([executeTsunamiFeatures, executeGroundSubsidence, executeState]).then(function (results) {
920          var _results2 = _slicedToArray(results, 3);
921
922          var tsunamiResults = _results2[0];
923          var subsidenceResults = _results2[1];
924          var stateResults = _results2[2];
925
926          if (tsunamiResults.length > 0) {
927            var infoTemplate = null;
928            var popupFeatures = [];
929            var state = stateResults.length > 0 ? stateResults[0].feature.attributes.State : '';
930            var groundSubsidenceValue = subsidenceResults.value !== 'NoData' && !isNaN(subsidenceResults.value) ? (0, _utilsUtilities.standardsConversionFeetMeters)(subsidenceResults.value, 'imperial', _this9.measurement) : '0';
931            var groundSubsidenceLabel = 'Earthquake Induced Regional Ground Subsidence ' + (_this9.measurement === 'imperial' ? '(ft.): ' : '(m): ');
932
933            var tsunamiFeature = tsunamiResults[0].feature;
934            var runup_mhw = undefined,
935                runup_navd = undefined,
936                inundation = undefined,
937                elevation = undefined,
938                disag = undefined,
939                amp = undefined;
940
941            switch (tsunamiResults[0].layerName) {
942              case 'Runup Elevation Point':
943                if (standardsVersion === '7-16') {
944                  runup_mhw = tsunamiFeature.attributes.runup_mhw;
945                  runup_navd = tsunamiFeature.attributes.runup_navd;
946                  elevation = tsunamiFeature.attributes.elev;
947                } else {
948                  runup_mhw = tsunamiFeature.attributes.Runup_MHW;
949                  runup_navd = tsunamiFeature.attributes.Runup_NAVD;
950                  elevation = tsunamiFeature.attributes.Elevation;
951                }
952
953                var runupMHWLabel = 'Runup Elevation (MHW) ' + (_this9.measurement === 'imperial' ? '(ft.)' : '(m)');
954                var runupMHWValue = (0, _utilsUtilities.standardsConversionFeetMeters)(runup_mhw, 'imperial', _this9.measurement);
955
956                var runupNAVDLabel = 'Runup Elevation (NAVD88) ' + (_this9.measurement === 'imperial' ? '(ft.)' : '(m)');
957                var runupNAVDValue = state !== 'HI' && state !== 'AK West' && state !== 'AK East' ? (0, _utilsUtilities.standardsConversionFeetMeters)(runup_navd, 'imperial', _this9.measurement) : 'Not Available';
958
959                infoTemplate = new _InfoTemplate['default'](tsunamiResults[0].layerName, '<table><tr><th>Latitude</th><th>Longitude</th><th>' + runupMHWLabel + '</th><th>' + runupNAVDLabel + '</th></tr><tbody><td>${Latitude}</td><td>${Longitude}</td><td>' + runupMHWValue + '</td><td>' + runupNAVDValue + '</td></tbody></table><br /><strong>' + groundSubsidenceLabel + '</strong>' + groundSubsidenceValue + '<br />' + _this9.cretePopupRunupDataTextNote());
960                break;
961              case 'Inundation Depth Point':
962                inundation = tsunamiFeature.attributes.Inundation;
963                elevation = tsunamiFeature.attributes.elev;
964
965                var inundationLabel = 'Inundation Depth ' + (_this9.measurement === 'imperial' ? '(ft.)' : '(m)');
966                var inundationValue = (0, _utilsUtilities.standardsConversionFeetMeters)(inundation, 'imperial', _this9.measurement);
967                var groundElevationLabel = 'Ground Elevation (Grade Plane) (MHW) ' + (_this9.measurement === 'imperial' ? '(ft.)' : '(m)');
968                var groundElevationValue = (0, _utilsUtilities.standardsConversionFeetMeters)(elevation, 'imperial', _this9.measurement);
969
970                infoTemplate = new _InfoTemplate['default'](tsunamiResults[0].layerName, '<table><tr><th>Latitude</th><th>Longitude</th><th>' + groundElevationLabel + '</th><th>' + inundationLabel + '</th></tr><tbody><tr><td>${Latitude}</td><td>${Longitude}</td><td>' + groundElevationValue + '</td><td>' + inundationValue + '</td></tr></tbody></table><br /><strong>' + groundSubsidenceLabel + '</strong>' + groundSubsidenceValue + '<br />' + _this9.cretePopupRunupDataTextNote());
971                break;
972              case 'Offshore Tsunami Amplitude':
973                if (standardsVersion === '7-16') {
974                  disag = tsunamiFeature.attributes.Disag_Link;
975                  amp = tsunamiFeature.attributes.Amp_ft;
976                } else {
977                  disag = tsunamiFeature.attributes.Disag_Link;
978                  amp = tsunamiFeature.attributes.Amp_ft;
979                }
980
981                var image = disag.substring(27);
982                var newLink = _config['default'].disagFigureURL + image;
983                var amplitudeLabel = 'Amplitude ' + (_this9.measurement === 'imperial' ? '(ft.)' : '(m)');
984                var val = (0, _utilsUtilities.standardsConversionFeetMeters)(amp, 'imperial', _this9.measurement);
985                infoTemplate = new _InfoTemplate['default'](tsunamiResults[0].layerName, '<table><tr><th>Latitude</th><th>Longitude</th><th>' + amplitudeLabel + '</th><th>Period (min.)</th></tr><tr><td>${Latitude}</td><td>${Longitude}</td><td>' + val + '</td><td>${T_min}</td></tr></table><br /><strong>Disaggregated hazard source contribution</strong><a href=${Disag_Link} target="_blank"><img src="' + newLink + '"></a>');
986                break;
987              case 'Bore Point':
988                {
989                  infoTemplate = new _InfoTemplate['default'](tsunamiResults[0].layerName, '<p>' + tsunamiFeature.attributes.Footnote + '</p>');
990                  break;
991                }
992              case '3ft Inundation Depth Point (Oahu)':
993                infoTemplate = new _InfoTemplate['default'](tsunamiResults[0].layerName, '<table><tr><th>Latitude</th><th>Longitude</th><th>Inundation Depth</th></tr><tbody><tr><td>${Latitude}</td><td>${Longitude}</td><td>3</td></tr></tbody></table>');
994                break;
995            }
996            tsunamiFeature.setInfoTemplate(infoTemplate);
997            popupFeatures.push(tsunamiFeature);
998            _this9.map.infoWindow.setFeatures(popupFeatures);
999            _this9.map.infoWindow.show(point);
1000          }
1001        });
1002      }
1003    }, {
1004      key: 'validateInInundationZone',
1005      value: function validateInInundationZone(point) {
1006        var _this10 = this;
1007
1008        var standardsVersion = _storesCriteriaStore.criteriaStore.getState().standardsVersion;
1009        var inundationIndentifyTask = new _IdentifyTask['default'](_config['default']['inudationQueryURL_' + standardsVersion]);
1010        var inundationIndentifyParams = new _IdentifyParameters['default']();
1011        inundationIndentifyParams.geometry = point;
1012        inundationIndentifyParams.mapExtent = this.map.extent;
1013        inundationIndentifyParams.layerIds = [4];
1014        inundationIndentifyParams.tolerance = 0;
1015        inundationIndentifyTask.execute(inundationIndentifyParams).then(function (results) {
1016          _this10.setState({ locationInInundationZone: results.length > 0 });
1017        });
1018      }
1019    }, {
1020      key: 'noAddressGeoSelection',
1021      value: function noAddressGeoSelection(point) {
1022        this.search.clear();
1023        var response = {
1024          location: point,
1025          address: {
1026            Address: '',
1027            City: '',
1028            Region: '',
1029            Postal: ''
1030          }
1031        };
1032        _actionsMapActions.mapActions.searchSelectResult.defer(response);
1033      }
1034    }, {
1035      key: 'selectionStateChange',
1036      value: function selectionStateChange(state) {
1037        this.selectionState = state;
1038      }
1039    }, {
1040      key: 'removeLocationMarker',
1041      value: function removeLocationMarker() {
1042        var _this11 = this;
1043
1044        var locationGraphics = [];
1045        _2['default'].forEach(this.map.graphics.graphics, function (graphic) {
1046          if (graphic.symbol && graphic.symbol.url && (graphic.symbol.url.includes(_config['default'].symbols.location) || graphic.symbol.url.includes(_config['default'].symbols.protractor))) {
1047            locationGraphics.push(graphic);
1048          }
1049        });
1050        if (locationGraphics) {
1051          _2['default'].forEach(locationGraphics, function (graphicToRemove) {
1052            _this11.map.graphics.remove(graphicToRemove);
1053          });
1054        }
1055      }
1056    }, {
1057      key: 'setDefaults',
1058      value: function setDefaults() {
1059        this.address = 'default';
1060        this.locationInInundationZone = false;
1061        _actionsCriteriaActions.criteriaActions.riskLevelSelection.defer('default');
1062      }
1063    }, {
1064      key: 'clearMapGraphics',
1065      value: function clearMapGraphics() {
1066        this.map.graphics.clear();
1067      }
1068    }, {
1069      key: 'resetApp',
1070      value: function resetApp() {
1071        this.toggleMapLock(this.selectionState !== 'mapclick');
1072        this.setDefaults();
1073        this.clearTransects();
1074        this.clearMapGraphics();
1075
1076        _actionsCriteriaActions.criteriaActions.resetSite.defer();
1077      }
1078    }, {
1079      key: 'identifySite',
1080      value: function identifySite(geometry) {
1081        var _this12 = this;
1082
1083        var useReverseGeocoder = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
1084        var replaceGraphic = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];
1085
1086        var standardsVersion = _storesCriteriaStore.criteriaStore.getState().standardsVersion;
1087
1088        // Covert geometry coordinates to lat/lng
1089        var coordinates = _webMercatorUtils['default'].xyToLngLat(geometry.x, geometry.y);
1090
1091        var _coordinates = _slicedToArray(coordinates, 2);
1092
1093        var longitude = _coordinates[0];
1094        var latitude = _coordinates[1];
1095
1096        // Set site details
1097        this.site.elevation = 0;
1098        this.site.groundSubsidence = 0;
1099        this.site.latitude = latitude;
1100        this.site.longitude = longitude;
1101
1102        // Create picture marker symbol for Site
1103        var pictureMarkerSymbol = new _PictureMarkerSymbol['default'](_config['default'].symbols.location, 36, 36);
1104        pictureMarkerSymbol.setOffset(9, 18);
1105        // Create picture marker symbol for protractor
1106        var bufferedGeom = _geometryEngine['default'].geodesicBuffer(geometry, 200, 9001); // Buffer geom - cannot rotate on point
1107        var protractor = new _PictureMarkerSymbol['default'](_config['default'].symbols.protractor, 350, 350);
1108
1109        // Promise array to execute
1110        var promises = [];
1111        // Inundation
1112        var inundation = new _IdentifyTask['default'](_config['default']['inudationQueryURL_' + standardsVersion]);
1113        var inundationParams = new _IdentifyParameters['default']();
1114        inundationParams.geometry = geometry;
1115        inundationParams.mapExtent = this.map.extent;
1116        inundationParams.layerIds = [4];
1117        inundationParams.tolerance = 0;
1118        var inundationPromise = inundation.execute(inundationParams);
1119        // GroundSubsidence
1120        var groundSubsidence = new _ImageServiceIdentifyTask['default'](_config['default']['groundSubsidenceQueryURL_' + standardsVersion]);
1121        var groundSubsidenceParams = new _ImageServiceIdentifyParameters['default']();
1122        groundSubsidenceParams.geometry = geometry;
1123        groundSubsidenceParams.returnGeometry = false;
1124        var groundSubsidencePromise = groundSubsidence.execute(groundSubsidenceParams);
1125        // MHW Elevation
1126        var mhw = new _ImageServiceIdentifyTask['default'](_config['default']['pointElevationURL_' + standardsVersion]);
1127        var mhwParams = new _ImageServiceIdentifyParameters['default']();
1128        mhwParams.geometry = geometry;
1129        mhwParams.returnGeometry = false;
1130        var mhwPromise = mhw.execute(mhwParams);
1131        // NAVD 88 Elevation
1132        var navd88 = new _ImageServiceIdentifyTask['default'](_config['default']['navd88URL_' + standardsVersion]);
1133        var navd88Params = new _ImageServiceIdentifyParameters['default']();
1134        navd88Params.geometry = geometry;
1135        navd88Params.returnGeometry = false;
1136        var navd88Promise = navd88.execute(navd88Params);
1137        // If using reverse geocoder - additional promise, else ready to execute
1138        if (useReverseGeocoder) {
1139          var reverseGeocodePromise = (0, _esriRequest2['default'])({
1140            url: _config['default'].reverseGeocoderURL,
1141            content: {
1142              f: 'json',
1143              distance: 200,
1144              outSR: JSON.stringify({ wkid: 102100 }),
1145              location: JSON.stringify(geometry)
1146            },
1147            handleAs: 'json',
1148            callbackParamName: 'callback'
1149          });
1150          promises.push(inundationPromise, groundSubsidencePromise, mhwPromise, navd88Promise, reverseGeocodePromise);
1151        } else {
1152          promises.push(inundationPromise, groundSubsidencePromise, mhwPromise, navd88Promise);
1153        }
1154
1155        Promise.all(promises).then(function (responses) {
1156          var _responses = _slicedToArray(responses, 5);
1157
1158          var inundationResult = _responses[0];
1159          var groundSubsidenceResult = _responses[1];
1160          var mhwResult = _responses[2];
1161          var navdResult = _responses[3];
1162          var reverseGeocodeResult = _responses[4];
1163
1164          // Handle if a reverseGeocoder promise was present
1165          if (reverseGeocodeResult) {
1166            _actionsMapActions.mapActions.searchSelectResult(reverseGeocodeResult);
1167            var _reverseGeocodeResult$address = reverseGeocodeResult.address;
1168            var Address = _reverseGeocodeResult$address.Address;
1169            var City = _reverseGeocodeResult$address.City;
1170            var Region = _reverseGeocodeResult$address.Region;
1171
1172            _this12.search.set('value', Address + ', ' + City + ', ' + Region);
1173          }
1174
1175          // Handle data
1176          _this12.locationInInundationZone = inundationResult.length > 0;
1177          _this12.site.elevation = isNaN(mhwResult.value) ? 'Not Available' : (0, _utilsUtilities.standardsConversionFeetMeters)(Number(mhwResult.value), 'si', _this12.measurement);
1178          _this12.site.groundSubsidence = isNaN(groundSubsidenceResult.value) ? 0 : (0, _utilsUtilities.standardsConversionFeetMeters)(Number(groundSubsidenceResult.value), 'imperial', _this12.measurement);
1179          _this12.site.navd88 = isNaN(navdResult.value) ? 0 : (0, _utilsUtilities.standardsConversionFeetMeters)(Number(navdResult.value), 'imperial', _this12.measurement);
1180
1181          // Configure labels
1182          var mhwLabel = 'Elevation (MHW) ' + (_this12.measurement === 'imperial' ? '(ft.)' : '(m)');
1183          var navd88Label = 'Elevation (NAVD88) ' + (_this12.measurement === 'imperial' ? '(ft.)' : '(m)');
1184          var groundSubsidenceLabel = 'Ground Subsidence ' + (_this12.measurement === 'imperial' ? '(ft.)' : '(m)');
1185          // Configure Info Template
1186          var infoTemplate = new _InfoTemplate['default']();
1187          infoTemplate.setTitle('Site Information');
1188
1189          var content = '<table><thead><tr><th>Latitude</th><th>Longitude</th><th>' + mhwLabel + '</th><th>' + navd88Label + '</th></tr></thead' + ('<tbody><tr><td>' + _this12.site.latitude + '</td><td>' + _this12.site.longitude + '</td><td>' + _this12.site.elevation + '</td><td>' + _this12.site.navd88 + '</td></tr></tbody></table>') + ('<p><b>' + groundSubsidenceLabel + ':</b>' + _this12.site.groundSubsidence + '</p>' + _this12.cretePopupRunupDataTextNote());
1190
1191          infoTemplate.setContent(content);
1192          // If we need to replace the graphic
1193          if (replaceGraphic) {
1194            var graphic = _this12.map.graphics.graphics.find(function (g) {
1195              return g.hasOwnProperty('attributes') && typeof g.attributes === 'object' && g.attributes.hasOwnProperty('searchTheme') && g.attributes.searchTheme === 'arcgisSearch';
1196            });
1197            graphic.setInfoTemplate(infoTemplate);
1198            var protractorGraphic = new _Graphic['default'](bufferedGeom, protractor, _this12.site);
1199            protractorGraphic.hide();
1200            _this12.map.graphics.add(protractorGraphic);
1201          } else {
1202            var graphic = new _Graphic['default'](geometry, pictureMarkerSymbol, _this12.site, infoTemplate);
1203            var protractorGraphic = new _Graphic['default'](bufferedGeom, protractor, _this12.site);
1204            _this12.map.graphics.add(protractorGraphic);
1205            protractorGraphic.hide();
1206            _this12.map.graphics.add(graphic);
1207          }
1208          _this12.emitChange();
1209        })['catch'](function (err) {
1210          if (useReverseGeocoder) {
1211            _this12.identifySite(geometry, false, false);
1212          }
1213        });
1214        this.toggleMapLock(true);
1215        if (this.address === 'default' || this.riskLevel === 'default') {
1216          _actionsMapActions.mapActions.toggleWarningCriteria(false);
1217        } else {
1218          _actionsMapActions.mapActions.toggleWarningCriteria(true);
1219        }
1220      }
1221    }, {
1222      key: 'updateModal',
1223      value: function updateModal(obj) {
1224        Object.assign(this.modal, obj);
1225      }
1226    }]);
1227
1228    return MapStore;
1229  })();
1230
1231  var mapStore = _alt['default'].createStore(MapStore, 'MapStore');
1232  exports.mapStore = mapStore;
1233});
1234//# sourceMappingURL=MapStore.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.