File: src\js\RAMP\Modules\graphicExtension.js
/*global define, tmpl */
//the "use strict" forces the ECMA Script 5 interpretation of the code
/**
*
*
* @module RAMP
* @submodule Map
*/
/**
* GraphicExtension class containing helper functions for graphic objects.
* Note this class requires the config object.
*
* @class GraphicExtension
* @static
* @uses RAMP
* @uses Array
* @uses Dictionary
* @uses Util
* @uses templates/point_details_list_Template.html
* @uses templates/point_details_list_item_Template.html
*/
define([
// RAMP
"ramp/ramp",
// Utils
"utils/array", "utils/dictionary", "utils/util", "utils/tmplHelper",
//details template
"dojo/text!./templates/feature_details_template.json"],
function (
// RAMP
Ramp,
// Utils
UtilArray, UtilDict, UtilMisc, TmplHelper,
//json details template
feature_details_template) {
"use strict";
return {
/**
* Given a graphic object, returns the config object associated with the graphic's layer.
*
* @method getLayerConfig
* @param {esri/Graphic} graphic a graphic object or a feature object
* @return {esri/Graphic}
*/
getLayerConfig: function (graphic) {
return Ramp.getLayerConfig(graphic.getLayer().url);
},
/**
* Returns the oid of the given graphic object
*
* @param {esri/Graphic} graphic
* @method getOid
*/
getOid: function (graphic) {
var objectIdField = graphic.getLayer().objectIdField;
return graphic.attributes[objectIdField];
},
/**
* Get popup content for a graphic (i.e. a point)
* This logic is customized per project
*
*
* @method getTextContent
* @private
* @param {Object} graphic
* @return {Object} found graphic object
*/
getTextContent: function (graphic) {
var templateName = Ramp.getLayerConfig(graphic.getLayer().url).detailTemplate;
function fillTemplate(graphic) {
tmpl.cache = {};
tmpl.templates = JSON.parse(
TmplHelper.stringifyTemplate(feature_details_template));
var datawrapper = TmplHelper.dataBuilder(graphic, graphic.getLayer().url),
result = tmpl(templateName, datawrapper);
return result;
}
//return generateHtml(graphic.attributes);
return fillTemplate(graphic);
},
/**
* Returns the content of the name field of the provided graphic object
*
* @method getGraphicTitle
* @param {esri/Graphic} graphic a graphic object or a feature object
* @return {}
*/
getGraphicTitle: function (graphic) {
return graphic.attributes[this.getLayerConfig(graphic).nameField];
}
};
});