Skip to content
Snippets Groups Projects
Commit 122e2df9 authored by Glenn Vorhes's avatar Glenn Vorhes
Browse files

array of layers as legend config

parent c5b13e42
No related branches found
No related tags found
No related merge requests found
......@@ -17,7 +17,7 @@ export interface iLegendOptions {
*/
declare class LayerLegend {
$divElement: JQuery;
_legendItems: Array<iLegendItem | LayerBase>;
_legendItems: Array<iLegendItem> | Array<LayerBase>;
layerGroup: any;
legendId: string;
/**``
......@@ -29,12 +29,12 @@ declare class LayerLegend {
* @param {string} [options.legendTitle=Legend] the legend title
* @param {boolean} [options.scaleDependent=true] if legend display is scale dependent
*/
constructor(legendItems: Array<iLegendItem | LayerBase>, divId: string, options?: iLegendOptions);
constructor(legendItems: Array<iLegendItem> | Array<LayerBase>, divId: string, options?: iLegendOptions);
/**
* @param {Array} [legendItems=this._layerConfig] the legend items
* @param {Array} [parents=[]] the ordered list of groups in which this item is a member
* @private
*/
_buildTree(legendItems: Array<iLegendItem | LayerBase>, parents?: string[]): void;
_buildTree(legendItems: Array<iLegendItem> | Array<LayerBase>, parents?: string[]): void;
}
export default LayerLegend;
{"version":3,"file":"LayerLegend.js","sourceRoot":"","sources":["../../src/collections/LayerLegend.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by gavorhes on 12/16/2015.\r\n */\r\n\r\nimport provide from '../util/provide';\r\nimport makeGuid from '../util/makeGuid';\r\nimport mapMove from '../olHelpers/mapMove';\r\n\r\nlet nm = provide('collections');\r\nimport $ = require('jquery');\r\nimport {LayerBase} from \"../layers\";\r\n\r\n\r\n\r\nexport interface iLegendItem{\r\n groupName: string;\r\n collapse: boolean;\r\n addCheck: boolean;\r\n items: iLegendItem[]\r\n}\r\n\r\nexport interface iLegendOptions{\r\n layerDivClasses?: string[]\r\n legendTitle?: string\r\n scaleDependent?: boolean\r\n}\r\n\r\nclass LayerGroup {\r\n groupLayers: any;\r\n groupLayersLookup: any;\r\n groupGroupsLookup: any;\r\n groupGroups: any;\r\n itemIdArray: any;\r\n groupId: any;\r\n groupName: any;\r\n allLayerArray: any;\r\n parent: any;\r\n allGroupArray: any;\r\n allGroupLookup: any;\r\n allLayerLookup: any;\r\n collapse: boolean;\r\n addCheck: boolean;\r\n layerParentLookup: any;\r\n\r\n /**\r\n *\r\n * @param {object} [groupConfig={}] - group configuration object\r\n * @param {string} groupConfig.groupName - the group name\r\n * @param {boolean} [groupConfig.collapse=false] - if the group should be collapsed initially\r\n * @param {boolean} [groupConfig.addCheck=true] - if the group should have a checkbox controlling visibility of all layers\r\n * @param {LayerGroup} [parent=undefined] - the parent group\r\n */\r\n constructor(groupConfig?: iLegendItem, parent?: LayerGroup) {\r\n this.groupLayers = [];\r\n this.groupLayersLookup = {};\r\n this.groupGroups = [];\r\n this.groupGroupsLookup = {};\r\n this.itemIdArray = [];\r\n\r\n if (typeof groupConfig == 'undefined') {\r\n this.parent = null;\r\n this.groupId = 'root';\r\n this.groupName = 'root';\r\n this.allGroupLookup = {root: this};\r\n this.allGroupArray = [this];\r\n this.allLayerArray = [];\r\n this.allLayerLookup = {};\r\n this.layerParentLookup = {};\r\n this.collapse = false;\r\n this.addCheck = false;\r\n } else {\r\n this.groupId = makeGuid();\r\n this.parent = parent;\r\n this.groupName = groupConfig.groupName;\r\n this.collapse = typeof groupConfig.collapse == 'boolean' ? groupConfig.collapse : false;\r\n this.addCheck = typeof groupConfig.addCheck == 'boolean' ? groupConfig.addCheck : true;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param {object} groupConfig - configuration object\r\n * @param {string} groupConfig.groupName - the group name\r\n * @param {boolean} groupConfig.collapse if the group should be collapsed initially\r\n * @param {boolean} groupConfig.addCheck if the group should have a checkbox controlling visibility of all layers\r\n * @param {Array<LayerGroup>} parents parent groups\r\n * @returns {LayerGroup} the layer group just added\r\n */\r\n addGroup(groupConfig: iLegendItem, parents: string[]) {\r\n let parent;\r\n if (parents.length > 0) {\r\n parent = parents[parents.length - 1];\r\n } else {\r\n parent = 'root';\r\n }\r\n\r\n\r\n /**\r\n * @type {LayerGroup}\r\n */\r\n let parentGroup = this.allGroupLookup[parent];\r\n let newGroup = new LayerGroup(groupConfig, parentGroup);\r\n this.allGroupLookup[newGroup.groupId] = newGroup;\r\n this.allGroupArray.push(newGroup);\r\n\r\n parentGroup.groupGroups.push(newGroup);\r\n parentGroup.groupGroupsLookup[newGroup.groupId] = newGroup;\r\n\r\n if (parentGroup.itemIdArray.indexOf(newGroup.groupId) > 0) {\r\n console.log(newGroup.groupId);\r\n throw 'layer and group ids must be unique';\r\n }\r\n parentGroup.itemIdArray.push(newGroup.groupId);\r\n\r\n return newGroup;\r\n }\r\n\r\n /**\r\n *\r\n * @param {LayerBase} newLayer the layer to be added\r\n * @param {Array} parents array\r\n */\r\n addLegendLayer(newLayer: LayerBase, parents: string[]) {\r\n let parent;\r\n if (parents.length > 0) {\r\n parent = parents[parents.length - 1];\r\n } else {\r\n parent = 'root';\r\n }\r\n\r\n this.allLayerLookup[newLayer.id] = newLayer;\r\n this.allLayerArray.push(newLayer);\r\n\r\n /**\r\n * @type {LayerGroup}\r\n */\r\n let parentGroup = this.allGroupLookup[parent];\r\n\r\n parentGroup.groupLayers.push(newLayer);\r\n parentGroup.groupLayersLookup[newLayer.id] = newLayer;\r\n if (parentGroup.itemIdArray.indexOf(newLayer.id) > 0) {\r\n console.log(newLayer.id);\r\n throw 'layer and group ids must be unique';\r\n }\r\n parentGroup.itemIdArray.push(newLayer.id);\r\n\r\n this.layerParentLookup[newLayer.id] = parentGroup;\r\n\r\n }\r\n\r\n\r\n\r\n getLegendHtml(legendId: string, options: iLegendOptions) {\r\n\r\n\r\n let legendHtml = `<ul id=\"${legendId}\" class=\"legend-container\">`;\r\n\r\n legendHtml += `<li>${options.legendTitle}<input type=\"checkbox\" checked id=\"suppress-by-extent-${legendId}\" class=\"suppress-by-extent\">` +\r\n `<label title=\"Suppress layers not visible at this zoom level\" for=\"suppress-by-extent-${legendId}\">` +\r\n `<span></span>` +\r\n `</label></li>`;\r\n\r\n legendHtml += this._buildLegend(this.itemIdArray, this, options.layerDivClasses) + '</ul>';\r\n\r\n return legendHtml;\r\n }\r\n\r\n /**\r\n * @param {Array} itemIds the items to process\r\n * @param {LayerGroup} theGroup new group\r\n * @param {Array} [layerDivClasses=[]] optional classes to apply to the layer divs\r\n * @static\r\n * @returns {string} html string\r\n */\r\n _buildLegend(itemIds: string[], theGroup: LayerGroup, layerDivClasses: string[]): string {\r\n\r\n if (itemIds.length == 0) {\r\n return '';\r\n }\r\n\r\n let theHml = '';\r\n\r\n let itemId = itemIds[0];\r\n\r\n if (theGroup.groupLayersLookup[itemId]) {\r\n\r\n /**\r\n * @type {LayerBase}\r\n */\r\n let lyr = theGroup.groupLayersLookup[itemId];\r\n theHml += `<li id=\"${lyr.id}-layer-li\" class=\"legend-layer-li ${layerDivClasses.join(' ')}\">` + lyr.getLegendDiv() + '</li>';\r\n\r\n\r\n } else if (theGroup.groupGroupsLookup[itemId]) {\r\n /**\r\n * type {LayerGroup}\r\n */\r\n let otherGroup = theGroup.groupGroupsLookup[itemId];\r\n\r\n theHml += `<li>`;\r\n theHml += `<div id=\"${otherGroup.groupId}-legend-layer-div\" ` +\r\n `class=\"legend-layer-group ${layerDivClasses.join(' ')}\">`;\r\n\r\n if (otherGroup.addCheck) {\r\n theHml += `<input type=\"checkbox\" checked id=\"${otherGroup.groupId}-group-chck\">` +\r\n `<label for=\"${otherGroup.groupId}-group-chck\" title=\"Click arrow to expand or collapse\">${otherGroup.groupName}</label>`;\r\n } else {\r\n theHml += `<label title=\"Click arrow to expand or collapse\">${otherGroup.groupName}</label>`;\r\n }\r\n\r\n theHml += `<span title=\"Expand/Collapse\" class=\"layer-group-expander`;\r\n theHml += `${otherGroup.collapse ? ' legend-layer-group-initial-collapse' : ''}\">`;\r\n theHml += otherGroup.collapse ? '&#9654;' : '&#9660;';\r\n theHml += '</span>';\r\n\r\n //parents.push(groupId);\r\n theHml += '<ul>' + this._buildLegend(otherGroup.itemIdArray, otherGroup, layerDivClasses) + '</ul>';\r\n theHml += '</div>';\r\n theHml += '</li>';\r\n }\r\n\r\n return theHml + this._buildLegend(itemIds.slice(1), theGroup, layerDivClasses);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * a wrapper to make a legend\r\n */\r\nclass LayerLegend {\r\n\r\n $divElement: JQuery;\r\n _legendItems: Array<iLegendItem|LayerBase>;\r\n layerGroup: any;\r\n legendId: string;\r\n\r\n /**``\r\n *\r\n * @param {Array} legendItems array of layers or objects with {groupName: {string}, collapse: {boolean}, addCheck: {boolean}, items: {Array}}\r\n * @param {string} divId the div where the legend should be added\r\n * @param {object} options for legend\r\n * @param {Array} [options.layerDivClasses=[]] optional array of classes to be applied to the layer legend divs for custom styling\r\n * @param {string} [options.legendTitle=Legend] the legend title\r\n * @param {boolean} [options.scaleDependent=true] if legend display is scale dependent\r\n */\r\n constructor(legendItems: Array<iLegendItem|LayerBase>, divId: string, options: iLegendOptions = {}) {\r\n for (let i of legendItems) {\r\n if (typeof i == 'undefined') {\r\n throw 'undefined item passed in array to legend constructor';\r\n }\r\n }\r\n\r\n options.legendTitle = typeof options.legendTitle == 'string' ? options.legendTitle : 'Legend';\r\n options.scaleDependent = typeof options.scaleDependent == 'boolean' ? options.scaleDependent : true;\r\n options.layerDivClasses = options.layerDivClasses || [];\r\n\r\n // if legend display is scale dependent, make sure the mapMove object is initialized first\r\n if (options.scaleDependent) {\r\n mapMove.checkInit();\r\n }\r\n\r\n this.$divElement = $('#' + divId);\r\n\r\n this._legendItems = legendItems;\r\n\r\n this.layerGroup = new LayerGroup();\r\n\r\n this._buildTree(legendItems);\r\n\r\n this.legendId = makeGuid();\r\n\r\n this.$divElement.append(this.layerGroup.getLegendHtml(this.legendId, options));\r\n\r\n for (let l of this.layerGroup.allLayerArray){\r\n l.applyCollapse();\r\n }\r\n\r\n let _this = this;\r\n //// if legend display is scale dependent, make sure the mapMove object is initialized first\r\n if (options.scaleDependent) {\r\n mapMove.checkInit();\r\n\r\n mapMove.addCallback(function (ext, zoom, evt) {\r\n\r\n if (typeof evt == 'undefined' || evt == 'change:resolution') {\r\n for (let lyr of this.layerGroup.allLayerArray) {\r\n let $lyrLi = $('#' + lyr.id + '-layer-li');\r\n if (zoom > lyr.maxZoom || zoom < lyr.minZoom) {\r\n $lyrLi.addClass('layer-not-visible');\r\n } else {\r\n $lyrLi.removeClass('layer-not-visible');\r\n }\r\n }\r\n }\r\n }, this, 100, true, 'legend1');\r\n }\r\n\r\n // <editor-fold desc=\"add event listeners\">\r\n\r\n this.$divElement.find(\".suppress-by-extent\").change(function () {\r\n let legendLayerLis = $('.legend-layer-li');\r\n if (this.checked) {\r\n legendLayerLis.removeClass('layer-force-show');\r\n } else {\r\n legendLayerLis.addClass('layer-force-show');\r\n }\r\n });\r\n\r\n\r\n this.$divElement.find('.legend-check').change(function () {\r\n let lyrId = this.id.replace('-legend-layer-check', '');\r\n _this.layerGroup.allLayerLookup[lyrId].visible = this.checked;\r\n });\r\n\r\n this.$divElement.find('.legend-layer-group > input[type=checkbox]').change(function () {\r\n $(this).siblings('ul').find('input[type=checkbox]').prop('checked', this.checked).trigger('change');\r\n });\r\n\r\n this.$divElement.find('.layer-group-expander').click(function () {\r\n let $this = $(this);\r\n $this.removeClass('legend-layer-group-initial-collapse');\r\n\r\n $this.siblings('ul').slideToggle();\r\n\r\n if ($this.hasClass('legend-layer-group-collapsed')){\r\n $this.removeClass('legend-layer-group-collapsed');\r\n $this.html('&#9660;');\r\n } else {\r\n $this.addClass('legend-layer-group-collapsed');\r\n $this.html('&#9654;');\r\n }\r\n });\r\n\r\n this.$divElement.find('.legend-layer-group-initial-collapse').trigger('click');\r\n // </editor-fold>\r\n }\r\n\r\n\r\n /**\r\n * @param {Array} [legendItems=this._layerConfig] the legend items\r\n * @param {Array} [parents=[]] the ordered list of groups in which this item is a member\r\n * @private\r\n */\r\n _buildTree(legendItems: Array<iLegendItem|LayerBase>, parents?: string[]) {\r\n\r\n if (legendItems.length == 0) {\r\n return;\r\n }\r\n\r\n let oneItem = legendItems[0];\r\n\r\n //reset the parent if the item is in the base array\r\n if (this._legendItems.indexOf(oneItem) > -1 || typeof parents == 'undefined') {\r\n parents = [];\r\n }\r\n\r\n if (typeof (oneItem as iLegendItem).groupName !== 'undefined') {\r\n let groupItem = legendItems[0];\r\n let newGroup = this.layerGroup.addGroup(groupItem, parents);\r\n parents.push(newGroup.groupId);\r\n this._buildTree((oneItem as iLegendItem).items, parents);\r\n } else {\r\n /**\r\n * @type {LayerBase}\r\n */\r\n let layerItem: LayerBase = legendItems[0] as LayerBase;\r\n\r\n this.layerGroup.addLegendLayer(layerItem, parents);\r\n }\r\n\r\n this._buildTree(legendItems.slice(1), parents);\r\n }\r\n}\r\n\r\nnm.LayerLegend = LayerLegend;\r\nexport default LayerLegend;\r\n"]}
\ No newline at end of file
{"version":3,"file":"LayerLegend.js","sourceRoot":"","sources":["../../src/collections/LayerLegend.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by gavorhes on 12/16/2015.\r\n */\r\n\r\nimport provide from '../util/provide';\r\nimport makeGuid from '../util/makeGuid';\r\nimport mapMove from '../olHelpers/mapMove';\r\n\r\nlet nm = provide('collections');\r\nimport $ = require('jquery');\r\nimport {LayerBase} from \"../layers\";\r\n\r\n\r\n\r\nexport interface iLegendItem{\r\n groupName: string;\r\n collapse: boolean;\r\n addCheck: boolean;\r\n items: iLegendItem[]\r\n}\r\n\r\nexport interface iLegendOptions{\r\n layerDivClasses?: string[]\r\n legendTitle?: string\r\n scaleDependent?: boolean\r\n}\r\n\r\nclass LayerGroup {\r\n groupLayers: any;\r\n groupLayersLookup: any;\r\n groupGroupsLookup: any;\r\n groupGroups: any;\r\n itemIdArray: any;\r\n groupId: any;\r\n groupName: any;\r\n allLayerArray: any;\r\n parent: any;\r\n allGroupArray: any;\r\n allGroupLookup: any;\r\n allLayerLookup: any;\r\n collapse: boolean;\r\n addCheck: boolean;\r\n layerParentLookup: any;\r\n\r\n /**\r\n *\r\n * @param {object} [groupConfig={}] - group configuration object\r\n * @param {string} groupConfig.groupName - the group name\r\n * @param {boolean} [groupConfig.collapse=false] - if the group should be collapsed initially\r\n * @param {boolean} [groupConfig.addCheck=true] - if the group should have a checkbox controlling visibility of all layers\r\n * @param {LayerGroup} [parent=undefined] - the parent group\r\n */\r\n constructor(groupConfig?: iLegendItem, parent?: LayerGroup) {\r\n this.groupLayers = [];\r\n this.groupLayersLookup = {};\r\n this.groupGroups = [];\r\n this.groupGroupsLookup = {};\r\n this.itemIdArray = [];\r\n\r\n if (typeof groupConfig == 'undefined') {\r\n this.parent = null;\r\n this.groupId = 'root';\r\n this.groupName = 'root';\r\n this.allGroupLookup = {root: this};\r\n this.allGroupArray = [this];\r\n this.allLayerArray = [];\r\n this.allLayerLookup = {};\r\n this.layerParentLookup = {};\r\n this.collapse = false;\r\n this.addCheck = false;\r\n } else {\r\n this.groupId = makeGuid();\r\n this.parent = parent;\r\n this.groupName = groupConfig.groupName;\r\n this.collapse = typeof groupConfig.collapse == 'boolean' ? groupConfig.collapse : false;\r\n this.addCheck = typeof groupConfig.addCheck == 'boolean' ? groupConfig.addCheck : true;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param {object} groupConfig - configuration object\r\n * @param {string} groupConfig.groupName - the group name\r\n * @param {boolean} groupConfig.collapse if the group should be collapsed initially\r\n * @param {boolean} groupConfig.addCheck if the group should have a checkbox controlling visibility of all layers\r\n * @param {Array<LayerGroup>} parents parent groups\r\n * @returns {LayerGroup} the layer group just added\r\n */\r\n addGroup(groupConfig: iLegendItem, parents: string[]) {\r\n let parent;\r\n if (parents.length > 0) {\r\n parent = parents[parents.length - 1];\r\n } else {\r\n parent = 'root';\r\n }\r\n\r\n\r\n /**\r\n * @type {LayerGroup}\r\n */\r\n let parentGroup = this.allGroupLookup[parent];\r\n let newGroup = new LayerGroup(groupConfig, parentGroup);\r\n this.allGroupLookup[newGroup.groupId] = newGroup;\r\n this.allGroupArray.push(newGroup);\r\n\r\n parentGroup.groupGroups.push(newGroup);\r\n parentGroup.groupGroupsLookup[newGroup.groupId] = newGroup;\r\n\r\n if (parentGroup.itemIdArray.indexOf(newGroup.groupId) > 0) {\r\n console.log(newGroup.groupId);\r\n throw 'layer and group ids must be unique';\r\n }\r\n parentGroup.itemIdArray.push(newGroup.groupId);\r\n\r\n return newGroup;\r\n }\r\n\r\n /**\r\n *\r\n * @param {LayerBase} newLayer the layer to be added\r\n * @param {Array} parents array\r\n */\r\n addLegendLayer(newLayer: LayerBase, parents: string[]) {\r\n let parent;\r\n if (parents.length > 0) {\r\n parent = parents[parents.length - 1];\r\n } else {\r\n parent = 'root';\r\n }\r\n\r\n this.allLayerLookup[newLayer.id] = newLayer;\r\n this.allLayerArray.push(newLayer);\r\n\r\n /**\r\n * @type {LayerGroup}\r\n */\r\n let parentGroup = this.allGroupLookup[parent];\r\n\r\n parentGroup.groupLayers.push(newLayer);\r\n parentGroup.groupLayersLookup[newLayer.id] = newLayer;\r\n if (parentGroup.itemIdArray.indexOf(newLayer.id) > 0) {\r\n console.log(newLayer.id);\r\n throw 'layer and group ids must be unique';\r\n }\r\n parentGroup.itemIdArray.push(newLayer.id);\r\n\r\n this.layerParentLookup[newLayer.id] = parentGroup;\r\n\r\n }\r\n\r\n\r\n\r\n getLegendHtml(legendId: string, options: iLegendOptions) {\r\n\r\n\r\n let legendHtml = `<ul id=\"${legendId}\" class=\"legend-container\">`;\r\n\r\n legendHtml += `<li>${options.legendTitle}<input type=\"checkbox\" checked id=\"suppress-by-extent-${legendId}\" class=\"suppress-by-extent\">` +\r\n `<label title=\"Suppress layers not visible at this zoom level\" for=\"suppress-by-extent-${legendId}\">` +\r\n `<span></span>` +\r\n `</label></li>`;\r\n\r\n legendHtml += this._buildLegend(this.itemIdArray, this, options.layerDivClasses) + '</ul>';\r\n\r\n return legendHtml;\r\n }\r\n\r\n /**\r\n * @param {Array} itemIds the items to process\r\n * @param {LayerGroup} theGroup new group\r\n * @param {Array} [layerDivClasses=[]] optional classes to apply to the layer divs\r\n * @static\r\n * @returns {string} html string\r\n */\r\n _buildLegend(itemIds: string[], theGroup: LayerGroup, layerDivClasses: string[]): string {\r\n\r\n if (itemIds.length == 0) {\r\n return '';\r\n }\r\n\r\n let theHml = '';\r\n\r\n let itemId = itemIds[0];\r\n\r\n if (theGroup.groupLayersLookup[itemId]) {\r\n\r\n /**\r\n * @type {LayerBase}\r\n */\r\n let lyr = theGroup.groupLayersLookup[itemId];\r\n theHml += `<li id=\"${lyr.id}-layer-li\" class=\"legend-layer-li ${layerDivClasses.join(' ')}\">` + lyr.getLegendDiv() + '</li>';\r\n\r\n\r\n } else if (theGroup.groupGroupsLookup[itemId]) {\r\n /**\r\n * type {LayerGroup}\r\n */\r\n let otherGroup = theGroup.groupGroupsLookup[itemId];\r\n\r\n theHml += `<li>`;\r\n theHml += `<div id=\"${otherGroup.groupId}-legend-layer-div\" ` +\r\n `class=\"legend-layer-group ${layerDivClasses.join(' ')}\">`;\r\n\r\n if (otherGroup.addCheck) {\r\n theHml += `<input type=\"checkbox\" checked id=\"${otherGroup.groupId}-group-chck\">` +\r\n `<label for=\"${otherGroup.groupId}-group-chck\" title=\"Click arrow to expand or collapse\">${otherGroup.groupName}</label>`;\r\n } else {\r\n theHml += `<label title=\"Click arrow to expand or collapse\">${otherGroup.groupName}</label>`;\r\n }\r\n\r\n theHml += `<span title=\"Expand/Collapse\" class=\"layer-group-expander`;\r\n theHml += `${otherGroup.collapse ? ' legend-layer-group-initial-collapse' : ''}\">`;\r\n theHml += otherGroup.collapse ? '&#9654;' : '&#9660;';\r\n theHml += '</span>';\r\n\r\n //parents.push(groupId);\r\n theHml += '<ul>' + this._buildLegend(otherGroup.itemIdArray, otherGroup, layerDivClasses) + '</ul>';\r\n theHml += '</div>';\r\n theHml += '</li>';\r\n }\r\n\r\n return theHml + this._buildLegend(itemIds.slice(1), theGroup, layerDivClasses);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * a wrapper to make a legend\r\n */\r\nclass LayerLegend {\r\n\r\n $divElement: JQuery;\r\n _legendItems: Array<iLegendItem>|Array<LayerBase>;\r\n layerGroup: any;\r\n legendId: string;\r\n\r\n /**``\r\n *\r\n * @param {Array} legendItems array of layers or objects with {groupName: {string}, collapse: {boolean}, addCheck: {boolean}, items: {Array}}\r\n * @param {string} divId the div where the legend should be added\r\n * @param {object} options for legend\r\n * @param {Array} [options.layerDivClasses=[]] optional array of classes to be applied to the layer legend divs for custom styling\r\n * @param {string} [options.legendTitle=Legend] the legend title\r\n * @param {boolean} [options.scaleDependent=true] if legend display is scale dependent\r\n */\r\n constructor(legendItems: Array<iLegendItem>|Array<LayerBase>, divId: string, options: iLegendOptions = {}) {\r\n for (let i of legendItems) {\r\n if (typeof i == 'undefined') {\r\n throw 'undefined item passed in array to legend constructor';\r\n }\r\n }\r\n\r\n options.legendTitle = typeof options.legendTitle == 'string' ? options.legendTitle : 'Legend';\r\n options.scaleDependent = typeof options.scaleDependent == 'boolean' ? options.scaleDependent : true;\r\n options.layerDivClasses = options.layerDivClasses || [];\r\n\r\n // if legend display is scale dependent, make sure the mapMove object is initialized first\r\n if (options.scaleDependent) {\r\n mapMove.checkInit();\r\n }\r\n\r\n this.$divElement = $('#' + divId);\r\n\r\n this._legendItems = legendItems;\r\n\r\n this.layerGroup = new LayerGroup();\r\n\r\n this._buildTree(legendItems);\r\n\r\n this.legendId = makeGuid();\r\n\r\n this.$divElement.append(this.layerGroup.getLegendHtml(this.legendId, options));\r\n\r\n for (let l of this.layerGroup.allLayerArray){\r\n l.applyCollapse();\r\n }\r\n\r\n let _this = this;\r\n //// if legend display is scale dependent, make sure the mapMove object is initialized first\r\n if (options.scaleDependent) {\r\n mapMove.checkInit();\r\n\r\n mapMove.addCallback(function (ext, zoom, evt) {\r\n\r\n if (typeof evt == 'undefined' || evt == 'change:resolution') {\r\n for (let lyr of this.layerGroup.allLayerArray) {\r\n let $lyrLi = $('#' + lyr.id + '-layer-li');\r\n if (zoom > lyr.maxZoom || zoom < lyr.minZoom) {\r\n $lyrLi.addClass('layer-not-visible');\r\n } else {\r\n $lyrLi.removeClass('layer-not-visible');\r\n }\r\n }\r\n }\r\n }, this, 100, true, 'legend1');\r\n }\r\n\r\n // <editor-fold desc=\"add event listeners\">\r\n\r\n this.$divElement.find(\".suppress-by-extent\").change(function () {\r\n let legendLayerLis = $('.legend-layer-li');\r\n if (this.checked) {\r\n legendLayerLis.removeClass('layer-force-show');\r\n } else {\r\n legendLayerLis.addClass('layer-force-show');\r\n }\r\n });\r\n\r\n\r\n this.$divElement.find('.legend-check').change(function () {\r\n let lyrId = this.id.replace('-legend-layer-check', '');\r\n _this.layerGroup.allLayerLookup[lyrId].visible = this.checked;\r\n });\r\n\r\n this.$divElement.find('.legend-layer-group > input[type=checkbox]').change(function () {\r\n $(this).siblings('ul').find('input[type=checkbox]').prop('checked', this.checked).trigger('change');\r\n });\r\n\r\n this.$divElement.find('.layer-group-expander').click(function () {\r\n let $this = $(this);\r\n $this.removeClass('legend-layer-group-initial-collapse');\r\n\r\n $this.siblings('ul').slideToggle();\r\n\r\n if ($this.hasClass('legend-layer-group-collapsed')){\r\n $this.removeClass('legend-layer-group-collapsed');\r\n $this.html('&#9660;');\r\n } else {\r\n $this.addClass('legend-layer-group-collapsed');\r\n $this.html('&#9654;');\r\n }\r\n });\r\n\r\n this.$divElement.find('.legend-layer-group-initial-collapse').trigger('click');\r\n // </editor-fold>\r\n }\r\n\r\n\r\n /**\r\n * @param {Array} [legendItems=this._layerConfig] the legend items\r\n * @param {Array} [parents=[]] the ordered list of groups in which this item is a member\r\n * @private\r\n */\r\n _buildTree(legendItems: Array<iLegendItem>|Array<LayerBase>, parents?: string[]) {\r\n\r\n if (legendItems.length == 0) {\r\n return;\r\n }\r\n\r\n let oneItem = legendItems[0];\r\n\r\n //reset the parent if the item is in the base array\r\n if ((this._legendItems as Array<any>).indexOf(oneItem) > -1 || typeof parents == 'undefined') {\r\n parents = [];\r\n }\r\n\r\n if (typeof (oneItem as iLegendItem).groupName !== 'undefined') {\r\n let groupItem = legendItems[0];\r\n let newGroup = this.layerGroup.addGroup(groupItem, parents);\r\n parents.push(newGroup.groupId);\r\n this._buildTree((oneItem as iLegendItem).items, parents);\r\n } else {\r\n /**\r\n * @type {LayerBase}\r\n */\r\n let layerItem: LayerBase = legendItems[0] as LayerBase;\r\n\r\n this.layerGroup.addLegendLayer(layerItem, parents);\r\n }\r\n\r\n this._buildTree(legendItems.slice(1), parents);\r\n }\r\n}\r\n\r\nnm.LayerLegend = LayerLegend;\r\nexport default LayerLegend;\r\n"]}
\ No newline at end of file
......@@ -31,7 +31,7 @@ export interface iLayerItsInventory extends LayerBaseVectorGeoJsonOptions {
* Its Layer class
* @augments LayerBaseVectorGeoJson
*/
declare class LayerItsInventory extends LayerBaseVectorGeoJson {
export declare class LayerItsInventory extends LayerBaseVectorGeoJson {
/**
* ITS device layer, types available at https://transportal.cee.wisc.edu/its/inventory/
* @param {object} options - config
......
......@@ -287,6 +287,7 @@ var LayerItsInventory = (function (_super) {
};
return LayerItsInventory;
}(LayerBaseVectorGeoJson_1.LayerBaseVectorGeoJson));
exports.LayerItsInventory = LayerItsInventory;
nm.LayerItsInventory = LayerItsInventory;
exports.default = LayerItsInventory;
//# sourceMappingURL=LayerItsInventory.js.map
\ No newline at end of file
{"version":3,"file":"LayerItsInventory.js","sourceRoot":"","sources":["../../src/layers/LayerItsInventory.ts"],"names":[],"mappings":"AAAA;;GAEG;;;;;;;;;;;;;AAEH,mEAA+F;AAC/F,kDAA6C;AAC7C,2CAAsC;AACtC,8BAAiC;AACjC,0BAA6B;AAC7B,wDAA2D;AAE3D,IAAI,EAAE,GAAG,iBAAO,CAAC,QAAQ,CAAC,CAAC;AAoC3B,0BAA0B,OAAe,EAAE,YAAwB,EAAE,aAA0B,EAAE,aAA0B;IACvH,YAAY,CAAC;IAEb,sDAAsD;IACtD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,EAAE,CAAC,CAAC,OAAO,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC;QAC7B,WAAW,EAAE,CAAC;IAClB,CAAC;IAED,EAAE,CAAC,CAAC,OAAO,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC;QAClC,YAAY,CAAC,KAAK,GAAG,OAAO,YAAY,CAAC,KAAK,IAAI,QAAQ,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;QACpF,YAAY,CAAC,KAAK,GAAG,OAAO,YAAY,CAAC,KAAK,IAAI,QAAQ,GAAG,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;QACxF,WAAW,EAAE,CAAC;IAClB,CAAC;IAED,EAAE,CAAC,CAAC,OAAO,aAAa,IAAI,QAAQ,CAAC,CAAC,CAAC;QACnC,aAAa,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,IAAI,OAAO,CAAC;QAEjE,EAAE,CAAC,CAAC,OAAO,aAAa,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC;YAChD,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;QACjC,CAAC;QAED,WAAW,EAAE,CAAC;IAClB,CAAC;IAED,EAAE,CAAC,CAAC,OAAO,aAAa,IAAI,QAAQ,CAAC,CAAC,CAAC;QACnC,aAAa,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,IAAI,OAAO,CAAC;QACjE,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,IAAI,CAAC,CAAC;QAC7D,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,IAAI,KAAK,CAAC;QAGjE,EAAE,CAAC,CAAC,OAAO,aAAa,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC;YAChD,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;QACjC,CAAC;QAED,+BAA+B;QAC/B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,EAAE,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;gBACzC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QAED,WAAW,EAAE,CAAC;IAClB,CAAC;IAED,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,sCAAsC,CAAC;IACjD,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAqB,OAAe,EAAE,YAAwB,EAAE,aAA0B,EAAE,aAA0B;IAClH,YAAY,CAAC;IACb,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IAEtE,IAAI,YAAY,GAAG,uDAAuD,CAAC;IAE3E,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACV,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YACtB,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CACpB;gBACI,GAAG,EAAE,YAAY,GAAG,OAAO;gBAC3B,WAAW,EAAE,WAAW;aAC3B,CACJ;SACJ,CAAC,CAAC;IACP,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YACtB,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;gBACxB,KAAK,EAAE,YAAY,CAAC,KAAK;gBACzB,KAAK,EAAE,YAAY,CAAC,KAAK;aAC5B,CAAC;SACL,CAAC,CAAC;IACP,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,UAAU,OAAmB;YAChC,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,OAAO,GAAG,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC;YAEvD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtD,IAAI,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAE1C,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;oBAClF,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACrC,KAAK,CAAC;gBACV,CAAC;YACL,CAAC;YAED,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvB,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CACpB;wBACI,GAAG,EAAE,OAAO;wBACZ,WAAW,EAAE,WAAW;qBAC3B,CACJ;iBACJ,CAAC,CAAC,CAAC;QACR,CAAC,CAAC;IACN,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,UAAU,OAAmB;YAChC,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,IAAI,GAAG,aAAa,CAAC,YAAY,IAAI,KAAK,CAAC;YAC/C,IAAI,KAAK,GAAG,aAAa,CAAC,YAAY,IAAI,CAAC,CAAC;YAE5C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtD,IAAI,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAE1C,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;oBAClF,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACnB,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACpB,KAAK,CAAC;gBACV,CAAC;YACL,CAAC;YAED,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvB,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;wBACxB,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,KAAK;qBACf,CAAC;iBACL,CAAC,CAAC,CAAC;QACR,CAAC,CAAC;IACN,CAAC;IAAC,IAAI,CAAC,CAAC;QACJ,MAAM,CAAC,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,sBAAsB,OAAe,EAAE,YAAwB,EAAE,aAA0B,EAAE,aAA0B;IACnH,YAAY,CAAC;IAEb,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IAEtE,IAAI,YAAY,GAAG,uDAAuD,CAAC;IAE3E,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACV,MAAM,CAAC,iBAAa,YAAY,GAAG,OAAO,iDAAuC,UAAU,QAAI,CAAC;IACpG,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,yBAAsB,YAAY,CAAC,KAAK,8BAAyB,YAAY,CAAC,KAAK,QAAI,CAAC;IACnG,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,OAAO,IAAI,MAAM,CAAC;QAElB,GAAG,CAAC,CAAU,UAAuB,EAAvB,KAAA,aAAa,CAAC,SAAS,EAAvB,cAAuB,EAAvB,IAAuB;YAAhC,IAAI,CAAC,SAAA;YACN,OAAO,IAAI,8CAA0C,CAAC,CAAC,CAAC,CAAC,2BAAoB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,iDAAuC,UAAU,QAAI,CAAC;SACzJ;QAED,OAAO,IAAI,8CAA0C,aAAa,CAAC,WAAW,YAAS;aACnF,iBAAa,YAAY,GAAG,aAAa,CAAC,WAAW,iDAAuC,UAAU,aAAS,CAAA,CAAC;QAEpH,OAAO,IAAI,OAAO,CAAC;QAEnB,MAAM,CAAC,OAAO,CAAC;IACnB,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,OAAO,IAAI,MAAM,CAAC;QAClB,GAAG,CAAC,CAAW,UAAuB,EAAvB,KAAA,aAAa,CAAC,SAAS,EAAvB,cAAuB,EAAvB,IAAuB;YAAjC,IAAI,EAAE,SAAA;YACP,OAAO,IAAI,8CAA0C,EAAE,CAAC,CAAC,CAAC,YAAS;iBAC/D,yBAAsB,EAAE,CAAC,CAAC,CAAC,8BAAyB,EAAE,CAAC,CAAC,CAAC,QAAI,CAAA,CAAC;SACrE;QACD,OAAO,IAAI,8CAA0C,aAAa,CAAC,WAAW,YAAS;aACnF,yBAAsB,aAAa,CAAC,YAAY,8BAAyB,aAAa,CAAC,YAAY,aAAS,CAAA,CAAC;QACjH,OAAO,IAAI,OAAO,CAAC;QAEnB,MAAM,CAAC,OAAO,CAAC;IACnB,CAAC;IAAC,IAAI,CAAC,CAAC;QACJ,MAAM,CAAC,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAGD;;;GAGG;AACH;IAAgC,qCAAsB;IAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH,2BAAY,OAA2B;QAAvC,iBAmCC;QAlCG,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC;YACtC,MAAM,0BAA0B,CAAC;QACrC,CAAC;QAED,OAAO,CAAC,SAAS,GAAG,EAAC,cAAc,EAAE,sBAAQ,EAAE,iBAAiB,EAAE,sBAAQ,EAAC,CAAC;QAE5E,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,0EAA0E;QAC1E,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,GAAG,WAAW,CACvB,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CACtF,CAAC;YACF,WAAW,GAAG,YAAY,CACtB,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CACtF,CAAC;QACN,CAAC;QAED,OAAO,CAAC,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;QACzE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAC,CAAC,CAAC;QAEtE,QAAA,kBAAM,iDAAiD,EAAE,OAAO,CAAC,SAAC;QAElE,0CAA0C;QAC1C,KAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAEnC,OAAO,CAAC,QAAQ,GAAG,OAAO,OAAO,CAAC,QAAQ,IAAI,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;QAElF,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnB,kBAAQ,CAAC,cAAc,CAAC,KAAI,EAAE,UAAU,KAA8B;gBAClE,MAAM,CAAC,2EAAwE,KAAK,CAAC,WAAW,QAAI;oBAChG,wCAAoC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACP,CAAC;;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,gDAAoB,GAApB,UAAqB,MAAkE,EAAE,SAAiB;QACtG,iBAAM,oBAAoB,YAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACxD,IAAI,oBAAoB,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QACtD,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,qBAAqB,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;QAExD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EACvB;YACI,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;YAC1B,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAC3B,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;YAC1B,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC;SAC9B,CAAC,CAAC;IACX,CAAC;IACL,wBAAC;AAAD,CAAC,AA9GD,CAAgC,+CAAsB,GA8GrD;AAED,EAAE,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;AACzC,kBAAe,iBAAiB,CAAC","sourcesContent":["/**\r\n * Created by gavorhes on 12/8/2015.\r\n */\r\n\r\nimport {LayerBaseVectorGeoJson, LayerBaseVectorGeoJsonOptions} from './LayerBaseVectorGeoJson';\r\nimport mapPopup from '../olHelpers/mapPopup';\r\nimport provide from '../util/provide';\r\nimport ol = require('custom-ol');\r\nimport $ = require('jquery');\r\nimport {proj4326, proj3857} from '../olHelpers/projections'\r\n\r\nlet nm = provide('layers');\r\n\r\n\r\nexport interface iLineStyle {\r\n color: string;\r\n width?: number\r\n}\r\n\r\nexport interface iMultiConfig {\r\n prop: string;\r\n defaultName: string;\r\n}\r\n\r\nexport interface iIconConfig extends iMultiConfig {\r\n defaultIcon: string;\r\n iconArray: string[][]\r\n}\r\n\r\nexport interface iLineConfig extends iMultiConfig {\r\n defaultColor: string;\r\n defaultWidth?: number;\r\n lineArray: any[][]\r\n}\r\n\r\nexport interface iLayerItsInventory extends LayerBaseVectorGeoJsonOptions {\r\n itsType: string;\r\n addPopup?: boolean;\r\n itsIcon?: string;\r\n itsLineStyle?: iLineStyle;\r\n itsIconConfig?: iIconConfig;\r\n itsLineConfig?: iLineConfig\r\n}\r\n\r\n\r\n\r\n\r\nfunction checkStyleNumber(itsIcon: string, itsLineStyle: iLineStyle, itsIconConfig: iIconConfig, itsLineConfig: iLineConfig) {\r\n \"use strict\";\r\n\r\n //make sure one and only one configuration is defined;\r\n let configCount = 0;\r\n if (typeof itsIcon == 'string') {\r\n configCount++;\r\n }\r\n\r\n if (typeof itsLineStyle == 'object') {\r\n itsLineStyle.width = typeof itsLineStyle.width == 'number' ? itsLineStyle.width : 5;\r\n itsLineStyle.color = typeof itsLineStyle.color == 'string' ? itsLineStyle.color : 'red';\r\n configCount++;\r\n }\r\n\r\n if (typeof itsIconConfig == 'object') {\r\n itsIconConfig.defaultName = itsIconConfig.defaultName || 'Other';\r\n\r\n if (typeof itsIconConfig.iconArray == 'undefined') {\r\n itsIconConfig.iconArray = [];\r\n }\r\n\r\n configCount++;\r\n }\r\n\r\n if (typeof itsLineConfig == 'object') {\r\n itsLineConfig.defaultName = itsLineConfig.defaultName || 'Other';\r\n itsLineConfig.defaultWidth = itsLineConfig.defaultWidth || 5;\r\n itsLineConfig.defaultColor = itsLineConfig.defaultColor || 'red';\r\n\r\n\r\n if (typeof itsLineConfig.lineArray == 'undefined') {\r\n itsLineConfig.lineArray = [];\r\n }\r\n\r\n // set the width if not defined\r\n for (let i = 0; i < itsLineConfig.lineArray.length; i++) {\r\n if (itsLineConfig.lineArray[i].length == 3) {\r\n itsLineConfig.lineArray[i].push(5);\r\n }\r\n }\r\n\r\n configCount++;\r\n }\r\n\r\n if (configCount > 1) {\r\n throw 'Only one style config can be defined';\r\n }\r\n}\r\n\r\n/**\r\n *\r\n * @param {string} [itsIcon=undefined] the ITS device type icon image see https://transportal.cee.wisc.edu/its/inventory/icons/\r\n *\r\n * @param {object} [itsLineStyle=undefined] A single line style\r\n * @param {string} itsLineStyle.color the line color as rgb or hex\r\n * @param {number} [itsLineStyle.width=5] the line width\r\n *\r\n * @param {object} [itsIconConfig=undefined] The icon subtype configuration\r\n * @param {string} itsIconConfig.prop The property used to define icon attribute symbolization\r\n * @param {string} itsIconConfig.defaultName The default name to be used if no other match is found\r\n * @param {string} itsIconConfig.defaultIcon The default icon to be used for no other matches\r\n * @param {object} [itsIconConfig.iconArray=[]] an array, items with format [property, name, img]\r\n *\r\n * @param {object} [itsLineConfig=undefined] The property used to define icon attribute symbolization\r\n * @param {string} itsLineConfig.prop The property used to define icon attribute symbolization\r\n * @param {string} [itsLineConfig.defaultName=Other] The default name to be used if no other match is found\r\n * @param {string} [itsLineConfig.defaultColor=red] The default line color to be used for no other matches\r\n * @param {number} [itsLineConfig.defaultWidth=5] The default line width to be used for no other matches\r\n * @param {object} [itsLineConfig.lineArray=[]] an array, items with format [property, name, color, optional width]\r\n * @returns {*} undefined, style, or style function\r\n */\r\nfunction defineStyle(itsIcon: string, itsLineStyle: iLineStyle, itsIconConfig: iIconConfig, itsLineConfig: iLineConfig): ol.style.Style | Array<ol.style.Style> | ol.StyleFunction {\r\n \"use strict\";\r\n checkStyleNumber(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig);\r\n\r\n let _iconUrlRoot = 'https://transportal.cee.wisc.edu/its/inventory/icons/';\r\n\r\n if (itsIcon) {\r\n return new ol.style.Style({\r\n image: new ol.style.Icon(\r\n {\r\n src: _iconUrlRoot + itsIcon,\r\n crossOrigin: 'anonymous'\r\n }\r\n )\r\n });\r\n } else if (itsLineStyle) {\r\n return new ol.style.Style({\r\n stroke: new ol.style.Stroke({\r\n color: itsLineStyle.color,\r\n width: itsLineStyle.width\r\n })\r\n });\r\n } else if (itsIconConfig) {\r\n return function (feature: ol.Feature) {\r\n let symbolProp = feature.getProperties()[itsIconConfig.prop];\r\n let iconUrl = _iconUrlRoot + itsIconConfig.defaultIcon;\r\n\r\n for (let i = 0; i < itsIconConfig.iconArray.length; i++) {\r\n let thisProp = itsIconConfig.iconArray[i];\r\n\r\n if (symbolProp.trim().toLocaleLowerCase() == thisProp[0].trim().toLocaleLowerCase()) {\r\n iconUrl = _iconUrlRoot + thisProp[2];\r\n break;\r\n }\r\n }\r\n\r\n return [new ol.style.Style({\r\n image: new ol.style.Icon(\r\n {\r\n src: iconUrl,\r\n crossOrigin: 'anonymous'\r\n }\r\n )\r\n })];\r\n };\r\n } else if (itsLineConfig) {\r\n return function (feature: ol.Feature) {\r\n let symbolProp = feature.getProperties()[itsLineConfig.prop];\r\n let colr = itsLineConfig.defaultColor || 'red';\r\n let width = itsLineConfig.defaultWidth || 5;\r\n\r\n for (let i = 0; i < itsLineConfig.lineArray.length; i++) {\r\n let thisProp = itsLineConfig.lineArray[i];\r\n\r\n if (symbolProp.trim().toLocaleLowerCase() == thisProp[0].trim().toLocaleLowerCase()) {\r\n colr = thisProp[2];\r\n width = thisProp[3];\r\n break;\r\n }\r\n }\r\n\r\n return [new ol.style.Style({\r\n stroke: new ol.style.Stroke({\r\n color: colr,\r\n width: width\r\n })\r\n })];\r\n };\r\n } else {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction defineLegend(itsIcon: string, itsLineStyle: iLineStyle, itsIconConfig: iIconConfig, itsLineConfig: iLineConfig) {\r\n \"use strict\";\r\n\r\n let iconHeight = 17;\r\n\r\n checkStyleNumber(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig);\r\n\r\n let _iconUrlRoot = 'https://transportal.cee.wisc.edu/its/inventory/icons/';\r\n\r\n if (itsIcon) {\r\n return `<img src=\"${_iconUrlRoot + itsIcon}\" class=\"legend-layer-icon\" height=\"${iconHeight}\">`;\r\n } else if (itsLineStyle) {\r\n return `<hr style=\"height: ${itsLineStyle.width}px; background-color: ${itsLineStyle.color}\">`;\r\n } else if (itsIconConfig) {\r\n let outHtml = '';\r\n outHtml += '<ul>';\r\n\r\n for (let a of itsIconConfig.iconArray) {\r\n outHtml += `<li><span class=\"legend-layer-subitem\">${a[1]}</span><img src=\"${_iconUrlRoot + a[2]}\" class=\"legend-layer-icon\" height=\"${iconHeight}\">`;\r\n }\r\n\r\n outHtml += `<li><span class=\"legend-layer-subitem\">${itsIconConfig.defaultName}</span>` +\r\n `<img src=\"${_iconUrlRoot + itsIconConfig.defaultIcon}\" class=\"legend-layer-icon\" height=\"${iconHeight}\"></li>`;\r\n\r\n outHtml += '</ul>';\r\n\r\n return outHtml;\r\n } else if (itsLineConfig) {\r\n let outHtml = '';\r\n outHtml += '<ul>';\r\n for (let ls of itsLineConfig.lineArray) {\r\n outHtml += `<li><span class=\"legend-layer-subitem\">${ls[1]}</span>` +\r\n `<hr style=\"height: ${ls[3]}px; background-color: ${ls[2]}\">`;\r\n }\r\n outHtml += `<li><span class=\"legend-layer-subitem\">${itsLineConfig.defaultName}</span>` +\r\n `<hr style=\"height: ${itsLineConfig.defaultWidth}px; background-color: ${itsLineConfig.defaultColor}\"></li>`;\r\n outHtml += '</ul>';\r\n\r\n return outHtml;\r\n } else {\r\n return '';\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Its Layer class\r\n * @augments LayerBaseVectorGeoJson\r\n */\r\nclass LayerItsInventory extends LayerBaseVectorGeoJson {\r\n\r\n /**\r\n * ITS device layer, types available at https://transportal.cee.wisc.edu/its/inventory/\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 *\r\n * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible\r\n * @param {object|*} [options.style=undefined] the layer style, use openlayers default style if not defined\r\n * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move\r\n * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called\r\n * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages\r\n *\r\n * @param {string} options.itsType the ITS device type, use the url flag at https://transportal.cee.wisc.edu/its/inventory/\r\n * @param {boolean} [options.addPopup=true] if the popup should be added automatically\r\n *\r\n * @param {string} [options.itsIcon=undefined] the ITS device type icon image see https://transportal.cee.wisc.edu/its/inventory/icons/\r\n *\r\n * @param {object} [options.itsLineStyle=undefined] A single line style\r\n * @param {string} options.itsLineStyle.color the line color as rgb or hex\r\n * @param {number} [options.itsLineStyle.width=5] the line width\r\n *\r\n * @param {object} [options.itsIconConfig=undefined] The icon subtype configuration\r\n * @param {string} options.itsIconConfig.prop The property used to define icon attribute symbolization\r\n * @param {string} options.itsIconConfig.defaultName The default name to be used if no other match is found\r\n * @param {string} options.itsIconConfig.defaultIcon The default icon to be used for no other matches\r\n * @param {object} [options.itsIconConfig.iconArray=[]] an array, items with format [property, name, img]\r\n *\r\n * @param {object} [options.itsLineConfig=undefined] The property used to define icon attribute symbolization\r\n * @param {string} options.itsLineConfig.prop The property used to define icon attribute symbolization\r\n * @param {string} [options.itsLineConfig.defaultName=Other] The default name to be used if no other match is found\r\n * @param {string} [options.itsLineConfig.defaultColor=red] The default line color to be used for no other matches\r\n * @param {number} [options.itsLineConfig.defaultWidth] The default line width to be used for no other matches\r\n * @param {object} [options.itsLineConfig.lineArray=[]] an array, items with format [property, name, color, optional width = 5]\r\n */\r\n constructor(options: iLayerItsInventory) {\r\n if (typeof options.itsType !== 'string') {\r\n throw 'its type must be defined';\r\n }\r\n\r\n options.transform = {dataProjection: proj4326, featureProjection: proj3857};\r\n\r\n let addToLegend = '';\r\n\r\n // define a style with the helper function if it is not explicitly defined\r\n if (typeof options.style == 'undefined') {\r\n options.style = defineStyle(\r\n options.itsIcon, options.itsLineStyle, options.itsIconConfig, options.itsLineConfig\r\n );\r\n addToLegend = defineLegend(\r\n options.itsIcon, options.itsLineStyle, options.itsIconConfig, options.itsLineConfig\r\n );\r\n }\r\n\r\n options.params = typeof options.params == 'object' ? options.params : {};\r\n $.extend(options.params, {format: 'JSON', resource: options.itsType});\r\n\r\n super('https://transportal.cee.wisc.edu/its/inventory/', options);\r\n\r\n //add any additional content to the legend\r\n this.addLegendContent(addToLegend);\r\n\r\n options.addPopup = typeof options.addPopup == 'boolean' ? options.addPopup : true;\r\n\r\n if (options.addPopup) {\r\n mapPopup.addVectorPopup(this, function (props: { featureGuid: string }) {\r\n return `<iframe src=\"https://transportal.cee.wisc.edu/its/inventory/?feature=${props.featureGuid}\" ` +\r\n `height=\"250\" width=\"350\"></iframe>`;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * callback to generate the parameters passed in the get request\r\n * @callback makeGetParams\r\n * @param {object} extent - extent object\r\n * @param {number} extent.minX - minX\r\n * @param {number} extent.minY - minY\r\n * @param {number} extent.maxX - maxX\r\n * @param {number} extent.maxY - maxY\r\n * @param {number} zoomLevel - zoom level\r\n */\r\n mapMoveMakeGetParams(extent: { minX: number, minY: number, maxX: number, maxY: number }, zoomLevel: number) {\r\n super.mapMoveMakeGetParams(extent, zoomLevel);\r\n let lowerLeft = new ol.geom.Point([extent.minX, extent.minY]);\r\n lowerLeft.transform(this.mapProj, this._projection4326);\r\n let lowerLeftCoordinates = lowerLeft.getCoordinates();\r\n let upperRight = new ol.geom.Point([extent.maxX, extent.maxY]);\r\n upperRight.transform(this.mapProj, this._projection4326);\r\n let upperRightCoordinates = upperRight.getCoordinates();\r\n\r\n $.extend(this.mapMoveParams,\r\n {\r\n L: lowerLeftCoordinates[0],\r\n R: upperRightCoordinates[0],\r\n B: lowerLeftCoordinates[1],\r\n T: upperRightCoordinates[1]\r\n });\r\n }\r\n}\r\n\r\nnm.LayerItsInventory = LayerItsInventory;\r\nexport default LayerItsInventory;\r\n"]}
\ No newline at end of file
{"version":3,"file":"LayerItsInventory.js","sourceRoot":"","sources":["../../src/layers/LayerItsInventory.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by gavorhes on 12/8/2015.\r\n */\r\n\r\nimport {LayerBaseVectorGeoJson, LayerBaseVectorGeoJsonOptions} from './LayerBaseVectorGeoJson';\r\nimport mapPopup from '../olHelpers/mapPopup';\r\nimport provide from '../util/provide';\r\nimport ol = require('custom-ol');\r\nimport $ = require('jquery');\r\nimport {proj4326, proj3857} from '../olHelpers/projections'\r\n\r\nlet nm = provide('layers');\r\n\r\n\r\nexport interface iLineStyle {\r\n color: string;\r\n width?: number\r\n}\r\n\r\nexport interface iMultiConfig {\r\n prop: string;\r\n defaultName: string;\r\n}\r\n\r\nexport interface iIconConfig extends iMultiConfig {\r\n defaultIcon: string;\r\n iconArray: string[][]\r\n}\r\n\r\nexport interface iLineConfig extends iMultiConfig {\r\n defaultColor: string;\r\n defaultWidth?: number;\r\n lineArray: any[][]\r\n}\r\n\r\nexport interface iLayerItsInventory extends LayerBaseVectorGeoJsonOptions {\r\n itsType: string;\r\n addPopup?: boolean;\r\n itsIcon?: string;\r\n itsLineStyle?: iLineStyle;\r\n itsIconConfig?: iIconConfig;\r\n itsLineConfig?: iLineConfig\r\n}\r\n\r\n\r\n\r\n\r\nfunction checkStyleNumber(itsIcon: string, itsLineStyle: iLineStyle, itsIconConfig: iIconConfig, itsLineConfig: iLineConfig) {\r\n \"use strict\";\r\n\r\n //make sure one and only one configuration is defined;\r\n let configCount = 0;\r\n if (typeof itsIcon == 'string') {\r\n configCount++;\r\n }\r\n\r\n if (typeof itsLineStyle == 'object') {\r\n itsLineStyle.width = typeof itsLineStyle.width == 'number' ? itsLineStyle.width : 5;\r\n itsLineStyle.color = typeof itsLineStyle.color == 'string' ? itsLineStyle.color : 'red';\r\n configCount++;\r\n }\r\n\r\n if (typeof itsIconConfig == 'object') {\r\n itsIconConfig.defaultName = itsIconConfig.defaultName || 'Other';\r\n\r\n if (typeof itsIconConfig.iconArray == 'undefined') {\r\n itsIconConfig.iconArray = [];\r\n }\r\n\r\n configCount++;\r\n }\r\n\r\n if (typeof itsLineConfig == 'object') {\r\n itsLineConfig.defaultName = itsLineConfig.defaultName || 'Other';\r\n itsLineConfig.defaultWidth = itsLineConfig.defaultWidth || 5;\r\n itsLineConfig.defaultColor = itsLineConfig.defaultColor || 'red';\r\n\r\n\r\n if (typeof itsLineConfig.lineArray == 'undefined') {\r\n itsLineConfig.lineArray = [];\r\n }\r\n\r\n // set the width if not defined\r\n for (let i = 0; i < itsLineConfig.lineArray.length; i++) {\r\n if (itsLineConfig.lineArray[i].length == 3) {\r\n itsLineConfig.lineArray[i].push(5);\r\n }\r\n }\r\n\r\n configCount++;\r\n }\r\n\r\n if (configCount > 1) {\r\n throw 'Only one style config can be defined';\r\n }\r\n}\r\n\r\n/**\r\n *\r\n * @param {string} [itsIcon=undefined] the ITS device type icon image see https://transportal.cee.wisc.edu/its/inventory/icons/\r\n *\r\n * @param {object} [itsLineStyle=undefined] A single line style\r\n * @param {string} itsLineStyle.color the line color as rgb or hex\r\n * @param {number} [itsLineStyle.width=5] the line width\r\n *\r\n * @param {object} [itsIconConfig=undefined] The icon subtype configuration\r\n * @param {string} itsIconConfig.prop The property used to define icon attribute symbolization\r\n * @param {string} itsIconConfig.defaultName The default name to be used if no other match is found\r\n * @param {string} itsIconConfig.defaultIcon The default icon to be used for no other matches\r\n * @param {object} [itsIconConfig.iconArray=[]] an array, items with format [property, name, img]\r\n *\r\n * @param {object} [itsLineConfig=undefined] The property used to define icon attribute symbolization\r\n * @param {string} itsLineConfig.prop The property used to define icon attribute symbolization\r\n * @param {string} [itsLineConfig.defaultName=Other] The default name to be used if no other match is found\r\n * @param {string} [itsLineConfig.defaultColor=red] The default line color to be used for no other matches\r\n * @param {number} [itsLineConfig.defaultWidth=5] The default line width to be used for no other matches\r\n * @param {object} [itsLineConfig.lineArray=[]] an array, items with format [property, name, color, optional width]\r\n * @returns {*} undefined, style, or style function\r\n */\r\nfunction defineStyle(itsIcon: string, itsLineStyle: iLineStyle, itsIconConfig: iIconConfig, itsLineConfig: iLineConfig): ol.style.Style | Array<ol.style.Style> | ol.StyleFunction {\r\n \"use strict\";\r\n checkStyleNumber(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig);\r\n\r\n let _iconUrlRoot = 'https://transportal.cee.wisc.edu/its/inventory/icons/';\r\n\r\n if (itsIcon) {\r\n return new ol.style.Style({\r\n image: new ol.style.Icon(\r\n {\r\n src: _iconUrlRoot + itsIcon,\r\n crossOrigin: 'anonymous'\r\n }\r\n )\r\n });\r\n } else if (itsLineStyle) {\r\n return new ol.style.Style({\r\n stroke: new ol.style.Stroke({\r\n color: itsLineStyle.color,\r\n width: itsLineStyle.width\r\n })\r\n });\r\n } else if (itsIconConfig) {\r\n return function (feature: ol.Feature) {\r\n let symbolProp = feature.getProperties()[itsIconConfig.prop];\r\n let iconUrl = _iconUrlRoot + itsIconConfig.defaultIcon;\r\n\r\n for (let i = 0; i < itsIconConfig.iconArray.length; i++) {\r\n let thisProp = itsIconConfig.iconArray[i];\r\n\r\n if (symbolProp.trim().toLocaleLowerCase() == thisProp[0].trim().toLocaleLowerCase()) {\r\n iconUrl = _iconUrlRoot + thisProp[2];\r\n break;\r\n }\r\n }\r\n\r\n return [new ol.style.Style({\r\n image: new ol.style.Icon(\r\n {\r\n src: iconUrl,\r\n crossOrigin: 'anonymous'\r\n }\r\n )\r\n })];\r\n };\r\n } else if (itsLineConfig) {\r\n return function (feature: ol.Feature) {\r\n let symbolProp = feature.getProperties()[itsLineConfig.prop];\r\n let colr = itsLineConfig.defaultColor || 'red';\r\n let width = itsLineConfig.defaultWidth || 5;\r\n\r\n for (let i = 0; i < itsLineConfig.lineArray.length; i++) {\r\n let thisProp = itsLineConfig.lineArray[i];\r\n\r\n if (symbolProp.trim().toLocaleLowerCase() == thisProp[0].trim().toLocaleLowerCase()) {\r\n colr = thisProp[2];\r\n width = thisProp[3];\r\n break;\r\n }\r\n }\r\n\r\n return [new ol.style.Style({\r\n stroke: new ol.style.Stroke({\r\n color: colr,\r\n width: width\r\n })\r\n })];\r\n };\r\n } else {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction defineLegend(itsIcon: string, itsLineStyle: iLineStyle, itsIconConfig: iIconConfig, itsLineConfig: iLineConfig) {\r\n \"use strict\";\r\n\r\n let iconHeight = 17;\r\n\r\n checkStyleNumber(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig);\r\n\r\n let _iconUrlRoot = 'https://transportal.cee.wisc.edu/its/inventory/icons/';\r\n\r\n if (itsIcon) {\r\n return `<img src=\"${_iconUrlRoot + itsIcon}\" class=\"legend-layer-icon\" height=\"${iconHeight}\">`;\r\n } else if (itsLineStyle) {\r\n return `<hr style=\"height: ${itsLineStyle.width}px; background-color: ${itsLineStyle.color}\">`;\r\n } else if (itsIconConfig) {\r\n let outHtml = '';\r\n outHtml += '<ul>';\r\n\r\n for (let a of itsIconConfig.iconArray) {\r\n outHtml += `<li><span class=\"legend-layer-subitem\">${a[1]}</span><img src=\"${_iconUrlRoot + a[2]}\" class=\"legend-layer-icon\" height=\"${iconHeight}\">`;\r\n }\r\n\r\n outHtml += `<li><span class=\"legend-layer-subitem\">${itsIconConfig.defaultName}</span>` +\r\n `<img src=\"${_iconUrlRoot + itsIconConfig.defaultIcon}\" class=\"legend-layer-icon\" height=\"${iconHeight}\"></li>`;\r\n\r\n outHtml += '</ul>';\r\n\r\n return outHtml;\r\n } else if (itsLineConfig) {\r\n let outHtml = '';\r\n outHtml += '<ul>';\r\n for (let ls of itsLineConfig.lineArray) {\r\n outHtml += `<li><span class=\"legend-layer-subitem\">${ls[1]}</span>` +\r\n `<hr style=\"height: ${ls[3]}px; background-color: ${ls[2]}\">`;\r\n }\r\n outHtml += `<li><span class=\"legend-layer-subitem\">${itsLineConfig.defaultName}</span>` +\r\n `<hr style=\"height: ${itsLineConfig.defaultWidth}px; background-color: ${itsLineConfig.defaultColor}\"></li>`;\r\n outHtml += '</ul>';\r\n\r\n return outHtml;\r\n } else {\r\n return '';\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Its Layer class\r\n * @augments LayerBaseVectorGeoJson\r\n */\r\nexport class LayerItsInventory extends LayerBaseVectorGeoJson {\r\n\r\n /**\r\n * ITS device layer, types available at https://transportal.cee.wisc.edu/its/inventory/\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 *\r\n * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible\r\n * @param {object|*} [options.style=undefined] the layer style, use openlayers default style if not defined\r\n * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move\r\n * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called\r\n * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages\r\n *\r\n * @param {string} options.itsType the ITS device type, use the url flag at https://transportal.cee.wisc.edu/its/inventory/\r\n * @param {boolean} [options.addPopup=true] if the popup should be added automatically\r\n *\r\n * @param {string} [options.itsIcon=undefined] the ITS device type icon image see https://transportal.cee.wisc.edu/its/inventory/icons/\r\n *\r\n * @param {object} [options.itsLineStyle=undefined] A single line style\r\n * @param {string} options.itsLineStyle.color the line color as rgb or hex\r\n * @param {number} [options.itsLineStyle.width=5] the line width\r\n *\r\n * @param {object} [options.itsIconConfig=undefined] The icon subtype configuration\r\n * @param {string} options.itsIconConfig.prop The property used to define icon attribute symbolization\r\n * @param {string} options.itsIconConfig.defaultName The default name to be used if no other match is found\r\n * @param {string} options.itsIconConfig.defaultIcon The default icon to be used for no other matches\r\n * @param {object} [options.itsIconConfig.iconArray=[]] an array, items with format [property, name, img]\r\n *\r\n * @param {object} [options.itsLineConfig=undefined] The property used to define icon attribute symbolization\r\n * @param {string} options.itsLineConfig.prop The property used to define icon attribute symbolization\r\n * @param {string} [options.itsLineConfig.defaultName=Other] The default name to be used if no other match is found\r\n * @param {string} [options.itsLineConfig.defaultColor=red] The default line color to be used for no other matches\r\n * @param {number} [options.itsLineConfig.defaultWidth] The default line width to be used for no other matches\r\n * @param {object} [options.itsLineConfig.lineArray=[]] an array, items with format [property, name, color, optional width = 5]\r\n */\r\n constructor(options: iLayerItsInventory) {\r\n if (typeof options.itsType !== 'string') {\r\n throw 'its type must be defined';\r\n }\r\n\r\n options.transform = {dataProjection: proj4326, featureProjection: proj3857};\r\n\r\n let addToLegend = '';\r\n\r\n // define a style with the helper function if it is not explicitly defined\r\n if (typeof options.style == 'undefined') {\r\n options.style = defineStyle(\r\n options.itsIcon, options.itsLineStyle, options.itsIconConfig, options.itsLineConfig\r\n );\r\n addToLegend = defineLegend(\r\n options.itsIcon, options.itsLineStyle, options.itsIconConfig, options.itsLineConfig\r\n );\r\n }\r\n\r\n options.params = typeof options.params == 'object' ? options.params : {};\r\n $.extend(options.params, {format: 'JSON', resource: options.itsType});\r\n\r\n super('https://transportal.cee.wisc.edu/its/inventory/', options);\r\n\r\n //add any additional content to the legend\r\n this.addLegendContent(addToLegend);\r\n\r\n options.addPopup = typeof options.addPopup == 'boolean' ? options.addPopup : true;\r\n\r\n if (options.addPopup) {\r\n mapPopup.addVectorPopup(this, function (props: { featureGuid: string }) {\r\n return `<iframe src=\"https://transportal.cee.wisc.edu/its/inventory/?feature=${props.featureGuid}\" ` +\r\n `height=\"250\" width=\"350\"></iframe>`;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * callback to generate the parameters passed in the get request\r\n * @callback makeGetParams\r\n * @param {object} extent - extent object\r\n * @param {number} extent.minX - minX\r\n * @param {number} extent.minY - minY\r\n * @param {number} extent.maxX - maxX\r\n * @param {number} extent.maxY - maxY\r\n * @param {number} zoomLevel - zoom level\r\n */\r\n mapMoveMakeGetParams(extent: { minX: number, minY: number, maxX: number, maxY: number }, zoomLevel: number) {\r\n super.mapMoveMakeGetParams(extent, zoomLevel);\r\n let lowerLeft = new ol.geom.Point([extent.minX, extent.minY]);\r\n lowerLeft.transform(this.mapProj, this._projection4326);\r\n let lowerLeftCoordinates = lowerLeft.getCoordinates();\r\n let upperRight = new ol.geom.Point([extent.maxX, extent.maxY]);\r\n upperRight.transform(this.mapProj, this._projection4326);\r\n let upperRightCoordinates = upperRight.getCoordinates();\r\n\r\n $.extend(this.mapMoveParams,\r\n {\r\n L: lowerLeftCoordinates[0],\r\n R: upperRightCoordinates[0],\r\n B: lowerLeftCoordinates[1],\r\n T: upperRightCoordinates[1]\r\n });\r\n }\r\n}\r\n\r\nnm.LayerItsInventory = LayerItsInventory;\r\nexport default LayerItsInventory;\r\n"]}
\ No newline at end of file
......@@ -230,7 +230,7 @@ class LayerGroup {
class LayerLegend {
$divElement: JQuery;
_legendItems: Array<iLegendItem|LayerBase>;
_legendItems: Array<iLegendItem>|Array<LayerBase>;
layerGroup: any;
legendId: string;
......@@ -243,7 +243,7 @@ class LayerLegend {
* @param {string} [options.legendTitle=Legend] the legend title
* @param {boolean} [options.scaleDependent=true] if legend display is scale dependent
*/
constructor(legendItems: Array<iLegendItem|LayerBase>, divId: string, options: iLegendOptions = {}) {
constructor(legendItems: Array<iLegendItem>|Array<LayerBase>, divId: string, options: iLegendOptions = {}) {
for (let i of legendItems) {
if (typeof i == 'undefined') {
throw 'undefined item passed in array to legend constructor';
......@@ -341,7 +341,7 @@ class LayerLegend {
* @param {Array} [parents=[]] the ordered list of groups in which this item is a member
* @private
*/
_buildTree(legendItems: Array<iLegendItem|LayerBase>, parents?: string[]) {
_buildTree(legendItems: Array<iLegendItem>|Array<LayerBase>, parents?: string[]) {
if (legendItems.length == 0) {
return;
......@@ -350,7 +350,7 @@ class LayerLegend {
let oneItem = legendItems[0];
//reset the parent if the item is in the base array
if (this._legendItems.indexOf(oneItem) > -1 || typeof parents == 'undefined') {
if ((this._legendItems as Array<any>).indexOf(oneItem) > -1 || typeof parents == 'undefined') {
parents = [];
}
......
......@@ -239,7 +239,7 @@ function defineLegend(itsIcon: string, itsLineStyle: iLineStyle, itsIconConfig:
* Its Layer class
* @augments LayerBaseVectorGeoJson
*/
class LayerItsInventory extends LayerBaseVectorGeoJson {
export class LayerItsInventory extends LayerBaseVectorGeoJson {
/**
* ITS device layer, types available at https://transportal.cee.wisc.edu/its/inventory/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment