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.