CoastalResilienceNetwork/GeositeFramework — pull request #167 by RickMohr (2014-01-03 20:38:59+00:00)
Title: Integrate UCSC work on the layer_selector plugin

The layer_selector plugin was extensively modified by Barry Nickel (Center for Integrated Spatial Research, University of California, Santa Cruz). The following features (at least) were added:

Configuration features (via layers.json):
* Support AGS service types "tiled" and "feature-layer" in addition to "dynamic"
* Specify a layer hierarchy to be shown in the UI that differs from the server hierarchy (using "groupFolder" and "groupAsService")
* Specify that layers should be displayed by default when loaded
* Specify "symbology" info for feature layers
* Specify initial opacity
* Override an entry's display name and description
* Specify WMS layer info directly (rather than asking the server for it)

UI features:
* Folder nodes now have checkboxes which hide/show all contained entries
* If an entry is unavailable, clicking its "info" button shows the relevant error message in the "description" popup

I have made the following changes to the submitted code:

Update code for Azavea style and JS best practices:
* Convert tabs to spaces
* Add missing semicolons
* Unify multiply-defined vars
* Remove unused code
* Expand one-line functions
* Expand single-line objects
* (Visual Studio removed trailing whitespace and normalized some spacing)

Simplify and clarify code in AgsLoader.js:
* Rename variables representing part of layers.json to contain "Config" (e.g. folderConfig, serviceConfig)
* Eliminate guids
* Simplify "whitelist" code
* Split loadFolders() into smaller functions
* Eliminate duplicated code
* Misc. simplification and clarification

Simplify and clarify code in WmsLoader.js:
* Use variables for _makeContainerNode etc. (like AgsLoader does) to avoid passing them around multiple times now that this module is more complex
* Separate loadCatalogUsingResourceInfo() function
* Factor out duplicated code
* Restore WMS layers in layers.json for testing
* In layers.json schema, all "extent" fields are now required
* Misc. simplification and clarification