From de3450b82549c0bf986af5e809c82ac58975c230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Carretero?= <frederic.carretero@veremes.com> Date: Wed, 23 Jan 2019 16:29:38 +0100 Subject: [PATCH] =?UTF-8?q?Coche=20ou=20d=C3=A9coche=20auto.=20le=20bouton?= =?UTF-8?q?=20pour=20activer=20ou=20d=C3=A9s.=20toutes=20les=20couches?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/vmap/mapmanager/layerstree.js | 31 ++++++++++++++++--- .../module/template/layers/layertree.html | 1 + 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/module_vmap/module/javascript/app/vmap/mapmanager/layerstree.js b/src/module_vmap/module/javascript/app/vmap/mapmanager/layerstree.js index 8d7dcf69..48180b62 100644 --- a/src/module_vmap/module/javascript/app/vmap/mapmanager/layerstree.js +++ b/src/module_vmap/module/javascript/app/vmap/mapmanager/layerstree.js @@ -665,6 +665,8 @@ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.toggleLay } else { this.closeLayersMenus(); oLayer['displayedMenu'] = true; + // Si toutes les couches sont activés : le checkbox pour activer ou désactiver toutes les couches est coché. + this.setAllSublayersActivationCheckbox(oLayer["olLayer"]); } // Resize la fenêtre @@ -747,6 +749,9 @@ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.toggleSub this.activeSublayer(olLayer, sSublayer); } + // Si toutes les couches sont activés : le checkbox pour activer ou désactiver toutes les couches est coché. + this.setAllSublayersActivationCheckbox(olLayer); + // oVmap['scope'].$broadcast('layersChanged'); }; @@ -1028,13 +1033,31 @@ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.setSublay */ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.toggleAllSubLayers = function (oLayer, sCheckboxId) { oVmap.log('nsVmap.nsMapManager.LayersTree.LayertreeController.toggleAllSubLayers'); - var aAvaliableSublayers = angular.copy(oLayer["olLayer"]["get"]('sublayers')); + var aAvailableSublayers = angular.copy(oLayer["olLayer"]["get"]('sublayers')); var bLayersVisibility = document.getElementById(sCheckboxId).checked; - for (var i = 0; i < aAvaliableSublayers.length; i++) { + for (var i = 0; i < aAvailableSublayers.length; i++) { if (bLayersVisibility || i == 0) - this.activeSublayer(oLayer["olLayer"], aAvaliableSublayers[i]); + this.activeSublayer(oLayer["olLayer"], aAvailableSublayers[i]); else - this.unactiveSublayer(oLayer["olLayer"], aAvaliableSublayers[i], '#' + oLayer["olLayer"].$$hashKey + '_sublayer_' + aAvaliableSublayers[i] + '_visible_checkbox'); + this.unactiveSublayer(oLayer["olLayer"], aAvailableSublayers[i], '#' + oLayer["olLayer"].$$hashKey + '_sublayer_' + aAvailableSublayers[i] + '_visible_checkbox'); } oVmap['scope'].$broadcast('layersChanged'); }; + +/* +* LayertreeController.prototype.setAllSublayersActivationCheckbox - Coche ou décoche le checkbox pour activer ou désactiver toutes les couches +* +* @param {ol.Layer} olLayer +* @export +*/ +nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.setAllSublayersActivationCheckbox = function(olLayer) { + oVmap.log('nsVmap.nsMapManager.LayersTree.LayertreeController.setAllSublayersActivationCheckbox'); + var aAvailableSublayers = olLayer.get('sublayers'); + var aActiveSublayers = olLayer.get('activeSublayers'); + if (goog.isArray(aAvailableSublayers) && goog.isArray(aAvailableSublayers)) { + if (aAvailableSublayers.length == aActiveSublayers.length) + olLayer["allSublayersActive"] = true; + else + olLayer["allSublayersActive"] = false; + } +}; diff --git a/src/module_vmap/module/template/layers/layertree.html b/src/module_vmap/module/template/layers/layertree.html index 9fe281ac..182e3af0 100644 --- a/src/module_vmap/module/template/layers/layertree.html +++ b/src/module_vmap/module/template/layers/layertree.html @@ -126,6 +126,7 @@ type="checkbox" style="cursor:pointer; position: absolute" title="Définition de la visibilité de toutes les couches" + ng-checked="layer.olLayer.allSublayersActive" ng-click="ctrl.toggleAllSubLayers(layer, layer.$$hashKey + '_all_sublayer_visibility_checkbox')"> <label for="{{layer.$$hashKey}}_all_sublayer_visibility_checkbox" style="cursor:pointer" title="Définition de la visibilité de toutes les couches"></label> </div> -- GitLab