Skip to content
Snippets Groups Projects
LayerEsriMapServer.js.map 11.6 KiB
Newer Older
{"version":3,"file":"LayerEsriMapServer.js","sourceRoot":"","sources":["../../src/layers/LayerEsriMapServer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by gavorhes on 12/7/2015.\r\n */\r\nimport {LayerBase, LayerBaseOptions} from './LayerBase';\r\nimport * as esriToOl from '../olHelpers/esriToOlStyle';\r\nimport mapPopup from '../olHelpers/mapPopup';\r\nimport provide from '../util/provide';\r\nimport ol = require('custom-ol');\r\nimport $ = require('jquery');\r\n\r\nconst nm = provide('layers');\r\n\r\n\r\n\r\n/**\r\n * Helper to return the url to the service on the production server\r\n * @param {string} folder\r\n * @param {string} service\r\n * @returns {string}\r\n */\r\nexport function makeServiceUrl(folder: string, service: string): string{\r\n    return `https://transportal.cee.wisc.edu/applications/arcgis2/rest/services/${folder}/${service}/MapServer`\r\n}\r\n\r\nexport function localCacheUrl(folder: string, service: string): string{\r\n    let windowLocation = window.location;\r\n    let loc = windowLocation.href;\r\n\r\n    let url = `/mapserver/${folder}/${service}`;\r\n\r\n    if (loc.indexOf('transportal.cee.wisc.edu') > -1){\r\n        if (loc.toLowerCase().indexOf('webmapsstage') > -1){\r\n            url = 'https://transportal.cee.wisc.edu/gis/webmapsstage' + url;\r\n        } else {\r\n            url = 'https://transportal.cee.wisc.edu/gis/webmaps' + url\r\n        }\r\n    } else if (parseInt(windowLocation.port) !== 8081){\r\n        url = 'https://transportal.cee.wisc.edu/gis/webmaps' + url\r\n    }\r\n\r\n\r\n    return url;\r\n}\r\n\r\n\r\n\r\n\r\nexport interface LayerEsriMapServerOptions extends LayerBaseOptions {\r\n    addPopup?: boolean;\r\n    showLayers?: Array<number>;\r\n    getLegend?: boolean;\r\n}\r\n\r\n/**\r\n * esri mapserver layer\r\n * @augments LayerBase\r\n */\r\nexport class LayerEsriMapServer extends LayerBase {\r\n    _esriFormat: ol.format.EsriJSON;\r\n    _popupRequest: JQueryXHR;\r\n    _showLayers: number[];\r\n\r\n    /**\r\n     * The base layer for all others\r\n     * @param {string} url - resource url\r\n     * @param {object} [options] - config\r\n     * @param {string} [options.id] - layer id\r\n     * @param {string} [options.name=Unnamed Layer] - layer name\r\n     * @param {number} [options.opacity=1] - opacity\r\n     * @param {boolean} [options.visible=true] - default visible\r\n     * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28\r\n     * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28\r\n     * @param {object} [options.params={}] the get parameters to include to retrieve the layer\r\n     * @param {number} [options.zIndex=0] the z index for the layer\r\n     * @param {function} [options.loadCallback] function to call on load, context this is the layer object\r\n     * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed\r\n     * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility\r\n     * @param {boolean} [options.legendContent] additional content to add to the legend\r\n     * @param {boolean} [options.addPopup=false] if a popup should be added\r\n     * @param {undefined|Array<number>} [options.showLayers=undefined] if a popup should be added\r\n     */\r\n    constructor(url: string, options: LayerEsriMapServerOptions = {}) {\r\n\r\n        super(url, options);\r\n        this._source = new ol.source.TileArcGISRest(\r\n            {\r\n                url: this.url == '' ? undefined : this.url,\r\n                params: typeof options.showLayers == 'undefined' ? undefined : {layers: 'show:' + options.showLayers.join(',')}\r\n            }\r\n        );\r\n\r\n        this._showLayers = options.showLayers || [];\r\n\r\n        this._olLayer = new ol.layer.Tile({\r\n            source: this._source as ol.source.Tile,\r\n            visible: this.visible,\r\n            opacity: this.opacity,\r\n            minResolution: this._minResolution,\r\n            maxResolution: this._maxResolution\r\n        });\r\n\r\n\r\n        this._olLayer.setZIndex(this._zIndex);\r\n\r\n        options.addPopup = typeof options.addPopup == 'boolean' ? options.addPopup : false;\r\n\r\n        this._esriFormat = new ol.format.EsriJSON();\r\n        this._popupRequest = null;\r\n\r\n        options.getLegend = typeof options.getLegend === 'boolean' ? options.getLegend : true;\r\n\r\n        if (options.getLegend){\r\n            this.addLegendContent();\r\n        }\r\n\r\n        if (options.addPopup) {\r\n            mapPopup.addMapServicePopup(this);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * add additional content to the legend\r\n     * @param {string} [additionalContent=''] additional content for legend\r\n     */\r\n    addLegendContent(additionalContent?: string) {\r\n        let urlCopy = this.url;\r\n\r\n        if (urlCopy[urlCopy.length - 1] !== '/') {\r\n            urlCopy += '/';\r\n        }\r\n\r\n        urlCopy += 'legend?f=pjson&callback=?';\r\n\r\n        $.get(urlCopy, {}, (d) => {\r\n            let newHtml = esriToOl.makeMapServiceLegend(d, this._showLayers);\r\n            super.addLegendContent(newHtml);\r\n        }, 'json');\r\n    }\r\n\r\n\r\n    getPopupInfo(queryParams: {[s: string]: any}) {\r\n        if (!this.visible) {\r\n            return;\r\n        }\r\n\r\n        let urlCopy = this.url;\r\n\r\n        if (urlCopy[urlCopy.length - 1] != '/') {\r\n            urlCopy += '/';\r\n        }\r\n\r\n        urlCopy += 'identify?callback=?';\r\n\r\n        let __this = this;\r\n\r\n        if (this._popupRequest != null) {\r\n            this._popupRequest.abort();\r\n        }\r\n\r\n\r\n        this._popupRequest = $.get(urlCopy, queryParams, function (d) {\r\n            for (let r of d['results']) {\r\n\r\n                let popupHtml = '<table class=\"esri-popup-table\">';\r\n\r\n                for (let a in r['attributes']) {\r\n                    if (r['attributes'].hasOwnProperty(a)) {\r\n                        let attrVal = r['attributes'][a];\r\n\r\n                        if (attrVal == null || attrVal.toString().toLowerCase() == 'null') {\r\n                            continue;\r\n                        }\r\n\r\n                        let attr = a;\r\n                        if (attr.length > 14) {\r\n                            attr = attr.slice(0, 11) + '...';\r\n                        }\r\n\r\n                        popupHtml += `<tr><td>${attr}</td><td>${attrVal}</td></tr>`;\r\n                    }\r\n                }\r\n\r\n                popupHtml += '</table>';\r\n\r\n                mapPopup.addMapServicePopupContent(__this._esriFormat.readFeature(r), __this, popupHtml, r['layerName']);\r\n            }\r\n        }, 'json');\r\n\r\n        this._popupRequest.always(function () {\r\n            __this._popupRequest = null;\r\n        });\r\n\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @returns {ol.source.TileArcGISRest} the vector source\r\n     */\r\n    get source(): ol.source.TileArcGISRest {\r\n        return super.getSource() as ol.source.TileArcGISRest;\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @returns the ol layer\r\n     */\r\n    get olLayer(): ol.layer.Tile {\r\n        return super.getOlLayer() as ol.layer.Tile;\r\n    }\r\n}\r\nnm.LayerEsriMapServer = LayerEsriMapServer;\r\nexport default LayerEsriMapServer;\r\n"]}