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