From 444454f3ba8da72ef7c60f1a8ac73542fb9d8610 Mon Sep 17 00:00:00 2001
From: Armand Bahi <armand.bahi@veremes.com>
Date: Wed, 2 Jan 2019 14:43:02 +0100
Subject: [PATCH] Ajout des filtres sur le mode carto

---
 .../app/vmap/mapmanager/mapmanager.js         | 58 ++++++++++++++++---
 .../javascript/app/vmap/tools/insert.js       |  6 +-
 .../javascript/app/vmap/tools/location.js     |  2 +-
 .../app/vmap/tools/select/advancedselect.js   |  6 +-
 .../app/vmap/tools/select/basicselect.js      |  4 +-
 .../app/vmap/tools/select/select.js           |  2 +-
 6 files changed, 61 insertions(+), 17 deletions(-)

diff --git a/src/module_vmap/module/javascript/app/vmap/mapmanager/mapmanager.js b/src/module_vmap/module/javascript/app/vmap/mapmanager/mapmanager.js
index d42d368d..39bb4e0f 100644
--- a/src/module_vmap/module/javascript/app/vmap/mapmanager/mapmanager.js
+++ b/src/module_vmap/module/javascript/app/vmap/mapmanager/mapmanager.js
@@ -1487,6 +1487,8 @@ nsVmap.nsMapManager.MapManager.prototype.getBusinessObjectsFromLayers = function
                 'bo_geom_type': aBos[ii]['geom_type'],
                 'bo_min_edition_scale': aBos[ii]['min_edition_scale'],
                 'bo_max_edition_scale': aBos[ii]['max_edition_scale'],
+                'bo_enable_location': aBos[ii]['enable_location'],
+                'bo_enable_selection': aBos[ii]['enable_selection'],
                 'bo_index': goog.isDefAndNotNull(aBos[ii]['index']) ? aBos[ii]['index'] : 1000000
             };
         }
@@ -1498,19 +1500,40 @@ nsVmap.nsMapManager.MapManager.prototype.getBusinessObjectsFromLayers = function
 /**
  * Use getQueryableLayers to get the queryable business objects, group by bo_id if the same bo is used by two different layers
  * @param {boolean} bOnlyVisible true if you want to get only the visible layers
+ * @param {boolean} bSelectionEnabled true if you want to get only the selection enable bos
+ * @param {boolean} bLocationEnabled true if you want to get only the location enable bos
  * @returns {object} the queryables business objects
  * @export
  */
