/*global define */
/**
*
*
* @module RAMP
*/
/**
* RAMP class.
*
* Module for shared code that need the global configuration object.
* For code that can be of use to any javascript program and do not
* require the global configuration object, place the code in
* util.js
*
* @class RAMP
* @uses dojo/_base/declare
* @uses dojo/query
* @uses dojo/_base/array
* @uses dojo/dom
* @uses dojo/dom-class
* @uses dojo/dom-style
* @uses dojo/dom-construct
* @uses dojo/request/script
* @uses GlobalStorage
* @uses Array
* @uses Dictionary
* @uses Util
* @uses TmplUtil
*/
define([
// Dojo
"dojo/_base/declare", "dojo/query", "dojo/_base/array", "dojo/dom", "dojo/dom-class", "dojo/dom-style",
"dojo/dom-construct", "dojo/request/script",
// RAMP
"ramp/globalStorage", "ramp/map",
// Utils
"utils/array", "utils/dictionary", "utils/util", "utils/tmplUtil"],
function (
// Dojo
declare, dojoQuery, dojoArray, dom, domClass, domStyle, domConstruct, requestScript,
// RAMP
GlobalStorage, RampMap,
// Utils,
UtilArray, UtilDict, UtilMisc, UtilTmpl) {
"use strict";
return {
/**
* Updates some of the Strings on the HTML page using the config string resources
*
* @method loadStrings
*/
loadStrings: function () {
// doesn't seem to be doing a lot, this function
},
/**
* Returns the feature layer config for the given url
*
* @param {String} url
* @param {String} wmsName WMS Layer name. Optional. Should only be provided if attempting to get a WMS layer.
* @method getLayerConfig
*/
getLayerConfig: function (url, wmsName) {
if (!GlobalStorage.urlCfg) {
GlobalStorage.urlCfg = {};
}
var res = UtilArray.find(GlobalStorage.config.wmsLayers.concat(GlobalStorage.config.featureLayers), function (layerConfig) {
if (wmsName == null) {
return layerConfig.url === url;
} else {
return (layerConfig.url.indexOf(url) >= 0 && layerConfig.layerInfo.name === wmsName);
}
});
GlobalStorage.urlCfg[url] = res;
return GlobalStorage.urlCfg[url];
},
getLayerConfigwithGuid: function (uuid) {
return UtilArray.find(GlobalStorage.config.wmsLayers.concat(GlobalStorage.config.featureLayers),
function (layerConfig) {
return layerConfig.uuid === uuid;
});
},
getLayerConfigWithId: function (id) {
return UtilArray.find(GlobalStorage.config.wmsLayers.concat(GlobalStorage.config.featureLayers),
function (layerConfig) {
return layerConfig.id === id;
});
},
/**
* Gets the defined symbology from a layer's web service
* @method _getSymbolConfig
* @param {String} layerUrl A URL to the feature layer service
* @param {String} wmsName WMS Layer name. Optional. Should only be provided if attempting to get a WMS layer.
* @returns {esri/layer/symbology} The defined symbology from the layer definition
*/
_getSymbolConfig: function (layerUrl, wmsName) {
return this.getLayerConfig(layerUrl, wmsName).symbology;
},
/**
* Gets the default symbology icon from a layer's web service
* @method getSymbolForLayer
* @param {Object} layer A feature layer
* @param {String} wmsName WMS Layer name. Optional. Should only be provided if attempting to get a WMS layer.
* @returns {icon} The default icon from the layer's symbology
*/
getSymbolForLayer: function (layer, wmsName) {
var symbolConfig = this._getSymbolConfig(layer.url, wmsName);
return symbolConfig.icons["default"];
},
/**
* Given a feature object or a graphic object (or any object that has a getLayer method and an
* attributes field) return the object containing the image URL and legend text for that
* feature/graphic object.
*
* @param {Object} feature
* @return {icon} The default icon used to represent the feature layer
* @method getSymbolForFeature
*/
getSymbolForFeature: function (feature) {
var layerConfig = this.getLayerConfig(feature.getLayer().url);
//as this function is used by templating, we piggyback the logic here
return UtilTmpl.getGraphicIcon(feature, layerConfig);
},
/*
* This method builds a complete service URL callout for a map configuration. The URL is built using a base URL and map ID, and a language culture code.
* @method getServiceURL
* @param {String} rampService The base URL for a web service that provide's valid map JSON configuration data
* @param {Number} mapID a unique identifier for a group of map configuration
* @param {String} language culture code either 'en' or 'fr'
*
*/
getServiceURL: function (rampService, mapID, language) {
var serviceURL = rampService + "configservice/map?mapid=" + mapID + "&lang=" + language;
return serviceURL;
}
};
});