{"version":3,"sources":["./src/app/services/config/config.service.provider.ts","./src/app/components/drag-zoom/drag-zoom.component.ts","./src/app/components/drag-zoom/drag-zoom.component.html","./src/app/services/query/query.service.ts","./src/app/services/toc/table-of-contents.service.ts","./src/app/components/widgets/table-of-contents/table-of-contents.component.ts","./src/app/components/widgets/table-of-contents/table-of-contents.component.html","./src/app/services/attribute/attribute.service.ts","./src/app/modules/app-routing.module.ts","./src/environments/environment.ts","./src/app/components/privacy-snackbar/privacy-snackbar.component.ts","./src/app/components/privacy-snackbar/privacy-snackbar.component.html","./src/app/components/dialog/dialog.component.ts","./src/app/components/dialog/dialog.component.html","./src/app/modules/TagFilterPipe.module.ts","./src/app/components/widgets/print/print-entry.component.ts","./src/app/components/widgets/print/print-entry.component.html","./src/app/components/previous-extent/previous-extent.component.ts","./src/app/components/previous-extent/previous-extent.component.html","./src/app/components/widgets/table-of-contents/dropdown/dropdown.component.ts","./src/app/components/widgets/table-of-contents/dropdown/dropdown.component.html","./src/app/components/widgets/draw/draw-entry.component.ts","./src/app/components/widgets/draw/draw-entry.component.html","./src/app/services/map/map.service.ts","./src/app/components/widgets/checkLocal/checkLocal-entry.component.ts","./src/app/components/widgets/checkLocal/checkLocal-entry.component.html","./src/app/components/widgets/attribute-table/attribute-table-entry.component.ts","./src/app/components/widgets/attribute-table/attribute-table-entry.component.html","./src/app/services/config/config.service.ts","./src/app/components/widgets/select/select-entry.component.ts","./src/app/components/widgets/select/select-entry.component.html","./src/app/modules/widgetContainer.module.ts","./src/app/components/coordinate/coordinate.component.ts","./src/app/components/coordinate/coordinate.component.html","./src/app/models/AGSLayer.ts","./src/app/pipes/tagFilter.pipe.ts","./src/app/components/widgets/topomaps-viewer/topomaps-viewer-entry.component.ts","./src/app/components/widgets/topomaps-viewer/topomaps-viewer-entry.component.html","./src/app/app.component.ts","./src/app/app.component.html","./src/app/services/googleAnalytics/google-analytics.service.ts","./src/app/components/banner/banner.component.ts","./src/app/components/banner/banner.component.html","./src/app/modules/view.module.ts","./src/app/services/layer/layer.service.ts","./src/app/components/widgets/table-of-contents/changelog-dialog/changelog-dialog.component.ts","./src/app/components/widgets/table-of-contents/changelog-dialog/changelog-dialog.component.html","./src/app/components/widgets/table-of-contents/disclaimer-dialog/disclaimer-dialog.component.ts","./src/app/components/widgets/table-of-contents/disclaimer-dialog/disclaimer-dialog.component.html","./src/app/components/widgets/legend/legend-entry.component.ts","./src/app/components/widgets/legend/legend-entry.component.html","./src/app/services/bookmark/bookmark.service.ts","./src/app/components/widgets/featuretable/featuretable-entry.component.ts","./src/app/components/widgets/featuretable/featuretable-entry.component.html","./src/app/services/graphics/graphics.service.ts","./src/app/components/esri-scene-view/esri-scene-view.component.ts","./src/app/components/esri-scene-view/esri-scene-view.component.html","./src/app/components/grid/grid.component.ts","./src/app/components/grid/grid.component.html","./src/app/web-workers/tags.worker.ts","./src/app/services/notification/notification.service.ts","./src/app/components/esri-map-view/esri-map-view.component.ts","./src/app/components/esri-map-view/esri-map-view.component.html","./src/app/components/widgets/add-data/add-data-entry.component.ts","./src/app/components/widgets/add-data/add-data-entry.component.html","./src/app/services/grid/grid.service.ts","./src/app/components/widgets/widget-container/widget-container.component.ts","./src/app/components/widgets/widget-container/widget-container.component.html","./src/app/components/widgets/measure/measure-entry.component.ts","./src/app/components/widgets/measure/measure-entry.component.html","./src/app/components/privacy-dialog/privacy-dialog.component.ts","./src/app/components/privacy-dialog/privacy-dialog.component.html","./src/app/components/widgets/feedback/feedback-entry.component.ts","./src/app/components/widgets/feedback/feedback-entry.component.html","./src/app/services/initialize/initialize-service.ts","./src/app/components/widgets/reorder/reorder-entry.component.ts","./src/app/components/widgets/reorder/reorder-entry.component.html","./src/app/components/widgets/find-location/find-location-entry.component.ts","./src/app/components/widgets/find-location/find-location-entry.component.html","./src/app/components/widgets/traxsreport/traxsreport-entry.component.ts","./src/app/components/widgets/traxsreport/traxsreport-entry.component.html","./src/app/modules/app.module.ts","./src/app/components/widgets/query/query-entry.component.ts","./src/app/components/widgets/query/query-entry.component.html","./src/app/services/identify/identify.service.ts","./src/app/components/widgets/basemap-gallery/basemap-gallery-entry.component.ts","./src/app/components/widgets/basemap-gallery/basemap-gallery-entry.component.html","./src/app/components/widgets/identify/identify-entry.component.ts","./src/app/components/widgets/identify/identify-entry.component.html","./src/app/services/identify/identify-parse.service.ts","./src/app/models/AGSLayerList.ts","./src/app/components/widget-bar/widget-bar.component.ts","./src/app/components/widget-bar/widget-bar.component.html","./src/app/modules/widget.module.ts","./src/main.ts","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["import { ConfigService } from './config.service';\r\n\r\n/**\r\n * This is the provider for the config service.\r\n * It takes the config file in the environments folder and merges it into the config service at run time.\r\n * It overwrites all of the default values in the config file service, unless the config file doesn't have said value\r\n */\r\nexport const ConfigServiceFactory = () => {\r\n const config = new ConfigService();\r\n const browserWindow: any = window || {};\r\n const browserWindowConfig = browserWindow.__config || {};\r\n const win: any = window || {};\r\n\r\n for (const key in browserWindowConfig) {\r\n if (browserWindowConfig.hasOwnProperty(key)) {\r\n config[key] = win.__config[key];\r\n }\r\n }\r\n return config;\r\n};\r\n\r\nexport const ConfigServiceProvider = {\r\n provide: ConfigService,\r\n useFactory: ConfigServiceFactory,\r\n deps: []\r\n};\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component} from '@angular/core';\r\n\r\nimport {MapService} from '../../services/map/map.service';\r\nimport {GraphicsService} from '../../services/graphics/graphics.service';\r\nimport {GoogleAnalyticsService} from '../../services/googleAnalytics/google-analytics.service';\r\nimport esri = __esri;\r\n\r\n/**\r\n * Adds the marque or drag zoom button to the top left of the esri-ui\r\n */\r\n@Component({\r\n selector: 'app-drag-zoom',\r\n templateUrl: './drag-zoom.component.html',\r\n styleUrls: ['./drag-zoom.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DragZoomComponent {\r\n public dragZoomActive = false;\r\n public currentView: any;\r\n private mouseDragEvent: any;\r\n private mouseUpEvent;\r\n private mouseDownEvent;\r\n private graphicsObj = {\r\n initialPt: null,\r\n tmpPoint: null,\r\n geom: [],\r\n drawingActive: false\r\n };\r\n private graphicsLayer: esri.GraphicsLayer;\r\n private polygon;\r\n\r\n constructor(private map: MapService, private graphics: GraphicsService,\r\n private ga: GoogleAnalyticsService, private cd: ChangeDetectorRef) { }\r\n\r\n /**\r\n * Element click event\r\n */\r\n public async onClick() {\r\n this.dragZoomActive = true;\r\n this.onMouseDown();\r\n if ( document.getElementsByTagName('app-root')) {\r\n document.getElementsByTagName('app-root')[0].className += 'marqueZoom';\r\n this.graphicsLayer = await this.graphics.addGraphicsLayer('Zoom');\r\n this.cd.detectChanges();\r\n }\r\n }\r\n\r\n /**\r\n * Controls mouse down event. Engages mouse drag and mouse up events, and sets the initial\r\n * geometry of the graphics object\r\n */\r\n private onMouseDown() {\r\n this.currentView = this.map.getViewRef();\r\n this.mouseDownEvent = this.currentView.on('pointer-down', null, (e: any) => {\r\n this.graphicsObj.initialPt = e;\r\n if (!this.mouseDragEvent) {\r\n this.onMouseDrag();\r\n }\r\n }, (error) => {\r\n this.ga.exception(error, false);\r\n });\r\n this.mouseUpEvent = this.currentView.on('pointer-up', null, () => {\r\n this.zoomTo();\r\n }, (error) => {\r\n this.ga.exception(error, false);\r\n });\r\n }\r\n\r\n /**\r\n * Controls the mouse drag event and continuously redraws the polygon as the user drags the mouse\r\n */\r\n private onMouseDrag() {\r\n this.mouseDragEvent = this.currentView.on('drag', null, async (e: any) => {\r\n try {\r\n const poly = {\r\n color: {r: 222, g: 98, b: 38, a: 0.3},\r\n style: 'none',\r\n outline: {\r\n color: {r: 0, g: 0, b: 0, a: 1.0},\r\n style: 'dash',\r\n width: 0.5,\r\n type: 'simple-line'\r\n }\r\n };\r\n // stops map from being dragged while tool is in use\r\n e.stopPropagation();\r\n const geom = [];\r\n const oldPt = {x: this.graphicsObj.initialPt.x, y: this.graphicsObj.initialPt.y};\r\n geom.push([this.currentView.toMap(oldPt).x, this.currentView.toMap(oldPt).y]);\r\n geom.push([this.currentView.toMap({x: oldPt.x, y: e.y}).x, this.currentView.toMap({x: oldPt.x, y: e.y}).y]);\r\n geom.push([this.currentView.toMap({x: e.x, y: e.y}).x, this.currentView.toMap({x: e.x, y: e.y}).y]);\r\n geom.push([this.currentView.toMap({x: e.x, y: oldPt.y}).x, this.currentView.toMap({x: e.x, y: oldPt.y}).y]);\r\n geom.push(geom[0]);\r\n this.graphicsLayer.removeAll();\r\n this.polygon = this.graphics.createPolygon(geom, poly, this.graphicsLayer);\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Zooms to the polygon the user draws, clears the graphics on the screen and resets everything\r\n * and turns the marque zoom tool off\r\n */\r\n private async zoomTo() {\r\n try {\r\n const poly = await this.polygon;\r\n this.currentView.goTo({\r\n target: poly,\r\n heading: 0,\r\n });\r\n this.graphicsLayer.removeAll();\r\n this.graphics.removeGraphicsLayer(this.graphicsLayer);\r\n document.getElementsByTagName('app-root')[0].classList.remove('marqueZoom');\r\n this.graphicsObj.initialPt = null;\r\n this.graphicsObj.tmpPoint = null;\r\n this.graphicsObj.geom = [];\r\n if (this.mouseDragEvent) {\r\n this.removeMouseDragEvent();\r\n }\r\n if (this.mouseUpEvent) {\r\n this.removeMouseUpEvent();\r\n }\r\n if (this.mouseDownEvent) {\r\n this.removeMouseDownEvent();\r\n }\r\n this.cd.detectChanges();\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * Removes the various mouse events from the dom to stop blocking other tools\r\n */\r\n private removeMouseDragEvent() {\r\n this.mouseDragEvent.remove();\r\n this.mouseDragEvent = null;\r\n }\r\n\r\n private removeMouseUpEvent() {\r\n this.mouseUpEvent.remove();\r\n this.mouseUpEvent = null;\r\n }\r\n\r\n private removeMouseDownEvent() {\r\n this.mouseDownEvent.remove();\r\n this.mouseDownEvent = null;\r\n }\r\n}\r\n","
\r\n \r\n Marque zoom\r\n
\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\nimport {loadModules} from 'esri-loader';\r\n\r\nimport {QueryObject, QueryObjectResults} from '../../interfaces/query';\r\nimport {ConfigService} from '../config/config.service';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {GridService} from '../../services/grid/grid.service';\r\nimport esri = __esri;\r\n\r\n/**\r\n * Formats and sends server queries to the appropriate server\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QueryService {\r\n public geometrySvcUrl: string;\r\n public mapWkid = 102100; // default value, can overwrite in input queryTaskObj\r\n public projectedGeom: esri.Geometry;\r\n private findLocationObservable = new BehaviorSubject(null);\r\n public setFindLocationObservable(value) { this.findLocationObservable.next(value); }\r\n public getFindLocationObservable() { return this.findLocationObservable.asObservable(); }\r\n\r\n\r\n constructor(private http: HttpClient, private config: ConfigService, private grid: GridService) {}\r\n\r\n public async queryData(queryTaskObj: QueryObject) {\r\n try {\r\n const [Extent, SpatialReference] = await loadModules([\r\n 'esri/geometry/Extent',\r\n 'esri/geometry/SpatialReference'\r\n ]);\r\n\r\n // Create queryTaskResults object to hold the input parameters to the query task\r\n // plus the output created from the query task.\r\n const queryTaskResults: QueryObjectResults = {\r\n queryResults: {\r\n isQuerySuccessful: false // set initial status\r\n },\r\n queryTaskObj\r\n };\r\n\r\n if (queryTaskObj.layerType && queryTaskObj.layerType === 'Raster Layer') {\r\n // Use identify for Raster Layers\r\n return await this.rasterIdentify(queryTaskObj);\r\n }\r\n\r\n // Get map wkid if needed\r\n if (queryTaskObj.mapWkid) {\r\n this.mapWkid = queryTaskObj.mapWkid;\r\n }\r\n\r\n if (!queryTaskObj.queryMethod || queryTaskObj.queryMethod.toUpperCase() !== 'POST') {\r\n queryTaskObj.queryMethod = 'GET';\r\n }\r\n\r\n if (queryTaskObj.geometry) {\r\n // Check to see if geometry needs to be projected\r\n // If geometry input, check that the spatial reference of the layer is the same as the map\r\n let layerWkid;\r\n if (queryTaskObj.layerElem && queryTaskObj.layerElem.serviceSpatialReference &&\r\n this.mapWkid &&\r\n (queryTaskObj.layerElem.serviceSpatialReference.wkid !== this.mapWkid)) {\r\n layerWkid = queryTaskObj.layerElem.serviceSpatialReference.wkid;\r\n } else {\r\n if (queryTaskObj.wkid && this.mapWkid && (queryTaskObj.wkid !== this.mapWkid)) {\r\n layerWkid = queryTaskObj.wkid;\r\n }\r\n }\r\n // ****Don't see a need to project data unless your querying data that is not in a GIS service like a local file\r\n //layerWkid = false;\r\n if (layerWkid && queryTaskObj.layerElem && queryTaskObj.layerElem.isLocalFile) {\r\n // geometry needs to be projected/transformed\r\n const extentArr = queryTaskObj.geometry.split(',');\r\n if (extentArr && extentArr.length === 4) {\r\n const layerExt = new Extent({xmin: Number(extentArr[0]), ymin : Number(extentArr[1]),\r\n xmax: Number(extentArr[2]), ymax: Number(extentArr[3]),\r\n spatialReference: new SpatialReference({ wkid: this.mapWkid})});\r\n if (layerExt) {\r\n // Project the geometry string to the spatial reference of the layer in order to query the layer\r\n const projectedGeom = await this.projectGeometry(layerExt, queryTaskObj.layerElem.serviceSpatialReference);\r\n if (projectedGeom) {\r\n queryTaskObj.geometry = this.getMapExtentString(projectedGeom);\r\n }\r\n }\r\n }\r\n }\r\n } \r\n if (queryTaskObj.layerElem && queryTaskObj.layerElem.isLocalFile) {\r\n // call localfile queryData with geomMapExtentStr\r\n return await this.queryLocalData(queryTaskObj, queryTaskResults);\r\n } else {\r\n // Call service layer queryData\r\n return await this.queryServiceLayer(queryTaskObj, queryTaskResults);\r\n }\r\n\r\n } catch (error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public async queryServiceLayer(queryTaskObj: any, queryTaskResults: any, buildQuery?: boolean) {\r\n try {\r\n const queryParams: FormData = new FormData();\r\n let jsonReq: string;\r\n \r\n // Build query task based on input parameters in the queryTaskObj\r\n if (queryTaskObj.layerTaskUrl !== undefined) {\r\n // Set default values if none specified\r\n if (queryTaskObj.returnGeometry === undefined) {\r\n // only returnGeometry when needed\r\n queryTaskObj.returnGeometry = false;\r\n }\r\n if (queryTaskObj.returnType === undefined) {\r\n queryTaskObj.returnType = 'FEATURES';\r\n }\r\n // if a returnType was specified (i.e COUNT, OBJECTIDS then set the appropriate properties)\r\n switch (queryTaskObj.returnType.toLowerCase()) {\r\n case 'count': // return count only\r\n queryTaskObj.countOnly = true;\r\n queryTaskObj.idsOnly = false;\r\n queryTaskObj.extentOnly = false;\r\n queryParams.append('countOnly', 'true');\r\n break;\r\n case 'objectids': // return objectids only\r\n queryTaskObj.idsOnly = true;\r\n queryTaskObj.countOnly = false;\r\n queryTaskObj.extentOnly = false;\r\n queryParams.append('idsOnly', 'true');\r\n break;\r\n case 'extent': // return extent of features \r\n queryTaskObj.extentOnly = true;\r\n queryTaskObj.idsOnly = false;\r\n queryTaskObj.countOnly = false;\r\n queryParams.append('extentOnly', 'true');\r\n break;\r\n default: // default returns features that meet criteria\r\n queryTaskObj.idsOnly = false;\r\n queryTaskObj.countOnly = false;\r\n queryTaskObj.extentOnly = false;\r\n break;\r\n }\r\n if ((! queryTaskObj.outFields) && (! queryTaskObj.countOnly) &&\r\n (! queryTaskObj.idsOnly) && (! queryTaskObj.returnDistinctValues) && (!queryTaskObj.extentOnly)) {\r\n // if outFields not specified, default to all fields (should only do this when necessary)\r\n queryParams.append('outFields', '*');\r\n queryTaskObj.outFields = ['*'];\r\n }\r\n\r\n // add datetime query to get around ESRI bug\r\n // [ NIM086349 - Alternate Query (Get) requests fail in Version 10.1 SP1 ]\r\n // http://forums.arcgis.com/threads/73932-query.task-intermitent-error-Unable-to-complete-operation\r\n const currDtTime: number = (new Date()).getTime();\r\n\r\n if (queryTaskObj.geometry === undefined &&\r\n (queryTaskObj.whereClause === undefined || queryTaskObj.whereClause.trim().length < 1)) {\r\n // whereClause is required unless this is a spatial query\r\n queryTaskObj.whereClause = currDtTime + '=' + currDtTime;\r\n }\r\n\r\n let queryStr = '';\r\n const objKeys = Object.keys(queryTaskObj);\r\n for (const key of objKeys) {\r\n if (queryTaskObj[key] !== undefined) {\r\n switch (key.toLowerCase()) {\r\n case 'whereclause':\r\n queryStr = queryStr + '&where=' + queryTaskObj[key];\r\n queryParams.append('where', queryTaskObj[key]);\r\n break;\r\n case 'outfields':\r\n queryStr = queryStr + '&outFields=' + queryTaskObj[key];\r\n queryParams.append('outFields', queryTaskObj[key]);\r\n break;\r\n case 'objectids':\r\n queryStr = queryStr + '&objectids=' + queryTaskObj[key];\r\n queryParams.append('objectids', queryTaskObj[key]);\r\n break;\r\n case 'relationshipclassids':\r\n queryStr = queryStr + '&relationshipId=' + queryTaskObj[key];\r\n queryParams.append('relationshipId', queryTaskObj[key]);\r\n break;\r\n case 'geometry':\r\n const geomStr = queryTaskObj[key];\r\n if (geomStr)\r\n {\r\n geomStr.replace(/['\"]+/g, '');\r\n }\r\n queryStr = queryStr + '&geometry=' + geomStr;\r\n queryParams.append('geometry', geomStr);\r\n if (this.mapWkid) {\r\n queryStr = queryStr + '&inSR=' + this.mapWkid;\r\n queryParams.append('inSR', this.mapWkid.toString());\r\n } \r\n break;\r\n case 'geometrytype':\r\n queryStr = queryStr + '&geometryType=' + queryTaskObj[key];\r\n queryParams.append('geometryType', queryTaskObj[key]);\r\n break;\r\n case 'spatialrelationship':\r\n queryStr = queryStr + '&spatialRelationship=' + queryTaskObj[key];\r\n queryParams.append('spatialRelationship', queryTaskObj[key]);\r\n break;\r\n case 'geometryprecision':\r\n queryStr = queryStr + '&geometryPrecision=' + queryTaskObj[key];\r\n queryParams.append('geometryPrecision', queryTaskObj[key]);\r\n break;\r\n case 'orderbyfields':\r\n queryStr = queryStr + '&orderByFields=' + queryTaskObj[key];\r\n queryParams.append('orderByFields', queryTaskObj[key]);\r\n break;\r\n case 'returndistinctvalues':\r\n queryStr = queryStr + '&returnDistinctValues=' + queryTaskObj[key];\r\n queryParams.append('returnDistinctValues', queryTaskObj[key]);\r\n break;\r\n case 'returngeometry':\r\n queryStr = queryStr + '&returnGeometry=' + queryTaskObj[key];\r\n queryParams.append('returngeometry', queryTaskObj[key]);\r\n if (this.mapWkid) {\r\n queryStr = queryStr + '&outSR=' + this.mapWkid;\r\n queryParams.append('outSR', this.mapWkid.toString());\r\n }\r\n break;\r\n case 'startrow':\r\n queryStr = queryStr + '&resultOffset=' + Number(queryTaskObj[key]);\r\n queryParams.append('resultOffset', queryTaskObj[key]);\r\n break;\r\n case 'numreturnrows':\r\n queryStr = queryStr + '&resultRecordCount=' + Number(queryTaskObj[key]);\r\n queryParams.append('resultRecordCount', queryTaskObj[key]);\r\n break;\r\n case 'countonly':\r\n queryStr = queryStr + '&returnCountOnly=' + queryTaskObj[key];\r\n queryParams.append('returnCountOnly', queryTaskObj[key]);\r\n break;\r\n case 'extentonly':\r\n queryStr = queryStr + '&returnExtentOnly=' + queryTaskObj[key];\r\n queryParams.append('returnExtentOnly', queryTaskObj[key]);\r\n break;\r\n case 'idsonly':\r\n queryStr = queryStr + '&returnIdsOnly=' + queryTaskObj[key];\r\n queryParams.append('returnIdsOnly', queryTaskObj[key]);\r\n break;\r\n case 'token':\r\n queryStr = queryStr + '&token=' + queryTaskObj[key];\r\n queryParams.append('token', queryTaskObj[key]);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n // console.log('queryStr: ' + queryStr);\r\n // Build query and parameters\r\n let queryType: string;\r\n if (queryTaskObj.relationshipClassIDS || queryTaskObj.relationshipClassIDS === 0) {\r\n queryType = 'queryRelatedRecords?';\r\n } else {\r\n queryType = 'query?';\r\n }\r\n jsonReq = queryTaskObj.layerTaskUrl + '/' + queryType;\r\n\r\n if (queryTaskObj.queryMethod === 'GET') {\r\n jsonReq = queryTaskObj.layerTaskUrl + '/' + queryType + queryStr + '&f=pjson';\r\n }\r\n queryTaskObj.jsonReq = jsonReq;\r\n\r\n queryParams.append('f', 'pjson');\r\n\r\n let results;\r\n if (buildQuery === undefined || buildQuery === false ) {\r\n if (queryTaskObj.queryMethod === 'POST') {\r\n const returnValue = await this.postRestApiData(jsonReq, queryParams);\r\n if (returnValue) {\r\n results = this.formatResponseData(queryTaskResults, returnValue);\r\n }\r\n return results;\r\n } else {\r\n const returnValue = await this.getRestApiData(jsonReq);\r\n if (returnValue) {\r\n results = this.formatResponseData(queryTaskResults, returnValue);\r\n }\r\n return results;\r\n }\r\n } else {\r\n queryTaskResults.queryResults.isQuerySuccessful = false;\r\n queryTaskResults.queryResults.errorMessage = 'Invalid input parameters: layer url';\r\n return queryTaskResults;\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public async queryLocalData(queryTaskObj: any, queryTaskResults: any) {\r\n try {\r\n const [Extent, SpatialReference, GeometryEngine] = await loadModules([\r\n 'esri/geometry/Extent',\r\n 'esri/geometry/SpatialReference',\r\n 'esri/geometry/geometryEngine'\r\n ]);\r\n let areFeatsInExtent = false;\r\n const layerElem = queryTaskObj.layerElem;\r\n const geomMapExtStr = queryTaskObj.geometry;\r\n let geomMapExt;\r\n // let featLay = layerElem.featureLayer;\r\n let returnValue: any = {};\r\n let results;\r\n // Create extent object if geometry passed in\r\n if (geomMapExtStr && layerElem.spatialReference && layerElem.spatialReference.wkid) {\r\n const extentArr = queryTaskObj.geometry.split(',');\r\n if (extentArr && extentArr.length === 4) {\r\n geomMapExt = new Extent({xmin: Number(extentArr[0]), ymin: Number(extentArr[1]),\r\n xmax: Number(extentArr[2]), ymax: Number(extentArr[3]),\r\n spatialReference: new SpatialReference({ wkid: layerElem.spatialReference.wkid})});\r\n }\r\n }\r\n if (layerElem.featureLayer && layerElem.featureLayer.source\r\n && layerElem.featureLayer.source.items) {\r\n const layFeats = layerElem.featureLayer.source.items;\r\n switch (queryTaskObj.returnType.toUpperCase()) {\r\n case 'FEATSEXIST': case 'COUNTONLY':\r\n let featCount = 0;\r\n if (geomMapExt) {\r\n for (const feature of layFeats) {\r\n // Check for any feature falling in current extent\r\n if (GeometryEngine.intersects(geomMapExt, feature.geometry)) {\r\n areFeatsInExtent = true;\r\n if (queryTaskObj.returnType.toUpperCase() === 'FEATSEXIST') {\r\n returnValue.featuresExist = areFeatsInExtent;\r\n break;\r\n }\r\n featCount++;\r\n }\r\n }\r\n returnValue.featuresExist = areFeatsInExtent;\r\n returnValue.count = featCount;\r\n } else {\r\n returnValue.error = {message: 'Invalid geometry'};\r\n }\r\n results = this.formatResponseData(queryTaskResults, returnValue);\r\n break;\r\n default: // default is to return features\r\n const layFeatsInExtent = [];\r\n if (geomMapExt) {\r\n for (const feature of layFeats) {\r\n // Check for any feature falling in current extent\r\n if (GeometryEngine.intersects(geomMapExt, feature.geometry)) {\r\n layFeatsInExtent.push(feature);\r\n }\r\n }\r\n returnValue = layFeatsInExtent;\r\n } else {\r\n // return all feats\r\n returnValue = layFeats;\r\n }\r\n const outFeatureSet = this.formatFeatureSet(layerElem.fileType, returnValue);\r\n results = this.formatResponseData(queryTaskResults, outFeatureSet);\r\n break;\r\n }\r\n return results;\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public formatFeatureSet(fileType: string, featureSetArr: any) {\r\n const outFeatureSet: any = {};\r\n let fields;\r\n let geometryType;\r\n let displayFieldName;\r\n let objectIdFieldName;\r\n let spatialReference;\r\n if (featureSetArr) {\r\n outFeatureSet.featureCount = featureSetArr.length;\r\n const feats = [];\r\n for (const feature of featureSetArr) {\r\n feats.push({attributes: feature.attributes,\r\n geometry: feature.geometry });\r\n if (feature.layer) {\r\n fields = feature.layer.fields;\r\n geometryType = feature.layer.geometryType;\r\n if (feature.layer.objectIdField) {\r\n objectIdFieldName = feature.layer.objectIdField;\r\n }\r\n if (feature.layer.spatialReference) {\r\n spatialReference = feature.layer.spatialReference;\r\n }\r\n if (feature.layer.displayField) {\r\n displayFieldName = feature.layer.displayField;\r\n } else {\r\n if (feature.layer.objectIdField) {\r\n displayFieldName = feature.layer.objectIdField;\r\n } else {\r\n displayFieldName = fields[0].name;\r\n }\r\n }\r\n }\r\n }\r\n outFeatureSet.features = feats;\r\n let newFields = [];\r\n if (fields) {\r\n for (const field of fields) {\r\n if (field.name && (field.name !== objectIdFieldName) &&\r\n (field.name.toLowerCase() !== 'shape')) {\r\n newFields.push(field);\r\n }\r\n }\r\n if (newFields && (newFields.length < 1) && fields && (fields.length > 0)) {\r\n // Only fields in this layer, may be objectid and shape fields so add the original\r\n // fields to newFields so some attribute will show for this layer.\r\n newFields = fields;\r\n }\r\n }\r\n outFeatureSet.fields = newFields;\r\n outFeatureSet.geometryType = geometryType;\r\n outFeatureSet.displayFieldName = displayFieldName;\r\n if (objectIdFieldName) {\r\n outFeatureSet.objectIdFieldName = objectIdFieldName;\r\n }\r\n if (spatialReference) {\r\n outFeatureSet.spatialReference = spatialReference;\r\n }\r\n }\r\n return outFeatureSet;\r\n\r\n }\r\n\r\n public formatResponseData(queryTaskResults: QueryObjectResults, returnValue: any) {\r\n const queryTaskObj = queryTaskResults.queryTaskObj;\r\n\r\n if (returnValue !== undefined) {\r\n if (returnValue.error === undefined) {\r\n queryTaskResults.queryResults.isQuerySuccessful = true;\r\n if (queryTaskObj.returnType === undefined) {\r\n queryTaskObj.returnType = 'FEATURES';\r\n }\r\n if (queryTaskObj.returnType) {\r\n switch (queryTaskObj.returnType.toUpperCase()) {\r\n case 'COUNT':\r\n queryTaskResults.queryResults.featureCount = returnValue.count;\r\n break;\r\n case 'FEATSEXIST':\r\n queryTaskResults.queryResults.featuresExist = returnValue.featuresExist;\r\n break;\r\n case 'OBJECTIDS':\r\n if (returnValue.objectIds) {\r\n queryTaskResults.queryResults.objectIdArr = returnValue.objectIds;\r\n queryTaskResults.queryResults.objectIdFieldName = returnValue.objectIdFieldName;\r\n queryTaskResults.queryResults.objectidCount = returnValue.objectIds.length;\r\n } else {\r\n queryTaskResults.queryResults.objectIdArr = [];\r\n queryTaskResults.queryResults.objectIdFieldName = '';\r\n queryTaskResults.queryResults.objectidCount = 0;\r\n }\r\n break;\r\n default:\r\n // Default return type is a featureSet\r\n queryTaskResults.queryResults.featureSet = returnValue;\r\n if (queryTaskResults.queryResults.featureSet\r\n && queryTaskResults.queryResults.featureSet.features) {\r\n queryTaskResults.queryResults.exceededTransferLimit\r\n = queryTaskResults.queryResults.featureSet.exceededTransferLimit;\r\n\r\n if (queryTaskResults.queryResults.featureSet.features) {\r\n queryTaskResults.queryResults.featureCount\r\n = queryTaskResults.queryResults.featureSet.features.length;\r\n } else {\r\n // No features for this query\r\n console.log('No features for this query. '\r\n + queryTaskObj.layerElem.serviceLayerID.toUpperCase());\r\n queryTaskResults.queryResults.featureCount = 0;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n } else {\r\n // Error\r\n queryTaskResults.queryResults.isQuerySuccessful = false;\r\n queryTaskResults.queryResults.errorMessage = returnValue.error.message;\r\n queryTaskResults.queryResults.error = returnValue.error;\r\n }\r\n }\r\n return queryTaskResults;\r\n }\r\n\r\n public async getRestApiData(jsonReq: string) {\r\n try {\r\n return await this.http.get(jsonReq).toPromise();\r\n } catch (error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public async postRestApiData(svcUrl: string, args: any) {\r\n try {\r\n const options = {};\r\n return await this.http.post(svcUrl, args, options).toPromise();\r\n } catch (error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n // Projection functions\r\n public async projectGeometry(fromGeomObj: esri.Geometry, toSpatialRef: esri.SpatialReference) {\r\n try {\r\n const [SpatialReference, WebMercatorUtils] = await loadModules([\r\n 'esri/geometry/SpatialReference',\r\n 'esri/geometry/support/webMercatorUtils'\r\n ]);\r\n if (fromGeomObj.spatialReference && toSpatialRef &&\r\n fromGeomObj.spatialReference.wkid !== toSpatialRef.wkid) {\r\n const toSpatialRefNew = new SpatialReference({wkid: toSpatialRef.wkid});\r\n const canProj: boolean = WebMercatorUtils.canProject(fromGeomObj.spatialReference, toSpatialRefNew);\r\n if (canProj) {\r\n this.projectedGeom = WebMercatorUtils.project(fromGeomObj, toSpatialRef);\r\n return fromGeomObj;\r\n } else {\r\n return await this.projectGeometrySvc(fromGeomObj, toSpatialRefNew);\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public async projectGeometrySvc(fromGeomObj: esri.Geometry, toSpatialRef: esri.SpatialReference) {\r\n try {\r\n const [SpatialReference, GeometryService, ProjectParameters] = await loadModules([\r\n 'esri/geometry/SpatialReference',\r\n 'esri/tasks/GeometryService',\r\n 'esri/tasks/support/ProjectParameters'\r\n ]);\r\n // Project data using geometry service\r\n if ((!this.geometrySvcUrl) && this.config\r\n && this.config.geometryServer) {\r\n this.geometrySvcUrl = this.config.geometryServer;\r\n }\r\n if (this.geometrySvcUrl) {\r\n const geomSvc = new GeometryService({url: this.geometrySvcUrl});\r\n const params = new ProjectParameters();\r\n const toSpatialRefNew = new SpatialReference({wkid: toSpatialRef.wkid});\r\n params.geometries = [fromGeomObj];\r\n params.outSR = toSpatialRefNew; // Not sure if this one is needed\r\n params.outSpatialReference = toSpatialRefNew;\r\n // params.transformation = transformation;\r\n const projectedGeoms = await geomSvc.project(params);\r\n // The promise resolves to the value stored in projectedGeoms\r\n return projectedGeoms[0]; // return 1st geometry object since only 1 is passed in\r\n } else {\r\n console.log('No geometry service');\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public getMapExtentString(geomObj) {\r\n return geomObj.xmin.toString() + ',' + geomObj.ymin.toString() + ',' + geomObj.xmax.toString() + ','\r\n + geomObj.ymax.toString();\r\n }\r\n\r\n /**\r\n * Format the geometry objects\r\n */\r\n public getESRIGeometryObj(featGeom){\r\n let geometryObj;\r\n switch(featGeom.type) {\r\n case 'point':\r\n geometryObj = {\r\n geometry: 'x: ' + featGeom.x + ', y: ' + featGeom.y,\r\n geometryType: 'esriGeometryPoint'\r\n }\r\n break;\r\n case 'polyline':\r\n geometryObj = {\r\n geometry: '{paths:' + JSON.stringify(featGeom.paths) + '}',\r\n geometryType: 'esriGeometryPolyline'\r\n }\r\n break;\r\n case 'polygon':\r\n geometryObj = {\r\n geometry : '{rings:' + JSON.stringify(featGeom.rings) + '}',\r\n geometryType: 'esriGeometryPolygon'\r\n }\r\n break;\r\n default:\r\n geometryObj = {\r\n geometry : '{rings:' + JSON.stringify(featGeom.rings) + '}',\r\n geometryType: 'esriGeometryEnvelope'\r\n }\r\n break;\r\n }\r\n return geometryObj;\r\n }\r\n\r\n /**\r\n * Sends the identify request for a raster layer\r\n */\r\n public async rasterIdentify(queryObj: any) {\r\n try {\r\n let url = queryObj.layerTaskUrl + '/identify?geometry=' + queryObj.geometry\r\n + '&geometryType=esriGeometryPoint&layers=all:' + queryObj.layerID\r\n + '&layerDefs=&time=&layerTimeOptions=&tolerance=0&mapExtent='\r\n + queryObj.extent.xmin + ',' + queryObj.extent.ymin + ',' + queryObj.extent.xmax + ','\r\n + queryObj.extent.ymax + '&imageDisplay=' + queryObj.viewSize[0] + ',' + queryObj.viewSize[1]\r\n + ',96' + '&returnGeometry=false&maxAllowableOffset=&geometryPrecision='\r\n + '&dynamicLayers=&returnZ=false&returnM=false&gdbVersion==&f=pjson';\r\n if (queryObj.token) {\r\n url = url + '&token=' + queryObj.token;\r\n }\r\n let data: any = await this.http.get(url).toPromise();\r\n data = data.results;\r\n if (data && data[0]) {\r\n if (data[0].attributes) {\r\n if (data[0].attributes.COUNT) {\r\n delete data[0].attributes.COUNT;\r\n }\r\n if (data[0].attributes.count) {\r\n delete data[0].attributes.count;\r\n }\r\n if (data[0].attributes['Class value']) {\r\n delete data[0].attributes['Class value'];\r\n }\r\n if (data[0].attributes['Class Value']) {\r\n delete data[0].attributes['Class Value'];\r\n }\r\n if (data[0].attributes['Pixel Value']) {\r\n data[0].attributes.Value =\r\n data[0].attributes['Pixel Value'];\r\n delete data[0].attributes['Pixel Value'];\r\n } else if (data[0].attributes['Pixel value']) {\r\n data[0].attributes.Value =\r\n data[0].attributes['Pixel value'];\r\n delete data[0].attributes['Pixel value'];\r\n }\r\n }\r\n return data;\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Notifys Township/Range/Section whereclause to observers\r\n */\r\n public async notifyTRSObservers(whereClause) {\r\n // Send find location whereClause to components that subscribe to them\r\n this.setFindLocationObservable(whereClause);\r\n // Turn on traxs report widget to display traxs info for this t/r/s\r\n await this.grid.widgetOff('traxsreport');\r\n await this.grid.widgetOn('traxsreport')\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {BehaviorSubject, Subscription} from 'rxjs';\r\n\r\nimport {loadModules} from 'esri-loader';\r\n\r\nimport {AGSLayer} from '../../models/AGSLayer';\r\nimport {AGSLayerList} from '../../models/AGSLayerList';\r\nimport {ConfigService} from '../config/config.service';\r\nimport {MapService} from '../map/map.service';\r\nimport {LayerService} from '../layer/layer.service';\r\nimport {GoogleAnalyticsService} from '../googleAnalytics/google-analytics.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TableOfContentsService {\r\n public themesMenuTrigger;\r\n private tocGroupProperties: {};\r\n private parentNodeArr: any[] = [];\r\n public nodeArray = [];\r\n public currentTheme = '';\r\n public layerElem: AGSLayer = null;\r\n private mapScale: number;\r\n public defaultVisibleLayers: AGSLayer[];\r\n public viewReference: any;\r\n public mapView: any;\r\n private mapObj: any;\r\n public mapExtent: any;\r\n public currLayer: any; // this is a layer on the map\r\n public mapRef: any;\r\n public visibleLayersList: any[] = [];\r\n public parentElemsObj: any = {};\r\n public firstRunFlag = true;\r\n public graphicsLayerAddIndex = 0;\r\n public pointLayerAddIndex = 0;\r\n public lineLayerAddIndex = 0;\r\n public polygonLayerAddIndex = 0;\r\n public rasterLayerIndex = 0;\r\n public otherLayerIndex = 0;\r\n private tagList: any = [];\r\n\r\n // Observables\r\n public layerCheckBoxChanged$;\r\n public layerListUpdated$;\r\n public layerLoaded$;\r\n public layerLoadError$;\r\n public layerNodeArrUpdated$;\r\n public themeDataLoaded$;\r\n public layerServiceInfoComplete$;\r\n private layerCheckBoxChanged = new BehaviorSubject(this.layerElem);\r\n private layerListUpdated = new BehaviorSubject(this.visibleLayersList);\r\n public layerLoaded = new BehaviorSubject(null);\r\n public layerLoadError = new BehaviorSubject(null);\r\n private layerNodeArrUpdated = new BehaviorSubject(this.configService.tocNodeArray);\r\n public themeDataLoaded = new BehaviorSubject(null);\r\n private themeClickObs = new BehaviorSubject(null);\r\n private themeChangeObs = new BehaviorSubject(null);\r\n private layerServiceInfoComplete = new BehaviorSubject(this.layerElem);\r\n public featuretableObservable = new BehaviorSubject(null);\r\n\r\n constructor(private http: HttpClient, private configService: ConfigService, private ga: GoogleAnalyticsService,\r\n private mapService: MapService,\r\n private layerService: LayerService, public agsLayerList: AGSLayerList) {\r\n\r\n this.defaultVisibleLayers = [];\r\n this.layerServiceInfoComplete$ = this.layerServiceInfoComplete.asObservable();\r\n this.layerListUpdated$ = this.layerListUpdated.asObservable();\r\n this.layerLoaded$ = this.layerLoaded.asObservable();\r\n this.layerLoadError$ = this.layerLoadError.asObservable();\r\n this.layerNodeArrUpdated$ = this.layerNodeArrUpdated.asObservable();\r\n this.themeDataLoaded$ = this.themeDataLoaded.asObservable();\r\n this.layerCheckBoxChanged$ = this.layerCheckBoxChanged.asObservable();\r\n }\r\n\r\n public getLayerCheckBoxChanged() { return this.layerCheckBoxChanged.asObservable(); }\r\n public getlayerServiceInfoComplete() { return this.layerServiceInfoComplete.asObservable(); }\r\n public getfeaturetableObservable() { return this.featuretableObservable.asObservable(); }\r\n public getThemeDataLoaded() { return this.themeDataLoaded.asObservable(); }\r\n public setTagList(tagList) { this.tagList = tagList; }\r\n public getTagList() { return this.tagList; }\r\n\r\n public getThemeClickObs() { return this.themeClickObs.asObservable(); }\r\n public getThemeChangeObs() { return this.themeChangeObs.asObservable(); }\r\n\r\n /**\r\n * Set current theme to url parameter if present, otherwise set current theme to initial theme from config.\r\n */\r\n public setupCurrentTheme(themeHash) {\r\n try {\r\n this.currentTheme = this.configService.CurrentTheme;\r\n console.log('Current Theme: ' + this.currentTheme);\r\n let hashRoute;\r\n if (window.location.href) {\r\n const url = window.location.href.split('#');\r\n\r\n if (url[1] && !(url[1].startsWith('access_token'))) {\r\n const hash = url[1].split('?');\r\n if (hash[0]) {\r\n hashRoute = hash[0];\r\n }\r\n }\r\n }\r\n\r\n if (!hashRoute) {\r\n this.currentTheme = this.configService.initialTheme;\r\n } else {\r\n if (this.configService.CurrentTheme) {\r\n this.currentTheme = this.configService.CurrentTheme;\r\n }\r\n else {\r\n this.currentTheme = this.configService.themeUrlParameters[hashRoute];\r\n }\r\n }\r\n this.configService.CurrentTheme = this.currentTheme;\r\n return this.currentTheme;\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n return this.configService.CurrentTheme;\r\n }\r\n }\r\n\r\n /**\r\n * Check for authorization against ArcGIS Portal if necessary\r\n * @param config: Config file to check against\r\n */\r\n public async getAuthorization(config) {\r\n try {\r\n let portalAuthComplete = false;\r\n const appAccessType = config.appAccessType;\r\n if (appAccessType && appAccessType.toLowerCase() === 'org') {\r\n const [\r\n OAuthInfo,\r\n IdentityManager\r\n ] = await loadModules([\r\n 'esri/identity/OAuthInfo',\r\n 'esri/identity/IdentityManager'\r\n ]);\r\n // Get Authorization\r\n const portalUrl = config.PortalUrl;\r\n const portalAppID = config.PortalAppID;\r\n const portalTokenUrl = config.PortalTokenUrl;\r\n\r\n if (portalUrl && portalAppID && portalTokenUrl) {\r\n const info = new OAuthInfo({\r\n appId: portalAppID,\r\n portalUrl,\r\n popup: false\r\n });\r\n\r\n config.portalAuthInfo = info;\r\n IdentityManager.registerOAuthInfos([info]);\r\n const portalCredential = await IdentityManager.checkSignInStatus;\r\n if (portalCredential && portalCredential.token) {\r\n config.portalCredential = portalCredential;\r\n config.portalToken = portalCredential.token;\r\n // console.log('portalToken it toc: ' + config.portalToken);\r\n portalAuthComplete = true;\r\n } else {\r\n const portalUser = await IdentityManager.getCredential(info.portalUrl + '/sharing');\r\n if (portalUser && portalUser.token){\r\n config.portalToken = portalUser.token;\r\n config.portalCredential = portalUser;\r\n }\r\n portalAuthComplete = !!portalUser;\r\n }\r\n }\r\n } else {\r\n portalAuthComplete = true;\r\n }\r\n return portalAuthComplete;\r\n } catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n /**\r\n * Notify observers that theme has changed\r\n */\r\n public themeClick(newTheme) {\r\n let openTocNodes = document.querySelectorAll('.toc-indent:not(.toc-tree-invisible)');\r\n for(let i=0; i {\r\n // // Subscribers are receiving the last themeName observable as soon as they subscribe even\r\n // // if the theme Change already happened. So am sending a null value so new subscribers don't\r\n // // receive previous values. Probably a better way to do this.\r\n // this.themeClickObs.next(null);\r\n // }, 1000);\r\n }\r\n\r\n /**\r\n * Notify observers that theme has changed\r\n */\r\n public themeChange(newTheme) {\r\n console.log('Theme change: ' + newTheme);\r\n this.themeChangeObs.next(newTheme);\r\n }\r\n\r\n\r\n /**\r\n * Gets theme TOC nodes, default visible layers\r\n * @param themeNodeArrFile: config filename for current Theme\r\n * @returns json nodeArr object for theme\r\n */\r\n public async getThemeNodeArr(themeNodeArrFile) {\r\n return await this.http.get(themeNodeArrFile).toPromise();\r\n }\r\n\r\n /**\r\n * Set tocGroupProperties dictionary with properties for TOC folders\r\n * @param TOCGroupPropertyArr: aary of toc group properties\r\n */\r\n public setTOCGroupProperties(TOCGroupPropertyArr: any) {\r\n const tocGroupProperties: {\r\n [index: string]: any; } = {};\r\n for (const tocGrpObj of TOCGroupPropertyArr) {\r\n for (const tocGrpObjKey in tocGrpObj) {\r\n if (tocGrpObj.hasOwnProperty(tocGrpObjKey)) {\r\n tocGroupProperties[tocGrpObjKey] = tocGrpObj[tocGrpObjKey];\r\n }\r\n }\r\n }\r\n this.tocGroupProperties = tocGroupProperties;\r\n return( this.tocGroupProperties);\r\n }\r\n\r\n /**\r\n * Responds to a layer checkbox clicked event\r\n * @param event: layer checkbox clicked event\r\n * @param layerElem: a layer element\r\n */\r\n public async layerCkBoxClicked(event: any, layerElem: AGSLayer) {\r\n this.layerElem = layerElem;\r\n // Set layers dashboard if applicable\r\n layerElem.layerDashboardInfo = this.getlayerDashboardInfo(layerElem);\r\n if (!this.mapView || !this.mapRef) {\r\n this.setMapView(this.mapService.getMapObject(), this.mapService.getViewRef());\r\n }\r\n await this.layerChecked(layerElem);\r\n }\r\n\r\n /**\r\n * Responds to a parent toc element clicked event\r\n * @param parentElem: parent TOC element\r\n */\r\n public parentCkBoxClicked(parentElem: any) {\r\n this.parentChecked(parentElem);\r\n }\r\n\r\n /**\r\n * Responds to a mapscale changed event\r\n */\r\n public mapScaleChangedEvt() {\r\n this.mapScale = this.mapService.getMapScale();\r\n this.areMapLayersInScale(this.mapScale);\r\n }\r\n\r\n /**\r\n * Responds to a mapextent changed event\r\n */\r\n public mapExtentChangedEvt() {\r\n this.mapExtent = this.mapService.getMapExtent();\r\n }\r\n\r\n /**\r\n * Returns the default visible layers for the current theme\r\n */\r\n public getDefaultVisibleLayers() {\r\n // Get default visible layers array\r\n if (this.configService && this.configService.defaultVisibleLayers && this.configService.CurrentTheme) {\r\n return this.configService.defaultVisibleLayers[this.configService.CurrentTheme];\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the mapview, map object, viewReference and current mapscale and mapextent\r\n * @param mapObj: map object\r\n * @param viewObj: view object\r\n */\r\n public setMapView(mapObj: any, viewObj: any) {\r\n // Set the mapview reference\r\n this.mapView = viewObj;\r\n this.mapObj = mapObj;\r\n this.viewReference = viewObj;\r\n this.mapScale = this.mapService.getMapScale();\r\n this.mapExtent = this.mapService.getMapExtent();\r\n }\r\n\r\n public getMapScale() {\r\n return this.mapService.getMapScale();\r\n }\r\n\r\n /**\r\n * Load the default visible layers on the map\r\n */\r\n public showDefaultVisibleLayers() {\r\n // Show defaultVisible Layers on map.\r\n const hashRoute = window.location.hash.split('?');\r\n let viewObjs: Subscription = new Subscription();\r\n let mapRef1: Subscription = new Subscription();\r\n //if (!hashRoute[2] || !(hashRoute[2].length > 0)) {\r\n mapRef1 = this.mapService.getmapLoadedObservable().subscribe( (mapValue1) => {\r\n if (mapValue1) {\r\n viewObjs = this.mapService.getViewRefObservable().subscribe( async (mapValue) => {\r\n if (mapValue) {\r\n this.defaultVisibleLayers = this.getDefaultVisibleLayers();\r\n if (this.defaultVisibleLayers && Array.isArray(this.defaultVisibleLayers) &&\r\n this.defaultVisibleLayers.length > 0) {\r\n for (const defVisLayer of this.defaultVisibleLayers) {\r\n // Create an event object with a checked property to pass to the function\r\n const event: any = {};\r\n event.currentTarget = {};\r\n event.currentTarget.checked = true;\r\n this.setMapView(this.mapService.getMapObject(), this.mapService.getViewRef());\r\n this.layerCkBoxClicked(event, defVisLayer);\r\n if (viewObjs !== undefined) {\r\n viewObjs.unsubscribe();\r\n }\r\n if (mapRef1) {\r\n mapRef1.unsubscribe();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Returns the layers currently on the map\r\n */\r\n public getLayersOnMap() {\r\n this.mapRef = this.mapView.map;\r\n const layerViews = this.mapRef.layers;\r\n if (layerViews !== undefined && layerViews.items !== undefined) {\r\n return layerViews.items;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Checks each layer on map to see if its in scale\r\n * @param mapScale: current mapscale\r\n */\r\n public areMapLayersInScale(mapScale: any) {\r\n const layerItems = this.getLayersOnMap();\r\n if (layerItems !== undefined) {\r\n for (const mapLayerObj of layerItems) {\r\n this.isLayerInScale(mapScale, mapLayerObj);\r\n }\r\n } else {\r\n this.ga.exception('layerViews undefined', false);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the current mapextent\r\n */\r\n public getMapExtent() {\r\n return this.mapView.extent; // mapRef.extent;\r\n }\r\n\r\n /**\r\n * Return whether currLayer is in scale\r\n * @param mapScale: current mapscale\r\n * @param mapLayerObj: map object\r\n */\r\n public isLayerInScale(mapScale: any, mapLayerObj: any) {\r\n // Note: mapLayerObj is a layer (items) from the mapView not an AGSLayer object.\r\n let isInScale: boolean;\r\n // if passed in mapscale parameter is null then use the mapView.scale property if available\r\n if (mapScale === undefined) {\r\n mapScale = this.getMapScale();\r\n }\r\n\r\n if (this.currLayer) {\r\n if (mapLayerObj && mapScale) {\r\n const serviceLayerID = mapLayerObj.id;\r\n isInScale = false;\r\n const currLayer = this.agsLayerList.findLayerInVisibleLayerListByID(serviceLayerID);\r\n const subLayers = mapLayerObj.allSublayers;\r\n if (currLayer ) {\r\n // Change subLayers to subLayers.items in 4.1\r\n if (subLayers && subLayers.items ) {\r\n // Change subLayers to subLayers.items in 4.1\r\n const subLayerItems = subLayers.items;\r\n for (const subLayer of subLayerItems) {\r\n // Check minscale/maxscale properties\r\n // Check all sublayers but skip groupLayers (subLayer.sublayers)\r\n if (subLayer.visible && subLayer.sublayers === undefined) {\r\n // ** Todo: Need to check currLayer minscale/maxscale also\r\n isInScale = (subLayer.minScale === 0 || subLayer.minScale === undefined\r\n || subLayer.minScale >= mapScale)\r\n && (subLayer.maxScale === 0 || subLayer.maxScale === undefined\r\n || subLayer.maxScale <= mapScale) &&\r\n (currLayer.minScale === 0 || currLayer.minScale === undefined\r\n || currLayer.minScale >= mapScale)\r\n && (currLayer.maxScale === 0 || currLayer.maxScale === undefined\r\n || currLayer.maxScale <= mapScale);\r\n if (isInScale && currLayer) {\r\n // if any one of the subLayers are visible and in scale, the layer is in scale\r\n currLayer.isInScale = true;\r\n break;\r\n }\r\n\r\n } // end sublayer.visible //\r\n } // end for\r\n currLayer.isInScale = isInScale;\r\n\r\n } else {\r\n // feature layers and graphic layers may not have sublayers\r\n if (mapLayerObj.minScale !== undefined && mapLayerObj.maxScale !== undefined) {\r\n isInScale = (mapLayerObj.minScale === 0 || mapLayerObj.minScale\r\n === undefined || mapLayerObj.minScale >= mapScale)\r\n && (mapLayerObj.maxScale === 0 || mapLayerObj.maxScale === undefined\r\n || mapLayerObj.maxScale <= mapScale);\r\n currLayer.isInScale = isInScale;\r\n }\r\n }\r\n }\r\n }\r\n return isInScale;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the map object for the input layer\r\n * @param mapRef: map reference\r\n * @param serviceLayerID: serviceLayerID\r\n */\r\n public getLayerFromView(mapRef: any, serviceLayerID: string) {\r\n let mapLayerObj: any;\r\n mapRef = this.mapView.map;\r\n const layerViews = mapRef.layers;\r\n if (layerViews !== undefined) {\r\n const layerItems = layerViews.items;\r\n for (const layerItem of layerItems) {\r\n if (layerItem.id === serviceLayerID) {\r\n mapLayerObj = layerItem;\r\n break;\r\n }\r\n }\r\n }\r\n return mapLayerObj;\r\n }\r\n\r\n /**\r\n * Add or toggle visibility of input layer\r\n * @param layerElem: Input layer element\r\n */\r\n\r\n public async layerChecked(layerElem: AGSLayer) {\r\n try {\r\n // Layer checked in TOC so add or toggle visibility of Layer\r\n if (layerElem === undefined ) {\r\n console.log('layerElem undefined in layerChecked');\r\n return;\r\n }\r\n\r\n // Test to see if layerElem has a mapLayer object created yet, if not create it\r\n if (layerElem && !(layerElem.mapImageLayer || layerElem.featureLayer || layerElem.imageryLayer ||\r\n layerElem.graphicsLayer || layerElem.csvLayer || layerElem.wmsLayer)) {\r\n // The preloaded tocNodeArray contains AGSLayer objects without the functions. This will add the functions to the object.\r\n layerElem = await new AGSLayer(layerElem);\r\n if (layerElem.needsToken && this.configService.portalToken) {\r\n layerElem.token = this.configService.portalToken;\r\n if (layerElem.relateObj && layerElem.relateObj.length > 0) {\r\n // Add tokens to related table for this secure service\r\n layerElem.relateObj.forEach( (relatedTable) => {\r\n relatedTable['token'] = layerElem.token;\r\n });\r\n }\r\n }\r\n\r\n\r\n await layerElem.getMapLayer(); // Get the map object that can be added to the mapview\r\n }\r\n\r\n if (!this.mapView || !this.mapObj) {\r\n this.setMapView(this.mapService.getMapObject(), this.mapService.getViewRef());\r\n }\r\n\r\n if (this.mapView === undefined || this.mapView.map === undefined) {\r\n console.log('in tocservice layerChecked: mapView is undefined');\r\n } else {\r\n this.mapRef = this.mapView.map;\r\n if (layerElem.serviceLayerID !== undefined) {\r\n this.currLayer = this.mapRef.findLayerById(layerElem.serviceLayerID);\r\n if (this.currLayer === undefined) {\r\n // Get the info for this layer from the rest endpoint and update the layer element.\r\n const retLayerElem: any = await this.getLayerServiceInfo(layerElem);\r\n if (retLayerElem) {\r\n let mapObj: any ;\r\n if (!layerElem.minScale && retLayerElem.minScale) {\r\n layerElem.minScale = retLayerElem.minScale;\r\n }\r\n if (!layerElem.maxScale && retLayerElem.maxScale) {\r\n layerElem.maxScale = retLayerElem.maxScale;\r\n }\r\n layerElem.isInScale = layerElem.isLayerInScale(this.getMapScale());\r\n if (layerElem.layerType === 'feature') {\r\n mapObj = layerElem.featureLayer;\r\n } else {\r\n if (layerElem.layerType.toLowerCase().includes('arcgisimageservicelayer') ||\r\n layerElem.layerType.toLowerCase().includes('imagerylayer')) {\r\n mapObj = layerElem.imageryLayer;\r\n }\r\n else {\r\n mapObj = layerElem.mapImageLayer;\r\n }\r\n }\r\n if (layerElem.transparency) {\r\n mapObj.opacity = layerElem.transparency;\r\n }\r\n if (layerElem.labelsVisible != undefined && layerElem.labelsVisible === false) {\r\n // Don't turn labels on by default, let user turn on labels when applicable\r\n //console.log('set labelsVisibe false for: ' + layerElem.id + ' labelsVisible: ' + layerElem.labelsVisible);\r\n mapObj.labelsVisible = false;\r\n }\r\n\r\n // Add layer to map\r\n await this.addLayerToMap(mapObj, retLayerElem);\r\n // Add updated layerElem to dictionary\r\n if (retLayerElem.layerAvailable) {\r\n if (retLayerElem.isChecked) {\r\n this.agsLayerList.addLayerToVisibleLayerList(layerElem);\r\n this.updateLayersList();\r\n }\r\n // Fire layerCheckBoxChanged event for those components subscribed to this.\r\n this.layerCheckBoxChanged.next(layerElem);\r\n }\r\n }\r\n } else {\r\n // toggle layer visiblity\r\n if (layerElem.isChecked) {\r\n if (layerElem.isParentChecked === undefined || layerElem.isParentChecked) {\r\n this.currLayer.visible = layerElem.isChecked;\r\n layerElem.isVisible = layerElem.isChecked;\r\n this.agsLayerList.addLayerToVisibleLayerList(layerElem);\r\n this.updateLayersList();\r\n const mapLayerObj: any = this.mapService.getLayerFromMapView(this.mapRef, layerElem.serviceLayerID);\r\n if (this.isLayerInScale(this.getMapScale(), mapLayerObj)) {\r\n mapLayerObj.visible = true;\r\n }\r\n } else {\r\n // Parent folder not checked\r\n this.currLayer.visible = false;\r\n layerElem.isVisible = false;\r\n }\r\n } else {\r\n // turn layer off\r\n this.currLayer.visible = layerElem.isChecked;\r\n layerElem.isVisible = layerElem.isChecked;\r\n }\r\n // Fire layerCheckBoxChanged event for those components subscribed to this.\r\n this.layerCheckBoxChanged.next(layerElem);\r\n }\r\n\r\n } else {\r\n this.ga.exception('in 2-d-view layerCk: no serviceLayerID for: ' + layerElem.name, false);\r\n }\r\n }\r\n if (this.viewReference === undefined ) {\r\n this.ga.exception('in 2-d-view layerck viewReference is undefined', false);\r\n }\r\n if (!layerElem.layerAvailable) {\r\n return (layerElem.layerAvailable);\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n * Add layer to map\r\n * @param mapLayer: map layer\r\n * @param layerElem: layer\r\n * @param mapIndex: optional mapIndex to add the layer to\r\n */\r\n public async addLayerToMap(mapLayer, layerElem: AGSLayer, mapIndex?: number) {\r\n try {\r\n // Test to see if layerElem has a mapLayer object created yet, if not create it\r\n if (layerElem && !(layerElem.mapImageLayer || layerElem.featureLayer || layerElem.imageryLayer ||\r\n layerElem.graphicsLayer || layerElem.csvLayer || layerElem.wmsLayer)) {\r\n // The preloaded tocNodeArray contains AGSLayer objects without the functions. This will add the functions to the object.\r\n layerElem = new AGSLayer(layerElem);\r\n await layerElem.getMapLayer(); // Get the map object that can be added to the mapview\r\n }\r\n\r\n // const loadingDiv = document.getElementById('loading-svg');\r\n // loadingDiv.style.visibility = 'unset';\r\n\r\n if (!this.mapView || !this.mapRef) {\r\n this.setMapView(this.mapService.getMapObject(), this.mapService.getViewRef());\r\n }\r\n // Get map reference\r\n this.mapRef = this.mapView.map;\r\n // Check to see if layer is already on map, if so return\r\n this.currLayer = this.mapRef.findLayerById(layerElem.serviceLayerID);\r\n if (this.currLayer) {\r\n return;\r\n }\r\n\r\n // Get index on map to add layer\r\n if (!mapIndex) {\r\n mapIndex = this.getMapIndex(layerElem);\r\n }\r\n\r\n // Dispatch layer loading if layer will be visible on map\r\n if (layerElem.isParentChecked === undefined || layerElem.isParentChecked\r\n && layerElem.isLayerInScale && layerElem.isLayerInScale(this.getMapScale())){\r\n }\r\n\r\n // Add layer to map\r\n this.mapView.map.add(mapLayer, mapIndex);\r\n\r\n // When layer loaded is complete\r\n const res = this.viewReference.whenLayerView(mapLayer).then((layerView: any) => {\r\n const mapLayerObj: any = layerView.layer;\r\n console.log('Layer loaded to map: ' + mapLayer.id);\r\n this.layerLoaded.next(mapLayerObj);\r\n if (!layerElem.isChecked || (layerElem.isParentChecked !== undefined &&\r\n !layerElem.isParentChecked)) {\r\n mapLayerObj.visible = false;\r\n } else {\r\n if (this.isLayerInScale(this.getMapScale(), mapLayerObj)) {\r\n mapLayerObj.visible = true;\r\n }\r\n }\r\n if (layerElem.layerType === 'wms') {\r\n // Update name for wms layers\r\n const wmsLayer = layerElem.wmsLayer;\r\n layerElem.name = wmsLayer.title;\r\n }\r\n if (mapLayerObj.objectIdField && mapLayerObj.objectIdField.length > 0) {\r\n layerElem.objectIdField = mapLayerObj.objectIdField;\r\n }\r\n\r\n // Get layer's full extent\r\n layerElem.fullExtent = mapLayerObj.fullExtent;\r\n if (this.mapRef.layers !== undefined && this.mapRef.layers.items !== undefined) {\r\n // Get layer order index for the this layer on map\r\n const arrInd = this.mapRef.layers.items.indexOf(mapLayerObj);\r\n if (arrInd > -1) {\r\n layerElem.layerOrder = (this.mapRef.layers.items.length - 1) - arrInd;\r\n layerElem.id = mapLayerObj.id;\r\n layerElem.serviceLayerID = mapLayerObj.id;\r\n this.agsLayerList.addLayerToVisibleLayerList(layerElem);\r\n this.updateLayersList();\r\n }\r\n }\r\n // loadingDiv.style.visibility = 'hidden';\r\n }, (error) => {\r\n layerElem.layerAvailable = false;\r\n console.log('Error in loading layer: ' + layerElem.id + ' Error: ' + error);\r\n this.layerLoadError.next(layerElem);\r\n });\r\n\r\n } catch (error) {\r\n layerElem.layerAvailable = false;\r\n console.log('Error in loading layer: ' + layerElem.id + ' Error: ' + error);\r\n this.layerLoadError.next(layerElem);\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * Add layer to node array for TOC\r\n * @param layerElem: layer element\r\n */\r\n public addLayerToNodeArr(layerElem) {\r\n // Find parent folder\r\n if (this.configService.tocNodeArray) {\r\n for (const currentNode of this.configService.tocNodeArray) {\r\n if (currentNode.name === layerElem.parentName) {\r\n const parentNodeArr: any = currentNode.nodes;\r\n if (parentNodeArr) {\r\n for (const childNode of this.parentNodeArr) {\r\n if (childNode.serviceLayerID === layerElem.serviceLayerID) {\r\n // This layer already exists in TOC\r\n console.log('layer already exists in TOC: ' + layerElem.serviceLayerID);\r\n return false;\r\n }\r\n }\r\n // Add this layer to parent in tocNodeArray\r\n parentNodeArr.push(layerElem);\r\n this.layerNodeArrUpdated.next(this.configService.tocNodeArray);\r\n return true;\r\n }\r\n }\r\n }\r\n } else {\r\n console.log('no nodearr');\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * Get index of layer on map\r\n * @param layerElem: layer\r\n */\r\n public async getLayerServiceInfo(layerElem:AGSLayer) {\r\n // Get the info from the layer service for this layer from the rest endpoint and update the layer element.\r\n const retLayerElem = await this.layerService.getLayerServiceInfo(layerElem);\r\n this.layerServiceInfoComplete.next(retLayerElem);\r\n return retLayerElem;\r\n }\r\n\r\n /**\r\n * serviceUrl:string\r\n * @param : layer\r\n */\r\n public async getServiceInfo(serviceUrl:string) {\r\n // Get the info from the serviceUrl from the rest endpoint .\r\n return await this.layerService.getServiceInfo(serviceUrl);\r\n }\r\n\r\n /**\r\n * Get index of layer on map\r\n * @param layerElem: layer\r\n */\r\n public getMapIndex(layerElem: AGSLayer) {\r\n // Get index to add layer to map\r\n let mapIndex;\r\n let layerGeomType = layerElem.geometryType;\r\n const layerType = layerElem.type;\r\n if (! layerGeomType && layerType && layerType.toLowerCase() === 'raster layer') {\r\n layerGeomType = 'raster';\r\n }\r\n // Set default if no geometry type\r\n if (! layerGeomType ) {\r\n layerGeomType = 'other';\r\n }\r\n // Set map index\r\n switch (layerGeomType) {\r\n case 'graphics':\r\n mapIndex = this.graphicsLayerAddIndex;\r\n this.graphicsLayerAddIndex++;\r\n break;\r\n case 'esriGeometryPoint':\r\n mapIndex = this.pointLayerAddIndex;\r\n this.pointLayerAddIndex++;\r\n this.graphicsLayerAddIndex++;\r\n break;\r\n case 'esriGeometryPolyline':\r\n mapIndex = this.lineLayerAddIndex;\r\n this.lineLayerAddIndex++;\r\n this.pointLayerAddIndex++;\r\n this.graphicsLayerAddIndex++;\r\n break;\r\n case 'esriGeometryPolygon':\r\n mapIndex = this.polygonLayerAddIndex;\r\n this.polygonLayerAddIndex++;\r\n this.lineLayerAddIndex++;\r\n this.pointLayerAddIndex++;\r\n this.graphicsLayerAddIndex++;\r\n break;\r\n case 'raster':\r\n mapIndex = this.rasterLayerIndex;\r\n this.rasterLayerIndex++;\r\n this.polygonLayerAddIndex++;\r\n this.lineLayerAddIndex++;\r\n this.pointLayerAddIndex++;\r\n this.graphicsLayerAddIndex++;\r\n break;\r\n default:\r\n mapIndex = this.otherLayerIndex;\r\n this.otherLayerIndex++;\r\n this.rasterLayerIndex++;\r\n this.polygonLayerAddIndex++;\r\n this.lineLayerAddIndex++;\r\n this.pointLayerAddIndex++;\r\n this.graphicsLayerAddIndex++;\r\n break;\r\n }\r\n\r\n return mapIndex;\r\n }\r\n\r\n /**\r\n * Add feature layer to map\r\n * @param mapLayerObj: map layer object\r\n */\r\n public addFeatLayerToMap(mapLayerObj) {\r\n // Add layer to map\r\n // ** todo: Check if layer already exists\r\n // ** todo deal with mapindex here\r\n this.mapRef.add(mapLayerObj, 1);\r\n this.viewReference.whenLayerView(mapLayerObj).then((layerView: any) => {\r\n mapLayerObj = layerView.layer;\r\n });\r\n }\r\n\r\n /**\r\n * Update layers list\r\n */\r\n public updateLayersList() {\r\n this.visibleLayersList = this.agsLayerList.updateLayersList(this.mapRef.layers.items);\r\n // Fire layerListUpdated event for those components subscribed to this.\r\n this.layerListUpdated.next(this.visibleLayersList);\r\n return this.visibleLayersList;\r\n }\r\n\r\n /**\r\n * Update parent folder checked property\r\n * @param isChecked: isChecked status\r\n * @param parentFolder: parent folder\r\n */\r\n public updateParentNodes(isChecked: boolean, parentFolder: any) {\r\n if (parentFolder !== undefined) {\r\n parentFolder.checked = isChecked;\r\n parentFolder.isChecked = isChecked;\r\n if (parentFolder.nodes !== undefined) {\r\n const parentNodes = parentFolder.nodes;\r\n for (const parentNodeProp of parentNodes) {\r\n parentNodeProp.isParentChecked = parentFolder.checked;\r\n if (parentNodeProp.nodes) {\r\n // if subNodes set the isParentChecked property\r\n const subNodes = parentNodeProp.nodes;\r\n for (const subNodeItem of subNodes) {\r\n if ((parentNodeProp.isChecked || (! parentNodeProp.hasCheckBox)) && parentFolder.checked) {\r\n subNodeItem.isParentChecked = true;\r\n parentNodeProp.isChecked = true;\r\n } else {\r\n subNodeItem.isParentChecked = false;\r\n parentNodeProp.isChecked = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.parentCkBoxClicked(parentFolder);\r\n }\r\n }\r\n\r\n /**\r\n * Parent checked on or off so turn on/off layer visibility\r\n * @param parentNode: parent node\r\n */\r\n public parentChecked(parentNode: any) {\r\n // Parent Node checked on or off in TOC so turn on or off visibility of Layer's that are checked in TOC\r\n if (parentNode === undefined || parentNode.nodes === undefined) {\r\n return null;\r\n }\r\n if (!this.mapView || !this.mapObj) {\r\n this.setMapView(this.mapService.getMapObject(), this.mapService.getViewRef());\r\n }\r\n let isParentChecked = parentNode.isChecked;\r\n if (!parentNode.hasCheckBox) {\r\n isParentChecked = true; // If parent doesnt have a checkbox than parent is on by default\r\n }\r\n\r\n if (this.mapView === undefined || this.mapView.map === undefined) {\r\n this.ga.exception('in tocService: mapView is undefined', false);\r\n } else {\r\n const mapRef = this.mapView.map;\r\n for (const parentNodeElem of parentNode.nodes) {\r\n const layerElem = parentNodeElem;\r\n layerElem.isParentChecked = isParentChecked;\r\n // Check layers that are currently checked in the checkbox\r\n if (layerElem.serviceLayerID !== undefined && layerElem.isChecked) {\r\n this.currLayer = mapRef.findLayerById(layerElem.serviceLayerID);\r\n if (this.currLayer !== undefined) {\r\n if (isParentChecked) {\r\n this.currLayer.visible = true;\r\n layerElem.isVisible = true;\r\n } else {\r\n this.currLayer.visible = false;\r\n layerElem.isVisible = false;\r\n }\r\n // Fire layerCheckBoxChanged event for those components subscribed to this.\r\n this.layerCheckBoxChanged.next(layerElem);\r\n } else {\r\n if (isParentChecked) {\r\n // Add layer to map if layer is checked\r\n // but not on the map yet because the parent was not checked\r\n // ** todo: check for parents parents ?\r\n this.layerChecked(layerElem);\r\n }\r\n\r\n }\r\n } // end if (layerElem != undefined && layerElem.serviceLayerID\r\n\r\n // Check for sub parents\r\n if (layerElem.nodes) {\r\n // if subNodes set the isParentChecked property\r\n const subNodes = layerElem.nodes;\r\n for (const subLayerElem of subNodes) {\r\n subLayerElem.isParentChecked = isParentChecked;\r\n if (subLayerElem.serviceLayerID !== undefined && subLayerElem.isChecked) {\r\n this.currLayer = mapRef.findLayerById(subLayerElem.serviceLayerID);\r\n if (this.currLayer !== undefined) {\r\n if (subLayerElem.isChecked && subLayerElem.isParentChecked) {\r\n subLayerElem.isVisible = true;\r\n this.currLayer.visible = true;\r\n } else {\r\n subLayerElem.isVisible = false;\r\n this.currLayer.visible = false;\r\n }\r\n\r\n this.layerCheckBoxChanged.next(subLayerElem);\r\n } else {\r\n if (isParentChecked) {\r\n this.layerChecked(subLayerElem);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Move layer to input position on map\r\n * @param mapElem: map element\r\n * @param position: position on map\r\n */\r\n public moveLayerOnMap(mapElem: any, position: number) {\r\n // Reorder layer on map\r\n if (this.mapView.map.layers !== undefined && mapElem !== undefined) {\r\n this.mapView.map.layers.reorder(mapElem, position);\r\n this.viewReference.whenLayerView(mapElem).then(() => {\r\n this.updateLayersList();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Turn off all layers on map\r\n */\r\n public turnOffAllLayers() {\r\n const visLayers: any = this.getVisibleLayerList();\r\n for (const layerElem of visLayers) {\r\n if (layerElem) {\r\n layerElem.isChecked = false;\r\n }\r\n this.layerChecked(layerElem);\r\n }\r\n }\r\n\r\n /**\r\n * Get list of visible layers\r\n */\r\n public getVisibleLayerList() {\r\n return this.agsLayerList.getVisibleLayerList();\r\n }\r\n\r\n /**\r\n * Get mapextent as a string\r\n */\r\n public getMapExtentString() {\r\n const mapExt = this.getMapExtent();\r\n return mapExt.xmin.toString() + ',' + mapExt.ymin.toString() + ',' + mapExt.xmax.toString() + ',' + mapExt.ymax.toString();\r\n }\r\n\r\n /**\r\n * Get mapextent as a string with the coordinates returned in the order of coordOrderArr\r\n * param: coordOrderArr:Array of the order that extent coordinates will be returned in string\r\n * (ie ['xmin','xmax','ymin','ymax']\r\n */\r\n public getMapExtentCoordString(coordOrderArr) {\r\n const mapExt = this.getMapExtent();\r\n let mapExtStr = mapExt[coordOrderArr[0]].toString() + ',' + mapExt[coordOrderArr[1]].toString() + ','\r\n + mapExt[coordOrderArr[2]].toString() + ',' + mapExt[coordOrderArr[3]].toString();\r\n return mapExtStr;\r\n }\r\n\r\n /**\r\n * Populate object of parent elements and one of layer elements.\r\n * Also, populate arrays for parent and leyer elements\r\n * whose checkboxes are checked.\r\n */\r\n public getNodeElems(nodeArray, parentElemsObj, layerElemObjs, parentElemCheckedArr, layerElemCheckedArr) {\r\n for (const nodeArrElem of nodeArray) {\r\n if (nodeArrElem.nodes) {\r\n parentElemsObj[nodeArrElem.id] = nodeArrElem;\r\n if (parentElemsObj[nodeArrElem.id].isChecked\r\n && parentElemsObj[nodeArrElem.id].hasCheckBox) {\r\n parentElemCheckedArr.push(nodeArrElem.id) ;\r\n }\r\n this.getNodeElems(nodeArrElem.nodes, parentElemsObj,\r\n layerElemObjs, parentElemCheckedArr, layerElemCheckedArr);\r\n } else {\r\n layerElemObjs[nodeArrElem.id] = nodeArrElem;\r\n if (layerElemObjs[nodeArrElem.id].isChecked) {\r\n layerElemCheckedArr.push(nodeArrElem.id) ;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set the parent checkbox to the input isChecked status\r\n * @param parentFolderID: parent folder ID\r\n * @param isChecked: isChecked status of parent folder\r\n */\r\n public setParentCheckBox(parentFolderID, isChecked) {\r\n if (this.parentElemsObj && this.parentElemsObj[parentFolderID]) {\r\n const parentObj = this.parentElemsObj[parentFolderID];\r\n if (!parentObj.name) {\r\n parentObj.name = parentFolderID;\r\n }\r\n if (!parentObj.id) {\r\n parentObj.id = parentFolderID;\r\n }\r\n this.updateParentNodes(isChecked, parentObj);\r\n } else {\r\n this.ga.exception('Parent does not exist: ' + parentFolderID, false);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Get the parent folder object\r\n * @param parentFolderID: parent folder ID\r\n */\r\n public getParentFolder(parentFolderID) {\r\n return this.parentElemsObj[parentFolderID];\r\n }\r\n\r\n /**\r\n * Generate object keys\r\n * @param obj : object\r\n */\r\n public generateArrayKeys(obj: any) {\r\n return Object.keys(obj).map((key) => key );\r\n }\r\n\r\n /**\r\n * Get input theme\r\n * @param item:theme name\r\n */\r\n public getTheme(item) {\r\n if (item) {\r\n let chosenThemeName = decodeURIComponent(item);\r\n if (chosenThemeName && this.configService) {\r\n this.configService.CurrentTheme = chosenThemeName;\r\n if (this.configService.themeUrlParameters) {\r\n const urlThemeParameter =\r\n this.findKey(this.configService.themeUrlParameters, chosenThemeName);\r\n if (urlThemeParameter) {\r\n chosenThemeName = urlThemeParameter;\r\n }\r\n }\r\n return chosenThemeName;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Find input key in object\r\n * @param dataObj: object\r\n * @param value: key\r\n */\r\n private findKey(dataObj, value) {\r\n for (const key in dataObj) {\r\n if (dataObj.hasOwnProperty(key) && dataObj[key] === value) {\r\n return key;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Change layer's transparency\r\n * @param layerElem: layer element\r\n * @param transparency: tranparency setting\r\n */\r\n public changeLayerTransparency(layerElem: AGSLayer, transparency: number) {\r\n // gets the layer from the map object\r\n const mapLayerObj = this.getLayerFromView(this.mapRef, layerElem.serviceLayerID);\r\n // sets the transparency on the AGSlayer object\r\n if (layerElem) {\r\n layerElem.transparency = transparency;\r\n }\r\n // sets the transparency on the layer from the map object\r\n if (mapLayerObj && mapLayerObj.opacity >= 0) {\r\n mapLayerObj.opacity = transparency;\r\n }\r\n }\r\n\r\n /**\r\n * Load a new basemap on map\r\n * @param basemapId\r\n */\r\n public async setBasemap(basemapId, isVisible) {\r\n const viewRef = this.mapService.getViewRef();\r\n if (viewRef && viewRef.map) {\r\n viewRef.map.basemap = basemapId;\r\n viewRef.map.basemap.visible = isVisible;\r\n // Set visibility of basemap in case it was previously toggled off or on\r\n if (viewRef.map.basemap.baseLayers && viewRef.map.basemap.baseLayers.items &&\r\n viewRef.map.basemap.baseLayers.items[0]) {\r\n viewRef.map.basemap.baseLayers.items[0].visible = isVisible;\r\n }\r\n }\r\n else {\r\n console.log('In setBasemap: Unable to load basemap ViewRef or viewRef.map doesnt exist');\r\n }\r\n }\r\n\r\n /**\r\n * Change basemap transparency\r\n * @param transparency: tranparency setting\r\n */\r\n public changeBasemapTransparency(transparency: number) {\r\n // Set opacity on basemap\r\n this.mapRef = this.mapService.getViewRef();\r\n if (this.mapRef && this.mapRef.map && this.mapRef.map.basemap && this.mapRef.map.basemap.baseLayers &&\r\n this.mapRef.map.basemap.baseLayers.items && this.mapRef.map.basemap.baseLayers.items[0]) {\r\n this.mapRef.map.basemap.baseLayers.items[0].opacity = transparency;\r\n }\r\n }\r\n\r\n /**\r\n * Toggle layer labels on or off\r\n * @param layerElem: layer element\r\n * @param transparency: tranparency setting\r\n */\r\n public toggleLayerLabels (layerElem: AGSLayer) {\r\n const mapLayerObj = this.getLayerFromView(this.mapRef, layerElem.serviceLayerID);\r\n if (mapLayerObj) {\r\n if (mapLayerObj.allSublayers && mapLayerObj.allSublayers.items) {\r\n for (const layer of mapLayerObj.allSublayers.items) {\r\n layer.labelsVisible = !layer.labelsVisible;\r\n }\r\n }\r\n mapLayerObj.labelsVisible = !mapLayerObj.labelsVisible;\r\n }\r\n }\r\n\r\n /**\r\n * Removes all layers from the map object for ToC reset\r\n */\r\n public removeAllLayers(exceptGraphics?: boolean) {\r\n const map = this.mapService.getMapObject();\r\n let layersToRemove = [];\r\n if (exceptGraphics) {\r\n map.layers.forEach((layer) => {\r\n if (layer.type !== 'graphics') {\r\n layersToRemove.push(layer);\r\n }\r\n })\r\n map.removeMany(layersToRemove);\r\n } else {\r\n map.removeAll();\r\n }\r\n }\r\n\r\n /**\r\n * Finds objects by key\r\n * @param obj\r\n * @param keyToFind\r\n * @param valueToFind\r\n * @returns\r\n */\r\n public findObjectsByKey(obj, keyToFind, valueToFind) {\r\n return Object.entries(obj)\r\n .reduce((acc, [key, value]) => (key === keyToFind && value === valueToFind)\r\n ? acc.concat(obj)\r\n : (typeof value === 'object')\r\n ? acc.concat(this.findObjectsByKey(value, keyToFind, valueToFind))\r\n : acc\r\n , []) || [];\r\n }\r\n\r\n /**\r\n * Getlayers dashboard info if applicable\r\n * @param layerElem\r\n * @returns\r\n */\r\n public getlayerDashboardInfo(layerElem) {\r\n if (layerElem.layerDashboardName && this.configService.dashboardInfo &&\r\n this.configService.dashboardInfo[layerElem.layerDashboardName]) {\r\n return this.configService.dashboardInfo[layerElem.layerDashboardName];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n /* public getBasemapMetadata(newBasemap) {\r\n if (newBasemap && this.basemapNodes && this.basemapNodes[0]) {\r\n this.basemapNodes[0].id = newBasemap[\"title\"];\r\n this.basemapNodes[0].name = newBasemap[\"title\"];\r\n this.basemapNodes[0].nodeType = 'basemap';\r\n this.basemapNodes[0].description = null;\r\n // Set description from portalItem if exists\r\n if (newBasemap['portalItem'] && newBasemap['portalItem']['description'] &&\r\n newBasemap['portalItem']['description'].length > 0) {\r\n this.basemapNodes[0].description = newBasemap['portalItem']['description'];\r\n }\r\n this.basemapNodes[0].url = null;\r\n if (newBasemap['baseLayers'] && newBasemap['baseLayers'].items && newBasemap['baseLayers'].items[0]) {\r\n this.basemapNodes[0].baseLayer = newBasemap['baseLayers'].items[0];\r\n if (this.basemapNodes[0].baseLayer.sourceJSON && this.basemapNodes[0].baseLayer.sourceJSON.description) {\r\n // Set description from sourceJSON\r\n this.basemapNodes[0].description = this.basemapNodes[0].baseLayer.sourceJSON.description;\r\n }\r\n if (this.basemapNodes[0].baseLayer.url && this.basemapNodes[0].baseLayer.url.length > 0) {\r\n this.basemapNodes[0].url = this.basemapNodes[0].baseLayer.url;\r\n }\r\n if (this.basemapNodes[0].baseLayer.opacity) {\r\n this.basemapNodes[0].opacity = this.basemapNodes[0].baseLayer.opacity;\r\n this.basemapNodes[0].transparency = this.basemapNodes[0].baseLayer.opacity;\r\n }\r\n }\r\n }\r\n } */\r\n\r\n}\r\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild,\r\n SecurityContext} from '@angular/core';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport {ConfigService} from '../../../services/config/config.service';\r\nimport {TableOfContentsService} from '../../../services/toc/table-of-contents.service';\r\nimport {NestedTreeControl} from '@angular/cdk/tree';\r\nimport {MatTreeNestedDataSource} from '@angular/material/tree';\r\nimport {AGSLayer} from '../../../models/AGSLayer';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {Location} from '@angular/common';\r\nimport {MapService} from '../../../services/map/map.service';\r\nimport {ChangelogDialogComponent} from './changelog-dialog/changelog-dialog.component';\r\nimport {DialogComponent} from '../../../components/dialog/dialog.component';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {InitializeService} from '../../../services/initialize/initialize-service';\r\nimport { DomSanitizer, SafeHtml} from '@angular/platform-browser';\r\nimport {loadModules} from 'esri-loader';\r\n//import {BookmarkService} from '../../../services/bookmark/bookmark.service';\r\nimport {GoogleAnalyticsService} from '../../../services/googleAnalytics/google-analytics.service';\r\n\r\n/**\r\n * Creates the table of contents from the widget bar\r\n */\r\n@Component({\r\n selector: 'app-table-of-contents',\r\n templateUrl: './table-of-contents.component.html',\r\n styleUrls: ['./table-of-contents.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TableOfContentsComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild('themeMenuTrigger', {read: MatMenuTrigger, static: true}) public themeMenuTrigger: MatMenuTrigger;\r\n constructor(private map: MapService, private config: ConfigService,\r\n private toc: TableOfContentsService, private cd: ChangeDetectorRef,\r\n private router: Router, private route: ActivatedRoute,\r\n private location: Location, private dialog: MatDialog,\r\n private initService: InitializeService,\r\n //private bookmark: BookmarkService,\r\n private sanitizer: DomSanitizer, private ga: GoogleAnalyticsService) {\r\n this.nestedTreeControl = new NestedTreeControl(this.getChildren);\r\n this.nestedDataSource = new MatTreeNestedDataSource();\r\n //basemaps\r\n this.nestedBasemapControl = new NestedTreeControl(this.getChildren);\r\n this.nestedBasemapSource = new MatTreeNestedDataSource();\r\n\r\n this.changelog = this.config.changelog;\r\n }\r\n\r\n public widgetTitle = 'Table of Contents';\r\n public widgetIcon = './assets/widget-bar/toc-icon.png';\r\n\r\n public hideThemeChangeButton = false;\r\n public TOC;\r\n public nestedTreeControl: NestedTreeControl;\r\n public nestedDataSource: MatTreeNestedDataSource;\r\n // basemaps\r\n public nestedBasemapControl: NestedTreeControl;\r\n public nestedBasemapSource: MatTreeNestedDataSource;\r\n private basemapArray;\r\n private basemapNodes;\r\n private TOCNodeArray: object[];\r\n public tagList: any = [];\r\n public tagFilter = '';\r\n public themeList = [];\r\n public currentTheme = '';\r\n private layerUpdatedObservable;\r\n private layerSvcCompleteObservable;\r\n private mapObservable;\r\n private basemapObservable;\r\n private urlUpdatedObservable;\r\n public mapScale: number;\r\n public changelog = false;\r\n public basemap;\r\n public mapRef;\r\n public themeHelpInfo = [];\r\n public htmlFileString;\r\n public layerNodeChanged;\r\n public sliderOn = false;\r\n public loading = false;\r\n private urlUpdatedObs;\r\n private themeClickObs;\r\n private layerLoadErrorObservable;\r\n private basemapVisible;\r\n\r\n /**\r\n * Initialize TOC widget\r\n */\r\n async ngOnInit() {\r\n if (this.toc.firstRunFlag) {\r\n for (const widget of this.config.tools) {\r\n if (widget.id === 'toc') {\r\n this.widgetIcon = widget.icon;\r\n this.widgetTitle = widget.name;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.countThemesAndHideThemeChangeButton();\r\n\r\n /* this.urlUpdatedObservable = this.bookmark.getUrlUpdatedObs().subscribe( (result) => {\r\n console.log('in urlUpdated');\r\n this.cd.detectChanges();\r\n }); */\r\n\r\n this.themeClickObs = this.toc.getThemeClickObs().subscribe((themeName) => {\r\n if (themeName) {\r\n // const loading = document.querySelector('#loading-svg') as HTMLElement;\r\n // loading.style.visibility = 'unset';\r\n // this.nestedDataSource.data = null;\r\n // console.log(this.nestedDataSource);\r\n // console.log(this.nestedTreeControl);\r\n this.nestedTreeControl.collapseAll();\r\n // console.log(this.nestedTreeControl.dataNodes);\r\n // this.nestedTreeControl.expansionModel.clear();\r\n // this.toc.removeAllLayers();\r\n // if (this.nestedTreeControl.expansionModel.selected) {\r\n for (let i = 0; i < this.nestedTreeControl.expansionModel.selected.length; i++) {\r\n this.nestedTreeControl.expansionModel.selected[i].pop();\r\n }\r\n // }\r\n\r\n\r\n this.themeClick(themeName);\r\n }\r\n this.cd.detectChanges();\r\n });\r\n\r\n this.mapObservable = this.map.getMapScaleObservable().subscribe( (result) => {\r\n if (result) {\r\n this.mapScale = result;\r\n this.mapRef = this.map.getViewRef();\r\n this.cd.detectChanges();\r\n }\r\n });\r\n\r\n // Listen for basemap change\r\n // Set the basemap visibility for the app's initial basemap. The default is visible true but some apps wanted the\r\n // the basemaps not visible at startup. The config.mapInitialLayerVisible property allows that feature.\r\n this.basemapVisible = this.config.mapInitialLayerVisible;\r\n this.basemapObservable = this.map.getBasemapObservable()\r\n .subscribe((newBasemap:Object) => {\r\n if (newBasemap && this.basemapNodes && this.basemapNodes[0]) {\r\n // Set the properties for the new basemap on the TOC node.\r\n this.basemapNodes[0].id = newBasemap[\"title\"];\r\n this.basemapNodes[0].name = newBasemap[\"title\"];\r\n this.basemapNodes[0].nodeType = 'basemap';\r\n this.basemapNodes[0].description = null;\r\n this.basemapNodes[0].isChecked = this.basemapVisible;\r\n this.basemapClicked({checked: this.basemapVisible},this.basemapNodes[0]);\r\n // Basemap visibility is true unless set to false in the mapInitialLayerVisible property in the app config.\r\n // That property controls the app's initial basemap. After that any basemap turned on by the basemap\r\n // widget are visible by default.\r\n this.basemapVisible = true;\r\n this.cd.detectChanges();\r\n\r\n // Get the basemap description from the portalItem or sourceJSON property. If neither property exists use\r\n // the resourceInfo property to get the basemap url and get the description from the rest endpoint.\r\n\r\n // Set description from portalItem if exists\r\n if (newBasemap['portalItem'] && newBasemap['portalItem']['description'] &&\r\n newBasemap['portalItem']['description'].length > 0) {\r\n this.basemapNodes[0].description = newBasemap['portalItem']['description'];\r\n }\r\n this.basemapNodes[0].url = null;\r\n if (newBasemap['baseLayers'] && newBasemap['baseLayers'].items && newBasemap['baseLayers'].items[0]) {\r\n this.basemapNodes[0].baseLayer = newBasemap['baseLayers'].items[0];\r\n if (this.basemapNodes[0].baseLayer.sourceJSON && this.basemapNodes[0].baseLayer.sourceJSON.description) {\r\n // Set description from sourceJSON\r\n this.basemapNodes[0].description = this.basemapNodes[0].baseLayer.sourceJSON.description;\r\n }\r\n if (this.basemapNodes[0].baseLayer.url && this.basemapNodes[0].baseLayer.url.length > 0) {\r\n this.basemapNodes[0].url = this.basemapNodes[0].baseLayer.url;\r\n }\r\n if (this.basemapNodes[0].baseLayer.opacity) {\r\n this.basemapNodes[0].opacity = this.basemapNodes[0].baseLayer.opacity;\r\n this.basemapNodes[0].transparency = this.basemapNodes[0].baseLayer.opacity;\r\n }\r\n }\r\n else {\r\n // If no url for basemap, get it from the resourceInfo on the basemap. The url can be used to get the description.\r\n if (newBasemap['resourceInfo'] && newBasemap['resourceInfo'].data && newBasemap['resourceInfo'].data.baseMapLayers &&\r\n newBasemap['resourceInfo'].data.baseMapLayers[0]) {\r\n this.basemapNodes[0].url = newBasemap['resourceInfo'].data.baseMapLayers[0].url;\r\n this.basemapNodes[0].opacity = newBasemap['resourceInfo'].data.baseMapLayers[0].opacity\r\n }\r\n }\r\n this.cd.detectChanges();\r\n }\r\n });\r\n\r\n // Subscribe to layer checkbox clicks from other components so TOC checkboxes will also get updated.\r\n this.layerNodeChanged = this.toc.getLayerCheckBoxChanged().subscribe(\r\n (nodeLayerElem) => {\r\n if (nodeLayerElem) {\r\n this.cd.detectChanges();\r\n }\r\n }\r\n );\r\n\r\n // Subscribe to layer getlayerServiceInfoComplete to update min/max scales (if they exist in service) for default visible layers.\r\n // This is to enable the layer out-of-scale style if applicable\r\n this.layerSvcCompleteObservable = this.toc.getlayerServiceInfoComplete().subscribe(\r\n async (node) => {\r\n if (node && node.defaultThemeVisibleLayerArr && node.defaultThemeVisibleLayerArr.length > 0\r\n && ((node.minScale && node.minScale > 0) || (node.maxScale && node.maxScale > 0)) ){\r\n let svcLayerID = node.serviceLayerID;\r\n // Find layer in TOC nodes and update if applicable\r\n this.nestedDataSource.data.forEach( (layer) => {\r\n let nodesObj = layer.nodes;\r\n nodesObj.every( (layerNode ) => {\r\n if (layerNode.serviceLayerID === svcLayerID) {\r\n if (node.minScale && (!layerNode.minScale || layerNode.minscale > node.minScale)) {\r\n layerNode.minScale = node.minScale;\r\n }\r\n if (node.maxScale && (!layerNode.maxScale || layerNode.maxScale < node.maxScale)) {\r\n layerNode.maxScale = node.maxScale;\r\n }\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n });\r\n this.cd.detectChanges();\r\n }\r\n });\r\n\r\n // Subscribe to layerLoadError\r\n this.layerLoadErrorObservable = this.toc.layerLoadError.subscribe((layerElem) => {\r\n if (layerElem) {\r\n const nodeArrObj = {\r\n \"nodeArr\": this.TOCNodeArray};\r\n layerElem.layerAvailable = false;\r\n // Get the TOC layerElem object to set layerAvailable status\r\n const retNodes = this.toc.findObjectsByKey(nodeArrObj,'serviceLayerID', layerElem.serviceLayerID);\r\n if (retNodes && retNodes.length > 0) {\r\n for (var i = 0; i < retNodes.length; i++) {\r\n retNodes[i].layerAvailable = false;;\r\n }\r\n }\r\n console.log('Layer unavailable: ' + layerElem.serviceLayerID);\r\n }\r\n this.cd.detectChanges();\r\n });\r\n\r\n this.cd.detectChanges();\r\n\r\n // Subscribe to layer nodeArr updated\r\n this.initializeToC();\r\n this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Destroy TOC widget\r\n */\r\n ngOnDestroy(): void {\r\n if (this.mapObservable) { this.mapObservable.unsubscribe(); }\r\n if (this.basemapObservable) { this.basemapObservable.unsubscribe(); }\r\n if (this.layerUpdatedObservable) { this.layerUpdatedObservable.unsubscribe(); }\r\n if (this.layerNodeChanged) { this.layerNodeChanged.unsubscribe(); }\r\n if (this.layerSvcCompleteObservable) { this.layerSvcCompleteObservable.unsubscribe(); }\r\n if (this.urlUpdatedObservable) { this.urlUpdatedObservable.unsubscribe(); }\r\n if (this.layerLoadErrorObservable) {this.layerLoadErrorObservable.unsubscribe() ;}\r\n if (this.themeClickObs) {this.themeClickObs.unsubscribe() ;}\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.toc.themesMenuTrigger = this.themeMenuTrigger;\r\n }\r\n\r\n public openThemeMenu() {\r\n console.log('openThemeMenu');\r\n this.themeMenuTrigger.openMenu();\r\n this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Initializes TOC\r\n * Sets up the TOC after checking to see if a user is authorized to view the requested data\r\n * Reads in the TOC nodearray file for the current theme and populates the TOC\r\n */\r\n private async initializeToC() {\r\n try {\r\n // Set the basemap visibility for the theme, some apps may turn it off on startup\r\n this.basemapVisible = true;\r\n if (this.config.mapInitialLayerVisible !== undefined &&\r\n this.config.mapInitialLayerVisible === false) {\r\n this.basemapVisible = this.config.mapInitialLayerVisible;\r\n }\r\n if (this.toc.firstRunFlag && this.config && this.config[\"appDisclaimer\"]) {\r\n if (this.config[\"appDisclaimer\"].fileName) {\r\n // app disclaimer is in a file\r\n const fileDisclaimerObj = {fileName: this.config[\"appDisclaimer\"].fileName,\r\n showDisclaimer: this.config[\"appDisclaimer\"].showDisclaimer }\r\n await this.showDisclaimerFromFile(fileDisclaimerObj);\r\n }\r\n else {\r\n if (this.config[\"appDisclaimer\"].text) {\r\n // app disclaimer is a text string\r\n this.showDisclaimer({\"disclaimer\": {\"message\": this.config[\"appDisclaimer\"].text}});\r\n }\r\n }\r\n }\r\n if (!this.toc.firstRunFlag) {\r\n this.currentTheme = this.config.CurrentTheme;\r\n //console.log ('in toc-comp initializeToc: ' + this.currentTheme);\r\n const isUserAuthorized = await this.toc.getAuthorization(this.config);\r\n if (isUserAuthorized) {\r\n this.TOCNodeArray = this.config.tocNodeArray;\r\n this.toc.nodeArray = this.config.tocNodeArray;\r\n this.themeList = this.config.themeNameList;\r\n\r\n // Set up folder for Basemaps\r\n this.basemapNodes = [{id: this.config.mapInitialLayer, name: this.config.mapInitialLayer, trans: true,\r\n isChecked: this.config.mapInitialLayerVisible, nodeType:\r\n 'basemap', opacity: 1, layerAvailable: true}];\r\n this.basemapArray = [{id: \"Basemap\", name: \"Basemap\", nodes: this.basemapNodes, collapsed: true,\r\n isChecked: this.config.mapInitialLayerVisible}];\r\n await this.toc.setBasemap(this.config.mapInitialLayer, this.config.mapInitialLayerVisible);\r\n this.cd.detectChanges();\r\n\r\n if (this.TOCNodeArray) {\r\n // Need to set the nestedDataSource to null before reassigning the data due to a bug in refreshing\r\n // a nested dataSource.\r\n\r\n this.nestedDataSource.data = null;\r\n this.nestedDataSource.data = this.TOCNodeArray;\r\n this.nestedDataSource.data.forEach( (layer) => {\r\n if (layer.collapsed === false) {\r\n this.nestedTreeControl.expand(layer);\r\n }\r\n });\r\n\r\n this.cd.detectChanges();\r\n }\r\n\r\n if (this.basemapArray) {\r\n // Need to set the nestedDataSource to null before reassigning the data due to a bug in refreshing\r\n // a nested dataSource.\r\n this.nestedBasemapSource.data = null;\r\n this.nestedBasemapSource.data = this.basemapArray;\r\n this.nestedBasemapSource.data.forEach( (baseMapLayer) => {\r\n if (baseMapLayer.collapsed === false) {\r\n this.nestedTreeControl.expand(baseMapLayer);\r\n }\r\n });\r\n\r\n this.cd.detectChanges();\r\n }\r\n this.themeHelpInfo = [];\r\n if (this.config && this.config.Themes && this.config.Themes[this.config.CurrentTheme]) {\r\n const currThemeObj = this.config.Themes[this.config.CurrentTheme];\r\n // Check for Help documents\r\n if (currThemeObj[\"themeHelpDocuments\"] && this.config[\"appHelpDocuments\"]) {\r\n let httpPrefix = 'https://';\r\n if (this.config.appHref && this.config.appHref.trim().startsWith('localhost')) {\r\n httpPrefix = 'http://';\r\n }\r\n currThemeObj[\"themeHelpDocuments\"].forEach((item) => {\r\n let helpItem = this.config[\"appHelpDocuments\"][item];\r\n if (this.config.appHref && this.config.appHref.trim().startsWith('localhost')) {\r\n helpItem.url = httpPrefix + this.config.appHref + '/' + helpItem.url;\r\n }\r\n this.themeHelpInfo.push(helpItem);\r\n });\r\n }\r\n // Check for theme disclaimer\r\n if (currThemeObj[\"themeDisclaimer\"] && currThemeObj[\"themeDisclaimer\"].showDisclaimer) {\r\n if (currThemeObj[\"themeDisclaimer\"].fileName) {\r\n // Theme disclaimer is in file\r\n const fileDisclaimerObj = {fileName: currThemeObj[\"themeDisclaimer\"].fileName,\r\n showDisclaimer: currThemeObj[\"themeDisclaimer\"].showDisclaimer }\r\n await this.showDisclaimerFromFile(fileDisclaimerObj);\r\n // Only show themeDisclaimer once\r\n currThemeObj[\"themeDisclaimer\"].showDisclaimer = false;\r\n }\r\n else {\r\n if (currThemeObj[\"themeDisclaimer\"].text) {\r\n // Theme disclaimer is a text string\r\n this.showDisclaimer({\"disclaimer\": {\"message\": currThemeObj[\"themeDisclaimer\"].text}});\r\n // Only show themeDisclaimer once\r\n currThemeObj[\"themeDisclaimer\"].showDisclaimer = false;\r\n }\r\n }\r\n }\r\n }\r\n this.cd.detectChanges();\r\n } else {\r\n this.ga.exception('Unable to login', true);\r\n }\r\n } else {\r\n setTimeout(() => {\r\n this.initializeToC();\r\n }, 250);\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Gathers and sorts tags via a web worker\r\n */\r\n public gatherTags() {\r\n if (this.tagList.length === 0 && this.toc.getTagList().length === 0) {\r\n if (typeof Worker !== 'undefined') {\r\n const worker = new Worker('../../../web-workers/tags.worker', {type: 'module'});\r\n worker.onmessage = ({data}) => {\r\n if (data && data.length > 0 && data[0] === \"\") {\r\n data.splice(0,1); // Get rid of blank string in 1st array element if present\r\n }\r\n this.tagList = data;\r\n this.toc.setTagList(data);\r\n };\r\n let flatMap = [];\r\n for (const layer of this.config.tocNodeArray) {\r\n flatMap = flatMap.concat(this.filterNodeArray(layer));\r\n }\r\n worker.postMessage(flatMap);\r\n }\r\n } else if (this.toc.getTagList().length !== 0) {\r\n this.tagList = this.toc.getTagList();\r\n }\r\n }\r\n\r\n\r\n private countThemesAndHideThemeChangeButton() {\r\n let themeCount = 0;\r\n const themes = this.config.Themes;\r\n for (const key in themes) {\r\n if ({}.hasOwnProperty.call(themes, key)) {\r\n themeCount++;\r\n if (themeCount > 1) {\r\n this.hideThemeChangeButton = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (themeCount <= 1) {\r\n this.hideThemeChangeButton = true;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Removes the tags from toc node array so they can be passed to a web worker to sort and filter them\r\n * @param arr: this.config.tocNodeArray layer\r\n */\r\n private filterNodeArray(arr) {\r\n try {\r\n if (arr.nodes) {\r\n let tmpArray = [];\r\n tmpArray.push(arr.name);\r\n for (const item of arr.nodes) {\r\n const value = this.filterNodeArray(item);\r\n if (value) { tmpArray = tmpArray.concat(value); }\r\n }\r\n return tmpArray;\r\n } else {\r\n if (arr && arr.tags) {\r\n arr.tags.push(arr.name);\r\n return arr.tags;\r\n }\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * User event for the ToC Search input\r\n * Loops through the node tree array and finds any entries relating to the search\r\n */\r\n public filterToC() {\r\n const newNodeArray = [];\r\n for (const node of this.config.tocNodeArray) {\r\n const value = this.filterLoop(node, this.tagFilter.toLowerCase(), node);\r\n if (value) {\r\n newNodeArray.push(value);\r\n }\r\n }\r\n this.nestedDataSource.data = null;\r\n if (newNodeArray.length > 0) {\r\n this.nestedDataSource.data = newNodeArray;\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n\r\n /**\r\n * Added a function to test enter keys for use with the autocomplete\r\n * @param event: keypress event\r\n */\r\n public filterEnterKey(event) {\r\n if (event && event.target && event.target.type === 'text') {\r\n this.filterToC();\r\n this.cd.detectChanges();\r\n }\r\n }\r\n\r\n /**\r\n * Recursive loop function to search through the node tree array\r\n * @param arr: Array item to search through\r\n * @param searchTerm: The search term\r\n * @param parent: Overall parent object\r\n */\r\n private filterLoop(arr, searchTerm, parent?) {\r\n try {\r\n if (arr.nodes) {\r\n if (searchTerm && arr.id.toLowerCase().search(searchTerm) > -1) {\r\n return arr;\r\n }\r\n const tmpParent = cloneDeep(parent);\r\n tmpParent.nodes = [];\r\n for (const item of arr.nodes) {\r\n const value = this.filterLoop(item, searchTerm, item);\r\n if (value) {\r\n tmpParent.nodes.push(value);\r\n }\r\n }\r\n if (tmpParent.nodes.length > 0) { return tmpParent; }\r\n } else {\r\n if (searchTerm) {\r\n if (arr.tags && arr.tags.length > 0) {\r\n for (const tag of arr.tags) {\r\n if (tag.toLowerCase().search(searchTerm) > -1) {\r\n return arr;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n hasNestedChild = (_: number, nodeData: any) => !(!nodeData.nodes);\r\n private getChildren = (node: any) => node.nodes;\r\n\r\n /**\r\n * Clears search\r\n */\r\n public clearSearch() {\r\n this.tagFilter = '';\r\n this.nestedDataSource.data = null;\r\n this.nestedDataSource.data = this.TOCNodeArray;\r\n this.cd.detectChanges();\r\n}\r\n\r\n /**\r\n * TOC: Layer Checkbox clicked\r\n */\r\n public async layerCkBoxClicked(event: any, layerElem: AGSLayer) {\r\n try {\r\n // Get the latest version of the AGSLayer from the dictionary if it exists.\r\n const layerSvcLayerID = layerElem.serviceLayerID;\r\n const currLayerElem = this.toc.agsLayerList.findLayerInVisibleLayerListByID(layerSvcLayerID);\r\n if (currLayerElem) {\r\n layerElem = currLayerElem;\r\n }\r\n if (layerElem.needsToken && this.config.portalToken) {\r\n layerElem.token = this.config.portalToken;\r\n if (layerElem.relateObj && layerElem.relateObj.length > 0) {\r\n // Add tokens to related table for this secure service\r\n layerElem.relateObj.forEach( (relatedTable) => {\r\n relatedTable['token'] = layerElem.token;\r\n });\r\n }\r\n }\r\n\r\n // Test to see if layerElem has a mapLayer object created yet, if not create it\r\n if (layerElem && !(layerElem.mapImageLayer || layerElem.featureLayer || layerElem.imageryLayer ||\r\n layerElem.graphicsLayer || layerElem.csvLayer || layerElem.wmsLayer)) {\r\n // The preloaded tocNodeArray contains AGSLayer objects without the functions. This will add the functions to the object.\r\n layerElem = new AGSLayer(layerElem);\r\n layerElem.layerAvailable = true;\r\n try {\r\n await layerElem.getMapLayer(); // Get the map object that can be added to the mapview\r\n } catch (err) {\r\n layerElem.layerAvailable = false;\r\n }\r\n }\r\n layerElem.isChecked = event.checked;\r\n const isChecked = layerElem.isChecked;\r\n\r\n if (layerElem.hasOwnProperty('disclaimer')) {\r\n this.showDisclaimer(layerElem);\r\n }\r\n layerElem.checkLayer(isChecked);\r\n await this.toc.layerCkBoxClicked(event, layerElem);\r\n layerElem.isInScale = this.isLayerInScale(layerElem);\r\n\r\n this.ga.eventEmitter('layer', 'view-item', layerElem.serviceLayerID, layerElem.isChecked );\r\n this.cd.detectChanges();\r\n } catch (error) {\r\n layerElem.layerAvailable = false;\r\n this.ga.exception(error, true);\r\n this.cd.detectChanges();\r\n }\r\n }\r\n\r\n\r\n public updateOpacity(event){\r\n // sets the transparency on the layer from the map object\r\n //console.log('in updateOpacity');\r\n /* if (mapLayerObj && mapLayerObj.opacity >= 0) {\r\n mapLayerObj.opacity = transparency;\r\n } */\r\n\r\n }\r\n\r\n /**\r\n * TOC: Basemap Layer Checkbox clicked\r\n */\r\n public async basemapClicked(event: any, basemapElem: any) {\r\n try {\r\n this.mapRef = this.map.getViewRef();\r\n if (this.mapRef && this.mapRef.map && this.mapRef.map.basemap && this.mapRef.map.basemap.baseLayers) {\r\n if (this.mapRef.map.basemap.baseLayers.items && this.mapRef.map.basemap.baseLayers.items[0]) {\r\n this.mapRef.map.basemap.baseLayers.items[0].visible = basemapElem.isChecked;\r\n }\r\n else {\r\n console.log('In TOC basemapClicked: Basemap missing');\r\n }\r\n basemapElem.isChecked = event.checked;\r\n }\r\n\r\n }\r\n catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n /**\r\n * Shows disclaimer if there is one for the selected node\r\n * @param node: node passed in from TOC click\r\n */\r\n public showDisclaimer(node) {\r\n if (node.disclaimer && (node.disclaimer.showDisclaimer || node.disclaimer.showDisclaimer === undefined) ) {\r\n this.dialog.open(DialogComponent, {\r\n data: node.disclaimer\r\n });\r\n node.disclaimer.showDisclaimer = false;\r\n }\r\n }\r\n\r\n /**\r\n * Shows disclaimer from file\r\n * @param fileNm\r\n */\r\n private async showDisclaimerFromFile(fileDisclaimerObj) {\r\n if (fileDisclaimerObj && fileDisclaimerObj.fileName &&\r\n (fileDisclaimerObj.showDisclaimer || fileDisclaimerObj.showDisclaimer === undefined)) {\r\n await fetch (fileDisclaimerObj.fileName).then(\r\n res => res.text()).then(\r\n tempData => {\r\n this.htmlFileString = this.sanitizer.sanitize(SecurityContext.HTML,this.sanitizer.bypassSecurityTrustHtml(tempData));\r\n this.showDisclaimer({\"disclaimer\": {\"message\": this.htmlFileString}});\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Determines whether layer in scale is\r\n * @param node\r\n * @returns\r\n */\r\n public isLayerInScale(node: AGSLayer) {\r\n this.mapScale = this.toc.getMapScale();\r\n node.isInScale = (node.minScale === undefined || node.minScale === 0 || node.minScale >= this.mapScale)\r\n && (node.maxScale === undefined || node.maxScale === 0 || node.maxScale <= this.mapScale);\r\n return node.isInScale;\r\n }\r\n\r\n /**\r\n * Determines whether layer is available\r\n * @param node\r\n * @returns\r\n */\r\n public isLayerAvailable(node:AGSLayer) {\r\n return node.layerAvailable;\r\n }\r\n\r\n /**\r\n * TOC: Parent Checkbox clicked\r\n */\r\n public parentCkBoxClicked(event, node: any) {\r\n try {\r\n node.isChecked = event.checked;\r\n this.toc.parentCkBoxClicked(node);\r\n // Check for group dependent folders. These are parent nodes with a groupDependency property. Only\r\n // 1 folder within the group Dependent folders, can be turned on at a time.\r\n const currState = this;\r\n if (node.isChecked && node.groupDependency) {\r\n const groupDepName = node.groupDependency;\r\n let nodeMatches = [];\r\n this.TOCNodeArray.forEach((nodeEvent) => {\r\n const e: any = nodeEvent;\r\n nodeMatches = nodeMatches.concat(e.nodes.filter((c) => {\r\n if (c.id !== node.id && c.isChecked && c.groupDependency && c.groupDependency === groupDepName) {\r\n c.isChecked = false;\r\n currState.toc.parentCkBoxClicked(c);\r\n return (c);\r\n }\r\n }));\r\n });\r\n }\r\n this.ga.eventEmitter('layer', 'view-item', node.serviceLayerID, node.isChecked );\r\n this.cd.detectChanges();\r\n } catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n /**\r\n * Trackby function to optimize changes to the material tree object\r\n * @param index: index item\r\n */\r\n public trackBy(index) {\r\n return index;\r\n }\r\n\r\n /**\r\n * Handles user triggered event when a theme item is clicked\r\n * Updates the hash link with the theme item\r\n * @param item: String item that was clicked on\r\n */\r\n public async themeClick(item) {\r\n this.clearSearch();\r\n this.cd.detectChanges();\r\n try {\r\n if (item) {\r\n //console.log('***in toc themeClick: ' + item + ' currentTheme: ' + this.config.CurrentTheme +\r\n //' chosenThemeName: ' + this.toc.getTheme(item));\r\n const chosenThemeName = this.toc.getTheme(item);\r\n if (chosenThemeName && this.config) {\r\n this.loading = true;\r\n this.toc.firstRunFlag = false;\r\n this.toc.removeAllLayers(true);\r\n this.config.CurrentTheme = item;\r\n this.currentTheme = this.config.CurrentTheme;\r\n this.toc.currentTheme = this.config.CurrentTheme;\r\n //console.log('toc-comp call initService: ' + this.config.CurrentTheme);\r\n await this.initService.init(true);\r\n //console.log('toc-comp aft call initService: ' + this.config.CurrentTheme);\r\n this.initializeToC();\r\n //console.log('toc-comp aft initializeTOC call themeChange: ' + this.config.CurrentTheme);\r\n this.toc.themeChange(this.config.CurrentTheme);\r\n this.loading = false;\r\n this.cd.detectChanges();\r\n\r\n /* if (this.config && this.config['maintainThemeMapExtent'] && this.config['maintainThemeMapExtent'] === true) {\r\n const currMapExt = this.toc.getMapExtentCoordString(['xmin','xmax','ymin','ymax']);\r\n if (currMapExt && currMapExt.length > 0) {\r\n url = url + '?currMapExt=' + currMapExt;\r\n }\r\n } */\r\n /* this.location.go(url);\r\n window.location.reload(); */\r\n //this.cd.detectChanges();\r\n }\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n public async themeClickOrig(item) {\r\n try {\r\n if (item) {\r\n const chosenThemeName = this.toc.getTheme(item);\r\n if (chosenThemeName && this.config) {\r\n let url = this.router.createUrlTree([], {relativeTo: this.route}).toString();\r\n url = url + '#' + chosenThemeName;\r\n /* if (this.config && this.config['maintainThemeMapExtent'] && this.config['maintainThemeMapExtent'] === true) {\r\n const currMapExt = this.toc.getMapExtentCoordString(['xmin','xmax','ymin','ymax']);\r\n if (currMapExt && currMapExt.length > 0) {\r\n url = url + '?currMapExt=' + currMapExt;\r\n }\r\n } */\r\n this.location.go(url);\r\n window.location.reload();\r\n //this.cd.detectChanges();\r\n }\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n/**\r\n * Changelog click\r\n */\r\npublic changelogClick() {\r\n this.dialog.open(ChangelogDialogComponent, {\r\n data: this.config.changelog\r\n });\r\n }\r\n}\r\n","\r\n\r\n
\r\n
\r\n \r\n Search layers\r\n \r\n \r\n {{tag}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n\r\n {{node.name}}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n chevron_right\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {{node.id}}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n\r\n {{node.name}}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n chevron_right\r\n \r\n
\r\n \r\n \r\n
\r\n {{node.id}}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n","import {Injectable} from '@angular/core';\r\nimport {AttributeTableRecord} from '../../interfaces/attribute-table';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {IdentifyParseService} from '../identify/identify-parse.service';\r\nimport {QueryObject, QueryObjectResults} from '../../interfaces/query';\r\nimport {QueryService} from '../query/query.service';\r\nimport {GoogleAnalyticsService} from '../googleAnalytics/google-analytics.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AttributeService {\r\n private attributeObservable = new BehaviorSubject(null);\r\n public tableObj: AttributeTableRecord[] = [];\r\n\r\n constructor(private identify: IdentifyParseService, private query: QueryService, private ga: GoogleAnalyticsService) { }\r\n\r\n public getAttributeObservable() { return this.attributeObservable.asObservable(); }\r\n public getTableObj() { return this.tableObj; }\r\n public removeTab(index) { this.tableObj.splice(index, 1); }\r\n public removeAll() { this.tableObj = []; }\r\n\r\n /**\r\n * Handles what happens when a query is made or an attribute table layer is opened\r\n * @param result: Initial ArcGIS Server REST query result\r\n */\r\n public async onQuery(result) {\r\n try {\r\n const fullQuery = this.mergeQueryArray(result);\r\n let columns = this.getColumns(fullQuery);\r\n columns = this.setupColumnDef(columns);\r\n let rows = this.getRows(fullQuery);\r\n const tableObj: AttributeTableRecord = this.createTableObject(fullQuery, columns, rows);\r\n this.tableObj.unshift(tableObj);\r\n this.attributeObservable.next(true);\r\n\r\n if (fullQuery.queryTaskObj.relateObj) {\r\n const queryRelates = await this.queryRelates(fullQuery);\r\n const fullRelatedQuery = this.mergeQueryRelatedArray(queryRelates);\r\n for (const layer of fullRelatedQuery) {\r\n columns = this.getColumns(layer);\r\n columns.unshift({headerName: 'ObjectID of relate', field: 'relatedObjectID'});\r\n columns = this.setupColumnDef(columns);\r\n rows = this.getRelatedRows(layer);\r\n const relateObj: AttributeTableRecord = this.createTableObject(layer, columns, rows);\r\n this.tableObj.unshift(relateObj);\r\n this.attributeObservable.next(true);\r\n }\r\n }\r\n return true;\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Sets up the default column definitions for the first row\r\n * It allows the first row to have a checkbox on each item, and a checkbox on the column itself\r\n * @param columns: Array of columns for ag-grid display\r\n */\r\n private setupColumnDef(columns) {\r\n if (columns.length > 0) {\r\n columns[0].checkboxSelection = true;\r\n columns[0].headerCheckboxSelection = true;\r\n columns[0].headerCheckboxSelectionFilteredOnly = true;\r\n }\r\n return columns;\r\n }\r\n\r\n /**\r\n * Creates a attribute table object for display in the attribute table component\r\n * @param layer: AGSLayer object\r\n * @param columns: Formatted columns to be displayed on the ag-grid table\r\n * @param rows: Formatted rows to be displayed on the ag-grid table\r\n */\r\n private createTableObject(layer, columns, rows): AttributeTableRecord {\r\n return {\r\n alias: layer.queryTaskObj.name,\r\n columns,\r\n count: layer.queryResults.featureCount,\r\n color: null,\r\n header: layer.queryTaskObj.name,\r\n parent: layer.queryTaskObj.parent,\r\n outFields: layer.queryTaskObj.outFields,\r\n relateObj: layer.queryTaskObj.relateObj,\r\n rows,\r\n url: layer.queryTaskObj.layerTaskUrl,\r\n formatFields: layer.queryTaskObj.formatFields,\r\n token: layer.queryTaskObj.token\r\n };\r\n }\r\n\r\n /**\r\n * Merges an array of ArcGIS Server REST query results for a single service into a single object\r\n * @param result: ArcGIS Server REST query result\r\n */\r\n private mergeQueryArray(result) {\r\n const fullQuery = result[0];\r\n let index = 0;\r\n for (const layer of result) {\r\n if (index !== 0) {\r\n fullQuery.queryResults.featureSet.features =\r\n fullQuery.queryResults.featureSet.features.concat(layer.queryResults.featureSet.features);\r\n fullQuery.queryResults.featureCount += layer.queryResults.featureCount;\r\n fullQuery.queryTaskObj.objectIds += layer.queryTaskObj.objectIds;\r\n }\r\n index++;\r\n }\r\n return fullQuery;\r\n }\r\n\r\n /**\r\n * Merges an array of ArcGIS Server REST query results from all of the related tables of a service\r\n * This will merge each table into it's own array entry\r\n * @param result: Array of ArcGIS Server related table REST queries\r\n */\r\n private mergeQueryRelatedArray(result) {\r\n const fullQuery = [];\r\n if (result[0]) {\r\n fullQuery.push(result[0]);\r\n for (const layer of result) {\r\n let layerExists = false;\r\n for (const mergedLayer of fullQuery) {\r\n if (mergedLayer.queryTaskObj.name === layer.queryTaskObj.name &&\r\n mergedLayer.queryResults.featureSet.relatedRecordGroups.length > 0) {\r\n layerExists = true;\r\n mergedLayer.queryResults.featureSet.relatedRecordGroups =\r\n mergedLayer.queryResults.featureSet.relatedRecordGroups.concat(layer.queryResults.featureSet.relatedRecordGroups);\r\n mergedLayer.queryTaskObj.objectIds += layer.queryTaskObj.objectIds;\r\n }\r\n }\r\n if (!layerExists) {\r\n fullQuery.push(layer);\r\n }\r\n }\r\n }\r\n return fullQuery;\r\n }\r\n\r\n /**\r\n * Formats the row object from an ArcGIS REST query into an array of rows for the ag-grid API\r\n * @param serverQuery: ArcGIS REST query result\r\n */\r\n private getRows(serverQuery) {\r\n const rows = [];\r\n if (serverQuery && serverQuery.queryResults && serverQuery.queryResults.featureSet) {\r\n for (const record of serverQuery.queryResults.featureSet.features) {\r\n let item = Object.assign({}, record.attributes);\r\n item = this.identify.formatCheck(serverQuery.queryResults.featureSet.fields, item, serverQuery.queryTaskObj.formatFields);\r\n item.geometry = record.geometry;\r\n item.geometryType = serverQuery.queryResults.featureSet.geometryType;\r\n rows.push(item);\r\n }\r\n }\r\n return rows;\r\n }\r\n\r\n /**\r\n * Formats the row object from a related table ArcGIS REST query into an array of rows for the ag-grid API\r\n * @param serverQuery: ArcGIS REST query result\r\n */\r\n private getRelatedRows(serverQuery) {\r\n const rows = [];\r\n for (const records of serverQuery.queryResults.featureSet.relatedRecordGroups) {\r\n for (const record of records.relatedRecords) {\r\n let item = Object.assign({}, record.attributes);\r\n item = this.identify.formatCheck(serverQuery.queryResults.featureSet.fields, item, serverQuery.queryTaskObj.formatFields);\r\n item.relatedObjectID = records.objectId;\r\n rows.push(item);\r\n }\r\n }\r\n return rows;\r\n }\r\n\r\n /**\r\n * Parses query result for column object\r\n * Builds the column object required by ag-grid to function correctly\r\n */\r\n public getColumns(serverQuery) {\r\n const column = [];\r\n if (serverQuery && serverQuery.queryResults && serverQuery.queryResults.featureSet && serverQuery.queryResults.featureSet.fields) {\r\n for (const row of serverQuery.queryResults.featureSet.fields) {\r\n const entry: any = {headerName: row.alias, field: row.name};\r\n if (row.alias.toLowerCase().search('url') > -1 || row.alias.toLowerCase().search('link') > -1) {\r\n entry.cellRenderer = (params) => {\r\n if (params.value) { return 'Link'; } else { return null; }\r\n };\r\n }\r\n if (row.alias.toLowerCase().search('date') > -1) {\r\n entry.comparator = this.sortDate;\r\n }\r\n column.push(entry);\r\n }\r\n }\r\n return column;\r\n }\r\n\r\n /**\r\n * Date sorting function\r\n * @param date1: first date to sort\r\n * @param date2: second date to sort\r\n */\r\n private sortDate(date1, date2) {\r\n if (date1 && date2) {\r\n date1 = new Date(date1);\r\n date2 = new Date(date2);\r\n return date2 - date1;\r\n } else if (date1 === null) {\r\n return -1;\r\n } else if (date2 === null) {\r\n return 1;\r\n } else { return 0; }\r\n }\r\n\r\n /**\r\n * Takes an ArcGIS REST query and then queries all of it's related tables\r\n * Will query 1000 records at a time for all of the related tables\r\n * Returns an array of promises with all of the relates\r\n * @query: ArcGIS REST query\r\n */\r\n private async queryRelates(query) {\r\n try {\r\n const queryArr = [];\r\n if (query.queryTaskObj.relateObj && query.queryTaskObj.objectIds) {\r\n for (const j of query.queryTaskObj.relateObj) {\r\n const objectIdArr = query.queryTaskObj.objectIds.split(',');\r\n for (let i = 0; i < objectIdArr.length; i += 1000) {\r\n let subset = [];\r\n subset = objectIdArr.slice(i, i + 1000);\r\n let objectids = '';\r\n for (const chunk of subset) {\r\n if (objectids === '') {\r\n objectids = objectids + chunk;\r\n } else {\r\n objectids = objectids + ',' + chunk;\r\n }\r\n }\r\n const relateQueryTaskObj: QueryObject = {};\r\n relateQueryTaskObj.objectIds = objectids;\r\n relateQueryTaskObj.layerTaskUrl = query.queryTaskObj.layerTaskUrl;\r\n relateQueryTaskObj.name = query.queryTaskObj.name + ': ' + j.alias;\r\n relateQueryTaskObj.parent = query.queryTaskObj.name;\r\n relateQueryTaskObj.outFields = j.outFields;\r\n relateQueryTaskObj.formatFields = j.formatFields;\r\n relateQueryTaskObj.relationshipClassIDS = j.ID;\r\n relateQueryTaskObj.queryMethod = 'POST';\r\n relateQueryTaskObj.returnGeometry = true;\r\n relateQueryTaskObj.token = query.queryTaskObj.token;\r\n relateQueryTaskObj.relateObj = query.queryTaskObj.relateObj;\r\n queryArr.push(this.query.queryData(relateQueryTaskObj));\r\n }\r\n }\r\n }\r\n return await Promise.all(queryArr);\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n return [];\r\n }\r\n }\r\n\r\n /**\r\n * Returns all of the features in a requested AGSLayer\r\n * @param queryObj: ArcGIS Server REST query\r\n */\r\n public async getFullLayer(queryObj: QueryObject): Promise {\r\n try {\r\n const result = await this.query.queryData(queryObj);\r\n const queryAr = await this.parseQuery(result);\r\n this.onQuery(queryAr);\r\n return true;\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Handles the event fired when a user clicks on a layer in the select visible layers dropdown menu\r\n * It formats an ArcGIS server REST query for the selected layer\r\n * Then it asks the attribute service to get all of the data for that layer\r\n * @param layer: AGSlayer object to select\r\n */\r\n public async selectLayer(layer) {\r\n try {\r\n if (layer) {\r\n const queryObject: QueryObject = {};\r\n queryObject.name = layer.name;\r\n queryObject.layerTaskUrl = layer.url + '/' + layer.visibleLayersArr[0];\r\n queryObject.relateObj = layer.relateObj;\r\n queryObject.outFields = layer.outFields;\r\n queryObject.formatFields = layer.formatFields;\r\n queryObject.queryMethod = 'POST';\r\n queryObject.returnGeometry = true;\r\n queryObject.token = layer.token;\r\n queryObject.returnType = 'OBJECTIDS';\r\n queryObject.whereClause = 'OBJECTID > 0';\r\n await this.getFullLayer(queryObject);\r\n }\r\n else {\r\n console.log('No layer in selectLayer in attribute service');\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * controls what happens when a query request is made. It grabs all of the objectids returned and queries the\r\n * feature class and all of the related tables for all of those objectIDs 1000 entries at a time\r\n * @param query: ArcGIS server query result\r\n */\r\n public async parseQuery(query: QueryObjectResults) {\r\n try {\r\n const resultArr = [];\r\n if (query.queryResults.objectIdArr && query.queryResults.objectIdArr.length > 0) {\r\n for (let i = 0; i < query.queryResults.objectIdArr.length; i += 1000) {\r\n let subset = [];\r\n const queryTaskObj: QueryObject = {};\r\n subset = query.queryResults.objectIdArr.slice(i, i + 1000);\r\n let objectids = '';\r\n for (const j of subset) {\r\n if (objectids === '') {\r\n objectids = objectids + j;\r\n } else {\r\n objectids = objectids + ',' + j;\r\n }\r\n }\r\n queryTaskObj.layerTaskUrl = query.queryTaskObj.layerTaskUrl;\r\n queryTaskObj.objectIds = objectids;\r\n queryTaskObj.returnGeometry = true;\r\n queryTaskObj.geometryPrecision = 4;\r\n queryTaskObj.returnType = 'FEATURES';\r\n queryTaskObj.queryMethod = 'POST';\r\n queryTaskObj.token = query.queryTaskObj.token;\r\n queryTaskObj.name = query.queryTaskObj.name;\r\n queryTaskObj.relateObj = query.queryTaskObj.relateObj;\r\n queryTaskObj.outFields = query.queryTaskObj.outFields;\r\n queryTaskObj.formatFields = query.queryTaskObj.formatFields;\r\n queryTaskObj.parent = query.queryTaskObj.parent;\r\n resultArr.push(this.query.queryData(queryTaskObj));\r\n }\r\n } else {\r\n return [query];\r\n }\r\n return await Promise.all(resultArr);\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n return [];\r\n }\r\n }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {RouterModule, Routes} from '@angular/router';\r\n\r\nimport {EsriMapViewComponent} from '../components/esri-map-view/esri-map-view.component';\r\nimport {EsriSceneViewComponent} from '../components/esri-scene-view/esri-scene-view.component';\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '2d-view',\r\n component: EsriMapViewComponent,\r\n children: [\r\n {\r\n path: 'help',\r\n loadChildren: () => import('./help-page.module').then(mod => mod.HelpPageModule)\r\n }\r\n ]\r\n },\r\n {\r\n path: '3d-view',\r\n component: EsriSceneViewComponent,\r\n children: [\r\n {\r\n path: 'help',\r\n loadChildren: () => import('./help-page.module').then(mod => mod.HelpPageModule)\r\n }\r\n ]\r\n },\r\n {path: '**', redirectTo: '2d-view'}\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, {\r\n anchorScrolling: 'enabled',\r\n relativeLinkResolution: 'legacy'\r\n})],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import {Component} from '@angular/core';\r\nimport {MatSnackBarRef} from '@angular/material/snack-bar';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {PrivacyDialogComponent} from '../privacy-dialog/privacy-dialog.component';\r\n\r\n@Component({\r\n selector: 'app-privacy-snackbar',\r\n templateUrl: './privacy-snackbar.component.html',\r\n styleUrls: ['./privacy-snackbar.component.scss']\r\n})\r\nexport class PrivacySnackbarComponent {\r\n\r\n constructor(private snackbarRef: MatSnackBarRef, private dialog: MatDialog) { }\r\n\r\n public close() {\r\n this.snackbarRef.dismiss();\r\n }\r\n\r\n public openPrivacyDialog() {\r\n this.dialog.open(PrivacyDialogComponent);\r\n this.close();\r\n }\r\n}\r\n","

By using this website you agree to the privacy policy Privacy policy Close

\r\n","import {Component, Inject, SecurityContext} from '@angular/core';\r\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport { DomSanitizer} from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss']\r\n})\r\nexport class DialogComponent {\r\n\r\n public data;\r\n public dismissDialogText = 'OK';\r\n constructor(@Inject(MAT_DIALOG_DATA) private messageInfo: any, private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit(){\r\n if (this.messageInfo) {\r\n if (typeof this.messageInfo === \"string\") {\r\n this.data = this.messageInfo;\r\n }\r\n else {\r\n // messageInfo is an object\r\n if (this.messageInfo.dismissDialogText) {\r\n // Set the dismiss button text if specified\r\n this.dismissDialogText = this.messageInfo.dismissDialogText;\r\n }\r\n if (this.messageInfo.messageType && this.messageInfo.messageType === 'file') {\r\n this.readFileToString(this.messageInfo.message)\r\n }\r\n else {\r\n this.data = this.messageInfo.message;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * If dialog info is in a file, reads the file content to a string\r\n * @param fileNm \r\n */\r\n private async readFileToString(fileNm) {\r\n await fetch (fileNm).then(\r\n res => res.text()).then(\r\n tempData => {\r\n this.data = this.sanitizer.sanitize(SecurityContext.HTML,this.sanitizer.bypassSecurityTrustHtml(tempData));\r\n }); \r\n \r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n

\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {TagFilterByPipe} from '../pipes/tagFilter.pipe';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TagFilterByPipe\r\n ],\r\n exports: [\r\n TagFilterByPipe\r\n ],\r\n imports: [\r\n CommonModule,\r\n ]\r\n})\r\nexport class TagFilterPipe { }\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './print-entry.component.html'\r\n})\r\nexport class PrintEntryComponent {}\r\n","\r\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\r\n\r\nimport {MapService} from '../../services/map/map.service';\r\n\r\n/**\r\n * Creates the back button on the top left of the esri-ui that allows the user to go back to previous locations\r\n */\r\n@Component({\r\n selector: 'app-previous-extent',\r\n templateUrl: './previous-extent.component.html',\r\n styleUrls: ['./previous-extent.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PreviousExtentComponent implements OnInit {\r\n\r\n constructor(private map: MapService) { }\r\n\r\n ngOnInit() {}\r\n\r\n /**\r\n * Controls tool click action. Decrements the extent index tracker and zooms to previous extent\r\n */\r\n public onClick() {\r\n const extentAr = this.map.getExtentAr();\r\n const extentIndex = this.map.getExtentIndex();\r\n if (extentAr[extentIndex - 1]) {\r\n this.map.holdZoomTrue();\r\n this.map.getViewRef().goTo({\r\n target: extentAr[extentIndex - 1],\r\n heading: 0,\r\n });\r\n this.map.setExtentIndex(this.map.getExtentIndex() - 1);\r\n }\r\n\r\n }\r\n\r\n}\r\n","
\r\n \r\n Zoom to previous extent\r\n
\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit} from '@angular/core';\r\nimport {TableOfContentsService} from '../../../../services/toc/table-of-contents.service';\r\nimport {MapService} from '../../../../services/map/map.service';\r\nimport {GridService} from '../../../../services/grid/grid.service';\r\nimport {AttributeService} from '../../../../services/attribute/attribute.service';\r\nimport {DisclaimerDialogComponent} from '../disclaimer-dialog/disclaimer-dialog.component';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {GoogleAnalyticsService} from '../../../../services/googleAnalytics/google-analytics.service';\r\n\r\n@Component({\r\n selector: 'app-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DropdownComponent implements OnInit {\r\n @Input() public node: any = {};\r\n\r\n public transparency = 1;\r\n public currentPath = '/2d-view';\r\n private featureLayerObj;\r\n\r\n\r\n constructor(private toc: TableOfContentsService, private map: MapService, private cd: ChangeDetectorRef, private dialog: MatDialog,\r\n private grid: GridService, private attribute: AttributeService, private ga: GoogleAnalyticsService) { }\r\n\r\n ngOnInit() {\r\n if (this.node.transparency) { \r\n this.transparency = this.node.transparency;\r\n }\r\n \r\n const layerSvcComplete = this.toc.getlayerServiceInfoComplete().subscribe(\r\n (layerElem) => {\r\n if (layerElem != undefined && this.node != undefined && layerElem.id === this.node.id) {\r\n // Set label property for node after reading service layer information\r\n this.node.label = layerElem.label;\r\n this.node.minScale = layerElem.minScale;\r\n this.node.maxScale = layerElem.maxScale;\r\n this.node.isLayerInScale = layerElem.isLayerInScale;\r\n this.node.layerAvailable = layerElem.layerAvailable;\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Show layer description\r\n */\r\n public async ShowDescription() {\r\n let layerDescriptionData = \"No description data available for Layer: \" + this.node.name;\r\n if (this.node.description && this.node.description.length > 0) {\r\n layerDescriptionData = this.node.description;\r\n }\r\n else {\r\n // Get layer description from rest endpoint\r\n if (!this.node.serviceMetadataReturned && this.node.nodeType !== 'basemap') {\r\n // get service metadata for layer\r\n const retLayerElem: any = await this.toc.getLayerServiceInfo(this.node);\r\n if (retLayerElem && retLayerElem.description && retLayerElem.description.length > 0) {\r\n layerDescriptionData = this.node.description;\r\n } \r\n }\r\n\r\n if (this.node.nodeType === 'basemap' && this.node.url && this.node.url.length > 0) {\r\n const urlJson = this.node.url.trim() + '?f=pjson'\r\n const retLayerInfo: any = await this.toc.getServiceInfo(urlJson);\r\n if (retLayerInfo && retLayerInfo.description && retLayerInfo.description.length > 0) {\r\n this.node.description = retLayerInfo.description;\r\n //console.log('get description from url: ' + this.node.id);\r\n layerDescriptionData = this.node.description;\r\n } \r\n }\r\n }\r\n // Display description\r\n this.showDialog(layerDescriptionData, \"text\");\r\n }\r\n\r\n /**\r\n * User event when the opacity slider is moved\r\n * Updates the AGSLayer reference opacity attribute to the updated slider position\r\n * @param event: Material slider event\r\n */\r\n public updateOpacity(event) {\r\n if (event && event.value ) {\r\n const testLayer: any = this.node;\r\n if (testLayer.nodeType === 'basemap') {\r\n this.toc.changeBasemapTransparency(event.value);\r\n }\r\n else {\r\n if (testLayer.nodes) {\r\n for (const i of testLayer.nodes) {\r\n this.toc.changeLayerTransparency(i, event.value);\r\n if (i.nodes) {\r\n for (const j of i.nodes) {\r\n this.toc.changeLayerTransparency(j, event.value);\r\n }\r\n }\r\n }\r\n } else {\r\n this.toc.changeLayerTransparency(this.node, event.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Toggle layer labels on or off\r\n */\r\n public labelLayer() {\r\n this.toc.toggleLayerLabels(this.node);\r\n }\r\n\r\n /**\r\n * User event function that fires when they click on the attribute table option\r\n * Opens the full layer in the attribute table using the attribute service\r\n */\r\n public async openAttributeTable() {\r\n // Get the latest version of the AGSLayer that was selected\r\n const nodeSvcLayerID = this.node.serviceLayerID;\r\n const currLayer = this.toc.agsLayerList.findLayerInVisibleLayerListByID(nodeSvcLayerID);\r\n \r\n // Feature layer urls end with the layer id, map service layers don't\r\n let layerUrl = this.node.url + '/' + this.node.visibleLayersArr[0];\r\n if (this.node.url.trim().endsWith('/' + this.node.visibleLayersArr[0])) {\r\n layerUrl = this.node.url;\r\n }\r\n\r\n this.featureLayerObj = {\r\n url: layerUrl,\r\n id: this.node.id,\r\n title: this.node.id,\r\n layerDashboardInfo: this.toc.getlayerDashboardInfo(this.node)\r\n }\r\n // Turn on feature table widget to add this layers attribute table\r\n await this.grid.widgetOff('attributes');\r\n await this.grid.widgetOn('attributes');\r\n this.toc.featuretableObservable.next(this.featureLayerObj);\r\n }\r\n\r\n /**\r\n * Shows a mat dialog popup using dynamic text\r\n *\r\n * @param dialogData: Text to display\r\n */\r\n public showDialog(dialogData, type) {\r\n this.dialog.open(DisclaimerDialogComponent, {\r\n data: {message: dialogData, messageType: type}\r\n });\r\n }\r\n\r\n public gtag(button, layer) {\r\n this.ga.eventEmitter('dropdown', 'dropdown', button, layer);\r\n }\r\n}\r\n","\r\n\r\n
\r\n
Transparency
\r\n \r\n
\r\n \r\n \r\n \r\n Download\r\n \r\n \r\n Metadata\r\n \r\n \r\n Summary Report\r\n \r\n \r\n Hazus Report\r\n \r\n \r\n
\r\n\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './draw-entry.component.html'\r\n})\r\nexport class DrawEntryComponent {}\r\n","\r\n","import {Injectable} from '@angular/core';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {loadModules, setDefaultOptions} from 'esri-loader';\r\nimport {GoogleAnalyticsService} from '../googleAnalytics/google-analytics.service';\r\nimport esri = __esri;\r\n\r\n/**\r\n * Controls/creates the esri map object\r\n * Holds all of the default and cross widget values associated with the map object\r\n * The view reference components are ephemeral, so all of that data is stored here\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MapService {\r\n private mapLoadedObservable = new BehaviorSubject(null);\r\n private viewRefLoadedObservable = new BehaviorSubject(false);\r\n private mapScaleChangedObservable = new BehaviorSubject(null);\r\n private mapExtentChangedObservable = new BehaviorSubject(null);\r\n private basemapChangedObservable = new BehaviorSubject(false);\r\n\r\n /**\r\n * Keeps track of of the view references for when a user swaps between them\r\n *\r\n * @private\r\n */\r\n private mapViewAr = [];\r\n\r\n private zoom = 7.5;\r\n private center: Array = [-120, 47.5];\r\n private mapRef: esri.Map;\r\n private viewRef;\r\n private searchWidgetRef;\r\n private scale;\r\n private rotation;\r\n private elevationLayer;\r\n private options: any = { version: '4.21', insertCssBefore: true, css: false };\r\n private mapType = 2;\r\n private extentTracker = [];\r\n private extentIndex = -1;\r\n private holdZoom = false;\r\n private identifyObservable = new BehaviorSubject(null);\r\n private identifyWatchObs;\r\n private mapScale: any;\r\n private mapExtent: any;\r\n \r\n\r\n constructor(private ga: GoogleAnalyticsService ) {}\r\n\r\n public getmapLoadedObservable() { return this.mapLoadedObservable; }\r\n public getZoom() { return this.zoom; }\r\n public setZoom(zoom) { this.zoom = zoom; }\r\n public getCenter() { return this.center; }\r\n public setCenter(center) { this.center = center; }\r\n public setScale(scale) { this.scale = scale; }\r\n public setRotation(rotation) { this.rotation = rotation; }\r\n public setSearchWidget(widget) { this.searchWidgetRef = widget; }\r\n public setSceneViewGroundLayer() {\r\n if (this.mapRef.ground.layers.length <= 0) {\r\n this.mapRef.ground.layers.add(this.elevationLayer);\r\n }\r\n }\r\n public setMapViewGroundLayer() {\r\n this.mapRef.ground.layers.removeAll();\r\n }\r\n public getMapObject(): esri.Map { return this.mapRef; }\r\n public getMapType(): number { return this.mapType; }\r\n public setMapType(type) { this.mapType = type; }\r\n public destroyViewRef() {\r\n this.viewRef.destroy();\r\n this.viewRef = null;\r\n }\r\n public getMapViewAr() { return this.mapViewAr; }\r\n\r\n public setViewRef(view, alreadySetFlag?) { \r\n this.viewRef = view; \r\n view.popup.autoOpenEnabled = false; \r\n this.mapScale = this.viewRef.scale; \r\n this.mapExtent = this.viewRef.extent; \r\n if (!alreadySetFlag) {\r\n this.mapViewAr.push(view);\r\n }\r\n }\r\n public getViewRef() { return this.viewRef; }\r\n public getExtentAr() { return this.extentTracker; }\r\n public setExtentAr(extent: esri.Extent) { this.extentTracker.push(extent); }\r\n public getExtentIndex() { return this.extentIndex; }\r\n public setExtentIndex(index) { this.extentIndex = index; }\r\n public holdZoomTrue() { this.holdZoom = true; }\r\n public setViewRefObservable(value) { this.viewRefLoadedObservable.next(value); }\r\n public getViewRefObservable() { return this.viewRefLoadedObservable.asObservable(); }\r\n public setMapScaleObservable(value) { this.mapScaleChangedObservable.next(value); }\r\n public getMapScaleObservable() { return this.mapScaleChangedObservable.asObservable(); }\r\n public setMapExtentObservable(value) { this.mapExtentChangedObservable.next(value); }\r\n public getMapExtentObservable() { return this.mapExtentChangedObservable.asObservable(); }\r\n public setBasemapObservable(value) { this.basemapChangedObservable.next(value); }\r\n public getBasemapObservable() { return this.basemapChangedObservable.asObservable(); }\r\n \r\n\r\n /**\r\n * Async creates the map object and then returns an observable call when it's done\r\n * @param observer: Observer to call on to signify that the map is complete\r\n * @param params: Map creation parameters\r\n */\r\n public async setupMap(observer, params: {\r\n zoom?: number,\r\n center?: Array,\r\n basemap?: string\r\n }) {\r\n try {\r\n let basemap = 'streets';\r\n if (params.zoom) {\r\n this.zoom = params.zoom;\r\n }\r\n if (params.center) {\r\n this.center = params.center;\r\n }\r\n if (params.basemap) {\r\n basemap = params.basemap;\r\n }\r\n const map = await this.initializeMap(basemap);\r\n await this.houseKeeping(map, observer);\r\n } catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n /**\r\n * Creates the map\r\n */\r\n public async initializeMap(basemap) {\r\n try {\r\n const [ElevationLayer, Ground, Map] = await loadModules([\r\n 'esri/layers/ElevationLayer',\r\n 'esri/Ground',\r\n 'esri/Map'\r\n ], this.options);\r\n setDefaultOptions(this.options);\r\n this.elevationLayer = new ElevationLayer({\r\n url: '//elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer'\r\n });\r\n const mapProperties: esri.MapProperties = {\r\n basemap,\r\n };\r\n const map: esri.Map = new Map(mapProperties);\r\n map.ground.navigationConstraint = {\r\n type: 'none'\r\n };\r\n\r\n // Watch for basemap changes\r\n const this$=this;\r\n var handle = map.watch(\"basemap.title\", function(newValue, oldValue, property, mapObject) {\r\n if (mapObject && mapObject[\"basemap\"]) {\r\n this$.setBasemapObservable(mapObject[\"basemap\"]);\r\n } \r\n });\r\n return map;\r\n } catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n /**\r\n * Sends the observable call that notifies any listeners that the map object was created\r\n * @param map: The map object\r\n * @param observable: The observable to call out on\r\n */\r\n private houseKeeping(map, observable) {\r\n this.mapRef = map;\r\n observable.next(map);\r\n this.ga.timing();\r\n return {unsubscribe() {}};\r\n }\r\n\r\n /**\r\n * Sets up the Esri watch commands for the previous extent button after the view object is initialized\r\n */\r\n public async setupPreviousExtentButton() {\r\n try {\r\n const [watchUtils] = await loadModules([\r\n 'esri/core/watchUtils'\r\n ]);\r\n\r\n watchUtils.whenTrue(this.getViewRef(), 'stationary', () => {\r\n // Check for mapScale and mapExtent changes\r\n if (this.getMapScale() !== this.mapScale) {\r\n // mapScale has changed\r\n this.mapScale = this.getMapScale();\r\n this.setMapScaleObservable(this.mapScale);\r\n } else {\r\n // Check for mapExent changed only if mapscale hasn't changed, avoids firing 2 events\r\n if (this.getMapExtent() !== this.mapExtent) {\r\n // mapExtent has changed\r\n this.mapExtent = this.viewRef.extent.clone();\r\n this.setMapExtentObservable(this.mapExtent);\r\n }\r\n }\r\n if (this.getViewRef().extent) {\r\n const view = this.getViewRef().extent;\r\n const extentAr = this.getExtentAr();\r\n const extentIndex = this.getExtentIndex();\r\n if (!this.holdZoom) {\r\n this.setExtentAr(view.extent);\r\n } else {\r\n // slices the extent tracker array if the back button is used\r\n if (extentAr.length > 1) {\r\n extentAr.splice(extentIndex, extentAr.length - extentIndex);\r\n }\r\n extentAr.push(view.extent);\r\n this.holdZoom = false;\r\n }\r\n this.setExtentIndex(extentAr.length - 1);\r\n }\r\n });\r\n } catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n /**\r\n * Creates the data for an expanded search widget that searches internal layers\r\n * @param layer: Search config object\r\n */\r\n public async createSearchLayers(layer) {\r\n try {\r\n const [FeatureLayer] = await loadModules([\r\n 'esri/layers/FeatureLayer'\r\n ]);\r\n if (!layer.config) {\r\n layer.config = {};\r\n }\r\n layer.config.layer = new FeatureLayer({\r\n url: layer.url\r\n });\r\n return layer.config;\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * Return current mapscale.\r\n */\r\n public getMapScale() {\r\n if (this.viewRef && this.viewRef.scale) {\r\n return this.viewRef.scale;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public getMapExtent() {\r\n if (this.viewRef && this.viewRef.extent) {\r\n return this.viewRef.extent;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Get the layer object on the map by id.\r\n * @param mapRef: map reference\r\n * @param serviceLayerID: serviceLayerID for layer\r\n */\r\n public getLayerFromMapView(mapRef: any, serviceLayerID: string) {\r\n let mapLayerObj: any;\r\n if (mapRef && mapRef.map && mapRef.map.layers) {\r\n const layerViews = mapRef.map.layers;\r\n if (layerViews !== undefined) {\r\n const layerItems = layerViews.items;\r\n for (const layerItem of layerItems) {\r\n if (layerItem.id === serviceLayerID) {\r\n mapLayerObj = layerItem;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return mapLayerObj;\r\n }\r\n\r\n public enableIdentify() {\r\n if (this.getViewRef()) {\r\n this.identifyWatchObs = this.getViewRef().on('click', (e) => {\r\n this.identifyObservable.next(e);\r\n });\r\n }\r\n }\r\n public getIdentifyObservable() { return this.identifyObservable.asObservable(); }\r\n\r\n public disableIdentify() {\r\n if (this.identifyWatchObs) {\r\n this.identifyObservable.next(null);\r\n this.identifyWatchObs.remove();\r\n this.identifyWatchObs = null;\r\n }\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\n@Component({\r\n templateUrl: './checkLocal-entry.component.html'\r\n})\r\nexport class CheckLocalEntryComponent {}\r\n","\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './attribute-table-entry.component.html'\r\n})\r\nexport class AttributeTableEntryComponent {}\r\n","\r\n","/**\r\n * Default values for the config file located in the environments folder\r\n */\r\nexport class ConfigService {\r\n public changelog;\r\n public appName = 'geology';\r\n public AGSVersion = '10.7';\r\n public AppVersion = '';\r\n public pageTitle = 'DNR Viewer';\r\n public appAccessType = 'public';\r\n public logoBanner = 'https://fortress.wa.gov/dnr/geologydata/photos/em_dnr_logo_white_PNG.png';\r\n public logoUrl = 'http://www.dnr.wa.gov/geology';\r\n public appContactInfo;\r\n public appWebLinks;\r\n public tools = [{\r\n id: 'toc',\r\n name: 'Table of Contents',\r\n openByDefault: true,\r\n visible: 'visible',\r\n width: '45px',\r\n iconWidth: '20px',\r\n padding: '15px',\r\n margin: '5px',\r\n position: 1,\r\n status: 'widget-on',\r\n icon: './assets/widget-bar/',\r\n button: 'vis',\r\n grid: false\r\n }, {\r\n id: 'identify',\r\n name: 'Identify',\r\n visible: 'visible',\r\n width: '45px',\r\n iconWidth: '20px',\r\n padding: '15px',\r\n margin: '5px',\r\n position: 1,\r\n status: 'widget-on',\r\n icon: './assets/widget-bar/',\r\n button: 'vis',\r\n grid: false\r\n }, {\r\n id: 'feedback',\r\n name: 'Feedback',\r\n message: 'Please provide us with feedback. You can send us an email or take a survey',\r\n email: ['Michael.Tonkel@dnr.wa.gov'],\r\n survey: 'https://www.surveymonkey.com/r/WGSportal'\r\n }];\r\n public appTools = [];\r\n public initialTheme = '';\r\n public themeUrlParameters;\r\n public CurrentTheme = '';\r\n public Themes;\r\n public serviceSwatchPath = '';\r\n public themeLayerProperties;\r\n public themeLayers;\r\n public themesInfo;\r\n public search = [];\r\n public themeTOCNodeFileName;\r\n public geometryServer = '';\r\n public hasMultipleThemes: boolean;\r\n public themeNameList = [];\r\n public printMapTool: any;\r\n public queryTasks: any;\r\n public themeQueryTasks: any;\r\n public swatchLegendDictionary: any;\r\n public appHref: string;\r\n public DNRProgramWebsite: string;\r\n public gtag = '';\r\n public mapInitialLayer = 'streets';\r\n public mapInitialLayerVisible = true;\r\n public mapInitialCenter = [-120, 47.5];\r\n public mapInitialZoomLevel = 7.5;\r\n public defaultVisibleLayers;\r\n public tocNodeArray;\r\n public portalToken;\r\n public portalCredential;\r\n public doNotPrintLayerList;\r\n public USGSTopoMaps;\r\n public nonToolbarWidgets;\r\n public closeToolsOnThemeSwitch;\r\n public WtmfPDFInfo;\r\n public helpImage;\r\n public removeServiceNamesFromLegend = false;\r\n public dashboardInfo;\r\n}\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './select-entry.component.html'\r\n})\r\nexport class SelectEntryComponent {}\r\n","\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {WidgetContainerComponent} from '../components/widgets/widget-container/widget-container.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [WidgetContainerComponent],\r\n exports: [WidgetContainerComponent],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class WidgetContainerModule { }\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit} from '@angular/core';\r\n\r\nimport {MapService} from '../../services/map/map.service';\r\nimport {GoogleAnalyticsService} from '../../services/googleAnalytics/google-analytics.service';\r\nimport {BookmarkService} from '../../services/bookmark/bookmark.service';\r\n\r\n/**\r\n * Adds the lat/long and scale to the bottom left of the screen\r\n */\r\n@Component({\r\n selector: 'app-coordinate',\r\n templateUrl: './coordinate.component.html',\r\n styleUrls: ['./coordinate.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CoordinateComponent implements OnInit, OnDestroy {\r\n private Longitude = 0;\r\n get longitude(): number { return this.Longitude; }\r\n\r\n private Latitude = 0;\r\n get latitude(): number { return this.Latitude; }\r\n\r\n private viewRefObservable;\r\n public mapRef;\r\n private mapObservable;\r\n public mapScale;\r\n\r\n constructor(private map: MapService, private ga: GoogleAnalyticsService,\r\n private bookmark: BookmarkService, private cd: ChangeDetectorRef) { \r\n }\r\n\r\n ngOnInit() {\r\n this.viewRefObservable = this.map.getViewRefObservable().subscribe( (value) => {\r\n if (value) {\r\n this.setupCoordinateTracker();\r\n this.mapRef = this.map.getViewRef();\r\n this.bookmark.initService();\r\n }\r\n }, (error) => {\r\n this.ga.exception(error, false);\r\n });\r\n this.mapObservable = this.map.getMapScaleObservable().subscribe( (result) => {\r\n //.subscribe(() => {\r\n this.mapScale = result;\r\n //console.log('in coordinate componennt mapscale: ' + this.mapScale);\r\n this.cd.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.viewRefObservable) { this.viewRefObservable.unsubscribe(); }\r\n if (this.mapObservable) { this.mapObservable.unsubscribe(); }\r\n }\r\n\r\n /**\r\n * Sets up the view observables to keep track of the latitude, longitude and scale as a user moves around\r\n */\r\n public setupCoordinateTracker() {\r\n this.map.getViewRef().on('pointer-move', null, (evt) => {\r\n this.getCoordinates(this.map.getViewRef().toMap({ x: evt.x, y: evt.y }));\r\n }, (error) => {\r\n this.ga.exception(error, false);\r\n });\r\n }\r\n\r\n /**\r\n * Converts the latitude and longitude to a fixed decimal with toFixed\r\n * @param pt: The point to convert and set\r\n */\r\n private getCoordinates(pt: any) {\r\n if (pt && pt.latitude && pt.longitude) {\r\n this.Latitude = pt.latitude.toFixed(3);\r\n this.Longitude = pt.longitude.toFixed(3);\r\n this.cd.detectChanges();\r\n }\r\n }\r\n}\r\n","
\r\n

\r\n Scale: 1:{{mapScale | number:'.0-0'}}\r\n

\r\n
\r\n Lat: {{latitude}}   Long: {{longitude}}\r\n
\r\n
\r\n","import {EventEmitter, Injectable, Output} from '@angular/core';\r\nimport {loadModules} from 'esri-loader';\r\nimport esri = __esri;\r\n\r\n@Injectable()\r\n\r\nexport class AGSLayer {\r\n @Output() public layerCheckBoxChecked = new EventEmitter();\r\n public url: string;\r\n public serviceLayerID: string; // Unique id assigned to this layerElem by app.\r\n public name: string; // Name displayed in TOC and other widgets identifying this layer\r\n public serviceLayerName: string; // Layer name from service. Used to tie back to service layer.\r\n public serviceID: string; // Unique service name assigned to this service by app.\r\n public layerType: string;\r\n public fileType: string;\r\n public isLocalFile: boolean;\r\n public isGraphicsLayer: boolean;\r\n public objectIdField: string;\r\n public minScale: number;\r\n public maxScale: number;\r\n public visibleLayersArr: Array; // layer ids from service assigned to this layerElem\r\n public defaultThemeVisibleLayerArr: [number];\r\n public labelLayerIds = {};\r\n public defaultVisLabelLayerIds: [number];\r\n public download: string;\r\n public metadata: string;\r\n public videoLink: string;\r\n public transparency: number;\r\n public tags: [string];\r\n public relateObj: [{}];\r\n public layerDefinitionExp: string;\r\n public renderer: {\r\n symbol: {url?: string, contentType?: string, imageData?: string},\r\n uniqueValueInfos?: Array, classBreakInfos?: Array,\r\n field?: string, field1?: string, label?: string, minValue?: number, legendImageUrl?: string};\r\n public showDynamicLegend: boolean;\r\n public swatches: boolean;\r\n public rendererType: string;\r\n public customRenderer;\r\n public showLegend: boolean;\r\n public showInFullLegend: boolean;\r\n public dynamicLegend: Array;\r\n public legendObj: any;\r\n public featLayImage: string;\r\n public isVisible: boolean;\r\n public isInScale: boolean;\r\n public description: string;\r\n public mapImageLayer: esri.MapImageLayer;\r\n public featureLayer: esri.FeatureLayer;\r\n public graphicsLayer: esri.GraphicsLayer;\r\n public imageryLayer: esri.ImageryLayer;\r\n public wmsLayer: esri.WMSLayer;\r\n public csvLayer: esri.CSVLayer;\r\n public map: any;\r\n public isChecked: boolean;\r\n public isParentChecked: boolean;\r\n public parentsChecked: boolean;\r\n public parentName: string;\r\n public layerOrder: number;\r\n public outFields: [string];\r\n public fields: [any];\r\n public formatFields: any;\r\n public disclaimer: any;\r\n public disclaimerDisplay: boolean;\r\n public dynamicLegendMinScale: number;\r\n public queryPickListFields: Array;\r\n public rasterQuery: boolean;\r\n public displayField: string;\r\n public featureLayerUrl: string;\r\n public identifyType: any;\r\n public id: string;\r\n public type: string;\r\n public drawingInfo: any;\r\n public geometryType: string;\r\n public capabilities: string;\r\n public supportsAdvancedQueries: boolean;\r\n public supportedQueryFormats: string;\r\n public advancedQueryCapabilities: any;\r\n public dataSpatialReference: esri.SpatialReference;\r\n public serviceSpatialReference: esri.SpatialReference;\r\n public spatialReference: esri.SpatialReference;\r\n public relationships: [any];\r\n public label: boolean;\r\n public labelsVisible: boolean;\r\n public fullExtent: esri.Extent;\r\n public showLabels = false;\r\n public needsToken = false;\r\n public token: string;\r\n public layerAvailable = true;\r\n public layerImageUrl: string;\r\n public trans = true;\r\n public table = true;\r\n public nonSelectableArr = undefined;\r\n public serviceMetadataReturned = false;\r\n public timeSliderEnabled = false;\r\n public addLayerToMap = true;\r\n public layerDashboardName;\r\n public layerDashboardInfo;\r\n\r\n constructor(AGSLayerInfo: AGSLayer) {\r\n // Get passed in object properties and assign them to this element.\r\n const AGSLayerInfoKeys = Object.keys(AGSLayerInfo);\r\n if (AGSLayerInfoKeys) {\r\n for (const key of AGSLayerInfoKeys) {\r\n this[key] = AGSLayerInfo[key];\r\n }\r\n }\r\n this.isInScale = true;\r\n if (!this.isChecked) {\r\n this.isChecked = false;\r\n }\r\n }\r\n public loadLayer() {\r\n }\r\n\r\n public getType() {\r\n return this.layerType;\r\n }\r\n\r\n public getDescription() {\r\n return this.description;\r\n }\r\n\r\n public getVisibility() {\r\n return this.isVisible;\r\n }\r\n\r\n public setVisibility(visibleState: boolean) {\r\n this.isVisible = visibleState;\r\n }\r\n\r\n public toggleVisibility() {\r\n this.isVisible = ! this.isVisible;\r\n }\r\n\r\n public getScaleVisibility() {\r\n return this.isInScale;\r\n }\r\n\r\n public isLayerInScale(mapScale: number) {\r\n this.isInScale = (this.minScale === undefined || this.minScale === 0 || this.minScale >= mapScale)\r\n && (this.maxScale === undefined || this.maxScale === 0 || this.maxScale <= mapScale);\r\n return this.isInScale;\r\n }\r\n\r\n public isLayerAvailable() {\r\n return this.layerAvailable;\r\n }\r\n\r\n public setInScaleProp(isInScale: boolean) {\r\n this.isInScale = isInScale;\r\n }\r\n\r\n public setMinScale(scale: number) {\r\n this.minScale = scale;\r\n }\r\n\r\n public setMaxScale(scale: number) {\r\n this.maxScale = scale;\r\n }\r\n\r\n public getMinScale() {\r\n return this.minScale;\r\n }\r\n\r\n public getMaxScale() {\r\n return this.maxScale;\r\n }\r\n\r\n public setTransparency(transparency: number) {\r\n this.transparency = transparency;\r\n }\r\n\r\n public getVisibleLayersArr(visibleLayersArr: Array): Array {\r\n if (visibleLayersArr !== undefined && visibleLayersArr.length > 0) {\r\n if (Array.isArray(visibleLayersArr)) {\r\n return visibleLayersArr;\r\n } else {\r\n // this should probably get fixed at some point\r\n let layerArr: any;\r\n layerArr = visibleLayersArr;\r\n return layerArr.toString().split(',');\r\n }\r\n } else {\r\n return visibleLayersArr;\r\n }\r\n }\r\n\r\n public setDashboard(layerDashboardName: string) {\r\n this.layerDashboardName = layerDashboardName;\r\n }\r\n\r\n public async getMapLayer(this) {\r\n let layerObjType = this.layerType;\r\n if (!layerObjType) {\r\n layerObjType = 'map-image'; // default\r\n }\r\n switch (layerObjType.toLowerCase()) {\r\n case 'map-image':\r\n await this.getMapImageLayer(this);\r\n break;\r\n case 'feature':\r\n await this.getFeatureLayer(this);\r\n break;\r\n case 'image-service-layer':\r\n case 'esri.layers.ImageryLayer':\r\n case 'esri.layers.arcgisimageservicelayer':\r\n await this.getImageServiceLayer(this);\r\n break;\r\n case 'graphics':\r\n await this.getGraphicsLayer(this);\r\n break;\r\n case 'wms':\r\n await this.getWMSLayer(this);\r\n break;\r\n default:\r\n // Default is map-image\r\n await this.getMapImageLayer(this);\r\n break;\r\n }\r\n }\r\n\r\n public async getMapImageLayer(this) {\r\n // Create mapImageLayer object\r\n interface SubLayerPropertyType {\r\n id: number;\r\n visible: boolean;\r\n opacity?: number;\r\n minScale?: number;\r\n maxScale?: number;\r\n labelsVisible?: boolean;\r\n labelingInfo?: any;\r\n renderer?:any;\r\n }\r\n const [SubLayer, MapImageLayer] = await loadModules([\r\n 'esri/layers/support/Sublayer',\r\n 'esri/layers/MapImageLayer'\r\n ]);\r\n const sublayerColl = []; // switch to array of SubLayers ArcGIS JS 4.9\r\n const params: any = {};\r\n if (this.visibleLayersArr !== undefined && this.visibleLayersArr.length > 0) {\r\n // Add subLayers\r\n for (const layer of this.visibleLayersArr) {\r\n // Add subLayer properties from settings in config file if present\r\n const subLayerProperties: SubLayerPropertyType = {id: layer, visible: true};\r\n // min/max scale are now defined on the sublayer (js api 4.2)\r\n if (this.minScale) { subLayerProperties.minScale = this.minScale; }\r\n if (this.maxScale) { subLayerProperties.maxScale = this.maxScale; }\r\n if (this.transparency) { subLayerProperties.opacity = this.transparency; }\r\n if ((this.label !== undefined && this.label === false) ||\r\n (this.labelsVisible != undefined && this.labelsVisible === false)) {\r\n // If label is false Turn off label display for this layer or if labelsVisible = false\r\n // give the label option in dropdown and allow user to turn on labels as needed\r\n subLayerProperties.labelsVisible = false;\r\n }\r\n if (this.customRenderer && this.customRenderer.renderer) {\r\n subLayerProperties.renderer = this.customRenderer.renderer;\r\n }\r\n \r\n sublayerColl.push(new SubLayer(subLayerProperties)); // *** ArcGIS JS 4.9\r\n }\r\n \r\n params.sublayers = sublayerColl;\r\n }\r\n params.url = this.url;\r\n params.id = this.serviceLayerID;\r\n /* if (this.token) {\r\n params.token = this.token;\r\n } */\r\n this.mapImageLayer = new MapImageLayer(params);\r\n // if transparency defined on layer, add it to the MapImageLayer\r\n this.transparency = this.mapImageLayer.opacity ? this.transparency : null;\r\n if (this.mapImageLayer && this.mapImageLayer.spatialReference) {\r\n this.dataSpatialReference = this.mapImageLayer.spatialReference;\r\n }\r\n return this.mapImageLayer;\r\n }\r\n\r\n public async getFeatureLayer(this) {\r\n const [FeatureLayer] = await loadModules([\r\n 'esri/layers/FeatureLayer'\r\n ]);\r\n // Create feature layer object\r\n if (!this.featureLayer && this.url) {\r\n this.featureLayer = new FeatureLayer(\r\n {url: this.url, \r\n id: this.serviceLayerID}\r\n );\r\n if (this.customRenderer && this.customRenderer.renderer) {\r\n this.featureLayer.renderer = this.customRenderer.renderer;\r\n }\r\n }\r\n if (this.featureLayer && this.featureLayer.spatialReference) {\r\n this.dataSpatialReference = this.featureLayer.spatialReference;\r\n }\r\n \r\n this.transparency = this.featureLayer.opacity ? this.transparency : null;\r\n this.featureLayer.labelsVisible = false;\r\n if (this.labelsVisible != undefined && this.labelsVisible != false) {\r\n this.featureLayer.labelsVisible = true;\r\n }\r\n \r\n return this.featureLayer;\r\n }\r\n\r\n public async getImageServiceLayer(this) {\r\n const [ImageryLayer] = await loadModules([\r\n 'esri/layers/ImageryLayer'\r\n ]);\r\n // Create feature layer object\r\n if (!this.imageryLayer && this.url) {\r\n this.imageryLayer = new ImageryLayer({url: this.url, id: this.serviceLayerID});\r\n }\r\n if (this.format) {\r\n this.imageryLayer.format = this.format; // The format of the exported image.\r\n }\r\n this.transparency = this.imageryLayer.opacity ? this.transparency : null;\r\n this.table = false; // turn off table functionality for ImageServer services\r\n this.queryPickListFields = null; // turn off query capability for ImageServer\r\n this.nonSelectableArr = ''; // ImageService services are not selectable\r\n return this.imageryLayer;\r\n }\r\n\r\n public getCSVLayer(this) {\r\n return this.csvLayer;\r\n }\r\n\r\n public getWMSLayer(this) {\r\n return this.wmsLayer;\r\n }\r\n\r\n public async getGraphicsLayer(this) {\r\n const [GraphicsLayer] = await loadModules([\r\n 'esri/layers/GraphicsLayer'\r\n ]);\r\n // If graphicsLayer is passed as a property to the constructor, then just set the graphicsLayer property\r\n // on the AGSLayer element. If is has not been defined and there is a graphics property\r\n // passed to the constructor, than create a GraphicsLayer instance and add it to this element.\r\n if (! this.graphicsLayer && this.graphics) {\r\n this.graphicsLayer = new GraphicsLayer({graphics: this.graphics});\r\n // Set any other possible properties\r\n this.transparency = this.graphicsLayer.opacity ? this.transparency : null;\r\n this.id = this.graphicsLayer.id ? this.id : null;\r\n this.name = this.graphicsLayer.name ? this.name : null;\r\n this.minScale = this.graphicsLayer.minScale ? this.minScale : null;\r\n this.maxScale = this.graphicsLayer.maxScale ? this.maxScale : null;\r\n this.geometryType = 'graphics';\r\n }\r\n if (this.graphicsLayer) { this.isGraphicsLayer = true; }\r\n return this.graphicsLayer;\r\n }\r\n\r\n public setFileType(fileType: string) {\r\n this.fileType = fileType.toLowerCase();\r\n if (fileType === 'shapefile' || fileType === 'gpx' || fileType === 'csv') {\r\n this.isLocalFile = true;\r\n }\r\n }\r\n\r\n public getLegend() {\r\n return ;\r\n }\r\n\r\n public getUrl() {\r\n return this.url;\r\n }\r\n\r\n public getTags() {\r\n return this.tags;\r\n }\r\n\r\n public getDashboard() {\r\n return this.layerDashboardName;\r\n }\r\n\r\n public checkLayer(isChecked: boolean) {\r\n this.isChecked = isChecked;\r\n }\r\n\r\n public getOutFields() {\r\n return this.outFields;\r\n }\r\n\r\n}\r\n","\r\nimport {Pipe, PipeTransform} from '@angular/core';\r\n\r\n/**\r\n * Pipe to filter tags in the table of contents search box\r\n */\r\n@Pipe({\r\n name: 'tagFilterBy',\r\n pure: true\r\n})\r\nexport class TagFilterByPipe implements PipeTransform {\r\n /**\r\n * Searchs through an array of tags for anything resembling the user input\r\n *\r\n * @param items: tag array\r\n * @param searchText: user search parameters\r\n */\r\n transform(items: any[], searchText: string): any[] {\r\n if (!items) { return []; }\r\n if (!searchText) { return items; }\r\n searchText = searchText.toLowerCase();\r\n return items.filter( it => it.toLowerCase().includes(searchText));\r\n }\r\n}","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './topomaps-viewer-entry.component.html'\r\n})\r\nexport class TopomapsViewerEntryComponent {}\r\n","\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {GoogleAnalyticsService} from './services/googleAnalytics/google-analytics.service';\r\nimport {ConfigService} from './services/config/config.service';\r\nimport {MapService} from './services/map/map.service';\r\nimport {NotificationService} from './services/notification/notification.service';\r\nimport {InitializeService} from './services/initialize/initialize-service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit {\r\n constructor(private ga: GoogleAnalyticsService, private config: ConfigService,\r\n private map: MapService, private notification: NotificationService,\r\n private init: InitializeService) {}\r\n\r\n ngOnInit() {\r\n this.map.setupMap(this.map.getmapLoadedObservable(), {basemap: this.config.mapInitialLayer, \r\n zoom:this.config.mapInitialZoomLevel, center:this.config.mapInitialCenter});\r\n //console.log('***call setupmap zoom: ' + this.config.mapInitialZoomLevel + 'center: ' + this.config.mapInitialCenter);\r\n this.ga.init();\r\n this.notification.init();\r\n this.init.init(true);\r\n }\r\n}\r\n","\r\n\r\n
\r\n \r\n
\r\n","import {Injectable} from '@angular/core';\r\nimport {ConfigService} from '../config/config.service';\r\n\r\n/**\r\n * Global object declaration\r\n */\r\ndeclare global {\r\n /**\r\n * Gets the window object to inject the Google script onto\r\n */\r\n interface Window { dataLayer: any }\r\n}\r\n/**\r\n * Window datalayer to keep types happy\r\n */\r\nwindow.dataLayer = window.dataLayer || [];\r\n\r\n/**\r\n * Events category to keep track of\r\n */\r\ntype EventCategoryType = 'widget' | 'layer' | 'page_view' | 'dropdown' | 'attributeTable';\r\n\r\n/**\r\n * Event actions to keep track of\r\n */\r\ntype EventActionType = 'view-item' | 'select-content' | 'page-change' | 'download' | 'action' | 'dropdown';\r\n\r\n/**\r\n * Simplified Google Analytics API\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GoogleAnalyticsService {\r\n\r\n /**\r\n * Constructor function to inject app variables into the viewer\r\n *\r\n * @param config\r\n */\r\n constructor(private config: ConfigService) {}\r\n\r\n /**\r\n * This function adds the Google Analytics script to the main html page\r\n * The reason it needs to be here is to get the gtag out of the config file after startup\r\n */\r\n public init() {\r\n try {\r\n if (this.config.gtag) {\r\n const script = document.createElement('script');\r\n script.innerHTML = `\r\n (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\r\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\r\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\r\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\r\n })(window,document,'script','dataLayer','${this.config.gtag}');\r\n `;\r\n document.head.appendChild(script);\r\n }\r\n } catch (ex) {\r\n console.log('Error appending google analytics');\r\n console.log(ex);\r\n }\r\n }\r\n\r\n /**\r\n * Sends positive analytics to keep track of\r\n *\r\n * @param eventCategory\r\n * @param eventAction\r\n * @param eventLabel\r\n * @param value\r\n */\r\n public eventEmitter(\r\n eventCategory: EventCategoryType,\r\n eventAction: EventActionType,\r\n eventLabel: string = null,\r\n value: any = null) {\r\n if (window.dataLayer) {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n window.dataLayer.push({event: eventAction, event_action: eventLabel,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n event_category: eventCategory, event_label: eventLabel, value});\r\n }\r\n }\r\n\r\n /**\r\n * Sends error info to Google Analytics to keep track of\r\n *\r\n * @param error\r\n * @param exFatal\r\n */\r\n public exception(error, exFatal) {\r\n let name = error;\r\n if (error.name) {\r\n name = error.name;\r\n } else if (error.description) {\r\n name = error.description;\r\n }\r\n if (window.dataLayer) {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n window.dataLayer.push({event: 'exception', event_category: 'exceptionCaught' , description: name, fatal: exFatal});\r\n }\r\n if (!exFatal) {\r\n console.warn(error);\r\n } else {\r\n console.error(error);\r\n alert('We are sorry, something went wrong. Please reload the page or try again later. Problem:' + name);\r\n }\r\n }\r\n\r\n /**\r\n * Keeps track of load time\r\n */\r\n public timing() {\r\n if (window.dataLayer) {\r\n window.dataLayer.push(\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n {event: 'timing_complete', name: 'load', value: Math.round(performance.now()), event_category: 'JS Dependencies'}\r\n );\r\n }\r\n }\r\n}\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit} from '@angular/core';\r\nimport {Title} from '@angular/platform-browser';\r\nimport {ConfigService} from '../../services/config/config.service';\r\nimport {TableOfContentsComponent} from '../../components/widgets/table-of-contents/table-of-contents.component';\r\nimport {TableOfContentsService} from '../../services/toc/table-of-contents.service';\r\nimport {GridService} from '../../services/grid/grid.service';\r\nimport {DialogComponent} from '../../components/dialog/dialog.component';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {GoogleAnalyticsService} from '../../services/googleAnalytics/google-analytics.service';\r\n\r\n/**\r\n * Adds the banner to the top of the screen\r\n */\r\n@Component({\r\n providers: [TableOfContentsComponent],\r\n selector: 'app-banner',\r\n templateUrl: './banner.component.html',\r\n styleUrls: ['./banner.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class BannerComponent implements OnInit {\r\n public bannerLogo: string;\r\n public logoUrl: string;\r\n public titleUrl = 'https://dnr.wa.gov';\r\n public titleText: string;\r\n public currentRoute = '2d-view';\r\n public themeList = [];\r\n public currentTheme = '';\r\n public appContactInfo;\r\n public appWebLinks;\r\n private themeLoadedSubscription;\r\n\r\n constructor(private config: ConfigService, private toc: TableOfContentsService, private title: Title,\r\n private dialog: MatDialog, private grid: GridService, private ga: GoogleAnalyticsService,\r\n private cd: ChangeDetectorRef, private tocComponent: TableOfContentsComponent) { }\r\n\r\n ngOnInit() {\r\n this.bannerLogo = this.config.logoBanner;\r\n this.logoUrl = this.config.logoUrl;\r\n this.titleText = this.config.pageTitle;\r\n this.title.setTitle(this.config.pageTitle);\r\n this.appContactInfo = this.config.appContactInfo;\r\n this.appWebLinks = this.config.appWebLinks;\r\n if (this.config.DNRProgramWebsite) { // If DNRProgramWebsite specified in config, use that otherwise use default\r\n this.titleUrl = this.config.DNRProgramWebsite;\r\n }\r\n this.cd.detectChanges();\r\n this.themeList = this.config.themeNameList;\r\n // When theme data loaded, set the currentTheme and the themeNameList for populating the themename dropdown\r\n this.themeLoadedSubscription = this.toc.getThemeDataLoaded().subscribe( (themeLoaded) => {\r\n if (themeLoaded && this.config) {\r\n this.themeList = this.config.themeNameList;\r\n this.currentTheme = this.config.CurrentTheme;\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.themeLoadedSubscription) { this.themeLoadedSubscription.unsubscribe()};\r\n }\r\n\r\n /**\r\n * Theme clicked, notify the TOC\r\n * @param themeName\r\n */\r\n public async themeClick(themeName) {\r\n if (themeName) {\r\n // Refresh toc when theme clicked from banner\r\n this.grid.widgetOn('toc');\r\n this.toc.themeClick(themeName);\r\n }\r\n }\r\n\r\n /**\r\n * Page change\r\n * @param page\r\n * @param outbound\r\n */\r\n public pageChange(page, outbound) {\r\n if (page === '2d-view' || page === '3d-view') { this.currentRoute = '/' + page; }\r\n this.ga.eventEmitter('page_view', 'page-change', page);\r\n this.cd.detectChanges();\r\n }\r\n\r\n\r\n /**\r\n * Show dialog message\r\n */\r\n public showDialog(messageInfo) {\r\n if (messageInfo) {\r\n this.dialog.open(DialogComponent, {\r\n data: messageInfo\r\n });\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n public async openTocThemes() {\r\n console.log('openTocThemes');\r\n // open toc if closed\r\n await this.grid.widgetOn('toc');\r\n // this.tocComponent.openThemeMenu();\r\n console.log(this.toc.themesMenuTrigger);\r\n setTimeout(() => {\r\n this.toc.themesMenuTrigger.openMenu();\r\n }, 0);\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n
\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport {AppRoutingModule} from './app-routing.module';\r\nimport {EsriMapViewComponent} from '../components/esri-map-view/esri-map-view.component';\r\nimport {BannerComponent} from '../components/banner/banner.component';\r\nimport {EsriSceneViewComponent} from '../components/esri-scene-view/esri-scene-view.component';\r\nimport {DragZoomComponent} from '../components/drag-zoom/drag-zoom.component';\r\nimport {PreviousExtentComponent} from '../components/previous-extent/previous-extent.component';\r\nimport {CoordinateComponent} from '../components/coordinate/coordinate.component';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport {MatMenuModule} from '@angular/material/menu';\r\nimport {MatFormFieldModule} from '@angular/material/form-field';\r\n\r\n@NgModule({\r\n declarations: [\r\n EsriMapViewComponent,\r\n BannerComponent,\r\n EsriSceneViewComponent,\r\n DragZoomComponent,\r\n PreviousExtentComponent,\r\n CoordinateComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n AppRoutingModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatMenuModule,\r\n MatFormFieldModule\r\n ],\r\n exports: [\r\n EsriMapViewComponent,\r\n BannerComponent,\r\n EsriSceneViewComponent,\r\n DragZoomComponent,\r\n PreviousExtentComponent,\r\n CoordinateComponent\r\n ]\r\n})\r\nexport class ViewModule { }\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LayerService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n public async getLayerServiceInfo(layerElem: any) {\r\n // Get the layer's info from the rest endpoint\r\n //console.log(\"**get layerServiceInfo for layerElem: \" + layerElem.name);\r\n\r\n if ((layerElem.visibleLayersArr !== undefined && layerElem.visibleLayersArr[0] !== undefined) ||\r\n layerElem.layerType !== 'map-image') {\r\n let layerElemUrl = layerElem.url + '?f=pjson';\r\n if (layerElem.token) {\r\n layerElemUrl = layerElemUrl + '&token=' + layerElem.token;\r\n }\r\n\r\n if (layerElem.layerType === 'map-image') {\r\n layerElemUrl = layerElem.url + '/' + layerElem.visibleLayersArr[0] + '?f=pjson';\r\n if (layerElem.token) {\r\n layerElemUrl = layerElemUrl + '&token=' + layerElem.token;\r\n }\r\n }\r\n if (layerElem.renderer === undefined || layerElem.rendererType === undefined) {\r\n // console.log(\"Get layer info from rest endpoint for : \" + layerElemUrl);\r\n try {\r\n const returnValue: any = await this.http.get(layerElemUrl).toPromise();\r\n if (returnValue !== undefined) {\r\n // && returnValue.drawingInfo != undefined && returnValue.drawingInfo.renderer != undefined\r\n // && returnValue.drawingInfo.renderer.type != undefined) {\r\n // Set layer properties from the service and add them to the AGSLayer\r\n // unless the config file already set these properties.\r\n if (!layerElem.name ) {\r\n layerElem.name = returnValue.name;\r\n }\r\n if (!layerElem.displayField ) {\r\n layerElem.displayField = returnValue.displayField;\r\n }\r\n if (!layerElem.id) {\r\n layerElem.id = returnValue.id;\r\n }\r\n if (returnValue.minScale && returnValue.minScale > 0 ) {\r\n if (!layerElem.minScale || returnValue.minScale < layerElem.minScale) {\r\n layerElem.minScale = returnValue.minScale;\r\n }\r\n }\r\n if (returnValue.maxScale && returnValue.maxScale > 0 ) {\r\n if (!layerElem.maxScale || returnValue.maxScale > layerElem.maxScale) {\r\n layerElem.maxScale = returnValue.maxScale;\r\n }\r\n }\r\n if (!layerElem.geometryType) {\r\n layerElem.geometryType = returnValue.geometryType;\r\n }\r\n if (!layerElem.capabilities) {\r\n layerElem.capabilities = returnValue.capabilities;\r\n }\r\n if (!layerElem.supportsAdvancedQueries) {\r\n layerElem.supportsAdvancedQueries = returnValue.supportsAdvancedQueries;\r\n }\r\n if (!layerElem.supportedQueryFormats) {\r\n layerElem.supportedQueryFormats = returnValue.supportedQueryFormats;\r\n }\r\n if (!layerElem.advancedQueryCapabilities) {\r\n layerElem.advancedQueryCapabilities = returnValue.advancedQueryCapabilities;\r\n }\r\n if (!layerElem.description || layerElem.description.length < 1) {\r\n layerElem.description = returnValue.description;\r\n }\r\n if (!layerElem.relationships) {\r\n layerElem.relationships = returnValue.relationships;\r\n }\r\n if (!layerElem.serviceSpatialReference && returnValue.extent\r\n && returnValue.extent.spatialReference) {\r\n layerElem.serviceSpatialReference = returnValue.extent.spatialReference;\r\n }\r\n if (returnValue.type) {\r\n layerElem.type = returnValue.type;\r\n }\r\n if (returnValue.hasLabels) {\r\n // Layer has labels \r\n layerElem.label = true;\r\n } else {\r\n // No labels available for this layer\r\n layerElem.label = false;\r\n } \r\n if (returnValue.drawingInfo !== undefined\r\n && returnValue.drawingInfo.renderer !== undefined\r\n && returnValue.drawingInfo.renderer.type !== undefined) {\r\n if (!layerElem.rendererType ) {\r\n layerElem.rendererType = returnValue.drawingInfo.renderer.type;\r\n }\r\n if (!layerElem.renderer ) {\r\n if (layerElem.customRenderer && layerElem.customRenderer.renderer) {\r\n // Set drawingInfo to customRenderer property if present in config file for this layer\r\n layerElem.renderer = layerElem.customRenderer.renderer;\r\n }\r\n else {\r\n layerElem.renderer = returnValue.drawingInfo.renderer;\r\n }\r\n }\r\n \r\n if (!layerElem.transparency) {\r\n layerElem.transparency = returnValue.drawingInfo.transparency;\r\n }\r\n if (!layerElem.renderer && layerElem.type === 'feature') {\r\n // _this.setFeatLayerLegendImages(layerElem);\r\n }\r\n } \r\n \r\n \r\n if (!layerElem.outFields && returnValue.fields && returnValue.fields.length > 0) {\r\n const layerFields: any = [];\r\n const outFields: any = [];\r\n for (const fieldInfo of returnValue.fields) {\r\n if (fieldInfo.name) {\r\n layerFields.push(fieldInfo);\r\n if (fieldInfo.name.toUpperCase() !== 'SHAPE'\r\n && !fieldInfo.name.toUpperCase().startsWith('SHAPE_')\r\n && fieldInfo.name.toUpperCase() !== 'OBJECTID'\r\n && fieldInfo.name.toUpperCase() !== 'GLOBALID'){\r\n outFields.push(fieldInfo.name);\r\n }\r\n }\r\n }\r\n layerElem.fields = layerFields;\r\n layerElem.outFields = outFields;\r\n }\r\n // Add fields to queryPickListFields property if none specificed in config file\r\n if ((layerElem.nonSelectableArr === undefined || layerElem.nonSelectableArr === \"\")\r\n && !layerElem.queryPickListFields &&\r\n returnValue.fields && returnValue.fields.length > 0) {\r\n const queryPickListFields: any = [];\r\n for (const fieldInfo of returnValue.fields) {\r\n if (fieldInfo.name && fieldInfo.name.toUpperCase() !== 'SHAPE' &&\r\n !fieldInfo.name.toUpperCase().startsWith('SHAPE_')\r\n && fieldInfo.name.toUpperCase() !== 'OBJECTID'\r\n && fieldInfo.name.toUpperCase() !== 'GLOBALID') {\r\n queryPickListFields.push(fieldInfo.name);\r\n }\r\n }\r\n layerElem.queryPickListFields = queryPickListFields;\r\n }\r\n\r\n if (!layerElem.serviceLayerName) {\r\n layerElem.serviceLayerName = returnValue.name;\r\n }\r\n layerElem.serviceMetadataReturned = true;\r\n }\r\n } catch (error) {\r\n console.log('error in getLayerServiceInfo for : '\r\n + layerElem.serviceLayerID + ' error: ' + JSON.stringify(error));\r\n }\r\n }\r\n } else {\r\n console.log('In getLayerServiceInfo No visibleLayers for: ' + layerElem.serviceLayerID);\r\n }\r\n return (layerElem);\r\n\r\n }\r\n\r\n /**\r\n * Get service info\r\n */\r\n public async getServiceInfo(serviceUrl:string) {\r\n try {\r\n return await this.http.get(serviceUrl).toPromise();\r\n } catch (error) {\r\n console.log('error in getServiceInfo for : '\r\n + serviceUrl + ' error: ' + JSON.stringify(error));\r\n }\r\n }\r\n\r\n}\r\n","import {Component, Inject} from '@angular/core';\r\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-changelog-dialog',\r\n templateUrl: './changelog-dialog.component.html',\r\n styleUrls: ['./changelog-dialog.component.scss']\r\n})\r\nexport class ChangelogDialogComponent {\r\n constructor(@Inject(MAT_DIALOG_DATA) public data) {}\r\n}\r\n","
\r\n
\r\n

Update: {{update[0]}}

\r\n
    \r\n
  • {{entry}}
  • \r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n","import {Component, Inject, SecurityContext} from '@angular/core';\r\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport { DomSanitizer} from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-disclaimer-dialog',\r\n templateUrl: './disclaimer-dialog.component.html',\r\n styleUrls: ['./disclaimer-dialog.component.scss']\r\n})\r\nexport class DisclaimerDialogComponent {\r\n\r\n public data;\r\n public data1;\r\n constructor(@Inject(MAT_DIALOG_DATA) private messageInfo: any, private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit(){\r\n if (this.messageInfo.messageType && this.messageInfo.messageType === 'file') {\r\n this.readFileToString(this.messageInfo.message)\r\n }\r\n else {\r\n this.data = this.messageInfo.message;\r\n }\r\n }\r\n\r\n /**\r\n * Reads file to string\r\n * @param fileNm \r\n */\r\n private async readFileToString(fileNm) {\r\n await fetch (fileNm).then(\r\n res => res.text()).then(\r\n tempData => {\r\n this.data = this.sanitizer.sanitize(SecurityContext.HTML,this.sanitizer.bypassSecurityTrustHtml(tempData));\r\n }); \r\n \r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n

\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './legend-entry.component.html'\r\n})\r\nexport class LegendEntryComponent {}\r\n","\r\n","import {Injectable} from '@angular/core';\r\nimport {ActivatedRoute, NavigationEnd, Router, NavigationStart} from '@angular/router';\r\nimport {Location} from '@angular/common';\r\nimport {loadModules} from 'esri-loader';\r\n\r\nimport {MapService} from '../map/map.service';\r\nimport {GoogleAnalyticsService} from '../googleAnalytics/google-analytics.service';\r\nimport {TableOfContentsService} from '../toc/table-of-contents.service';\r\nimport {ConfigService} from '../config/config.service';\r\nimport {BehaviorSubject, Subscription} from 'rxjs';\r\n\r\n/**\r\n * Updates the URL with a hash link containing the current extent and the currently visible layers\r\n * Upon reloading the link, this service zooms to the extent and turns on the required layers\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BookmarkService {\r\n\r\n /**\r\n * Bookmark variable setup to keep track of stored info for the service\r\n *\r\n * @private\r\n */\r\n private bookmark = {\r\n xmin: 0,\r\n xmax: 0,\r\n ymin: 0,\r\n ymax: 0,\r\n layers: [],\r\n indexes: [],\r\n theme: ''\r\n };\r\n\r\n\r\n /**\r\n * Esri watch subscription to keep track of map extent changes\r\n *\r\n * @private\r\n */\r\n private mapViewObs;\r\n\r\n /**\r\n * Observable to watch when the map view reference is first created in order to zoom to extent in hash\r\n *\r\n * @private\r\n */\r\n private viewRefObs;\r\n\r\n /**\r\n * Observable to watch for when the toc layer list is created in order to open hash layers\r\n *\r\n * @private\r\n */\r\n private layerListObs;\r\n\r\n /**\r\n * Observable to watch for theme changes\r\n *\r\n * @private\r\n */\r\n private themeChangeObs;\r\n\r\n private urlUpdatedObs = new BehaviorSubject(false);\r\n public getUrlUpdatedObs() { return this.urlUpdatedObs.asObservable(); }\r\n\r\n private firstRunFlag = false;\r\n private mapExt;\r\n \r\n /**\r\n * Constructor function to inject application variables into service\r\n *\r\n * @param map: Esri Map object\r\n * @param ga: Google Analytics\r\n * @param toc: Table of contents service to get info\r\n * @param route: Angular URL parsing service\r\n * @param location: Angular location service\r\n * @param router: Angular router service\r\n * @param config: Application configuration variables\r\n */\r\n constructor(private map: MapService, private ga: GoogleAnalyticsService, private toc: TableOfContentsService,\r\n private route: ActivatedRoute, private location: Location, private router: Router,\r\n private config: ConfigService) {}\r\n\r\n /**\r\n * Initializes the service after the page loads\r\n */\r\n public initService() {\r\n this.startupObservables();\r\n this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationEnd) {\r\n if (!this.firstRunFlag) {\r\n this.parseFragment();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Checks to see if there's a router fragment\r\n * If there is it loads the information to the right functions to update the map\r\n * Then it loads the map changing observables\r\n *\r\n * @private\r\n */\r\n private async parseFragment() {\r\n const fragmentSub = this.route.fragment.subscribe((fragment) => {\r\n let hashRoute;\r\n if (fragment) { hashRoute = fragment.split('?'); }\r\n if (!this.firstRunFlag) {\r\n if (hashRoute && hashRoute.length > 1 ) {\r\n this.viewRefObs = this.map.getViewRefObservable().subscribe( async (ref) => { \r\n if (ref) {\r\n this.zoomToExtent(hashRoute);\r\n if (this.viewRefObs) {\r\n this.viewRefObs.unsubscribe();\r\n } \r\n }\r\n }, (e) => {\r\n console.log(e);\r\n }, () => {\r\n this.viewRefObs.unsubscribe();\r\n });\r\n }\r\n \r\n } else {\r\n this.updateURL();\r\n }\r\n this.firstRunFlag = true;\r\n }, (e) => {\r\n console.log(e);\r\n }, () => {\r\n fragmentSub.unsubscribe();\r\n });\r\n }\r\n\r\n /**\r\n * Sets up the Esri watch utility to keep track of map movements\r\n */\r\n\r\n private startupObservables() {\r\n this.getTheme();\r\n if (this.map.getViewRef() && !this.mapViewObs) {\r\n this.mapViewObs = this.map.getViewRef().watch('stationary', () => {\r\n this.handleExtent();\r\n }\r\n );\r\n }\r\n \r\n if(!this.themeChangeObs) {\r\n this.themeChangeObs = this.toc.getThemeChangeObs().subscribe(() => {\r\n this.getTheme();\r\n this.parseFragment();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Attempts a zoom to the extent specified in the URL\r\n *\r\n * @param hashRoute: Hash route from url\r\n * @private\r\n */\r\n private async zoomToExtent(hashRoute) {\r\n try {\r\n if (hashRoute.length > 1) {\r\n const coords = hashRoute[1].split(',');\r\n const [esriExtent] = await loadModules([\r\n 'esri/geometry/Extent'\r\n ]);\r\n const extent = new esriExtent({\r\n xmin: coords[0],\r\n xmax: coords[1],\r\n ymin: coords[2],\r\n ymax: coords[3],\r\n spatialReference: 102100\r\n });\r\n this.bookmark.xmin = extent.xmin;\r\n this.bookmark.xmax = extent.xmax;\r\n this.bookmark.ymin = extent.ymin;\r\n this.bookmark.ymax = extent.ymax;\r\n this.map.getViewRef().goTo({\r\n target: extent\r\n });\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * Grabs the current extent to the nearest whole number and adds it to the bookmark object\r\n * Then calls the update URL function\r\n */\r\n private handleExtent() {\r\n try {\r\n const extent = this.map.getMapExtent();\r\n if (extent) {\r\n this.bookmark.xmin = extent.xmin.toFixed(0);\r\n this.bookmark.xmax = extent.xmax.toFixed(0);\r\n this.bookmark.ymin = extent.ymin.toFixed(0);\r\n this.bookmark.ymax = extent.ymax.toFixed(0);\r\n this.updateURL();\r\n } else {\r\n setTimeout(() => {\r\n this.handleExtent();\r\n }, 250);\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Takes the bookmark object and creates the correct hash\r\n * 'current_location#xmin,xmax,ymin,ymax'\r\n */\r\n private updateURL() {\r\n try {\r\n if (this.router.url.search(/\\b(\\w*help\\w*)\\b/) === -1) {\r\n const url = this.router.createUrlTree([], {relativeTo: this.route}).toString();\r\n let urlString = url + '#' + this.bookmark.theme + '?'\r\n + this.bookmark.xmin + ',' + this.bookmark.xmax + ',' + this.bookmark.ymin + ',' + this.bookmark.ymax + '?';\r\n urlString = urlString.slice(0, -1);\r\n this.location.go(urlString);\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n \r\n /**\r\n * Gets the current app theme\r\n */\r\n private getTheme() {\r\n const theme = this.toc.getTheme(this.toc.currentTheme);\r\n if (theme) { this.bookmark.theme = theme; }\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './featuretable-entry.component.html'\r\n})\r\nexport class FeaturetableEntryComponent {}\r\n","\r\n","import {Injectable} from '@angular/core';\r\n\r\nimport {loadModules} from 'esri-loader';\r\n\r\nimport {MapService} from '../map/map.service';\r\nimport {GoogleAnalyticsService} from '../googleAnalytics/google-analytics.service';\r\nimport esri = __esri;\r\n\r\n/**\r\n * Service to create/control esri graphics layers\r\n * Also creates simple shapes when needed\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GraphicsService {\r\n private graphicsAr: Array = [];\r\n\r\n constructor(private map: MapService, private ga: GoogleAnalyticsService) { }\r\n\r\n /**\r\n * Creates and adds a graphics layer to the esri map object\r\n * @param type: string name for the layer\r\n */\r\n public async addGraphicsLayer(type) {\r\n try {\r\n if (this.map.getMapObject()) {\r\n const [GraphicsLayer] = await loadModules([\r\n 'esri/layers/GraphicsLayer'\r\n ]);\r\n const layer = await new GraphicsLayer({\r\n title: type\r\n });\r\n this.graphicsAr.push(layer);\r\n await this.map.getMapObject().add(layer);\r\n return layer;\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n public getGraphicsAr() {\r\n return this.graphicsAr;\r\n }\r\n\r\n /**\r\n * Checks to see if the map layer exists, and if it does removes it from the esri map object\r\n * @param layer: layer object to remove\r\n */\r\n public async removeGraphicsLayer(layer) {\r\n if (this.graphicsAr[this.graphicsAr.indexOf(layer)]) {\r\n this.graphicsAr.slice(this.graphicsAr.indexOf(layer), 1);\r\n await this.map.getMapObject().remove(layer);\r\n }\r\n }\r\n\r\n /**\r\n * public function to create new graphics of any type\r\n */\r\n public async createGraphics(geometryType: string, layer: esri.GraphicsLayer, geometry: any, style: any) {\r\n if (layer) {\r\n if (geometryType === 'esriGeometryPoint' || geometryType === 'point') {\r\n return await this.createPoint(geometry, style.point, layer);\r\n } else if (geometryType === 'esriGeometryPolyline' || geometryType === 'polyline') {\r\n return await this.createPolyline(geometry, style.polyline, layer);\r\n } else if (geometryType === 'esriGeometryPolygon' || geometryType === 'polygon') {\r\n return await this.createPolygon(geometry.rings, style.polygon, layer);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Creates a point graphic and adds it to a specific layer\r\n * @param geometry: esri geometry object\r\n * @param style: esri style object\r\n * @param layer: esri graphics layer\r\n */\r\n public async createPoint(geometry, style, layer) {\r\n try {\r\n const [Point, Graphic, webMercatorUtils, SimpleMarkerSymbol] = await loadModules([\r\n 'esri/geometry/Point',\r\n 'esri/Graphic',\r\n 'esri/geometry/support/webMercatorUtils',\r\n 'esri/symbols/SimpleMarkerSymbol'\r\n ]);\r\n if (geometry && geometry.x) {\r\n\r\n const point = new Point({\r\n longitude: geometry.x,\r\n latitude: geometry.y\r\n });\r\n let pointGraphic = new Graphic({\r\n geometry: webMercatorUtils.webMercatorToGeographic(point),\r\n symbol: new SimpleMarkerSymbol(style)\r\n });\r\n if (geometry.wkid && geometry.wkid == 4326 ) {\r\n pointGraphic = new Graphic({\r\n geometry: point,\r\n symbol: new SimpleMarkerSymbol(style)\r\n });\r\n }\r\n\r\n layer.add(pointGraphic);\r\n\r\n return pointGraphic;\r\n } else {\r\n console.log('Bad geometry');\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a polyline graphic and adds it to a specific layer\r\n * @param geometry: esri geometry object\r\n * @param style: esri style object\r\n * @param layer: esri graphics layer\r\n */\r\n public async createPolyline(geometry, style, layer) {\r\n try {\r\n const [esriPolyline, Graphic, webMercatorUtils, esriSimpleLineSymbol] = await loadModules([\r\n 'esri/geometry/Polyline',\r\n 'esri/Graphic',\r\n 'esri/geometry/support/webMercatorUtils',\r\n 'esri/symbols/SimpleLineSymbol'\r\n ]);\r\n if (geometry && geometry.paths) {\r\n const polyline = new esriPolyline({\r\n paths: geometry.paths\r\n });\r\n const polylineGraphic = new Graphic({\r\n geometry: webMercatorUtils.webMercatorToGeographic(polyline),\r\n symbol: new esriSimpleLineSymbol(style)\r\n });\r\n layer.add(polylineGraphic);\r\n\r\n return polylineGraphic;\r\n } else {\r\n console.log('Bad geometry');\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n public async polygonFromExtent(extent: esri.Extent): Promise {\r\n const [Polygon] = await loadModules([\r\n 'esri/geometry/Polygon'\r\n ]);\r\n return Polygon.fromExtent(extent);\r\n }\r\n\r\n /**\r\n * Creates a polygon graphic and adds it to a specific layer\r\n * @param geometry: esri geometry object\r\n * @param style: esri style object\r\n * @param layer: esri graphics layer\r\n */\r\n public async createPolygon(geometry, style, layer) {\r\n try {\r\n const [Polygon, Graphic, webMercatorUtils, SimpleFillSymbol] = await loadModules([\r\n 'esri/geometry/Polygon',\r\n 'esri/Graphic',\r\n 'esri/geometry/support/webMercatorUtils',\r\n 'esri/symbols/SimpleFillSymbol'\r\n ]);\r\n if (geometry) {\r\n const polygon = new Polygon({\r\n rings: geometry\r\n });\r\n let polygonGraphic: any;\r\n polygonGraphic = new Graphic({\r\n geometry: webMercatorUtils.webMercatorToGeographic(polygon),\r\n symbol: new SimpleFillSymbol(style)\r\n });\r\n\r\n layer.add(polygonGraphic);\r\n return polygonGraphic;\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n public zoomToGraphicsLayer(layer, zoom?) {\r\n if (zoom && zoom > 0) {\r\n this.map.getViewRef().goTo(layer,zoom);\r\n }\r\n else {\r\n this.map.getViewRef().goTo(layer);\r\n }\r\n }\r\n}\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport {loadModules} from 'esri-loader';\r\n\r\nimport {MapService} from '../../services/map/map.service';\r\nimport {ConfigService} from '../../services/config/config.service';\r\nimport {GoogleAnalyticsService} from '../../services/googleAnalytics/google-analytics.service';\r\nimport {IdentifyService} from '../../services/identify/identify.service';\r\nimport esri = __esri;\r\n\r\n/**\r\n * Creates the 3D scene view reference after the map object is created and adds all of the basic esri widgets to the screen\r\n */\r\n@Component({\r\n selector: 'app-esri-scene-view',\r\n templateUrl: './esri-scene-view.component.html',\r\n styleUrls: ['./esri-scene-view.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EsriSceneViewComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('mapViewNode', {static: true}) private mapViewEl: ElementRef;\r\n\r\n private mapView;\r\n private searchWidget;\r\n\r\n constructor(private map: MapService, private config: ConfigService, private cd: ChangeDetectorRef,\r\n private ga: GoogleAnalyticsService, private identify: IdentifyService) { }\r\n\r\n /**\r\n * Creates the scene view when the page loads and initializes it on top of the map\r\n */\r\n public ngOnInit() {\r\n this.map.getmapLoadedObservable().subscribe((map) => {\r\n if (map) {\r\n this.initializeMap(map).then(\r\n (mapView) => {\r\n let flag = false;\r\n if (this.map.getMapViewAr().length > 1) {\r\n for (const view of this.map.getMapViewAr()) {\r\n if (view.name === '3d') {\r\n mapView = view;\r\n flag = true;\r\n break;\r\n }\r\n }\r\n }\r\n this.mapView = mapView;\r\n this.map.setMapType(3);\r\n this.map.setViewRef(mapView, flag);\r\n this.setupEsriWidgets(mapView);\r\n if (!flag) {\r\n this.map.setSceneViewGroundLayer();\r\n }\r\n this.map.setupPreviousExtentButton();\r\n this.map.setViewRefObservable(true);\r\n this.identify.identifyInit();\r\n this.cd.detectChanges();\r\n });\r\n }\r\n }, (error) => {\r\n this.ga.exception(error, true);\r\n });\r\n }\r\n\r\n /**\r\n * Makes sure the user doesn't lose their map location on page change\r\n */\r\n public ngOnDestroy() {\r\n if (this.map && this.mapView) {\r\n this.map.setZoom(this.mapView.zoom);\r\n this.map.setScale(this.mapView.scale);\r\n this.map.setRotation(this.mapView.rotation);\r\n this.map.setCenter(this.mapView.center);\r\n this.mapView = null;\r\n this.map.setViewRefObservable(false);\r\n }\r\n }\r\n\r\n /**\r\n * Creates the scene view\r\n * @param map: Map object from the map service\r\n */\r\n private async initializeMap(map) {\r\n try {\r\n const [SceneView] = await loadModules([\r\n 'esri/views/SceneView'\r\n ]);\r\n const mapViewProperties = {\r\n container: this.mapViewEl.nativeElement,\r\n center: this.map.getCenter(),\r\n zoom: this.map.getZoom(),\r\n map,\r\n constraints: {\r\n tilt: {\r\n max: 179.99\r\n }\r\n },\r\n environment: {\r\n atmosphere: null,\r\n starsEnabled: false\r\n },\r\n name: '3d'\r\n };\r\n this.cd.detectChanges();\r\n return new SceneView(mapViewProperties);\r\n } catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n /**\r\n * Creates the Esri widgets and attaches them to the scene view\r\n * @param mapView: The scene view that the user is looking at\r\n */\r\n private async setupEsriWidgets(mapView) {\r\n try {\r\n const [Compass, Home, Locate, ScaleBar, Search, Zoom, NavigationToggle] = await loadModules([\r\n 'esri/widgets/Compass',\r\n 'esri/widgets/Home',\r\n 'esri/widgets/Locate',\r\n 'esri/widgets/ScaleBar',\r\n 'esri/widgets/Search',\r\n 'esri/widgets/Zoom',\r\n 'esri/widgets/NavigationToggle'\r\n ]);\r\n mapView.ui.components = [];\r\n const compass = new Compass({\r\n view: mapView,\r\n container: 'compass'\r\n });\r\n\r\n const homeBtn = new Home({\r\n view: mapView,\r\n container: 'home'\r\n });\r\n\r\n const locateBtn = new Locate({\r\n view: mapView,\r\n container: 'locate'\r\n });\r\n\r\n const zoomBtn = new Zoom({\r\n view: mapView,\r\n container: 'zoom'\r\n });\r\n\r\n const nav = new NavigationToggle({\r\n view: mapView,\r\n container: 'navigation'\r\n });\r\n\r\n const scaleBar = new ScaleBar({\r\n view: mapView,\r\n unit: 'dual'\r\n });\r\n mapView.ui.add(scaleBar, 'bottom-left');\r\n\r\n // Resets view ref of search widget\r\n if (document.querySelector('#searchContainer') &&\r\n !document.querySelector('#searchContainer').innerHTML) {\r\n const sources = [];\r\n const searchProperties: any = {\r\n view: mapView,\r\n container: 'searchContainer',\r\n };\r\n if (this.config.search.length > 0) {\r\n for (const layer of this.config.search) {\r\n sources.push(await this.map.createSearchLayers(layer));\r\n }\r\n searchProperties.sources = sources;\r\n }\r\n this.searchWidget = new Search(searchProperties);\r\n this.mapView.ui.add(mapView.searchWidget, 'top-left');\r\n this.map.setSearchWidget(this.searchWidget);\r\n }\r\n this.map.enableIdentify();\r\n this.cd.detectChanges();\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n","import {Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef} from '@angular/core';\r\nimport {GridsterConfig, GridsterItem, GridType} from 'angular-gridster2';\r\n\r\nimport {ConfigService} from '../../services/config/config.service';\r\nimport {GridService} from '../../services/grid/grid.service';\r\n\r\n/**\r\n * Creates the grid controller that allows the widget dialog boxes to move around/resize\r\n */\r\n@Component({\r\n selector: 'app-grid',\r\n templateUrl: './grid.component.html',\r\n styleUrls: ['./grid.component.scss']\r\n})\r\nexport class GridComponent implements OnInit {\r\n // The options for ng-gridster2\r\n public options: GridsterConfig;\r\n // The array of items currently active on the grid\r\n public dashboard: Array;\r\n // The maximum height of a widget based off screen size\r\n public maxHeight: number;\r\n\r\n constructor(public config: ConfigService, private grid: GridService, private cd: ChangeDetectorRef) { }\r\n\r\n private widgetChangeObserver;\r\n /**\r\n * Initializes the variables required to run ng-gridster2 and then runs the startup protocol in the grid service\r\n */\r\n ngOnInit() {\r\n this.resize();\r\n const modifier = window.innerWidth / 1920;\r\n const hmod = window.innerHeight / 1080 / .8;\r\n this.options = {\r\n gridType: GridType.Fit,\r\n displayGrid: 'none',\r\n minCols: 40 * modifier,\r\n maxCols: 100,\r\n minRows: 40 * hmod,\r\n maxRows: 100,\r\n margin: 15,\r\n pushItems: true,\r\n mobileBreakpoint: 800,\r\n disableWarnings: true,\r\n useTransformPositioning: true,\r\n draggable: {\r\n enabled: true,\r\n ignoreContentClass: 'dialog-content'\r\n },\r\n resizable: {\r\n enabled: true\r\n }\r\n };\r\n this.widgetChangeObserver = this.grid.getWidgetChangeObs().subscribe( () => {\r\n this.dashboard = this.grid.getGrid();\r\n this.cd.detectChanges();\r\n });\r\n\r\n this.dashboard = this.grid.getGrid();\r\n this.grid.startGrid();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.widgetChangeObserver) { this.widgetChangeObserver.unsubscribe(); }\r\n }\r\n\r\n /**\r\n * Makes sure that the gridster items can't grow larger than the screen\r\n */\r\n public resize() {\r\n if (window) {\r\n this.maxHeight = window.innerHeight - 15;\r\n }\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n","module.exports = __webpack_public_path__ + \"0.worker.js\"","import {Injectable} from '@angular/core';\r\nimport {MatSnackBar} from '@angular/material/snack-bar';\r\nimport {SwUpdate} from '@angular/service-worker';\r\nimport {PrivacySnackbarComponent} from '../../components/privacy-snackbar/privacy-snackbar.component';\r\nimport {environment} from '../../../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n constructor(private swUpdate: SwUpdate, private snackbar: MatSnackBar) {\r\n if ('serviceWorker' in navigator && environment.production) {\r\n this.swUpdate.checkForUpdate();\r\n }\r\n }\r\n\r\n public init() {\r\n this.setupSnackBar();\r\n this.setupSwUpdate();\r\n }\r\n\r\n private setupSwUpdate() {\r\n this.swUpdate.available.subscribe(evt => {\r\n const snack = this.snackbar.open('Update Available', 'Reload', {duration: 30000});\r\n snack.onAction()\r\n .subscribe(() => {\r\n window.location.reload();\r\n });\r\n });\r\n }\r\n\r\n private setupSnackBar() {\r\n this.snackbar.openFromComponent(PrivacySnackbarComponent, {duration: 9000, verticalPosition: 'top'});\r\n }\r\n}\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport {loadModules} from 'esri-loader';\r\n\r\nimport {MapService} from '../../services/map/map.service';\r\nimport {ConfigService} from '../../services/config/config.service';\r\nimport {GoogleAnalyticsService} from '../../services/googleAnalytics/google-analytics.service';\r\nimport {IdentifyService} from '../../services/identify/identify.service';\r\nimport esri = __esri;\r\nimport { watch } from 'esri/core/watchUtils';\r\n\r\n/**\r\n * Creates the 2D map view object after the map object is created and adds all of the basic esri widgets to the screen\r\n */\r\n@Component({\r\n selector: 'app-esri-map-view',\r\n templateUrl: './esri-map-view.component.html',\r\n styleUrls: ['./esri-map-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EsriMapViewComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('mapViewNode', {static: true}) private mapViewEl: ElementRef;\r\n\r\n private mapView;\r\n private searchWidget;\r\n\r\n constructor(private map: MapService, private config: ConfigService, private cd: ChangeDetectorRef,\r\n private ga: GoogleAnalyticsService, private identify: IdentifyService) { }\r\n\r\n /**\r\n * Initializes the map view creation when the page loads\r\n */\r\n public async ngOnInit() {\r\n const [watchUtils] = await loadModules([\r\n 'esri/core/watchUtils'\r\n ]);\r\n const loading = document.querySelector('#loading-svg') as HTMLElement;\r\n this.map.getmapLoadedObservable().subscribe((map) => {\r\n if (map) {\r\n this.initializeMap(map).then(\r\n (mapView) => {\r\n let flag = false;\r\n if (this.map.getMapViewAr().length > 1) {\r\n for (const view of this.map.getMapViewAr()) {\r\n if (view.name === '2d') {\r\n mapView = view;\r\n flag = true;\r\n break;\r\n }\r\n }\r\n }\r\n this.mapView = mapView;\r\n this.mapView.when(async () => {\r\n await watchUtils.whenFalse(this.mapView, 'updating', () => {\r\n loading.style.visibility = 'hidden';\r\n });\r\n await watchUtils.whenTrue(this.mapView, 'updating', () => {\r\n loading.style.visibility = 'unset';\r\n });\r\n });\r\n this.map.setMapType(2);\r\n this.map.setViewRef(mapView, flag);\r\n this.setupEsriWidgets(mapView);\r\n this.map.setupPreviousExtentButton();\r\n this.map.setViewRefObservable(true);\r\n this.identify.identifyInit();\r\n this.cd.detectChanges();\r\n });\r\n }\r\n }, (error) => {\r\n this.ga.exception(error, true);\r\n });\r\n }\r\n\r\n /**\r\n * Makes sure that when the route changes, that the user doesn't lose their location on the map\r\n */\r\n public ngOnDestroy(): void {\r\n if (this.map && this.mapView) {\r\n this.map.setZoom(this.mapView.zoom);\r\n this.map.setScale(this.mapView.scale);\r\n this.map.setRotation(this.mapView.rotation);\r\n this.map.setCenter(this.mapView.center);\r\n //this.map.destroyViewRef();\r\n this.mapView = null;\r\n this.map.setViewRefObservable(false);\r\n }\r\n }\r\n\r\n /**\r\n * This initializes the mapview on top of the map object\r\n * @param map: Map object created in the map service\r\n */\r\n private async initializeMap(map) {\r\n try {\r\n const [MapView] = await loadModules([\r\n 'esri/views/MapView'\r\n ]);\r\n this.map.setMapViewGroundLayer();\r\n const mapViewProperties = {\r\n container: this.mapViewEl.nativeElement,\r\n center: this.map.getCenter(),\r\n zoom: this.map.getZoom(),\r\n map,\r\n name: '2d'\r\n };\r\n this.cd.detectChanges();\r\n return new MapView(mapViewProperties);\r\n } catch (error) {\r\n this.ga.exception(error, true);\r\n }\r\n }\r\n\r\n /**\r\n * Sets up the Esri widgets that show up on the map\r\n * Compass/Home/Locate/Scalebar/Search\r\n * @param mapView: the mapview object to attach the widgets to\r\n */\r\n private async setupEsriWidgets(mapView) {\r\n try {\r\n const [Compass, Home, Locate, ScaleBar, Search, Zoom] = await loadModules([\r\n 'esri/widgets/Compass',\r\n 'esri/widgets/Home',\r\n 'esri/widgets/Locate',\r\n 'esri/widgets/ScaleBar',\r\n 'esri/widgets/Search',\r\n 'esri/widgets/Zoom'\r\n ]);\r\n mapView.ui.remove('zoom');\r\n const compass = new Compass({\r\n view: mapView,\r\n container: 'compass'\r\n });\r\n\r\n const homeBtn = new Home({\r\n view: mapView,\r\n container: 'home'\r\n });\r\n\r\n const locateBtn = new Locate({\r\n view: mapView,\r\n container: 'locate'\r\n });\r\n\r\n const zoomBtn = new Zoom({\r\n view: mapView,\r\n container: 'zoom'\r\n });\r\n\r\n const scaleBar = new ScaleBar({\r\n view: mapView,\r\n unit: 'dual'\r\n });\r\n mapView.ui.add(scaleBar, 'bottom-left');\r\n\r\n // Resets view ref of search widget\r\n if (document.querySelector('#searchContainer') &&\r\n !document.querySelector('#searchContainer').innerHTML) {\r\n const sources = [];\r\n const searchProperties: any = {\r\n view: mapView,\r\n container: 'searchContainer',\r\n };\r\n if (this.config.search.length > 0) {\r\n for (const layer of this.config.search) {\r\n sources.push(await this.map.createSearchLayers(layer));\r\n }\r\n searchProperties.sources = sources;\r\n }\r\n this.searchWidget = new Search(searchProperties);\r\n this.mapView.ui.add(mapView.searchWidget, 'top-left');\r\n this.map.setSearchWidget(this.searchWidget);\r\n }\r\n this.map.enableIdentify();\r\n this.cd.detectChanges();\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './add-data-entry.component.html'\r\n})\r\nexport class AddDataEntryComponent {}\r\n","\r\n","import {Injectable} from '@angular/core';\r\nimport {TableOfContentsComponent} from '../../components/widgets/table-of-contents/table-of-contents.component';\r\nimport {ConfigService} from '../config/config.service';\r\nimport {GoogleAnalyticsService} from '../googleAnalytics/google-analytics.service';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {AttributeTableEntryComponent} from '../../components/widgets/attribute-table/attribute-table-entry.component';\r\nimport {IdentifyEntryComponent} from '../../components/widgets/identify/identify-entry.component';\r\nimport {LegendEntryComponent} from '../../components/widgets/legend/legend-entry.component';\r\nimport {AddDataEntryComponent} from '../../components/widgets/add-data/add-data-entry.component';\r\nimport {BasemapGalleryEntryComponent} from '../../components/widgets/basemap-gallery/basemap-gallery-entry.component';\r\nimport {DrawEntryComponent} from '../../components/widgets/draw/draw-entry.component';\r\nimport {SelectEntryComponent} from '../../components/widgets/select/select-entry.component';\r\nimport {FindLocationEntryComponent} from '../../components/widgets/find-location/find-location-entry.component';\r\nimport {FeedbackEntryComponent} from '../../components/widgets/feedback/feedback-entry.component';\r\nimport {MeasureEntryComponent} from '../../components/widgets/measure/measure-entry.component';\r\nimport {PrintEntryComponent} from '../../components/widgets/print/print-entry.component';\r\nimport {QueryEntryComponent} from '../../components/widgets/query/query-entry.component';\r\nimport {ReorderEntryComponent} from '../../components/widgets/reorder/reorder-entry.component';\r\nimport {TopomapsViewerEntryComponent} from '../../components/widgets/topomaps-viewer/topomaps-viewer-entry.component';\r\nimport {CheckLocalEntryComponent} from '../../components/widgets/checkLocal/checkLocal-entry.component';\r\nimport {FeaturetableEntryComponent} from '../../components/widgets/featuretable/featuretable-entry.component';\r\nimport {TraxsReportEntryComponent} from '../../components/widgets/traxsreport/traxsreport-entry.component';\r\n\r\n/**\r\n * Service to control the dynamic grid object.\r\n * Keeps track of what the possible values of the grid are, and what is currently visible on the screen.\r\n * Allows widgets to turn widgets on/off as needed\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GridService {\r\n // The holder array of widget items that can be added to the screen\r\n private gridItems = [\r\n {cols: 10, rows: 23, y: 4, x: 1, name: 'toc', widget: TableOfContentsComponent},\r\n {cols: 7, rows: 17, y: 4, x: 1, name: 'addData', widget: AddDataEntryComponent},\r\n {cols: 11, rows: 16, y: 4, x: 1, name: 'identify', widget: IdentifyEntryComponent},\r\n {cols: 6, rows: 13, y: 4, x: 1, name: 'reorder', widget: ReorderEntryComponent},\r\n {cols: 35, rows: 21, y: 4, x: 1, name: 'attributes', widget: FeaturetableEntryComponent},\r\n {cols: 8, rows: 14, y: 4, x: 1, name: 'basemap', widget: BasemapGalleryEntryComponent},\r\n {cols: 10, rows: 16, y: 4, x: 1, name: 'query', widget: QueryEntryComponent},\r\n {cols: 8, rows: 23, y: 4, x: 1, name: 'legend', widget: LegendEntryComponent},\r\n {cols: 8, rows: 26, y: 4, x: 1, name: 'print', widget: PrintEntryComponent},\r\n {cols: 8, rows: 23, y: 4, x: 1, name: 'measurement', widget: MeasureEntryComponent},\r\n {cols: 10, rows: 9, y: 4, x: 1, name: 'draw', widget: DrawEntryComponent},\r\n {cols: 10, rows: 14, y: 4, x: 1, name: 'select', widget: SelectEntryComponent},\r\n {cols: 10, rows: 16, y: 4, x: 1, name: 'findlocation', widget: FindLocationEntryComponent},\r\n {cols: 12, rows: 12, y: 4, x: 1, name: 'feedback', widget: FeedbackEntryComponent},\r\n {cols: 6, rows: 13, y: 4, x: 1, name: 'checkLocal', widget: CheckLocalEntryComponent},\r\n {cols: 5, rows: 28, y: 4, x: 1, name: 'topomapsviewer', widget: TopomapsViewerEntryComponent},\r\n {cols: 13, rows: 18, y: 4, x: 1, name: 'traxsreport', widget: TraxsReportEntryComponent}\r\n ];\r\n // The widget items shown on the screen\r\n public gridItemsOn = [];\r\n private widgetChangeObs = new BehaviorSubject(null);\r\n\r\n constructor(private config: ConfigService, private ga: GoogleAnalyticsService) {}\r\n\r\n /**\r\n * Starts the grid up by adding any items that should be on to the grid array\r\n */\r\n public startGrid() {\r\n for (const tool of this.config.tools) {\r\n for (const item of this.gridItems) {\r\n if (item.name === tool.id) {\r\n if (tool.grid && !this.doesGridItemExist(tool.id)) {\r\n if (window.innerWidth > 800 && window.innerHeight > 400) {\r\n this.addGridItem(item);\r\n } else {\r\n this.widgetOff(item.name);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n this.widgetChangeObs.next(true);\r\n }\r\n\r\n /**\r\n * Refreshs grid widgets. Used when new themes are loaded that may not have the same widgets or\r\n * widget properties as the other themes in the app.\r\n */\r\n public refreshGrid() {\r\n if (this.gridItemsOn) {\r\n for (const tool of this.config.tools) {\r\n if (!this.doesGridItemExist(tool.id) && tool.grid && tool.status === 'widget-on') { \r\n let gridItem = this.getGridItem(tool.id);\r\n if (gridItem) { \r\n this.addGridItem(gridItem);\r\n } \r\n }\r\n }\r\n }\r\n this.widgetChangeObs.next(true);\r\n }\r\n\r\n public getGrid() { return this.gridItemsOn; }\r\n public getGridList() { return this.gridItems; }\r\n private addGridItem(item) { this.gridItemsOn.push(item); }\r\n private removeGridItem(item) { this.gridItemsOn.splice(this.gridItemsOn.indexOf(item), 1); }\r\n public getWidgetChangeObs() { return this.widgetChangeObs.asObservable(); }\r\n private doesGridItemExist(name) {\r\n let widgetExistsFlag = false;\r\n for (const item of this.gridItemsOn) {\r\n if (item.name === name) {\r\n widgetExistsFlag = true;\r\n break;\r\n }\r\n }\r\n return widgetExistsFlag;\r\n }\r\n\r\n /**\r\n * Gets grid item by name\r\n * @param name \r\n * @returns \r\n */\r\n private getGridItem(name) {\r\n for (const item of this.gridItems) {\r\n if (item.name === name) {\r\n return item;\r\n }\r\n }\r\n }\r\n\r\n private activateWidgetBar(val, name) {\r\n for (const tool of this.config.tools) {\r\n if (tool.id === name) {\r\n tool.status = val ? 'widget-on' : 'widget-off';\r\n tool.grid = val;\r\n break;\r\n }\r\n }\r\n this.widgetChangeObs.next(true);\r\n }\r\n\r\n /**\r\n * Checks to see if a grid item is on\r\n * If not adds a grid item from the holder array to the active array to make it appear on screen\r\n * Then sends an event to Google Analytics to monitor on the dashboard\r\n * Then makes sure the widget bar icon is turned on\r\n * @param name: Name of the widget to activate\r\n */\r\n public async widgetOn(name) {\r\n if (!this.doesGridItemExist(name)) {\r\n for (const item of this.getGridList()) {\r\n if (item.name === name) {\r\n this.ga.eventEmitter('widget', 'select-content', item.name + ' on');\r\n this.addGridItem(item);\r\n break;\r\n }\r\n }\r\n this.activateWidgetBar(true, name);\r\n }\r\n }\r\n\r\n /**\r\n * Checks to see if the grid item is there\r\n * If exists is, then it removes a grid item from the holder array to the inactive array to make it appear on screen\r\n * Then sends an event to Google Analytics to monitor on the dashboard\r\n * Then makes sure that the widget bar icon is off\r\n * @param name: Name of the widget to remove\r\n */\r\n public async widgetOff(name) {\r\n if (this.doesGridItemExist(name)) {\r\n for (const item of this.getGridList()) {\r\n if (item.name === name) {\r\n this.ga.eventEmitter('widget', 'select-content', item.name + ' off');\r\n this.removeGridItem(item);\r\n break;\r\n }\r\n }\r\n }\r\n this.activateWidgetBar(false, name);\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ConfigService } from '../../../services/config/config.service';\r\nimport { GridService } from '../../../services/grid/grid.service';\r\n\r\n/**\r\n * Creates the widget styling for the header/footer of each dialog box\r\n */\r\n@Component({\r\n selector: 'app-widget-container',\r\n templateUrl: './widget-container.component.html',\r\n styleUrls: ['./widget-container.component.scss']\r\n})\r\nexport class WidgetContainerComponent implements OnInit {\r\n @Input()\r\n public widgetIcon: string;\r\n\r\n @Input()\r\n public widgetTitle: string;\r\n\r\n constructor(private config: ConfigService, private grid: GridService) { }\r\n\r\n ngOnInit() {}\r\n\r\n /**\r\n * Allows the X button on each of the widgets to close them\r\n */\r\n public closeWidget() {\r\n let widgetFound = false;\r\n for (const [i, tool] of this.config.tools.entries()) {\r\n if (tool.name === this.widgetTitle) {\r\n this.config.tools[i].grid = false;\r\n this.config.tools[i].status = 'widget-off';\r\n this.grid.widgetOff(tool.id);\r\n widgetFound = true;\r\n }\r\n }\r\n\r\n if (!widgetFound) {\r\n this.grid.widgetOff(this.widgetTitle.toLowerCase());\r\n // If widget not found, Check to see if the widget is in the nonToolbarWidgets array. These are widgets\r\n // that are used in the app but are called from another widget and not on the toolbar.\r\n if (this.config.nonToolbarWidgets && this.config.nonToolbarWidgets.length > 0) {\r\n const widgetObj = this.config.nonToolbarWidgets.filter(obj => {\r\n return obj.name === this.widgetTitle\r\n });\r\n if (widgetObj && widgetObj.length > 0 && widgetObj[0].id) {\r\n //console.log('turn of: ' + widgetObj[0].id);\r\n this.grid.widgetOff(widgetObj[0].id);\r\n } \r\n }\r\n }\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n {{widgetTitle}}\r\n ×\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './measure-entry.component.html'\r\n})\r\nexport class MeasureEntryComponent {}\r\n","\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-privacy-dialog',\r\n templateUrl: './privacy-dialog.component.html',\r\n styleUrls: ['./privacy-dialog.component.scss']\r\n})\r\nexport class PrivacyDialogComponent {}\r\n","
\r\n

Privacy Policy

\r\n
\r\n
Section A. Introduction
\r\n

Thank you for visiting our website and reading this Privacy Policy. This Policy explains what we do with data collected as a result of your visit to this website. It also describes several state and federal laws that apply to personally identifiable information that you might provide in the course of navigating this site.

\r\n\r\n
Section B. Data Collection and Use
\r\n

The information we automatically collect is saved and used by this agency to improve the content of our web services and to help us understand how people are using our services.

\r\n

Information collected if you only browse this site

\r\n

When you browse this website, we may gather and store certain information about your visit. We automatically collect and store the following information about your visit:

\r\n
    \r\n
  • The Internet domain and network address you use to access our site
  • \r\n
  • The type of web browser and operating system you are using
  • \r\n
  • The date and time of your visit
  • \r\n
  • The pages you visit on this website
  • \r\n
  • The last website you visited before coming to ours
  • \r\n
  • Other web traffic statistics such as Google Analytics or Piwik Analytics
  • \r\n
\r\n\r\n

Information collected if you volunteer information

\r\n

If during your visit to our website you participate in a survey, send us an email, or perform some other transaction online, the following additional information may be collected:

\r\n
    \r\n
  • Your email address and contents of the email
  • \r\n
  • Information volunteered in response to a survey
  • \r\n
  • Information volunteered through an online form for any other purpose
  • \r\n
\r\n\r\n

The information collected is not limited to text characters and may include audio, video, and graphic information formats you send us. We will not usually ask for or collect this kind of information from the general public through this website.

\r\n

Email you send to us may be used to respond to issues and to further improve our services. We may forward your email to another agency or a vendor for appropriate action.\r\n The records retention schedules published by the State Archives require us to keep this information only so long as it is useful, and then destroy it; these schedules change from time to time.

\r\n\r\n
Section C. Personal Information
\r\n

Personally identifiable information (“PII”) as defined in this Privacy Policy, means information about a natural person that is readily identifiable to that specific individual. Personal information includes such things as your name, address, and phone number.

\r\n

We will not collect PII about you unless you voluntarily provide it to us by sending us email, or completing an online form or survey. You may choose not to contact us by e-mail or to provide any PII using an online form or survey. Your choice to not participate in these activities will not restrict or impair your ability to use our site and read or download any information provided on the site. If you choose to provide PII by emailing us, participating in a survey, or completing an online form, we may store this information.

\r\n

The Children's Online Privacy Protection Act (COPPA) governs information gathering online from or about children under the age of 13. We are especially concerned about protecting children's privacy. Under COPPA, a web site must get parental permission before collecting personally identifiable information about a child under the age of 13.

\r\n\r\n

If you have questions about how we use your personally identifiable information, you can contact our agency as shown in the Contact Information section of this statement.

\r\n\r\n
Section D. Public Access to Information
\r\n

In the State of Washington, laws exist to ensure that government is open and that the public has a right to access appropriate records and information possessed by state government. At the same time, there are exceptions to the public's right to access public records that serve various needs including the privacy of individuals. Exceptions are provided by both state and federal laws.\r\n As a public agency, all our information is governed by laws such as Washington’s Public Records Act RCW 42.56(link is external). Information you send us may become a public record, and it may be subject to public inspection and copying if not otherwise protected by federal or state law.

\r\n

Information collected through use of this site may be public information and subject to inspection and copying by members of the public. For example, the Public Records Act states that:\r\n Each agency, in accordance with published rules, shall make available for public inspection and copying all public records, unless the record falls within the specific exemptions of subsection (6) of this section [RCW 42.56.070(6) (link is external)], Chapter 42.56 RCW, or other statute which exempts or prohibits disclosure of specific information or records. To the extent required to prevent an unreasonable invasion of personal privacy interests protected by Chapter 42.56 RCW, an agency shall delete identifying details in a manner consistent with Chapter 42.56 RCW when it makes available or publishes any public record; however, in each case, the justification for the deletion shall be explained fully in writing.

\r\n\r\n

In the event of a conflict between this Privacy Policy and the Public Records Act or other law governing the agency’s disclosure of records, the Public Records Act or other applicable law will control.

\r\n\r\n
Section E. Correcting Personally Identifiable Information
\r\n

State law requires agencies that collect personally identifiable information to provide “procedures for correcting inaccurate information, including establishing mechanisms for individuals to review information about them and recommend changes in information they believe to be inaccurate.” (RCW 43.105.365 (link is external))

\r\n

You can access any personally identifiable information we collect about you by using the information in the Contact Information section at the end of this Policy. We will do our best to correct factual errors in your personally identifiable information if you send us a written request that clearly shows the error. We will take reasonable steps to verify your identity before granting access or making corrections.

\r\n\r\n
Section F. User Tracking and Customization of Pages
\r\n

To better serve our users, we use a variety of indicators to customize your browsing experience with this website, including “cookies.” If you use your browser settings opt to block all cookies in the settings to your web browser (such as Internet Explorer, Safari, Chrome or Firefox), (including essential cookies) this could affect the availability and functionality of this website. We only have control over indicators we provide and not over third party tools or other technologies deployed on this website that may be created by using embedded third party applications.

\r\n\r\n
Section G. Security
\r\n

This Agency has taken steps to safeguard the integrity of its data and prevent unauthorized access to information maintained by us. These measures are designed and intended to prevent corruption of data, block unknown or unauthorized access to our systems and information, and to provide reasonable protection of information in our possession.

\r\n\r\n
Section H. Copyright
\r\n

This site contains text, artwork, photos or other content that is copyrighted by others and is being used with permission of the copyright holder. Therefore, we recommend that you contact us for permission to use any content contained on this site.

\r\n\r\n
Section I. Disclaimer
\r\n

Neither the State of Washington, nor any agency, officer, or employee of the State of Washington warrants the accuracy, reliability or timeliness of any information published by this system, nor endorses any content, viewpoints, products, or services linked from this system, and shall not be held liable for any losses caused by reliance on the accuracy, reliability or timeliness of such information. Portions of such information may be incorrect or not current. Any person or entity who relies on any information obtained from this system does so at their own risk.

\r\n\r\n

Our web site contains links to other web sites. These include links to web sites operated by other government agencies, nonprofit organizations and private businesses, including but not limited to the websites of our vendors. When you follow a link to another site, you are no longer on our web site and this Privacy Policy will not apply-- you will be subject to the privacy policy of that new site.

\r\n\r\n

Reference in this Web site to any specific commercial products, processes, or services, or the use of any trade, firm, or corporation name is for the information and convenience of the public and does not constitute endorsement, recommendation, or favoring by the State of Washington, this agency, or its officers, employees or agents.

\r\n\r\n

We reserves the right to revise and update this Privacy Policy at any time without notice by posting the revision on our site.

\r\n\r\n
Section J. Glossary
\r\n

A network address is assigned to your computer or mobile device whenever you are using the Internet. Network addresses can be IP address like this: 192.168.0.11 or like this: fc00:0:0:0:0:0:0:0:/7 or Ethernet addresses like this 00:00:00:FF:EE:11

\r\n

Cookies are small data files stored on your hard drive or in your device memory when you visit a website. Cookies and similar technologies are widely used by websites to make them work more efficiently, as well as to provide information to the website operator about how users are using their website. Most browsers allow you to block cookies by adjusting the “settings,” “preferences” or “internet options.” To find out more about cookies, including how to see what cookies have been set and how to manage and delete them, please refer to your browser ‘help’ section, visit the Federal Trade Commission’s explanation on its website (link is external), or the Washington State privacy resources at Privacy.wa.gov.

\r\n\r\n
Section K. Contact Information
\r\n

You may contact us using our Contact page.

\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './feedback-entry.component.html'\r\n})\r\nexport class FeedbackEntryComponent {}\r\n","\r\n","import {Injectable} from '@angular/core';\r\nimport {ConfigService} from '../config/config.service';\r\nimport {TableOfContentsService} from '../toc/table-of-contents.service';\r\nimport {GoogleAnalyticsService} from '../googleAnalytics/google-analytics.service';\r\nimport { throwError } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InitializeService {\r\n constructor(private config: ConfigService,\r\n private toc: TableOfContentsService,\r\n private ga: GoogleAnalyticsService) {}\r\n \r\n\r\n public async init(initStatus) {\r\n //console.log('***init firstRunFlag: ' + this.toc.firstRunFlag + ' theme: ' + this.config.CurrentTheme);\r\n //this.toc.firstRunFlag = true;\r\n this.config.CurrentTheme = this.toc.setupCurrentTheme(null);\r\n // console.log('***currentTheme in init: ' + this.config.CurrentTheme );\r\n /* if (this.toc.firstRunFlag && (!this.config.CurrentTheme || this.config.CurrentTheme.length < 1)) {\r\n this.config.CurrentTheme = this.toc.setupCurrentTheme();\r\n } */\r\n /* if (themeName && this.config.CurrentTheme != themeName) {\r\n this.config.CurrentTheme === themeName;\r\n } */\r\n const currentTheme = this.config.CurrentTheme;\r\n //console.log('***init currenttheme: ' + currentTheme + ' tools: ' + this.config.tools.length);\r\n const isUserAuthorized = await this.toc.getAuthorization(this.config);\r\n\r\n if (isUserAuthorized) {\r\n //if (this.toc.firstRunFlag) {\r\n const themeTOCNodeFileName = this.config.themeTOCNodeFileName[currentTheme];\r\n if (themeTOCNodeFileName) {\r\n const themeData: any = await this.toc.getThemeNodeArr(themeTOCNodeFileName);\r\n //console.log('***init currenttheme: ' + currentTheme + ' loaded themeTOCNodeFilename');\r\n if (themeData) {\r\n this.config.tocNodeArray = themeData.nodeArr;\r\n if (themeData.themeQueryTasks){\r\n this.config.themeQueryTasks = themeData.themeQueryTasks;\r\n }\r\n if (themeData.themeLayerProperties){\r\n this.config.themeLayerProperties = themeData.themeLayerProperties;\r\n }\r\n this.toc.nodeArray = themeData.nodeArr;\r\n if (themeData.defaultVisibleLayers) {\r\n if (!this.config.defaultVisibleLayers) {\r\n this.config.defaultVisibleLayers = {};\r\n }\r\n \r\n this.config.defaultVisibleLayers[currentTheme] = themeData.defaultVisibleLayers;\r\n this.toc.showDefaultVisibleLayers();\r\n }\r\n this.config.themeNameList = themeData.themeNameList;\r\n // Notify observers that theme has been loaded\r\n this.toc.themeDataLoaded.next(true);\r\n } else {\r\n this.ga.exception('No data from: ' + themeTOCNodeFileName, true);\r\n }\r\n \r\n } else {\r\n this.ga.exception('Missing theme file for: ' + currentTheme, true);\r\n }\r\n // }\r\n }\r\n this.toc.firstRunFlag = false;\r\n //console.log('end init firstRunFlag: ' + this.toc.firstRunFlag);\r\n }\r\n\r\n}\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './reorder-entry.component.html'\r\n})\r\nexport class ReorderEntryComponent {}\r\n","\r\n"," import {Component} from '@angular/core';\r\n\r\n @Component({\r\n templateUrl: './find-location-entry.component.html'\r\n })\r\n export class FindLocationEntryComponent {}\r\n ","\r\n","import {Component} from '@angular/core';\r\n@Component({\r\n templateUrl: './traxsreport-entry.component.html'\r\n})\r\nexport class TraxsReportEntryComponent {}\r\n","\r\n","import {BrowserModule, Title} from '@angular/platform-browser';\r\nimport {NgModule} from '@angular/core';\r\nimport {APP_BASE_HREF, CommonModule} from '@angular/common';\r\nimport {HttpClientModule} from '@angular/common/http';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\r\n\r\nimport {GridsterModule} from 'angular-gridster2';\r\nimport {DynamicModule} from 'ng-dynamic-component';\r\n\r\nimport {AppRoutingModule} from './app-routing.module';\r\nimport {AppComponent} from '../app.component';\r\nimport {WidgetBarComponent} from '../components/widget-bar/widget-bar.component';\r\nimport {ConfigServiceProvider} from '../services/config/config.service.provider';\r\nimport {GridComponent} from '../components/grid/grid.component';\r\nimport {WidgetModule} from './widget.module';\r\nimport {ViewModule} from './view.module';\r\nimport {MatDialogModule} from '@angular/material/dialog';\r\nimport {ServiceWorkerModule} from '@angular/service-worker';\r\nimport {environment} from '../../environments/environment';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport {MatSnackBarModule} from '@angular/material/snack-bar';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {PrivacyDialogComponent} from '../components/privacy-dialog/privacy-dialog.component';\r\nimport {PrivacySnackbarComponent} from '../components/privacy-snackbar/privacy-snackbar.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n WidgetBarComponent,\r\n GridComponent,\r\n PrivacyDialogComponent,\r\n PrivacySnackbarComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n CommonModule,\r\n AppRoutingModule,\r\n GridsterModule,\r\n HttpClientModule,\r\n FormsModule,\r\n WidgetModule,\r\n DynamicModule,\r\n ViewModule,\r\n BrowserAnimationsModule,\r\n MatDialogModule,\r\n MatTooltipModule,\r\n MatSnackBarModule,\r\n MatButtonModule,\r\n ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production })\r\n ],\r\n providers: [\r\n ConfigServiceProvider,\r\n Title,\r\n {provide: APP_BASE_HREF, useValue: './'}\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './query-entry.component.html'\r\n})\r\nexport class QueryEntryComponent {}\r\n","\r\n","import {Injectable, OnDestroy} from '@angular/core';\r\nimport {IdentifyList} from '../../interfaces/IdentifyList';\r\nimport {IdentifyDisplay} from '../../interfaces/IdentifyDisplay';\r\nimport {MapService} from '../map/map.service';\r\nimport {GridService} from '../grid/grid.service';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {QueryObject} from '../../interfaces/query';\r\nimport {QueryService} from '../query/query.service';\r\nimport {IdentifyParseService} from './identify-parse.service';\r\nimport {GraphicsService} from '../graphics/graphics.service';\r\nimport {GoogleAnalyticsService} from '../googleAnalytics/google-analytics.service';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {TableOfContentsService} from '../toc/table-of-contents.service';\r\n\r\n/**\r\n * Keeps track of identify objects\r\n * Formats and sends queries to the query service\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IdentifyService implements OnDestroy {\r\n public blankIdentify = true;\r\n private identifyNumber = 0;\r\n private identifyRun = false;\r\n private identifyIndex = 0;\r\n private subIndex = 0;\r\n private loading = false;\r\n private graphicsLayer;\r\n private highlightLayer;\r\n private identifyObs;\r\n public identifyArr: IdentifyList[] = [];\r\n public identifyRelatedDisplay: IdentifyDisplay[] = [];\r\n public identifyRunObs = new BehaviorSubject(null);\r\n public identifyDisplay: IdentifyDisplay = {\r\n attributes: [],\r\n columns: {\r\n names: [],\r\n aliases: [],\r\n types: []\r\n },\r\n headers: []\r\n };\r\n private highlightStyle = {\r\n point: {\r\n color: {r: 222, g: 98, b: 38, a: 0.3},\r\n size: 10,\r\n style: 'circle',\r\n outline: {\r\n color: {r: 255, g: 0, b: 0, a: 1.0},\r\n width: 2,\r\n style: 'solid'\r\n }\r\n },\r\n polyline: {\r\n color: {r: 255, g: 0, b: 0, a: 1.0},\r\n width: 1.5,\r\n style: 'solid'\r\n },\r\n polygon: {\r\n color: {r: 222, g: 98, b: 38, a: 0.3},\r\n style: 'none',\r\n outline: {\r\n color: {r: 255, g: 0, b: 0, a: 1.0},\r\n style: 'solid',\r\n width: 1.5\r\n }\r\n }\r\n };\r\n private selectStyle = {\r\n point: {\r\n color: {r: 23, g: 164, b: 221, a: 0.1},\r\n size: 10,\r\n style: 'circle',\r\n outline: {\r\n color: {r: 23, g: 164, b: 221, a: 1.0},\r\n width: 2,\r\n style: 'solid'\r\n }\r\n },\r\n polyline: {\r\n color: {r: 23, g: 164, b: 221, a: 1.0},\r\n width: 1.5,\r\n style: 'solid'\r\n },\r\n polygon: {\r\n color: {r: 0, g: 0, b: 0, a: 0.1},\r\n style: 'none',\r\n outline: {\r\n color: {r: 23, g: 164, b: 221, a: 1.0},\r\n style: 'solid',\r\n width: 1.5\r\n }\r\n }\r\n };\r\n\r\n constructor(private map: MapService, private grid: GridService, private parse: IdentifyParseService, private ga: GoogleAnalyticsService,\r\n private http: HttpClient, private query: QueryService,\r\n private graphics: GraphicsService, private toc: TableOfContentsService) {}\r\n\r\n public getBlankIdentify() { return this.blankIdentify; }\r\n public getLoading() { return this.loading; }\r\n public getIdentifyArr() { return this.identifyArr; }\r\n public getIdentifyDisplay() { return this.identifyDisplay; }\r\n public getIdentifyRelatedDisplay() { return this.identifyRelatedDisplay; }\r\n public setIdentifyDisplay(identifyDisplay) { this.identifyDisplay = identifyDisplay; }\r\n public setIdentifyRelatedDisplay(val) { this.identifyRelatedDisplay = val; }\r\n public getIdentifyRunObs() { return this.identifyRunObs.asObservable(); }\r\n public setIdentifyRunObs() { this.identifyRunObs.next(null); }\r\n public removeGraphics() {\r\n if (this.graphicsLayer) {\r\n this.graphics.removeGraphicsLayer(this.graphicsLayer);\r\n this.graphicsLayer = null;\r\n }\r\n if (this.highlightLayer) {\r\n this.graphics.removeGraphicsLayer(this.highlightLayer);\r\n this.highlightLayer = null;\r\n }\r\n }\r\n\r\n /**\r\n * Angular lifecycle hook when the service is destroyed\r\n * Remove observables\r\n */\r\n ngOnDestroy(): void {\r\n if (this.identifyObs) {\r\n this.identifyObs.unsubscribe();\r\n }\r\n if (this.identifyRunObs) {\r\n this.identifyRunObs.unsubscribe();\r\n }\r\n this.removeGraphics();\r\n }\r\n\r\n /**\r\n * allows the Identify stuff to create graphics without connecting to the graphics service because they need the style property\r\n * @param geometryType: geometry type to create\r\n * @param layer: string layer name to grab the correct graphics layer\r\n * @param geometry: Geometry object to be created\r\n */\r\n public createGraphics(geometryType, layer, geometry) {\r\n let graphicsLayer;\r\n let style;\r\n if (layer === 'highlight') {\r\n graphicsLayer = this.highlightLayer;\r\n style = this.highlightStyle;\r\n this.highlightLayer.removeAll();\r\n } else {\r\n graphicsLayer = this.graphicsLayer;\r\n style = this.selectStyle;\r\n }\r\n this.graphics.createGraphics(geometryType, graphicsLayer, geometry, style);\r\n }\r\n\r\n /**\r\n * Sets up the identify observable\r\n * The observable watches for clicks on the map and then initializes the identify widget\r\n */\r\n public identifyInit() {\r\n if (!this.identifyObs) {\r\n this.identifyObs = this.map.getIdentifyObservable().subscribe( async (e) => {\r\n if (e) {\r\n this.grid.widgetOn('identify');\r\n if (!this.graphicsLayer) { this.graphicsLayer = await this.graphics.addGraphicsLayer('identify'); }\r\n if (!this.highlightLayer) { this.highlightLayer = await this.graphics.addGraphicsLayer('highlight'); }\r\n this.runIdentifyTask(e);\r\n } else {\r\n this.removeGraphics();\r\n this.grid.widgetOff('identify');\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Runs the identify query\r\n * @param e: mouse click event\r\n */\r\n private async runIdentifyTask(e) {\r\n try {\r\n if (e && e.mapPoint) {\r\n let results = {};\r\n const currentView = this.map.getViewRef();\r\n // clears any graphics on the map from previous identifies\r\n if (this.graphicsLayer) { this.graphicsLayer.removeAll(); }\r\n else { this.graphicsLayer = await this.graphics.addGraphicsLayer('identify'); }\r\n if (this.highlightLayer) { this.highlightLayer.removeAll(); }\r\n else { this.highlightLayer = await this.graphics.addGraphicsLayer('highlight'); }\r\n // increments the click number\r\n this.identifyNumber++;\r\n this.resetIdentifyGlobals();\r\n // gets the service information for currently visible layers\r\n const services: any = this.toc.getVisibleLayerList();\r\n // sets up local variables to handle the services\r\n const serviceUrlArr: any = [];\r\n const serviceUrlSubArr: any = [];\r\n const extent = currentView.extent;\r\n let index = 0;\r\n\r\n // sets the mouse cursor to busy signal\r\n this.subIndex = 0;\r\n this.loading = services.length !== 0;\r\n this.identifyRunObs.next(null);\r\n\r\n // creates a buffer around the click to make clicking on points easier\r\n const buffer = currentView.scale / 500; \r\n const envelope = {\r\n xmin: e.mapPoint.x - buffer,\r\n ymin: e.mapPoint.y - buffer,\r\n xmax: e.mapPoint.x + buffer,\r\n ymax: e.mapPoint.y + buffer\r\n };\r\n\r\n let checkedFlag = false;\r\n // finds the service number of all the layers clicked on,\r\n // and checks to see if they're actually visible on the map\r\n for (const service of services) {\r\n // this.subIndex = services.length;\r\n let temp: number;\r\n if (service && (service.table || service.rasterQuery)) {\r\n if (service.isChecked && (service.isParentChecked || service.isParentChecked === undefined)) {\r\n checkedFlag = true;\r\n this.subIndex++;\r\n let serviceType = 'web'; // default is web service layer\r\n if (service.isLocalFile) {\r\n serviceType = 'local'; // local data layer\r\n }\r\n switch (serviceType) {\r\n case 'web':\r\n // Handle web layers\r\n if (service.visibleLayersArr) {\r\n for (const visibleLayersArr of service.visibleLayersArr) {\r\n // the lowest number is the parent number, so function looks for highest number\r\n if (temp) {\r\n temp = Math.max(temp, parseInt(visibleLayersArr, 10));\r\n } else {\r\n temp = parseInt(visibleLayersArr, 10);\r\n }\r\n }\r\n // parses out the service url to an array, and the layerID to another\r\n serviceUrlArr[index] = service.url;\r\n serviceUrlSubArr[index] = temp;\r\n // checks for outfields in config file\r\n const outfields: any = service.outFields ? service.outFields : '*';\r\n if (service.rasterQuery) {\r\n const rasterResults =\r\n await this.rasterIdentify(currentView.size, e, extent, index, service.name, serviceUrlArr, serviceUrlSubArr,\r\n service.token);\r\n const tmp = this.parse.formatRasterIdentify(rasterResults);\r\n if (tmp) {\r\n tmp.identifyNumber = this.identifyNumber;\r\n this.createIdentifyObject(tmp);\r\n }\r\n } else {\r\n results = await this.serviceIdentify(service, serviceUrlArr, serviceUrlSubArr, index, envelope, outfields);\r\n index--;\r\n }\r\n // increments the counter to account for layers that are checked off\r\n index++;\r\n } else {\r\n if (this.identifyDisplay.headers.length === 0) {\r\n this.loading = false;\r\n this.blankIdentify = true;\r\n }\r\n }\r\n break;\r\n case 'local':\r\n results = await this.localIdentify(service, envelope);\r\n break;\r\n }\r\n }\r\n if (results) {\r\n results = await this.parse.parseIdentify(results);\r\n this.createIdentifyObject(results);\r\n }\r\n }\r\n this.identifyRunObs.next(null);\r\n } // end for each service\r\n if (!checkedFlag) {\r\n this.loading = false;\r\n this.blankIdentify = true;\r\n this.identifyRunObs.next(null);\r\n }\r\n } else {\r\n console.log('No mapPoint in identify');\r\n }\r\n } catch (error) {\r\n this.loading = false;\r\n this.ga.exception(error, false);\r\n this.identifyRunObs.next(null);\r\n }\r\n }\r\n\r\n /**\r\n * Resets the identify objects on a new query run\r\n */\r\n public resetIdentifyGlobals() {\r\n this.identifyDisplay = {\r\n attributes: [],\r\n columns: {\r\n names: [],\r\n aliases: [],\r\n types: []\r\n },\r\n headers: []\r\n };\r\n this.identifyRun = false;\r\n this.identifyArr = [];\r\n this.identifyRelatedDisplay = [];\r\n this.identifyIndex = 0;\r\n }\r\n\r\n /**\r\n * Formats and sends the identify query for a web service layer\r\n * @param service: service object\r\n * @param serviceUrlArr: Url of service to querry\r\n * @param serviceUrlSubArr: sub url\r\n * @param index: index of service\r\n * @param envelope: Buffered mouse click position\r\n * @param outfields: fields to query against\r\n */\r\n private async serviceIdentify(service, serviceUrlArr, serviceUrlSubArr, index, envelope, outfields) {\r\n try {\r\n const tmpQueryObj: QueryObject = {};\r\n tmpQueryObj.layerTaskUrl = serviceUrlArr[index] + '/' + serviceUrlSubArr[index];\r\n if (service.layerType === 'feature') {\r\n // if this is a feature layer, the layerid is already included in the url\r\n tmpQueryObj.layerTaskUrl = serviceUrlArr[index];\r\n }\r\n\r\n tmpQueryObj.name = service.name;\r\n tmpQueryObj.layerElem = service;\r\n tmpQueryObj.formatFields = service.formatFields;\r\n tmpQueryObj.relateObj = service.relateObj;\r\n tmpQueryObj.parent = service.parentName;\r\n tmpQueryObj.geometry = envelope.xmin + ',' + envelope.ymin + ','\r\n + envelope.xmax + ',' + envelope.ymax;\r\n tmpQueryObj.returnGeometry = true;\r\n tmpQueryObj.outFields = outfields;\r\n tmpQueryObj.queryID = 'identifyFeatures';\r\n tmpQueryObj.queryMethod = 'POST';\r\n tmpQueryObj.displayFieldName = service.displayField;\r\n tmpQueryObj.identifyType = service.identifyType;\r\n tmpQueryObj.identifyNumber = this.identifyNumber;\r\n if (service.token) {\r\n // Set token if needed\r\n tmpQueryObj.token = service.token;\r\n }\r\n return await this.query.queryData(tmpQueryObj);\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * Sets up raster identify against the query service\r\n * @param size: Current view object reference size method\r\n * @param e: Mouse click\r\n * @param extent: current extent of the map\r\n * @param index: Query index\r\n * @param name: Name of the service\r\n * @param serviceUrlArr: URL\r\n * @param subArr: map layer\r\n */\r\n private async rasterIdentify(size, e, extent, index, name, serviceUrlArr, subArr, token) {\r\n try {\r\n const tmpQueryObj: QueryObject = {};\r\n tmpQueryObj.name = name;\r\n tmpQueryObj.geometry = e.mapPoint.x + ',' + e.mapPoint.y;\r\n tmpQueryObj.viewSize = size;\r\n tmpQueryObj.extent = extent;\r\n tmpQueryObj.returnGeometry = false;\r\n tmpQueryObj.layerType = 'Raster Layer';\r\n tmpQueryObj.layerID = subArr;\r\n tmpQueryObj.layerTaskUrl = serviceUrlArr[index];\r\n if (token) {\r\n tmpQueryObj.token = token;\r\n }\r\n return await this.query.queryData(tmpQueryObj);\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * Formats the query for a local graphics layer\r\n * @param service: the layer to identify\r\n * @param envelope: Buffered mouse click position\r\n */\r\n private async localIdentify(service, envelope) {\r\n try {\r\n // Handle local files\r\n const queryObj: QueryObject = {};\r\n queryObj.name = service.name;\r\n queryObj.geometry =\r\n envelope.xmin + ',' + envelope.ymin + ',' + envelope.xmax + ',' + envelope.ymax;\r\n queryObj.returnGeometry = true;\r\n queryObj.queryID = 'identifyFeatures';\r\n queryObj.queryMethod = 'GET';\r\n queryObj.returnType = 'FEATURES';\r\n queryObj.displayFieldName = service.displayField;\r\n queryObj.identifyType = service.identifyType;\r\n queryObj.objectIdField = service.objectIdField;\r\n queryObj.identifyNumber = this.identifyNumber;\r\n queryObj.layerElem = service;\r\n return await this.query.queryData(queryObj);\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * Creates the identify object for the currently identified item\r\n * Adds graphics to the page showing where the identified item is\r\n * Checks for any related tables and sends out the queries for them\r\n * @param result: results of the identify query\r\n */\r\n private createIdentifyObject(result) {\r\n if (result && result !== 'blank') {\r\n this.subIndex--;\r\n if (this.subIndex >= 0) {\r\n this.loading = false;\r\n }\r\n if (result.identifyNumber === this.identifyNumber) {\r\n // adds result to the identify array\r\n this.identifyArr[this.identifyIndex] = result;\r\n this.identifyIndex++;\r\n\r\n // checks if identify is the first\r\n if (result.featureArr[0] && !this.identifyRun) {\r\n // turns off blank identify statement\r\n this.blankIdentify = false;\r\n\r\n // adds new information to the identify display\r\n this.identifyDisplay = {\r\n attributes: result.featureArr[0],\r\n columns: result.columns,\r\n headers: result.header\r\n };\r\n this.identifyRun = true;\r\n this.identifyArr[this.identifyIndex - 1].highlight = 0;\r\n\r\n // checks for related information\r\n if (result.relateObj) {\r\n this.identifyRelated(result, 0);\r\n }\r\n if (result.geometryType) {\r\n // creates the graphics for map display\r\n this.graphics.createGraphics(result.geometryType, this.highlightLayer, result.geometryArr[0], this.highlightStyle);\r\n for (const geometryArr of result.geometryArr) {\r\n this.graphics.createGraphics(result.geometryType, this.graphicsLayer, geometryArr, this.selectStyle);\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.identifyDisplay.headers === []) {\r\n this.loading = false;\r\n this.blankIdentify = true;\r\n }\r\n }\r\n } else {\r\n if (this.identifyDisplay.headers.length === 0) {\r\n this.loading = false;\r\n this.blankIdentify = true;\r\n }\r\n this.subIndex--;\r\n if (this.subIndex >= 0) {\r\n this.loading = false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Queries a related table and processes the results\r\n * @param data: the data to query\r\n * @param index: index of the query\r\n */\r\n public async identifyRelated(data: any, index: any) {\r\n try {\r\n // blanks out the old array\r\n this.identifyRelatedDisplay = [];\r\n let objectids = 0;\r\n if (index) {\r\n objectids = index;\r\n }\r\n\r\n // creates the url for the observable\r\n for (let i = 0; i < data.relateObj.length; i++) {\r\n this.subIndex++;\r\n\r\n // finds date fields for the parse service to sort on\r\n let sortVar: any;\r\n if (data.relateObj[i].outFields) {\r\n for (const outFields of data.relateObj[i].outFields) {\r\n const regex = new RegExp(/date/g);\r\n const regex2 = new RegExp(/year/g);\r\n if (outFields.toLowerCase().match(regex)\r\n || outFields.toLowerCase().match(regex2)) {\r\n sortVar = outFields;\r\n break;\r\n }\r\n }\r\n }\r\n const queryObj: QueryObject = {};\r\n if (sortVar) {\r\n queryObj.orderByFields = sortVar;\r\n }\r\n queryObj.layerTaskUrl = data.url;\r\n queryObj.name = data.relateObj[i].alias;\r\n queryObj.formatFields = data.relateObj[i].formatFields;\r\n queryObj.relateObj = data.relateObj;\r\n queryObj.parent = data.name;\r\n queryObj.outFields = data.relateObj[i].outFields;\r\n queryObj.queryID = 'identifyRelateFeatures';\r\n queryObj.queryMethod = 'POST';\r\n queryObj.identifyType = data.relateObj[i].identifyType;\r\n queryObj.objectIds = data.objectids[objectids];\r\n queryObj.relationshipClassIDS = data.relateObj[i].ID;\r\n queryObj.identifyNumber = data.identifyNumber;\r\n queryObj.identifyOrder = i;\r\n if (data.relateObj[i].token) {\r\n queryObj.token = data.relateObj[i].token;\r\n }\r\n let result = await this.query.queryData(queryObj);\r\n result = this.parse.identifyRelatedFeatures(result);\r\n this.sortRelatedIdentify(result);\r\n }\r\n } catch (error) {\r\n this.ga.exception(error, false);\r\n }\r\n }\r\n\r\n /**\r\n * Adds related results to the identify array\r\n * Sorts the related array for the proper order\r\n * @param result: the results of the identify query\r\n */\r\n private sortRelatedIdentify(result) {\r\n if (result) {\r\n this.subIndex--;\r\n if (this.subIndex >= 0) {\r\n this.loading = false;\r\n }\r\n if (result.identifyNumber === this.identifyNumber) {\r\n if (result.attributes.length > 0 || result.borehole.length > 0) {\r\n this.identifyRelatedDisplay.push(result);\r\n this.identifyRelatedDisplay.sort((a: any, b: any) => {\r\n return a.identifyOrder - b.identifyOrder;\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './basemap-gallery-entry.component.html'\r\n})\r\nexport class BasemapGalleryEntryComponent {}\r\n","\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './identify-entry.component.html'\r\n})\r\nexport class IdentifyEntryComponent {}\r\n","\r\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\nimport {IdentifyList} from '../../interfaces/IdentifyList';\r\nimport {IdentifyDisplay} from '../../interfaces/IdentifyDisplay';\r\nimport {ConfigService} from '../config/config.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IdentifyParseService {\r\n\r\n\r\n constructor(private http: HttpClient, private config: ConfigService) {}\r\n\r\n /**\r\n * Checks formatting for attributes of server queries\r\n * It looks at the attribute type from the service query and then parses it accordingly\r\n * It then looks for any config attribute types and then parses and formats accordingly\r\n */\r\n public formatCheck(fields: any, attributes: any, formatFields?: any) {\r\n // checks for fields to format\r\n let formatFieldsKeys;\r\n if (formatFields) {\r\n formatFieldsKeys = Object.keys(formatFields);\r\n }\r\n\r\n for (const field of fields) {\r\n // if date field\r\n if (field.type === 'esriFieldTypeDate') {\r\n if (attributes[field.name]) {\r\n const date: any = new Date(attributes[field.name]);\r\n //date.setDate(date.getDate() + 1);\r\n attributes[field.name] =\r\n (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();\r\n }\r\n }\r\n if (field.type === 'esriFieldTypeInteger') { attributes[field.name] = parseInt(attributes[field.name], 10); }\r\n if (field.type === 'esriFieldTypeDouble' && attributes[field.name]) { attributes[field.name] = parseFloat(attributes[field.name]); }\r\n // checks for any number fields to format\r\n if (formatFieldsKeys) {\r\n for (const key of formatFieldsKeys) {\r\n if (field.name === key) {\r\n if (attributes[field.name]) {\r\n if (typeof formatFields[field.name] === 'number') {\r\n // checks to see if the subscription has been canceled in order to abort function\r\n if (attributes[field.name].isNaN) {\r\n attributes[field.name] = null;\r\n } else {\r\n const numberParse = parseFloat(attributes[field.name]);\r\n attributes[field.name] =\r\n parseFloat(numberParse.toFixed(formatFields[field.name]));\r\n }\r\n }\r\n if (formatFields[field.name] === 'wtmfPDFTransformPipe' && this.config && \r\n this.config.WtmfPDFInfo && this.config.WtmfPDFInfo.DNRWtmfPDFUrl && \r\n this.config.WtmfPDFInfo.DNRWtmfPDFOSPath) {\r\n // Update the field value to the URL of the PDF rather than the file system path\r\n //WtmfPDFInfo: property that stores the url && OS paths to the WTMF pdf's\r\n const wtmfUrlPath = this.config.WtmfPDFInfo.DNRWtmfPDFUrl;\r\n const wtmfOSPath = this.config.WtmfPDFInfo.DNRWtmfPDFOSPath;\r\n let value = attributes[field.name];\r\n if (value.toString().indexOf(wtmfOSPath) != -1) {\r\n let wtmfFilename = value.slice(value.length - 17, value.length - 4);\r\n if (wtmfFilename && wtmfFilename.length > 0) {\r\n attributes[field.name] = wtmfUrlPath + wtmfFilename;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return attributes;\r\n }\r\n\r\n /**\r\n * When an identify query is run, this function routes the return to the right parsing function or returns a default null object\r\n */\r\n public async parseIdentify(result) {\r\n if (result && result.queryResults) {\r\n if (!result.queryResults.errorMessage) {\r\n if (result.queryTaskObj.queryID === 'identifyFeatures') {\r\n return this.identifyFeatures(result);\r\n } else if (result.queryTaskObj.queryID === 'identifyRelateFeatures') {\r\n return this.identifyRelatedFeatures(result);\r\n }\r\n } else {\r\n // controls the error message for the identify widget\r\n let msg = 'Error: ' + result.queryResults.errorMessage;\r\n const data: any = await this.http.get(result.queryTaskObj.layerTaskUrl + '?f=pjson').toPromise();\r\n if (data) {\r\n if (data.type === 'Raster Layer') {\r\n msg = 'This raster layer does not have identify enabled.';\r\n }\r\n }\r\n return {\r\n accordion: false,\r\n columns: {\r\n names: [['identify']],\r\n aliases: [['Note']],\r\n types: [['string']]\r\n },\r\n header: [result.queryTaskObj.name],\r\n name: result.queryTaskObj.name,\r\n displayFieldName: 'identify',\r\n highlight: null,\r\n featureArr: [[[msg]]],\r\n geometryArr: [],\r\n geometryType: null,\r\n url: result.queryTaskObj.layerTaskUrl,\r\n formatFields: null,\r\n relateObj: null,\r\n parent: result.queryTaskObj.parent,\r\n identifyNumber: result.queryTaskObj.identifyNumber,\r\n identifyType: null,\r\n list: ['--'],\r\n objectids: null\r\n };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Parses an identify query return when it is an esri service\r\n * @param result: query service result\r\n */\r\n private identifyFeatures(result) {\r\n const serverQuery = result.queryResults.featureSet;\r\n const rows = [];\r\n const objectids = [];\r\n const list = [];\r\n const geometry = [];\r\n let columns = {\r\n names: [],\r\n aliases: [],\r\n types: []\r\n };\r\n const queryTaskObj = result.queryTaskObj;\r\n let headers = [];\r\n const geometryType = serverQuery.geometryType;\r\n if (serverQuery.features.length > 0) {\r\n if (!queryTaskObj.displayFieldName) {\r\n queryTaskObj.displayFieldName = result.queryResults.featureSet.displayFieldName;\r\n }\r\n columns = this.getColumns(serverQuery);\r\n if (queryTaskObj.identifyType) {\r\n // checks to see if current layer should have subheadings\r\n // and parses the attributes into sub arrays accordingly\r\n if (queryTaskObj.identifyType.type === 'subheads') {\r\n headers = queryTaskObj.identifyType.headers;\r\n const groupAliases = [];\r\n const groupTypes = [];\r\n for (const feature of serverQuery.features) {\r\n const groups = [];\r\n const geom = feature.geometry;\r\n let attributes = Object.assign({}, feature.attributes);\r\n attributes = this.formatCheck(\r\n serverQuery.fields, attributes, result.queryTaskObj.formatFields);\r\n for (const group of queryTaskObj.identifyType.groups) {\r\n const subGroups = [];\r\n const subGroupsAliases = [];\r\n const subGroupTypes = [];\r\n for (const item of group) {\r\n if (item === 'OBJECTID') {\r\n objectids.push(attributes[item]);\r\n } else {\r\n subGroups.push(attributes[item]);\r\n }\r\n if (item === queryTaskObj.displayFieldName) {\r\n list.push(attributes[item]);\r\n }\r\n for (const field of serverQuery.fields) {\r\n if (field.name === item) {\r\n subGroupsAliases.push(field.alias);\r\n }\r\n subGroupTypes.push(field.type);\r\n }\r\n }\r\n groups.push(subGroups);\r\n groupAliases.push(subGroupsAliases);\r\n groupTypes.push(subGroupTypes);\r\n }\r\n geometry.push(geom);\r\n rows.push(groups);\r\n }\r\n columns = {\r\n names: queryTaskObj.identifyType.groups,\r\n aliases: groupAliases,\r\n types: groupTypes\r\n };\r\n }\r\n } else {\r\n // formats the identify object with default one heading and list of everything else\r\n headers = ['Feature Information'];\r\n // parses out the attributes/geometry for the table object\r\n for (const queryFeature of serverQuery.features) {\r\n let featureAttr = Object.assign({}, queryFeature.attributes);\r\n const feature = [];\r\n\r\n featureAttr = this.formatCheck(serverQuery.fields, featureAttr, result.queryTaskObj.formatFields);\r\n for (const key in featureAttr) {\r\n if (featureAttr.hasOwnProperty(key)) {\r\n feature.push(featureAttr[key]);\r\n if (key === 'OBJECTID') {\r\n objectids.push(featureAttr[key]);\r\n }\r\n if (key === queryTaskObj.displayFieldName) {\r\n list.push(featureAttr[key]);\r\n }\r\n }\r\n }\r\n rows.push([feature]);\r\n if (queryFeature.geometry) {\r\n geometry.push(queryFeature.geometry);\r\n }\r\n }\r\n }\r\n // creates the identify array\r\n const newIdentifyList: IdentifyList = {\r\n columns,\r\n header: headers,\r\n name: queryTaskObj.name,\r\n displayFieldName: queryTaskObj.displayFieldName,\r\n highlight: null,\r\n featureArr: rows,\r\n geometryArr: geometry,\r\n geometryType,\r\n url: queryTaskObj.layerTaskUrl,\r\n formatFields: queryTaskObj.formatFields,\r\n relateObj: queryTaskObj.relateObj,\r\n parent: queryTaskObj.parent,\r\n identifyNumber: queryTaskObj.identifyNumber,\r\n identifyType: queryTaskObj.identifyType,\r\n list,\r\n objectids\r\n };\r\n // pings the observable that something has changed\r\n return newIdentifyList;\r\n } else {\r\n return 'blank';\r\n }\r\n }\r\n\r\n /**\r\n * Formats raster identify results\r\n * @param result: query result\r\n */\r\n public formatRasterIdentify(result) {\r\n if (result) {\r\n const attributes = [];\r\n let listVal = '';\r\n for (const key in result[0].attributes) {\r\n if (result[0].attributes.hasOwnProperty(key)) {\r\n attributes.push(result[0].attributes[key]);\r\n if (key === 'Value') {\r\n listVal = result[0].attributes[key];\r\n }\r\n }\r\n }\r\n const identifyArr: IdentifyList = {\r\n columns: {\r\n names: [Object.keys(result[0].attributes)],\r\n aliases: [Object.keys(result[0].attributes)],\r\n types: [Object.keys(result[0].attributes)]\r\n },\r\n header: [result[0].layerName],\r\n name: result[0].layerName,\r\n displayFieldName: '',\r\n highlight: null,\r\n featureArr: [[attributes]],\r\n geometryArr: null,\r\n geometryType: null,\r\n url: null,\r\n formatFields: null,\r\n relateObj: null,\r\n parent: null,\r\n identifyNumber: result[2],\r\n identifyType: null,\r\n list: [listVal],\r\n objectids: null\r\n };\r\n return identifyArr;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Parses query service results for related queries for the identify tool\r\n * @param result: query service result\r\n */\r\n public identifyRelatedFeatures(result) {\r\n const columns = this.getColumns(result.queryResults.featureSet);\r\n const rows = [];\r\n const slides = [];\r\n let image = '';\r\n const tableColumns = [];\r\n let tableRows = [];\r\n const tmpRows = [];\r\n let listGalleryIndex = null;\r\n\r\n // automatically sorts on date fields\r\n if (result.queryResults.featureSet && result.queryResults.featureSet.relatedRecordGroups) {\r\n if (result.queryResults.featureSet.relatedRecordGroups[0]) {\r\n if (result.queryResults.featureSet.relatedRecordGroups[0].relatedRecords) {\r\n let array = result.queryResults.featureSet.relatedRecordGroups[0].relatedRecords;\r\n array = array.sort((a: any, b: any) => {\r\n const c: any = new Date(a.attributes[result.queryTaskObj.orderByFields]);\r\n const d: any = new Date(b.attributes[result.queryTaskObj.orderByFields]);\r\n if (c === d) {\r\n return 0;\r\n }\r\n if (!c || c < d) {\r\n return -1;\r\n }\r\n if (!d || c > d) {\r\n return 1;\r\n }\r\n return c - d;\r\n });\r\n result.queryResults.featureSet.relatedRecordGroups[0].relatedRecords = array;\r\n }\r\n }\r\n\r\n for (const relatedGroup of result.queryResults.featureSet.relatedRecordGroups) {\r\n for (const record of relatedGroup.relatedRecords) {\r\n let item = Object.assign({}, record.attributes);\r\n const feature = [];\r\n item = this.formatCheck(result.queryResults.featureSet.fields, item, result.queryTaskObj.formatFields);\r\n tmpRows.push(item);\r\n for (const key in item) {\r\n if (item.hasOwnProperty(key)) {\r\n feature.push(item[key]);\r\n }\r\n }\r\n rows.push([feature]);\r\n }\r\n }\r\n let identityType = 1;\r\n if (result.queryTaskObj.identifyType === 'list') {\r\n identityType = 1;\r\n } else if (result.queryTaskObj.identifyType === 'gallery') {\r\n if (result.queryResults.featureSet.relatedRecordGroups[0]\r\n && result.queryResults.featureSet.relatedRecordGroups[0].relatedRecords[0]) {\r\n identityType = 2;\r\n for (let i = 0; i < rows.length; i++) {\r\n let active = false;\r\n let tmp = {};\r\n if (i === 0) {\r\n active = true;\r\n }\r\n tmp = {image:\r\n result.queryResults.featureSet.relatedRecordGroups[0].relatedRecords[i].attributes.PHOTO_LINK\r\n || result.queryResults.relatedRecordGroups[0].relatedRecords[i].attributes.URL,\r\n text: rows[i][0], active, index: i, fields: columns.aliases[0]};\r\n slides.push(tmp);\r\n }\r\n }\r\n } else if (result.queryTaskObj.identifyType === 'listGallery') {\r\n identityType = 3;\r\n listGalleryIndex = 1;\r\n } else if (result.queryTaskObj.identifyType === 'borehole') {\r\n identityType = 4;\r\n if (result.queryResults.featureSet.relatedRecordGroups[0]\r\n && result.queryResults.featureSet.relatedRecordGroups[0].relatedRecords[0]) {\r\n image = result.queryResults.featureSet.relatedRecordGroups[0].relatedRecords[0].attributes.URL;\r\n }\r\n } else if (result.queryTaskObj.identifyType === 'table') {\r\n identityType = 5;\r\n if (columns.names && tmpRows) {\r\n for (let i = 0; i < columns.names[0].length; i++) {\r\n tableColumns.push({headerName: columns.aliases[0][i], field: columns.names[0][i], sortable: true, filter: true});\r\n }\r\n tableRows = tmpRows;\r\n if (tableRows[0]) {\r\n if (tableRows[0].LAYER_NUMBER) {\r\n tableRows.sort((a: any, b: any) => a.LAYER_NUMBER - b.LAYER_NUMBER);\r\n }\r\n }\r\n }\r\n }\r\n const relateDisplay: IdentifyDisplay = {\r\n attributes: rows,\r\n columns,\r\n headers: [result.queryTaskObj.name],\r\n slides,\r\n identifyType: identityType,\r\n tableRows,\r\n tableColumns,\r\n borehole: image,\r\n identifyNumber: result.queryTaskObj.identifyNumber,\r\n listGalleryIndex,\r\n identifyOrder: result.queryTaskObj.identifyOrder\r\n };\r\n return relateDisplay;\r\n } else {\r\n const relateDisplay: IdentifyDisplay = {\r\n attributes: [],\r\n columns: {\r\n names: [],\r\n aliases: [],\r\n types: [],\r\n },\r\n headers: [],\r\n };\r\n return relateDisplay;\r\n }\r\n }\r\n\r\n /**\r\n * Parses query result for column object\r\n */\r\n public getColumns(serverQuery) {\r\n const fields = [];\r\n const fieldAliases = [];\r\n const fieldTypes = [];\r\n if (serverQuery && serverQuery.fields) { \r\n for (const field of serverQuery.fields) {\r\n fields.push(field.name);\r\n fieldAliases.push(field.alias);\r\n fieldTypes.push(field.type);\r\n }\r\n }\r\n else {\r\n console.log('serverQuery.fields doesnt exist.');\r\n \r\n }\r\n\r\n return {\r\n names: [fields],\r\n aliases: [fieldAliases],\r\n types: [fieldTypes]\r\n };\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {AGSLayer} from './AGSLayer';\r\n\r\n@Injectable()\r\nexport class AGSLayerList {\r\n public agsLayer: AGSLayer;\r\n public layerListArr: Array;\r\n public layerListObj: any = {};\r\n public visibleLayerListArr: Array;\r\n public parentLayerList: {};\r\n public layerParentDict: any;\r\n public layerDictionary: any;\r\n private layerAdded = new BehaviorSubject(this);\r\n public layerAdded$ = this.layerAdded.asObservable();\r\n\r\n constructor() {\r\n this.visibleLayerListArr = [];\r\n this.layerListArr = [];\r\n this.parentLayerList = {};\r\n }\r\n\r\n public addLayerToList(agsLayer: AGSLayer) {\r\n this.layerListArr.push(agsLayer);\r\n this.layerListObj[agsLayer.serviceLayerID] = agsLayer;\r\n }\r\n\r\n public getLayerElemByID(serviceLayerID) {\r\n return this.layerListObj[serviceLayerID];\r\n }\r\n\r\n public updateLayersList(mapRefLayers: any) {\r\n // Populate visibleLayerListArr in order of layers on the map\r\n this.visibleLayerListArr = [];\r\n let ctr = 0;\r\n for (let i = mapRefLayers.length - 1; i > -1; i--) {\r\n const mapLayerObj = mapRefLayers[i];\r\n const layerElem = this.findLayerInVisibleLayerListByID(mapLayerObj.id);\r\n if (layerElem !== undefined && layerElem != null) {\r\n layerElem.layerOrder = ctr;\r\n this.visibleLayerListArr.push(layerElem);\r\n }\r\n ctr++;\r\n }\r\n return this.visibleLayerListArr;\r\n }\r\n\r\n public addLayerToVisibleLayerList(agsLayer: AGSLayer) {\r\n this.addLayerToDictionary(agsLayer.serviceLayerID, agsLayer);\r\n this.layerAdded.next(agsLayer);\r\n }\r\n\r\n public moveLayerInVisibleLayerList(agsLayer: AGSLayer, position: number) {\r\n // Move layer to a specific position in array to reflect the order on the map\r\n // Check to see if this element exists in visibleLayerListArr\r\n if (this.visibleLayerListArr[position] !== undefined) {\r\n // Add layer to specified position\r\n this.visibleLayerListArr[position] = agsLayer;\r\n }\r\n }\r\n\r\n\r\n public findLayerInVisibleLayerListByID(serviceLayerID: string) {\r\n if (this.layerDictionary !== undefined && this.layerDictionary[serviceLayerID] !== undefined) {\r\n return this.layerDictionary[serviceLayerID];\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public removeLayerFromVisibleLayerList(agsLayer: AGSLayer) {\r\n // Remove layer from visibleLayerListArr\r\n for (let i = 0; i < this.visibleLayerListArr.length; i++) {\r\n if (this.visibleLayerListArr[i].serviceLayerID === agsLayer.serviceLayerID) {\r\n this.visibleLayerListArr.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public removeLayerFromVisibleLayerListByID(svcLayerID: string) {\r\n // Remove layer from visibleLayerListArr\r\n for (let i = 0; i < this.visibleLayerListArr.length; i++) {\r\n if (this.visibleLayerListArr[i].serviceLayerID === svcLayerID) {\r\n this.visibleLayerListArr.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public getVisibleLayerList() {\r\n const currentVisLayerArr = [];\r\n for (const visLayer of this.visibleLayerListArr) {\r\n if (visLayer && ((visLayer.mapImageLayer && visLayer.mapImageLayer.visible) ||\r\n (visLayer.featureLayer && visLayer.featureLayer.visible)) &&\r\n (visLayer.isVisible === undefined || visLayer.isVisible)) {\r\n currentVisLayerArr.push(visLayer);\r\n }\r\n }\r\n return currentVisLayerArr;\r\n }\r\n\r\n public addLayerToDictionary(serviceLayerID: string, layerElem: AGSLayer) {\r\n // Creates a dictionary by layer id (serviceLayerID) with the layerElem as the value\r\n // this.layerDictionary[\"Faults 24K\"] will return the layerElem\r\n if (this.layerDictionary === undefined) {\r\n const layerDictionary: {\r\n [index: string]: AGSLayer; } = {};\r\n layerDictionary[serviceLayerID] = layerElem;\r\n this.layerDictionary = layerDictionary;\r\n } else {\r\n this.layerDictionary[serviceLayerID] = layerElem;\r\n }\r\n }\r\n\r\n public addLayerToParentList(parentNode: any, agsLayer: AGSLayer) {\r\n // Add layer to parentLayerList\r\n if (this.parentLayerList[parentNode] !== undefined) {\r\n // Add layer to parentNode in parentLayerList\r\n const parentArr = this.parentLayerList[parentNode];\r\n parentArr.push(agsLayer);\r\n } else {\r\n // Create parent object and add layer\r\n this.parentLayerList[parentNode] = [];\r\n this.parentLayerList[parentNode].push(agsLayer);\r\n }\r\n }\r\n\r\n public removeLayersFromParentList(parentNode: any, layerList: Array, removeAllLayers: boolean) {\r\n // Remove layers from parentLayerList\r\n\r\n if (this.parentLayerList[parentNode.id] !== undefined) {\r\n const parentLayerArr = this.parentLayerList[parentNode.id];\r\n if (removeAllLayers) {\r\n // Get all layers in parent node\r\n layerList = parentLayerArr;\r\n }\r\n for (const layer of layerList) {\r\n // Remove layer from visible layer list\r\n if (removeAllLayers) {\r\n this.removeLayerFromVisibleLayerListByID(layer.serviceLayerID);\r\n } else {\r\n this.removeLayerFromVisibleLayerListByID(layer);\r\n // Remove layer from parent node\r\n const arrIndex = parentLayerArr.findIndex(\r\n parentLayerArr.filter(x => {\r\n return x.serviceLayerID === layer;\r\n })\r\n );\r\n if (arrIndex && arrIndex > -1) {\r\n parentLayerArr.splice(arrIndex);\r\n }\r\n }\r\n }\r\n }\r\n if (removeAllLayers) {\r\n // Remove all layers from parent list\r\n this.parentLayerList[parentNode.id] = [];\r\n }\r\n\r\n }\r\n\r\n public addLayerParentRelationship(serviceLayerID: string, parentName: string) {\r\n // Creates a dictionary by layer id (serviceLayerID) with the parentName as the value\r\n // this.layerParentDict[\"Faults 24K\"] will return the parent folder \"1:24,000-scale Geologic Mapping\"\r\n if (this.layerParentDict === undefined) {\r\n const layerParentDict: {\r\n [index: string]: string; } = {};\r\n layerParentDict[serviceLayerID] = parentName;\r\n this.layerParentDict = layerParentDict;\r\n } else {\r\n this.layerParentDict[serviceLayerID] = parentName;\r\n }\r\n }\r\n\r\n public getLayersForParent(parentNode: any) {\r\n // get all layers for a specific parent\r\n if (this.parentLayerList[parentNode] !== undefined) {\r\n return this.parentLayerList[parentNode];\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n}\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit} from '@angular/core';\r\nimport {ConfigService} from '../../services/config/config.service';\r\nimport {GridService} from '../../services/grid/grid.service';\r\nimport {TableOfContentsService} from '../../services/toc/table-of-contents.service';\r\n\r\n/**\r\n * Creates the widget bar at the bottom used to open up widget dialog boxes to access the various tools\r\n */\r\n@Component({\r\n selector: 'app-widget-bar',\r\n templateUrl: './widget-bar.component.html',\r\n styleUrls: ['./widget-bar.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WidgetBarComponent implements OnInit, OnDestroy {\r\n\r\n public toolBarWidth = '60px';\r\n public widgetNumb = 0;\r\n public leftArrow = 0.5;\r\n public rightArrow = 0.5;\r\n public actualWidth: string;\r\n public oldWidth: number;\r\n public left: string;\r\n private numbVis = 0;\r\n private targetWidth = 0;\r\n private mobileAr = [];\r\n private widgetChangeObserver;\r\n\r\n constructor(public config: ConfigService, private grid: GridService, \r\n private toc: TableOfContentsService, private cd: ChangeDetectorRef) { }\r\n\r\n private themeChangeObs;\r\n\r\n ngOnInit() {\r\n /* if (this.config) {\r\n console.log('widget-bar call createWidgetobject: ' + this.config.CurrentTheme + \r\n ' tools: ' + this.config.tools.length);\r\n this.setUpThemeWidgets();\r\n } */\r\n /* this.widgetChangeObserver = this.grid.getWidgetChangeObs().subscribe( () => {\r\n this.cd.detectChanges();\r\n }); */\r\n this.themeChangeObs = this.toc.getThemeChangeObs().subscribe(() => {\r\n //console.log('***widget-bar.component call setUpWidgets: ' + this.config.CurrentTheme);\r\n this.setUpThemeWidgets();\r\n this.grid.refreshGrid();\r\n this.cd.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //if (this.widgetChangeObserver) { this.widgetChangeObserver.unsubscribe(); }\r\n if (this.themeChangeObs) { this.themeChangeObs.unsubscribe(); }\r\n\r\n }\r\n\r\n private setUpThemeWidgets() {\r\n this.config.tools = this.createWidgetObject();\r\n this.widgetNumb = this.config.tools.length;\r\n this.targetWidth = this.widgetNumb * 55 + 80;\r\n this.onResize(window, true);\r\n this.cd.detectChanges();\r\n }\r\n\r\n public getTargetWidth() {\r\n return this.targetWidth;\r\n }\r\n /**\r\n * Adds information the widget bar needs to have in order to operate.\r\n * It adds things to the config file tool object\r\n */\r\n public createWidgetObject() {\r\n const widgets = [];\r\n if (this.config) {\r\n \r\n // Remove any tools that are excluded in this themes config\r\n const currTheme = this.config.CurrentTheme;\r\n if (this.config.tools && this.config.tools.length > 0) {\r\n if (this.config.appTools && this.config.appTools.length > 0) {\r\n // config.appTools is the original set of tools for the app. \r\n // config.tools are the tools for this theme. Some tools for a theme may be different than the ones at\r\n // the app level\r\n // Set tools to stored appTools\r\n this.config.tools = []; \r\n for (const tool of this.config.appTools) {\r\n this.config.tools.push(tool);\r\n }\r\n }\r\n else {\r\n // Set appTools to app level tools \r\n this.config.appTools = []; \r\n for (const tool of this.config.tools) {\r\n this.config.appTools.push(tool);\r\n }\r\n }\r\n \r\n if (this.config.Themes && this.config.Themes[currTheme]) { \r\n // Check for excludeTools for current theme\r\n if (this.config.Themes[currTheme].excludeTools && \r\n this.config.Themes[currTheme].excludeTools.length > 0) {\r\n // Remove excludeTools from tools array\r\n const themeExcludeTools = this.config.Themes[currTheme].excludeTools;\r\n themeExcludeTools.forEach((toolID) => {\r\n const index = this.config.tools.findIndex((tool, index) => {\r\n if (tool.id.toLowerCase() === toolID.toLowerCase()) {\r\n //console.log('exclude tool: ' + toolID + ' index: ' + index);\r\n // turn off this widget if it is on from a previous theme.\r\n this.grid.widgetOff(tool.id);\r\n this.config.tools.splice(index, 1);\r\n return true;\r\n }\r\n });\r\n });\r\n }\r\n if (this.config.Themes[currTheme].replaceTools && \r\n this.config.Themes[currTheme].replaceTools.length > 0) {\r\n // Replace tools for this theme\r\n const themeReplaceTools = this.config.Themes[currTheme].replaceTools;\r\n themeReplaceTools.forEach((toolObj) => {\r\n const index = this.config.tools.findIndex((tool, index) => {\r\n if (tool.id.toLowerCase() === toolObj.id.toLowerCase()) {\r\n //console.log('replace tool: ' + toolObj.id + ' index: ' + index);\r\n this.config.tools.splice(index, 1, toolObj);\r\n return true;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n // Close any specified tools that may have been on from a previous theme\r\n if (this.config && this.config.closeToolsOnThemeSwitch) {\r\n this.config.closeToolsOnThemeSwitch.forEach((toolID) => {\r\n this.grid.widgetOff(toolID);\r\n });\r\n }\r\n\r\n for (let i = 0; i < this.config.tools.length; i++) {\r\n let open = 'widget-off';\r\n let grid = false;\r\n if (this.config.tools[i].openByDefault) {\r\n open = 'widget-on';\r\n grid = true;\r\n }\r\n const tmp = {\r\n id: this.config.tools[i].id,\r\n name: this.config.tools[i].name,\r\n visible: 'visible',\r\n width: '45px',\r\n iconWidth: '20px',\r\n padding: '15px',\r\n margin: '5px',\r\n position: i + 1,\r\n message: this.config.tools[i].message,\r\n email: this.config.tools[i].email,\r\n survey: this.config.tools[i].survey,\r\n status: open,\r\n grid: grid,\r\n icon: './assets/widget-bar/' + this.config.tools[i].id + '-icon.png',\r\n button: 'vis'};\r\n widgets.push(tmp);\r\n }\r\n }\r\n }\r\n return widgets;\r\n }\r\n\r\n /**\r\n * Event binding that moves the widget buttons to the right on user click\r\n * @param index: widget index\r\n */\r\n public goRight(index?: number) {\r\n if (!index) {\r\n // checks to see if the right most widget is turned off because mobile\r\n if ((window.innerWidth > 600 || window.innerHeight > 600)) {\r\n // if its not, then it checks to see if the last widget in the list is hidden\r\n if (this.config.tools[this.config.tools.length - 1].visible === 'hidden') {\r\n // if it is, it turns on one widget\r\n for (let i = 0; i < this.config.tools.length; i++) {\r\n this.config.tools[i].position--;\r\n if (this.config.tools[i].position <= 0) {\r\n this.animateOff(i);\r\n } else if (this.config.tools[i].position === (this.numbVis)) {\r\n this.turnOn(i);\r\n }\r\n }\r\n }\r\n } else if (!this.mobileOff(this.config.tools.length - 1)) {\r\n // if its not, then it checks to see if the last widget in the list is hidden\r\n if (this.config.tools[this.config.tools.length - 1].visible === 'hidden') {\r\n // if it is, it turns on one widget\r\n for (let i = 0; i < this.config.tools.length; i++) {\r\n this.config.tools[i].position--;\r\n if (this.config.tools[i].position <= 0) {\r\n this.animateOff(i);\r\n } else if (this.config.tools[i].position === (this.numbVis)) {\r\n this.turnOn(i);\r\n }\r\n }\r\n }\r\n } else {\r\n // if last widget is turned off because of mobile\r\n this.goRight(this.config.tools.length - 2);\r\n }\r\n } else if (index > 0) {\r\n if (this.mobileOff(index)) {\r\n if (this.config.tools[index].visible === 'hidden') {\r\n for (let i = 0; i < this.config.tools.length; i++) {\r\n this.config.tools[i].position--;\r\n if (this.config.tools[i].position <= 0) {\r\n this.animateOff(i);\r\n } else if (this.config.tools[i].position === (this.numbVis)) {\r\n this.turnOn(i);\r\n }\r\n }\r\n }\r\n } else {\r\n this.goRight(index - 1);\r\n }\r\n }\r\n this.arrowToggle();\r\n }\r\n\r\n /**\r\n * Event binding that moves the widgets to the left on user click\r\n */\r\n public goLeft() {\r\n if (this.config.tools[0].visible === 'hidden') {\r\n for (let i = 0; i < this.config.tools.length; i++) {\r\n this.config.tools[i].position++;\r\n if (this.config.tools[i].position <= 0) {\r\n this.turnOff(i);\r\n } else if (this.config.tools[i].position === 1) {\r\n this.turnOn(i);\r\n }\r\n this.arrowToggle();\r\n if (this.config.tools[i].position > this.numbVis) {\r\n this.animateOff(i);\r\n for (let j = i + 1; j < this.config.tools.length; j++) {\r\n this.config.tools[j].position++;\r\n }\r\n this.arrowToggle();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Event binding for when a user clicks on a widget button\r\n * @param index: Widget index number for button clicked\r\n */\r\n public widgetClick(index) {\r\n if (this.config.tools[index].status === 'widget-off') {\r\n this.config.tools[index].status = 'widget-on';\r\n this.config.tools[index].grid = true;\r\n this.grid.widgetOn(this.config.tools[index].id);\r\n } else {\r\n this.config.tools[index].status = 'widget-off';\r\n this.config.tools[index].grid = false;\r\n this.grid.widgetOff(this.config.tools[index].id);\r\n }\r\n }\r\n\r\n /**\r\n * Removes/adds draw/measure/query/attribute table widget based on screen size\r\n */\r\n private fixForMobile() {\r\n if (this.mobileAr.length === 0) { this.mobileAr = this.config.tools.slice(0); }\r\n for (let i = this.config.tools.length - 1; i >= 0; i--) {\r\n if (!this.mobileOff(i)) {\r\n this.config.tools.splice(i, 1);\r\n }\r\n }\r\n let index = 1;\r\n for (let j = 0; j < this.config.tools.length; j++) {\r\n this.config.tools[j].position = j + 1;\r\n index = j + 1;\r\n }\r\n this.widgetNumb = index;\r\n this.targetWidth = this.widgetNumb * 55 + 80;\r\n }\r\n /**\r\n * Controls what widgets are turned off on mobile\r\n * @param index: Widget object index\r\n * @returns: returns boolean based off what is turned on/off\r\n */\r\n private mobileOff(index: number) {\r\n return (this.config.tools[index].id !== 'measurement' && this.config.tools[index].id !== 'draw'\r\n && this.config.tools[index].id !== 'attributes' && this.config.tools[index].id !== 'query'\r\n && this.config.tools[index].id !== 'bookmark'\r\n && this.config.tools[index].id !== 'addData' && this.config.tools[index].id !== 'reorder');\r\n }\r\n\r\n /**\r\n * Controls widget bar size and screen placement on init and when screen resizing event occurs\r\n * @param event: Screen resize event\r\n * @param flag: Flag variable for when the event is a window object (true), or a resize event (false)\r\n */\r\n public onResize(event: any, flag: boolean) {\r\n let maxWidth: number;\r\n if (this.config.tools && window.innerWidth <= 600 || window.innerHeight <= 600) {\r\n this.fixForMobile();\r\n } else {\r\n if (this.mobileAr.length > 0) {\r\n this.config.tools = this.mobileAr.slice(0);\r\n this.mobileAr = [];\r\n }\r\n if (this.config.tools) {\r\n this.widgetNumb = this.config.tools.length;\r\n this.targetWidth = this.widgetNumb * 55 + 80;\r\n let i = 1;\r\n for (const j of this.config.tools) {\r\n j.position = i;\r\n i++;\r\n }\r\n }\r\n }\r\n // checks to see if this is on init or not and returns correct window call\r\n if (flag) {\r\n maxWidth = event.innerWidth * .7;\r\n } else {\r\n maxWidth = event.target.innerWidth * .7;\r\n }\r\n // checks for window size and acts accordingly\r\n if (window.innerWidth <= 600 || window.innerHeight <= 600) {\r\n this.actualWidth = '90%';\r\n this.calcWidgetBar(maxWidth);\r\n } else if (this.targetWidth > maxWidth) {\r\n this.calcWidgetBar(maxWidth);\r\n } else {\r\n for (let i = 0; i < this.widgetNumb; i++) {\r\n if (this.config.tools[i].position) {\r\n this.turnOn(i);\r\n }\r\n if (this.config.tools[i].position <= 0) {\r\n for (let j = 0; j < this.widgetNumb; j++) {\r\n this.config.tools[j].position++;\r\n }\r\n }\r\n }\r\n }\r\n // keeps track of the previous window width\r\n this.oldWidth = window.innerWidth;\r\n\r\n // gets number of visible icons\r\n this.numbVis = 0;\r\n for (const widget of this.config.tools) {\r\n if (widget.visible === 'visible') {\r\n this.numbVis++;\r\n }\r\n }\r\n // sets position of the toolbar\r\n this.actualWidth = Math.round(this.numbVis * 55 + 15) + 'px';\r\n this.left = (window.innerWidth * .5) - ((parseInt(this.actualWidth, 10) + 66) * .5) + 'px';\r\n this.toolBarWidth = maxWidth + 'px';\r\n // determines if arrows should be visible\r\n this.arrowToggle();\r\n this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Calculates the number of widgets that can fit on the bar based on the width given\r\n * @param maxWidth: Maximum width of the widget bar based on screen size\r\n */\r\n private calcWidgetBar(maxWidth: number) {\r\n const actualWidgetNumber = Math.floor((maxWidth - 40) / 55);\r\n let negativePositionFlag = false;\r\n for (let i = 0; i < this.config.tools.length; i++) {\r\n if (this.config.tools[i].position >= 0) {\r\n if (this.config.tools[i].position < actualWidgetNumber) {\r\n if (window.innerWidth <= 600 || window.innerHeight <= 600) {\r\n if (this.mobileOff(i)) {\r\n this.turnOn(i);\r\n } else {\r\n this.turnOff(i);\r\n }\r\n } else {\r\n this.turnOn(i);\r\n }\r\n } else {\r\n this.turnOff(i);\r\n }\r\n } else {\r\n negativePositionFlag = true;\r\n }\r\n }\r\n if (negativePositionFlag) {\r\n for (let i = this.config.tools.length - 1; i > 0; i--) {\r\n if (this.config.tools[i].position <= 0) {\r\n if (this.config.tools[this.config.tools.length - 1].position < actualWidgetNumber) {\r\n if (window.innerWidth <= 600 || window.innerHeight <= 600) {\r\n if (this.mobileOff(i)) {\r\n this.turnOn(i);\r\n for (const k of this.config.tools) {\r\n if (this.mobileOff(i)) {\r\n k.position++;\r\n }\r\n }\r\n } else {\r\n this.turnOff(i);\r\n }\r\n } else {\r\n this.turnOn(i);\r\n for (const k of this.config.tools) {\r\n if (this.mobileOff(i)) {\r\n k.position++;\r\n }\r\n }\r\n }\r\n } else {\r\n this.turnOff(i);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Controls the css changes when a widget is visible on the bar\r\n * @param index: Index of the widget to be visible\r\n */\r\n private turnOn(index: number) {\r\n this.config.tools[index].width = '45px';\r\n this.config.tools[index].iconWidth = '20px';\r\n this.config.tools[index].padding = '10px';\r\n this.config.tools[index].margin = '5px';\r\n this.config.tools[index].visible = 'visible';\r\n this.config.tools[index].button = 'vis';\r\n }\r\n\r\n /**\r\n * Controls the css changes when a widget is visible on the bar\r\n * @param index: Index of the widget to be hidden\r\n */\r\n private turnOff(index: number) {\r\n this.config.tools[index].width = '0px';\r\n this.config.tools[index].iconWidth = '0px';\r\n this.config.tools[index].padding = '0px';\r\n this.config.tools[index].margin = '0px';\r\n this.config.tools[index].visible = 'hidden';\r\n this.config.tools[index].button = 'hid';\r\n }\r\n\r\n /**\r\n * Disables animation for a widget button\r\n * @param index: Index of the widget\r\n */\r\n private animateOff(index: number) {\r\n this.config.tools[index].width = '0px';\r\n this.config.tools[index].iconWidth = '0px';\r\n this.config.tools[index].padding = '0px';\r\n this.config.tools[index].margin = '0px';\r\n this.config.tools[index].visible = 'hidden';\r\n setTimeout(() => {\r\n this.config.tools[index].button = 'hid';\r\n }, 250);\r\n }\r\n\r\n /**\r\n * Calculates whether the arrows are usable given the size of the screen\r\n * @param index: Index of the widget in question\r\n */\r\n private arrowToggle(index?: number) {\r\n if (this.config.tools[0].position && this.config.tools[0].position > 0) {\r\n this.rightArrow = 0.5;\r\n } else {\r\n this.rightArrow = 1;\r\n }\r\n if (!index) {\r\n if ((window.innerWidth > 600 || window.innerHeight > 600)) {\r\n if (this.config.tools[this.config.tools.length - 1].position === this.numbVis) {\r\n this.leftArrow = 0.5;\r\n } else {\r\n this.leftArrow = 1;\r\n }\r\n } else if (this.mobileOff(this.config.tools.length - 1)) {\r\n if (this.config.tools[this.config.tools.length - 1].position === this.numbVis) {\r\n this.leftArrow = 0.5;\r\n } else {\r\n this.leftArrow = 1;\r\n }\r\n } else {\r\n this.arrowToggle(this.config.tools.length - 2);\r\n }\r\n } else {\r\n if (this.mobileOff(index)) {\r\n if (this.config.tools[index].position === this.numbVis) {\r\n this.leftArrow = 0.5;\r\n } else {\r\n this.leftArrow = 1;\r\n }\r\n } else {\r\n this.arrowToggle(index - 1);\r\n }\r\n }\r\n this.cd.detectChanges();\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \"left\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \"right\r\n
\r\n
\r\n
\r\n
\r\n","import {NgModule} from '@angular/core';\r\n\r\nimport {TableOfContentsComponent} from '../components/widgets/table-of-contents/table-of-contents.component';\r\nimport {CommonModule} from '@angular/common';\r\nimport {DynamicModule} from 'ng-dynamic-component';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatDividerModule} from '@angular/material/divider';\r\nimport {MatCheckboxModule} from '@angular/material/checkbox';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatInputModule} from '@angular/material/input';\r\nimport {MatDialogModule} from '@angular/material/dialog';\r\nimport {MatTreeModule} from '@angular/material/tree';\r\nimport {MatListModule} from '@angular/material/list';\r\nimport {AGSLayerList} from '../models/AGSLayerList';\r\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\r\nimport {MatMenuModule} from '@angular/material/menu';\r\nimport {DropdownComponent} from '../components/widgets/table-of-contents/dropdown/dropdown.component';\r\nimport {TopomapsViewerEntryComponent} from '../components/widgets/topomaps-viewer/topomaps-viewer-entry.component';\r\nimport {MatSliderModule} from '@angular/material/slider';\r\nimport {RouterModule} from '@angular/router';\r\nimport {LoadableModule} from 'ngx-loadable';\r\nimport {AttributeTableEntryComponent} from '../components/widgets/attribute-table/attribute-table-entry.component';\r\nimport {IdentifyEntryComponent} from '../components/widgets/identify/identify-entry.component';\r\nimport {LegendEntryComponent} from '../components/widgets/legend/legend-entry.component';\r\nimport {AddDataEntryComponent} from '../components/widgets/add-data/add-data-entry.component';\r\nimport {BasemapGalleryEntryComponent} from '../components/widgets/basemap-gallery/basemap-gallery-entry.component';\r\nimport {DrawEntryComponent} from '../components/widgets/draw/draw-entry.component';\r\nimport {SelectEntryComponent} from '../components/widgets/select/select-entry.component';\r\nimport {FindLocationEntryComponent} from '../components/widgets/find-location/find-location-entry.component';\r\nimport {FeedbackEntryComponent} from '../components/widgets/feedback/feedback-entry.component';\r\nimport {MeasureEntryComponent} from '../components/widgets/measure/measure-entry.component';\r\nimport {PrintEntryComponent} from '../components/widgets/print/print-entry.component';\r\nimport {QueryEntryComponent} from '../components/widgets/query/query-entry.component';\r\nimport {ReorderEntryComponent} from '../components/widgets/reorder/reorder-entry.component';\r\nimport {DisclaimerDialogComponent} from '../components/widgets/table-of-contents/disclaimer-dialog/disclaimer-dialog.component';\r\nimport {WidgetContainerModule} from './widgetContainer.module';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport {ChangelogDialogComponent} from '../components/widgets/table-of-contents/changelog-dialog/changelog-dialog.component';\r\nimport {TagFilterPipe} from './TagFilterPipe.module';\r\nimport {CheckLocalEntryComponent} from '../components/widgets/checkLocal/checkLocal-entry.component';\r\nimport {FeaturetableEntryComponent} from '../components/widgets/featuretable/featuretable-entry.component';\r\nimport {TraxsReportEntryComponent} from '../components/widgets/traxsreport/traxsreport-entry.component';\r\n\r\nconst loadableOptions = {\r\n moduleConfigs: [{\r\n name: 'attribute',\r\n load: () => import('./attribute.module').then(mod => mod.AttributeModule)\r\n }, {\r\n name: 'identify',\r\n load: () => import('./identify.module').then(mod => mod.IdentifyModule)\r\n }, {\r\n name: 'legend',\r\n load: () => import('./legend.module').then(mod => mod.LegendModule)\r\n }, {\r\n name: 'add-data',\r\n load: () => import('./add-data.module').then(mod => mod.AddDataModule)\r\n }, {\r\n name: 'basemap-gallery',\r\n load: () => import('./basemap-gallery.module').then(mod => mod.BasemapGalleryModule)\r\n }, {\r\n name: 'draw',\r\n load: () => import('./draw.module').then(mod => mod.DrawModule)\r\n }, {\r\n name: 'select',\r\n load: () => import('./select.module').then(mod => mod.SelectModule)\r\n }, {\r\n name: 'find-location',\r\n load: () => import('./find-location.module').then(mod => mod.FindLocationModule)\r\n }, {\r\n name: 'feedback',\r\n load: () => import('./feedback.module').then(mod => mod.FeedbackModule)\r\n }, {\r\n name: 'measure',\r\n load: () => import('./measure.module').then(mod => mod.MeasureModule)\r\n }, {\r\n name: 'print',\r\n load: () => import('./print.module').then(mod => mod.PrintModule)\r\n }, {\r\n name: 'query',\r\n load: () => import('./query.module').then(mod => mod.QueryModule)\r\n }, {\r\n name: 'reorder',\r\n load: () => import('./reorder.module').then(mod => mod.ReorderModule)\r\n },\r\n {\r\n name: 'checkLocal',\r\n load: () => import('./checkLocal.module').then(mod => mod.CheckLocalModule)\r\n },\r\n {\r\n name: 'featuretable',\r\n load: () => import('./featuretable.module').then(mod => mod.FeaturetableModule)\r\n },\r\n {\r\n name: 'topomaps-viewer',\r\n load: () => import('./topomaps-viewer.module').then(mod => mod.TopomapsViewerModule)\r\n },\r\n {\r\n name: 'traxsreport',\r\n load: () => import('./traxsreport.module').then(mod => mod.TraxsReportModule)\r\n }\r\n ]\r\n\r\n};\r\n\r\nconst dynamicOptions = [\r\n AttributeTableEntryComponent,\r\n IdentifyEntryComponent,\r\n TableOfContentsComponent,\r\n AddDataEntryComponent,\r\n BasemapGalleryEntryComponent,\r\n FeedbackEntryComponent,\r\n LegendEntryComponent,\r\n MeasureEntryComponent,\r\n ReorderEntryComponent,\r\n QueryEntryComponent,\r\n PrintEntryComponent,\r\n DrawEntryComponent,\r\n SelectEntryComponent,\r\n FindLocationEntryComponent,\r\n FeaturetableEntryComponent,\r\n TopomapsViewerEntryComponent,\r\n TraxsReportEntryComponent\r\n\r\n];\r\n\r\n@NgModule({\r\n declarations: [\r\n TableOfContentsComponent,\r\n AddDataEntryComponent,\r\n BasemapGalleryEntryComponent,\r\n FeedbackEntryComponent,\r\n LegendEntryComponent,\r\n MeasureEntryComponent,\r\n ReorderEntryComponent,\r\n QueryEntryComponent,\r\n PrintEntryComponent,\r\n DropdownComponent,\r\n TopomapsViewerEntryComponent,\r\n AttributeTableEntryComponent,\r\n IdentifyEntryComponent,\r\n DrawEntryComponent,\r\n SelectEntryComponent,\r\n FindLocationEntryComponent,\r\n DisclaimerDialogComponent,\r\n ChangelogDialogComponent,\r\n CheckLocalEntryComponent,\r\n FeaturetableEntryComponent,\r\n TraxsReportEntryComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n WidgetContainerModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatDividerModule,\r\n MatCheckboxModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatDialogModule,\r\n MatTreeModule,\r\n MatListModule,\r\n MatAutocompleteModule,\r\n MatMenuModule,\r\n MatSliderModule,\r\n RouterModule,\r\n MatTooltipModule,\r\n TagFilterPipe,\r\n LoadableModule.forFeature(loadableOptions),\r\n DynamicModule\r\n /* DynamicModule.withComponents(dynamicOptions) */\r\n ],\r\n providers: [\r\n AGSLayerList\r\n ]\r\n})\r\nexport class WidgetModule { }\r\n","\r\nimport {enableProdMode} from '@angular/core';\r\nimport {platformBrowserDynamic} from '@angular/platform-browser-dynamic';\r\n\r\nimport {AppModule} from './app/modules/app.module';\r\nimport {environment} from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule).then(() => {\r\n if ('serviceWorker' in navigator && environment.production) {\r\n navigator.serviceWorker.register('ngsw-worker.js');\r\n }\r\n}).catch(err => console.error(err));\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"],"sourceRoot":"webpack:///"}