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 8d7dcf698ccfa849a34b3d2ed0d4e1405ad134ff..48180b6225a0ec4491107b91902a4bbe75206edf 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 9fe281ac8f44430a2349cf06046505f1e3300198..182e3af087bc48c984f0803fde4cd91dc9ec8a0f 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>