-nsVmap.nsMapManager.MapManager.prototype.getQueryableBusinessObjects = function (bOnlyVisible) {
+nsVmap.nsMapManager.MapManager.prototype.getQueryableBusinessObjects = function (bOnlyVisible, bSelectionEnabled, bLocationEnabled) {
     oVmap.log('nsVmap.nsMapManager.MapManager.prototype.getQueryableBusinessObjects');
 
     var oBusinessObjects = this.getBusinessObjectsFromLayers(this.getQueryableLayers(bOnlyVisible));
     var oQueryableBOs = {};
+    var bSelectionTestPass = true;
+    var bLocationTestPass = true;
 
     for (var key in oBusinessObjects) {
         if (goog.isDefAndNotNull(oBusinessObjects[key]['bo_user_rights'])) {
             if (oBusinessObjects[key]['bo_user_rights'].indexOf('SELECT') !== -1) {
-                oQueryableBOs[key] = oBusinessObjects[key];
+
+                bSelectionTestPass = true;
+                bLocationTestPass = true;
+
+                if (bSelectionEnabled) {
+                    if (!oBusinessObjects[key]['bo_enable_selection']) {
+                        bSelectionTestPass = false;
+                    }
+                }
+                if (bLocationEnabled) {
+                    if (!oBusinessObjects[key]['bo_enable_location']) {
+                        bLocationTestPass = false;
+                    }
+                }
+
+                if (bSelectionTestPass && bLocationTestPass) {
+                    oQueryableBOs[key] = oBusinessObjects[key];
+                }
             }
         }
     }
@@ -1521,14 +1544,16 @@ nsVmap.nsMapManager.MapManager.prototype.getQueryableBusinessObjects = function
 /**
  * Use getQueryableLayers to get the queryable business objects, group by bo_id if the same bo is used by two different layers
  * @param {boolean} bOnlyVisible true if you want to get only the visible layers
+ * @param {boolean} bSelectionEnabled true if you want to get only the selection enable bos
+ * @param {boolean} bLocationEnabled true if you want to get only the location enable bos
  * @returns {array} the queryables business objects
  * @export
  */
-nsVmap.nsMapManager.MapManager.prototype.getQueryableBusinessObjectsAsArray = function (bOnlyVisible) {
+nsVmap.nsMapManager.MapManager.prototype.getQueryableBusinessObjectsAsArray = function (bOnlyVisible, bSelectionEnabled, bLocationEnabled) {
     oVmap.log('nsVmap.nsMapManager.MapManager.prototype.getQueryableBusinessObjectsAsArray');
 
     var aQueryableBOs = [];
-    var oQueryableBOs = this.getQueryableBusinessObjects(bOnlyVisible);
+    var oQueryableBOs = this.getQueryableBusinessObjects(bOnlyVisible, bSelectionEnabled, bLocationEnabled);
 
     for (var key in oQueryableBOs) {
         aQueryableBOs.push(oQueryableBOs[key]);
@@ -1578,16 +1603,35 @@ nsVmap.nsMapManager.MapManager.prototype.getQueryableGetFeatureInfoLayers = func
  * @returns {object}
  * @export
  */
-nsVmap.nsMapManager.MapManager.prototype.getInsertableBusinessObjects = function () {
+nsVmap.nsMapManager.MapManager.prototype.getInsertableBusinessObjects = function (bOnlyVisible, bSelectionEnabled, bLocationEnabled) {
     oVmap.log('nsVmap.nsMapManager.MapManager.prototype.getInsertableBusinessObjects');
 
-    var oBusinessObjects = this.getBusinessObjectsFromLayers(this.getQueryableLayers());
+    var oBusinessObjects = this.getBusinessObjectsFromLayers(this.getQueryableLayers(bOnlyVisible));
     var aInsertableBOs = [];
+    var bSelectionTestPass = true;
+    var bLocationTestPass = true;
 
     for (var key in oBusinessObjects) {
         if (goog.isDefAndNotNull(oBusinessObjects[key]['bo_user_rights'])) {
             if (oBusinessObjects[key]['bo_user_rights'].indexOf('INSERT') !== -1) {
-                aInsertableBOs.push(oBusinessObjects[key]);
+
+                bSelectionTestPass = true;
+                bLocationTestPass = true;
+
+                if (bSelectionEnabled) {
+                    if (!oBusinessObjects[key]['bo_enable_selection']) {
+                        bSelectionTestPass = false;
+                    }
+                }
+                if (bLocationEnabled) {
+                    if (!oBusinessObjects[key]['bo_enable_location']) {
+                        bLocationTestPass = false;
+                    }
+                }
+
+                if (bSelectionTestPass && bLocationTestPass) {
+                    aInsertableBOs.push(oBusinessObjects[key]);
+                }
             }
         }
     }
diff --git a/src/module_vmap/module/javascript/app/vmap/tools/insert.js b/src/module_vmap/module/javascript/app/vmap/tools/insert.js
index ce07b268..3e2a40ce 100644
--- a/src/module_vmap/module/javascript/app/vmap/tools/insert.js
+++ b/src/module_vmap/module/javascript/app/vmap/tools/insert.js
@@ -256,7 +256,7 @@ nsVmap.nsToolsManager.Insert.prototype.inserttoolController = function ($scope,
     /**
      * Queryable Business Objects
      */
-    $scope['aQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjectsAsArray(true);
+    $scope['aQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjectsAsArray(true, true, false);
 
     /**
      * Business objects avaliable for avoiding superpositions
@@ -416,8 +416,8 @@ nsVmap.nsToolsManager.Insert.prototype.inserttoolController.prototype.loadInsert
 
     this.$scope_.$applyAsync(function () {
         setTimeout(function () {
-            this_.$scope_['aInsertableBOs'] = oVmap.getMapManager().getInsertableBusinessObjects();
-            this_.$scope_['aQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjectsAsArray(true);
+            this_.$scope_['aInsertableBOs'] = oVmap.getMapManager().getInsertableBusinessObjects(true, true, false);
+            this_.$scope_['aQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjectsAsArray(true, true, false);
 
             // Mobile: cache le bouton "Insertion" si aucun bo est insertable
             if (goog.isDefAndNotNull(this_.$scope_['aInsertableBOs'])) {
diff --git a/src/module_vmap/module/javascript/app/vmap/tools/location.js b/src/module_vmap/module/javascript/app/vmap/tools/location.js
index 415bd9cb..f5af7b56 100644
--- a/src/module_vmap/module/javascript/app/vmap/tools/location.js
+++ b/src/module_vmap/module/javascript/app/vmap/tools/location.js
@@ -348,7 +348,7 @@ nsVmap.nsToolsManager.Location.prototype.locationController.prototype.addScale =
 nsVmap.nsToolsManager.Location.prototype.locationController.prototype.setBusinessObjectsList = function () {
     oVmap.log('nsVmap.nsToolsManager.Location.prototype.locationController.prototype.setBusinessObjectsList');
 
-    this['oBusinessObjects'] = oVmap.getMapManager().getQueryableBusinessObjects();
+    this['oBusinessObjects'] = oVmap.getMapManager().getQueryableBusinessObjects(false, false, true);
 };
 
 /**
diff --git a/src/module_vmap/module/javascript/app/vmap/tools/select/advancedselect.js b/src/module_vmap/module/javascript/app/vmap/tools/select/advancedselect.js
index 85c43ac9..1d4d012d 100644
--- a/src/module_vmap/module/javascript/app/vmap/tools/select/advancedselect.js
+++ b/src/module_vmap/module/javascript/app/vmap/tools/select/advancedselect.js
@@ -185,7 +185,7 @@ nsVmap.nsToolsManager.AdvancedSelect.prototype.AdvancedSelectController = functi
     /**
      * Queryable business objects
      */
-    this['oQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjects(true);
+    this['oQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjects(true, true, false);
 
     /**
      * Business objects list
@@ -237,7 +237,7 @@ nsVmap.nsToolsManager.AdvancedSelect.prototype.AdvancedSelectController = functi
         this_.$scope_.$applyAsync(function () {
 
             // rempli this.oQueryableBOs
-            this_['oQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjects(true);
+            this_['oQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjects(true, true, false);
 
             // rempli this.aBusinessObjectsList
             goog.array.clear(this_['aBusinessObjectsList']);
@@ -448,7 +448,7 @@ nsVmap.nsToolsManager.AdvancedSelect.prototype.AdvancedSelectController.prototyp
     this.EWKTGeometry = EWKTGeometry;
 
     // Récupère la liste des bo interrogeables
-    var oQueryableBOs = oVmap.getMapManager().getQueryableBusinessObjects(true);
+    var oQueryableBOs = oVmap.getMapManager().getQueryableBusinessObjects(true, true, false);
 
     // Met le compteur de requêtes en cours au nombre de requêtes à effectuer
     this.requestCounter_ = Object.keys(oQueryableBOs).length;
diff --git a/src/module_vmap/module/javascript/app/vmap/tools/select/basicselect.js b/src/module_vmap/module/javascript/app/vmap/tools/select/basicselect.js
index 200baf00..cd9c3943 100755
--- a/src/module_vmap/module/javascript/app/vmap/tools/select/basicselect.js
+++ b/src/module_vmap/module/javascript/app/vmap/tools/select/basicselect.js
@@ -835,8 +835,8 @@ nsVmap.nsToolsManager.BasicSelect.prototype.basicSelectController.prototype.setQ
 
         // rempli this.oQueryableBOs et aQueryableBOs
         this_['aQueryableLayers'] = oVmap.getMapManager().getQueryableGetFeatureInfoLayers(true);
-        this_['oQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjects(true);
-        this_['aQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjectsAsArray(true);
+        this_['oQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjects(true, true, false);
+        this_['aQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjectsAsArray(true, true, false);
         this_['aBusinessObjectsList'] = Object.keys(this_['oQueryableBOs']);
 
         // Élément sélectionné par défaut
diff --git a/src/module_vmap/module/javascript/app/vmap/tools/select/select.js b/src/module_vmap/module/javascript/app/vmap/tools/select/select.js
index 0944cee5..40e76003 100755
--- a/src/module_vmap/module/javascript/app/vmap/tools/select/select.js
+++ b/src/module_vmap/module/javascript/app/vmap/tools/select/select.js
@@ -688,7 +688,7 @@ nsVmap.nsToolsManager.Select.prototype.selectController.prototype.loadQueryableB
 
     this_.$scope_.$applyAsync(function () {
         setTimeout(function () {
-            this_['aQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjectsAsArray(true);
+            this_['aQueryableBOs'] = oVmap.getMapManager().getQueryableBusinessObjectsAsArray(true, true, false);
 
             // Snapping
             for (var i = 0; i < this_['aQueryableBOs'].length; i++) {
-- 
GitLab