goog.provide('M.control.GetFeatureInfo');
goog.require('M.Control');
goog.require('M.utils');
goog.require('M.exception');
goog.require('goog.dom.classlist');
(function() {
/**
* @classdesc
* Main constructor of the class. Creates a GetFeatureInfo
* control to provides a popup with information about the place
* where the user has clicked inside the map
*
* @constructor
* @param {string} format - Format response
* @param {object} options - Control options
* @extends {M.Control}
* @api stable
*/
M.control.GetFeatureInfo = (function(format, options) {
if (M.utils.isUndefined(M.impl.control.GetFeatureInfo)) {
M.exception('La implementación usada no puede crear controles GetFeatureInfo');
}
options = (options || {});
// implementation of this control
var impl = new M.impl.control.GetFeatureInfo(format, options);
// calls the super constructor
goog.base(this, impl, M.control.GetFeatureInfo.NAME);
});
goog.inherits(M.control.GetFeatureInfo, M.Control);
/**
* This function creates the view to the specified map
*
* @public
* @function
* @param {M.Map} map - Facade map
* @returns {Promise} HTML template
* @api stable
*/
M.control.GetFeatureInfo.prototype.createView = function(map) {
return M.template.compile(M.control.GetFeatureInfo.TEMPLATE, {
'jsonp': true
});
};
/**
* This function returns the HTML button control.
*
* @public
* @function
* @param {HTMLElement} element - Template control
* @returns {HTMLElement} HTML control button
* @api stable
* @export
*/
M.control.GetFeatureInfo.prototype.getActivationButton = function(element) {
return element.querySelector('button#m-getfeatureinfo-button');
};
/**
* This function checks if an object is equals
* to this control
*
* @public
* @function
* @param {*} obj - Object to compare
* @returns {boolean} equals - Returns if they are equal or not
* @api stable
*/
M.control.GetFeatureInfo.prototype.equals = function(obj) {
var equals = false;
if (obj instanceof M.control.GetFeatureInfo) {
equals = (this.name === obj.name);
}
return equals;
};
/**
* Name to identify this control
* @const
* @type {string}
* @public
* @api stable
*/
M.control.GetFeatureInfo.NAME = 'getfeatureinfo';
/**
* Title for the popup
* @const
* @type {string}
* @public
* @api stable
*/
M.control.GetFeatureInfo.POPUP_TITLE = 'Información';
/**
* Template for this controls - button
* @const
* @type {string}
* @public
* @api stable
*/
M.control.GetFeatureInfo.TEMPLATE = 'getfeatureinfo.html';
/**
* Template for this controls - popup
* @const
* @type {string}
* @public
* @api stable
*/
M.control.GetFeatureInfo.POPUP_TEMPLATE = 'getfeatureinfo_popup.html';
})();