UNPKG

geoportal-extensions-openlayers

Version:

![GitHub package.json version](https://img.shields.io/github/package-json/v/IGNF/geoportal-extensions?filename=build%2Fscripts%2Frelease%2Fpackage-openlayers.json)

243 lines (206 loc) 7.95 kB
var BoostReliefDOM = { // ################################################################### // // ######################### Main container ########################## // // ################################################################### // /** * Add uuid to the tag ID * @param {String} id - id selector * @returns {String} uid - id selector with an unique id */ _addUID : function (id) { var uid = (this._uid) ? id + "-" + this._uid : id; return uid; }, /** * Creation du container principal (DOM) * * @returns {DOMElement} container - layer switcher DOM element */ _createMainContainerElement : function () { var container = document.createElement("div"); container.id = this._addUID("GPboostRelief"); container.className = "GPwidget"; return container; }, /** * Creation du selecteur (caché) pour l'affichage/masquage des slides de boostRelief (DOM) * * @param {Boolean} collapsed - option indiquant si le control est déplié * * @returns {DOMElement} checkbox DOM */ _createMainBoostReliefShowElement : function (collapsed) { var input = document.createElement("input"); input.id = this._addUID("GPshowBoostReliefList"); input.type = "checkbox"; if (collapsed) { input.checked = true; } return input; }, // ################################################################### // // ############################ Relief tool ########################### // // ################################################################### // /** * Creation du container des outils avancés du layer (DOM) * * @param {Object} brOptions - options du control boostRelief * * @returns {DOMElement} container */ _createAdvancedToolElement : function (brOptions) { // exemple : // <div id="GPadvancedToolsRelief_ID_Layer1" class="GPlayerAdvancedToolsRelief"> // <!-- _createAdvancedToolOpacityElement --> // </div> var container = document.createElement("div"); container.className = "GPlayerAdvancedToolsRelief"; var array = this._createAdvancedToolReliefElement(brOptions.scale, brOptions.defaultBoost); for (var j = 0; j < array.length; j++) { container.appendChild(array[j]); } return container; }, /** * Creation de l'icone de gestion du relief du layer (DOM) * * @param {Object} scale - définition de l'echelle que le slider utilise (min,max,step) * @param {Number} defaultBoost - valeur d'exageration par défaut * * @returns {DOMElement[]} array of two containers */ _createAdvancedToolReliefElement : function (scale, defaultBoost) { // exemple : // <div id="GPReliefLayerId_ID_Layer1" class="GPlayerReliefLayerId" title="Layer ID"> // <span id="GPReliefLayerId_ID_Layer1">Layer1</span> // </div> // // <div id="GPrelief_ID_Layer1" class="GPlayerRelief" title="Opacité"> // <input id="GPreliefRange_ID_Layer1" type="range" value="100" oninput="GPchangeLayerRelief(this);" onchange="GPchangeLayerRelief(this);"> // </div> // <div class="GPlayerReliefValue" id="GPreliefValueDiv_ID_Layer1"> // <span id="GPreliefValue_ID_Layer1">100</span> // % // </div> var list = []; // curseur pour changer l'exageration du relief var divB = document.createElement("div"); divB.className = "GPlayerRelief"; divB.title = "Relief"; // le relief est à un facteur 1 par défaut var relief = 1; var input = document.createElement("input"); input.id = this._addUID("GPreliefValueDiv"); input.type = "range"; // echelle de 1 à 50 par defaut if (!scale) { scale = { min : 1, max : 50, step : 1 }; }; input.min = scale.min || 1; input.max = scale.max || 50; input.step = scale.step || 1; // le relief est à un facteur 1 par défaut var defaultBoostValue = 1; if (defaultBoost) { defaultBoostValue = defaultBoost; } // the reliefValue given must me in the slider range if (defaultBoostValue > input.max) { defaultBoostValue = input.max; } if (defaultBoostValue < input.min) { defaultBoostValue = input.min; } // mise à jour des couches et du slider une fois le controle ajouté input.value = defaultBoostValue; // add event for relief change var context = this; if (input.addEventListener) { input.addEventListener( "change", function (e) { context._onChangeLayerRelief(e); } ); } else if (input.attachEvent) { // internet explorer input.attachEvent( "onchange", function (e) { context._onChangeLayerRelief(e); } ); } if (input.addEventListener) { input.addEventListener( "input", function (e) { context._onChangeLayerRelief(e); } ); } else if (input.attachEvent) { // internet explorer input.attachEvent( "oninput", function (e) { context._onChangeLayerRelief(e); } ); } divB.appendChild(input); // Valeur d'echelle du relief var divC = document.createElement("div"); divC.id = this._addUID("GPreliefValueDiv"); divC.className = "GPlayerReliefValue"; var span = document.createElement("span"); span.id = this._addUID("GPreliefValue"); span.innerHTML = "x" + relief; divC.appendChild(span); list.push(divB); list.push(divC); return list; }, /** * Création du conteneur principal des couches MNT boostRelief (DOM) * * @returns {DOMElement} div DOM */ _createMainBoostReliefListContainer : function () { var div = document.createElement("div"); div.id = this._addUID("GPBoostReliefListContainer"); div.className = "GPpanel"; return div; }, /** * Show boostRelief control * @param {Boolean} isDesktop - specifies if the support is desktop or tactile * * @returns {DOMElement} DOM element */ _createMainPictoElement : function () { var self = this; var label = document.createElement("label"); label.id = this._addUID("GPshowBoostReliefListPicto"); label.className = "GPshowAdvancedToolPicto"; label.htmlFor = this._addUID("GPshowBoostReliefList"); label.title = "Afficher/Masquer le control d'exageration du relief"; var spanOpenClose = document.createElement("span"); spanOpenClose.id = this._addUID("GPshowBoostReliefOpenClose"); spanOpenClose.className = "GPshowAdvancedToolOpen"; /** Evenement de type 'click' sur le picto du controle */ label.addEventListener("click", function () { if (document.getElementById(self._addUID("GPshowBoostReliefList")).checked) { document.getElementById(self._addUID("GPBoostReliefListContainer")).style.display = "none"; } else { document.getElementById(self._addUID("GPBoostReliefListContainer")).style.display = "block"; } }); label.appendChild(spanOpenClose); return label; } }; export default BoostReliefDOM;