diff --git a/conf/requires/config.js b/conf/requires/config.js index b0a1e942349940d7a023e69735488e3bd7bab04d..a2d2c3757e624ebd7b7204411a02e9331f3c3246 100644 --- a/conf/requires/config.js +++ b/conf/requires/config.js @@ -29,6 +29,7 @@ var oApplicationFiles = { 'modules/vmap/css/ol.css', 'modules/vmap/css/vmap.less', 'modules/vm4ms/less/main.less', + 'modules/anc/less/main.less', 'css/lib/codemirror/codemirror.css', 'css/lib/codemirror/codemirror_foldgutter.css', 'css/lib/codemirror/map.css', diff --git a/src/closure/conf/externs/vmap.js b/src/closure/conf/externs/vmap.js index b799165a0202a74c3d1fe51fe8ad666558122205..d9eff8e1c7ab9a59d3f9949b81a96f48824d9204 100755 --- a/src/closure/conf/externs/vmap.js +++ b/src/closure/conf/externs/vmap.js @@ -32,7 +32,7 @@ function bootstrapTable(arg1) {} function sortable(arg1) {} /** - * + * * @param {string} key * @returns {undefined} */ @@ -72,4 +72,4 @@ ol.source.TileEvent.tile * @type {string} * @see http://www.w3.org/TR/pointerevents/#the-touch-action-css-property */ -CSSProperties.prototype.touchAction; \ No newline at end of file +CSSProperties.prototype.touchAction; diff --git a/src/module_anc/module/forms/anc_parametrage/anc_parametrage_anc_entreprise.json b/src/module_anc/module/forms/anc_parametrage/anc_parametrage_anc_entreprise.json index 27f8a47c00c14ad16617f92841e2317d1af2b5da..c09edf1e1eff68046dae39dca4db31a3b77ae811 100755 --- a/src/module_anc/module/forms/anc_parametrage/anc_parametrage_anc_entreprise.json +++ b/src/module_anc/module/forms/anc_parametrage/anc_parametrage_anc_entreprise.json @@ -23,12 +23,12 @@ "fields":[ { "type":"label", - "name":"id_com", + "name":"commune", "label":"Commune", "disabled":false, "required":false, "nb_cols":6, - "id":"id_com_2_1" + "id":"commune_2_1" }, { "type":"label", @@ -343,7 +343,7 @@ "label":"Tab 0", "elements":[ "id_parametre_entreprises", - "id_com", + "commune", "siret", "raison_sociale", "nom_entreprise", @@ -382,8 +382,8 @@ { "fields":[ { - "type":"select", - "name":"id_com", + "type":"editable_select", + "name":"commune", "label":"Commune", "required":false, "nb_cols":4, @@ -395,8 +395,8 @@ "distinct":"true", "label_key":"nom", "order_by":"nom", - "id_key":"id_com", - "attributs":"id_com|nom" + "id_key":"nom", + "attributs":"nom" } }, { @@ -454,7 +454,7 @@ "label":"Tab 0", "elements":[ "search_button", - "id_com", + "commune", "raison_sociale", "nom_entreprise" ] @@ -472,22 +472,22 @@ { "fields":[ { - "type":"select", - "name":"id_com", + "type":"editable_select", + "name":"commune", "label":"Commune", "required":true, "nb_cols":6, - "id":"id_com_2_1", + "id":"commune_2_1", "datasource":{ "datasource_id":"datasource_1", "sort_order":"ASC", "distinct":"true", "label_key":"nom", "order_by":"nom", - "id_key":"id_com", - "attributs":"id_com|nom" + "id_key":"nom", + "attributs":"nom" }, - "id_from":"id_com_2_1_from" + "id_from":"commune_2_1_from" }, { "type":"text", @@ -830,7 +830,7 @@ { "label":"Tab 0", "elements":[ - "id_com", + "commune", "siret", "raison_sociale", "nom_entreprise", @@ -876,22 +876,22 @@ { "fields":[ { - "type":"select", - "name":"id_com", + "type":"editable_select", + "name":"commune", "label":"Commune", "required":true, "nb_cols":6, - "id":"id_com_2_1", + "id":"commune_2_1", "datasource":{ "datasource_id":"datasource_1", "sort_order":"ASC", "distinct":"true", "label_key":"nom", "order_by":"nom", - "id_key":"id_com", - "attributs":"id_com|nom" + "id_key":"nom", + "attributs":"nom" }, - "id_from":"id_com_2_1_from" + "id_from":"commune_2_1_from" }, { "type":"text", @@ -1283,7 +1283,7 @@ "label":"Tab 0", "elements":[ "id_parametre_entreprises", - "id_com", + "commune", "siret", "raison_sociale", "nom_entreprise", @@ -1316,7 +1316,7 @@ "datasource_1":{ "type":"web_service", "dataType":"tableValue", - "name":"id_com", + "name":"commune", "description":"", "parameters":{ "schema":"s_cadastre", @@ -1326,4 +1326,4 @@ "id":"datasource_1" } } -} \ No newline at end of file +} diff --git a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_rapport.js b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_rapport.js new file mode 100644 index 0000000000000000000000000000000000000000..87b9c63c84d97ac6ba482d42839178b578817e60 --- /dev/null +++ b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_rapport.js @@ -0,0 +1,149 @@ + +var $q = angular.element(vitisApp.appMainDrtv).injector().get(['$q']); +var $log = angular.element(vitisApp.appMainDrtv).injector().get(['$log']); +var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(['envSrvc']); +var propertiesSrvc = angular.element(vitisApp.appMainDrtv).injector().get(['propertiesSrvc']); + +/** + * constructor_form + * Function called by form init only if javascript boolean is Equal true + * @param {type} scope Scope who contain the formreader + * @param {type} s_url URL of file for destructor + * @returns {undefined} + */ +var constructor_form = function (scope, s_url) { + console.log("Constructor Rapports"); + + var sBoId; + console.log("propertiesSrvc: ", propertiesSrvc); + if (angular.isDefined(propertiesSrvc)) { + if (angular.isDefined(propertiesSrvc['anc'])) { + if (angular.isDefined(propertiesSrvc['anc']['controle'])) { + if (angular.isDefined(propertiesSrvc['anc']['controle']['business_object_id'])) { + sBoId = propertiesSrvc['anc']['controle']['business_object_id']; + } + } + } + } + + getReportsArray(sBoId).then(function(aPrintReports){ + console.log("aPrintReports: ", aPrintReports); + + if (typeof aPrintReports !== 'object') { + aPrintReports = []; + } + + var sHTMLList = getReportsListAsHTML(aPrintReports); + $('#anc_saisie_controle_rapports_list_container').parent().html(sHTMLList); + }); +}; + +/** + * destructor_form + * Function called before constructor_form of a new form to remove all the watchers, variables, and others objects useless for others forms + * @returns {undefined} + */ +var destructor_form = function () { + console.log("Destructor Rapports"); +}; + +/** + * Download the BO reports list + * @param {string} business_object_id + * @return {promise} + */ +var getReportsArray = function(sBoId) { + $log.info('getReportsArray'); + + var deferred = $q.defer(); + + if (!angular.isDefined(sBoId) || sBoId == '') { + console.error('Objet métier non configuré'); + deferred.resolve([]); + } else { + + // Récupère la liste des rapports disponibles + ajaxRequest({ + 'method': 'GET', + 'url': propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + '/vmap/printreports', + 'headers': { + 'Accept': 'application/x-vm-json' + }, + 'params': { + 'attributs': 'name|printreport_id|business_object_id|business_object_id_field|multiobject', + 'filter': { + "column": "business_object_id", + "compare_operator": "=", + "value": sBoId + } + }, + 'success': function (response) { + if (!angular.isDefined(response['data'])) { + console.error('response.data undefined: ', response); + deferred.resolve([]); + return 0; + } + if (!angular.isDefined(response['data']['data'])) { + console.error('Aucun rapport disponible pour ' + sBoId); + deferred.resolve([]); + return 0; + } + var avaliablePrintReports = response['data']['data']; + deferred.resolve(avaliablePrintReports); + } + }); + } + + return deferred.promise; +} + +/** + * Retourne une liste HTML contenant les rapports + * @param {array} aPrintReports liste des rapports + * @return {dom} Liste au format HTML + */ +var getReportsListAsHTML = function(aPrintReports) { + + if (!aPrintReports.length > 0) { + return 'Aucun rapport disponible'; + } + + var domLi; + var sHTMLLi; + var domUl = $(document.createElement('ul')).addClass('anc_saisie_controle_rapports_list'); + for (var i = 0; i < aPrintReports.length; i++) { + + sHTMLLi = '<li>'; + sHTMLLi += '<a href="javascript:void(0)" class="padding-sides-10">'; + sHTMLLi += '<span class="glyphicon glyphicon-download-alt margin-sides-5"></span>'; + sHTMLLi += aPrintReports[i]['name']; + sHTMLLi += '<span class="margin-sides-5 icon-files-o"></span>'; + sHTMLLi += '</a>'; + sHTMLLi += '</li>'; + domLi = $(sHTMLLi); + + $(domLi).click(angular.bind(this, generateReport, aPrintReports[i])); + $(domUl).append($(domLi)); + } + + return domUl; +} + +/** + * Génère le rapport vMap correspondant + * + * @param {object} oPrintReport Définition du rapport + */ +var generateReport = function(oPrintReport) { + + if (angular.isDefined(oVmap.generatePrintReport)) { + oVmap.generatePrintReport({ + 'printReportId': oPrintReport['printreport_id'], + 'ids': envSrvc['sId'] + }); + } else { + var sMessage = 'Module vMap requis pour effectuer cette opération'; + console.error(sMessage); + $.notify(sMessage, 'error'); + } +} diff --git a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_rapport.json b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_rapport.json new file mode 100644 index 0000000000000000000000000000000000000000..c8a5758c3e64da694c2019ad12a307e74a5e4f7d --- /dev/null +++ b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_rapport.json @@ -0,0 +1,73 @@ +{ + "display": { + "name": "anc_saisie_anc_controle_controle_schema-form", + "title": "ANC_SAISIE_ANC_CONTROLE_CONTROLE_SCHEMA_TITLE", + "input_size": "xxs", + "nb_cols": 12, + "javascript": false, + "rows": [ + { + "fields": [ + { + "type": "button", + "class": "btn-ungroup btn-group-sm", + "nb_cols": 12, + "name": "display_button", + "id": "display_button", + "buttons": [ + { + "type": "button", + "name": "return_list", + "label": "FORM_RETURN_LIST", + "class": "btn-primary", + "event": "setMode(\"search\")" + } + ] + } + ] + } + ] + }, + "search": { + "name": "anc_saisie_anc_controle_controle_schema-form", + "title": "ANC_SAISIE_ANC_CONTROLE_CONTROLE_SCHEMA_TITLE", + "input_size": "xxs", + "nb_cols": 12, + "javascript": false, + "rows": [ + + ] + }, + "insert": { + "name": "anc_saisie_anc_controle_controle_schema-form", + "title": "ANC_SAISIE_ANC_CONTROLE_CONTROLE_SCHEMA_TITLE_INSERT", + "input_size": "xxs", + "nb_cols": 12, + "javascript": false, + "rows": [ + + ], + "event": "sendSimpleForm()" + }, + "update": { + "name": "anc_saisie_anc_controle_controle_rapport-form", + "title": "ANC_SAISIE_ANC_CONTROLE_CONTROLE_RAPPORT_TITLE", + "input_size": "xxs", + "nb_cols": 12, + "javascript": true, + "rows": [ + { + "fields": [ + { + "type": "label", + "name": "raports", + "label": "Rapports", + "id": "anc_saisie_controle_rapports_list_container", + "nb_cols": 12 + } + ] + } + ], + "event": "sendSimpleForm()" + } +} diff --git a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_schema.json b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_schema.json index 6b4ecd01b65da0e454d662f0ea067911c83a6e97..45642a3929dd6073831ede459b1149145b68e4d4 100755 --- a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_schema.json +++ b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_schema.json @@ -64,13 +64,13 @@ "label": "", "required": false, "nb_cols": 12, - "id": "Element_0_1_1", + "id":"anc_saisie_anc_controle_schema_map", "style": { "height": "350px" }, "grid_height": "150px", "map_options": { - "proj": "EPSG:3857", + "proj": "EPSG:2154", "base_proj": "EPSG:4326", "output_format": "geojson", "type": "OSM", @@ -111,11 +111,11 @@ "attributes_def": [{ "label": "Type", "name": "composant_type" - }, + }, { "label": "Nom", "name": "label" - }, + }, { "label": "Observations", "name": "observations" @@ -216,27 +216,36 @@ { "fields": [ { - "type": "number", - "label": "Taille", + "type": "slider", "name": "size", - "required": false, - "default_value": 50, - "nb_cols": 12 + "label": "Taille", + "nb_cols": 12, + "options": { + "min": 0, + "max": 300, + "precision": 1, + "step": 1 + }, + "default_value": 50 } ] - }, + }, { "fields": [ { - "type": "text", - "label": "Angle", + "type": "slider", "name": "rotation", - "required": false, - "default_value": 0, - "nb_cols": 12 + "label": "Angle", + "nb_cols": 12, + "options": { + "min": 0, + "max": 360, + "precision": 1, + "step": 1 + } } ] - }, + }, { "fields": [ { @@ -298,6 +307,7 @@ ] } ], + "initEvent": "initAncControleSchemaFormMap()", "event": "sendSimpleForm()" } -} \ No newline at end of file +} diff --git a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_traitement.json b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_traitement.json index d1969097d8a6bddaa0a62ee9b85a1cd0b1486eb5..9c06715511f0dc1829fb151d5d609b1d473a7b31 100755 --- a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_traitement.json +++ b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_controle_controle_traitement.json @@ -423,6 +423,19 @@ } ] }, + { + "fields":[ + { + "type":"tinymce", + "name":"tra_commentaire", + "label":"Commentaires", + "disabled":false, + "required":false, + "nb_cols":12, + "id":"tra_commentaire_17_1" + } + ] + }, { "fields":[ { @@ -616,7 +629,8 @@ "tra_vm_tuy_perf", "tra_vm_sab_qual", "tra_vm_sab_ep", - "tra_vm_geomembrane" + "tra_vm_geomembrane", + "tra_commentaire" ] } ] @@ -1569,6 +1583,18 @@ } ] }, + { + "fields":[ + { + "type":"tinymce", + "name":"tra_commentaire", + "label":"Commentaires", + "nb_cols":12, + "id":"tra_commentaire_17_1", + "nb_rows":10 + } + ] + }, { "fields":[ { @@ -1716,7 +1742,8 @@ "tra_vm_tuy_perf", "tra_vm_sab_qual", "tra_vm_sab_ep", - "tra_vm_geomembrane" + "tra_vm_geomembrane", + "tra_commentaire" ] } ] @@ -2666,6 +2693,18 @@ } ] }, + { + "fields":[ + { + "type":"tinymce", + "name":"tra_commentaire", + "label":"Commentaires", + "nb_cols":12, + "id":"tra_commentaire_17_1", + "nb_rows":10 + } + ] + }, { "fields":[ { @@ -2866,7 +2905,8 @@ "tra_vm_tuy_perf", "tra_vm_sab_qual", "tra_vm_sab_ep", - "tra_vm_geomembrane" + "tra_vm_geomembrane", + "tra_commentaire" ] } ] @@ -3404,4 +3444,4 @@ "id":"datasource_41" } } -} \ No newline at end of file +} diff --git a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_installation.json b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_installation.json index 53408c465e814843b03e29f9445cc0f5ff29cdd3..9fb7f5ed2d7d323698590236ea6c5d94100e70e6 100755 --- a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_installation.json +++ b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_installation.json @@ -698,14 +698,13 @@ "id":"Element_0_5_1" }, { - "type":"integer", + "type":"text", "name":"prop_code_postal", "label":"Code postal", "required":false, "pattern":"", "nb_cols":2, - "id":"Element_1_5_2", - "max_length": 5 + "id":"Element_1_5_2" }, { "type":"text", @@ -928,14 +927,13 @@ "id":"parc_adresse_6_1" }, { - "type":"integer", + "type":"text", "name":"code_postal", "label":"Code Postal", "disabled":false, "required":false, "nb_cols":2, - "id":"code_postal_7_1", - "max_length": 5 + "id":"code_postal_7_1" }, { "type":"text", @@ -1038,14 +1036,13 @@ "id":"prop_adresse_11_1" }, { - "type":"integer", + "type":"text", "name":"prop_code_postal", "label":"Code postal", "disabled":false, "required":false, "nb_cols":2, - "id":"prop_code_postal_12_1", - "max_length": 5 + "id":"prop_code_postal_12_1" }, { "type":"text", @@ -1656,14 +1653,13 @@ "id":"parc_adresse_6_1" }, { - "type":"integer", + "type":"text", "name":"code_postal", "label":"Code postal", "disabled":false, "required":false, "nb_cols":4, - "id":"code_postal_7_1", - "max_length": 5 + "id":"code_postal_7_1" }, { "type":"text", @@ -1766,14 +1762,13 @@ "id":"prop_adresse_11_1" }, { - "type":"integer", + "type":"text", "name":"prop_code_postal", "label":"Code postal", "disabled":false, "required":false, "nb_cols":4, - "id":"prop_code_postal_12_1", - "max_length": 5 + "id":"prop_code_postal_12_1" }, { "type":"text", diff --git a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_installation_installation_suivi.json b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_installation_installation_suivi.json index 3fa7403c885eecb9b18e8be300315c8146467e3d..76476b275a6405f3ee3e1e5b78fd88a04150ef50 100755 --- a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_installation_installation_suivi.json +++ b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_installation_installation_suivi.json @@ -307,7 +307,7 @@ "label":"Emplacement", "required":false, "nb_cols":12, - "id":"geom_7_1", + "id":"anc_saisie_anc_installation_suivi_map", "style":{ "height":"350px" }, @@ -411,4 +411,4 @@ "datasources":{ } -} \ No newline at end of file +} diff --git a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_traitement.json b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_traitement.json index 6475ffa6e35a671620ceb874b23ed116aa6e7f0c..ca350ea373b0755fcf51918f2e54ef586a8e1a28 100755 --- a/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_traitement.json +++ b/src/module_anc/module/forms/anc_saisie/anc_saisie_anc_traitement.json @@ -430,6 +430,19 @@ } ] }, + { + "fields":[ + { + "type":"tinymce", + "name":"tra_commentaire", + "label":"Commentaires", + "disabled":false, + "required":false, + "nb_cols":12, + "id":"tra_commentaire_17_1" + } + ] + }, { "fields":[ { @@ -635,7 +648,8 @@ "schema_f", "documents_f", "plan_f", - "tra_vm_geomembrane" + "tra_vm_geomembrane", + "tra_commentaire" ] } ] @@ -1804,6 +1818,18 @@ } ] }, + { + "fields":[ + { + "type":"tinymce", + "name":"tra_commentaire", + "label":"Commentaires", + "nb_cols":12, + "id":"tra_commentaire_17_1", + "nb_rows":10 + } + ] + }, { "fields":[ { @@ -1961,7 +1987,8 @@ "id_installation", "Element_0", "Element_7", - "tra_vm_geomembrane" + "tra_vm_geomembrane", + "tra_commentaire" ] } ] @@ -3022,6 +3049,18 @@ } ] }, + { + "fields":[ + { + "type":"tinymce", + "name":"tra_commentaire", + "label":"Commentaires", + "nb_cols":12, + "id":"tra_commentaire_17_1", + "nb_rows":10 + } + ] + }, { "fields":[ { @@ -3235,7 +3274,8 @@ "schema_f", "documents_f", "plan_f", - "tra_vm_geomembrane" + "tra_vm_geomembrane", + "tra_commentaire" ] } ] @@ -3773,4 +3813,4 @@ "id":"datasource_41" } } -} \ No newline at end of file +} diff --git a/src/module_anc/module/javascript/anc_saisie_map.js b/src/module_anc/module/javascript/anc_saisie_map.js new file mode 100644 index 0000000000000000000000000000000000000000..0ecd9857a302ebdb888e128f58ad5bd89b35d391 --- /dev/null +++ b/src/module_anc/module/javascript/anc_saisie_map.js @@ -0,0 +1,396 @@ +/* global vitisApp, goog, angular, bootbox, oVFB */ + +'use strict'; +goog.provide('vmap.anc.anc_saisie_map'); +vitisApp.on('appMainDrtvLoaded', function () { + + var $q = angular.element(vitisApp.appMainDrtv).injector().get(['$q']); + var $log = angular.element(vitisApp.appMainDrtv).injector().get(['$log']); + var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(['envSrvc']); + var $rootScope = angular.element(vitisApp.appMainDrtv).injector().get(["$rootScope"]); + var propertiesSrvc = angular.element(vitisApp.appMainDrtv).injector().get(['propertiesSrvc']); + + /** + * Initialise la carte du menu installation > suivi + */ + angular.element(vitisApp.appMainDrtv).scope()['initAncInstallationSuiviFormMap'] = function () { + $log.info("initAncInstallationSuiviFormMap"); + + var this_ = this; + var scope = this; + + // Remplace si besoin l'identifiant et le type de carte à utiliser + var sMapId = this['getAncFormMapId']('installation'); + this['setFormMapTreeByMapId'](sMapId); + + // Résultat de la propertie anc.installation.zoom_on_parcelle + var bZoomOnParcelle = this['getAncZoomOnParcellePropertie'](propertiesSrvc, 'installation'); + + // Récupère l'identifiant de la parcelle correspondante + var sIdPar = this['getAncInstallSuiviIdPar'](scope); + + // Récupère la géométrie de l'installation + var sGeom = this['ancMapGetFormGeom'](scope, 'installation'); + + if (!goog.isDefAndNotNull(sGeom)) { + // Zoom la carte sur la parcelle + if (goog.isDefAndNotNull(sIdPar) && bZoomOnParcelle === true) { + this['ancMapZoomOnParcelle'](sIdPar, 'installation'); + } + } + } + + /** + * Initialise la carte du menu controle > schema + */ + angular.element(vitisApp.appMainDrtv).scope()['initAncControleSchemaFormMap'] = function () { + $log.info("initAncInstallationSuiviFormMap"); + + var this_ = this; + var scope = angular.element("form[name='" + envSrvc["oFormDefinition"][envSrvc["sFormDefinitionName"]]["name"]).scope(); + + // Remplace si besoin l'identifiant et le type de carte à utiliser + var sMapId = this['getAncFormMapId']('controle'); + this['setFormMapTreeByMapId'](sMapId); + + // Résultat de la propertie anc.installation.zoom_on_parcelle + var bZoomOnParcelle = this['getAncZoomOnParcellePropertie'](propertiesSrvc, 'controle'); + + // Récupère la géométrie de l'installation + var sGeom = this['ancMapGetFormGeom'](scope, 'controle'); + + // Récupère l'identifiant de la parcelle correspondante + var sIdPar = this['getAncControleSchemaIdPar'](scope).then(function(sIdPar){ + + // Zoom la carte sur la parcelle + if (!goog.isDefAndNotNull(sGeom)) { + if (goog.isDefAndNotNull(sIdPar) && bZoomOnParcelle === true) { + this_['ancMapZoomOnParcelle'](sIdPar, 'controle'); + } + } + }); + } + + /** + * Remplace la carte OSM si une carte est fournie sur properties.anc.installation..map_id + * @param {string} sMapId map id + */ + angular.element(vitisApp.appMainDrtv).scope()['setFormMapTreeByMapId'] = function (sMapId) { + $log.info("initAncInstallationSuiviFormMapTree"); + + var formScope = angular.element("form[name='" + envSrvc["oFormDefinition"][envSrvc["sFormDefinitionName"]]["name"]).scope(); + + var oForm; + if (goog.isDefAndNotNull(formScope)) { + if (goog.isDefAndNotNull(formScope['oFormDefinition'])) { + if (goog.isDefAndNotNull(formScope['oFormDefinition'][envSrvc["sFormDefinitionName"]])) { + oForm = formScope['oFormDefinition'][envSrvc["sFormDefinitionName"]]; + } + } + } + if (goog.isDefAndNotNull(oForm) && goog.isDefAndNotNull(sMapId)) { + if (goog.isArray(oForm['rows'])) { + for (var i = 0; i < oForm['rows'].length; i++) { + if (goog.isArray(oForm['rows'][i]['fields'])) { + for (var ii = 0; ii < oForm['rows'][i]['fields'].length; ii++) { + if (goog.isObject(oForm['rows'][i]['fields'][ii]['map_options'])) { + if(oForm['rows'][i]['fields'][ii]['type'] === 'map_osm'){ + oForm['rows'][i]['fields'][ii]['type'] = 'map_vmap'; + } + oForm['rows'][i]['fields'][ii]['map_options']['type'] = 'vmap'; + oForm['rows'][i]['fields'][ii]['map_options']['map_id'] = sMapId; + } + } + } + } + } + } + } + + /** + * Récupère l'identifiant de la cate fourni sur properties.anc.installation.map_id + * + * @return {string|undefined} map_id + */ + angular.element(vitisApp.appMainDrtv).scope()['getAncFormMapId'] = function (sObject) { + + var sMapId; + if (goog.isDefAndNotNull(propertiesSrvc)) { + if (goog.isDefAndNotNull(propertiesSrvc["anc"])) { + if (goog.isDefAndNotNull(propertiesSrvc["anc"][sObject])) { + if (goog.isDefAndNotNull(propertiesSrvc["anc"][sObject]["map_id"])) { + if (propertiesSrvc["anc"][sObject]["map_id"] !== false) { + sMapId = propertiesSrvc["anc"][sObject]["map_id"]; + } + } + } + } + } + return sMapId; + } + + /** + * Get propertie anc.installation.zoom_on_parcelle + * + * @param {object} oProperties Properties + * @return {boolean} anc.installation.zoom_on_parcelle value + */ + angular.element(vitisApp.appMainDrtv).scope()['getAncZoomOnParcellePropertie'] = function(oProperties, sObject){ + $log.info('getAncZoomOnParcellePropertie'); + + var bZoomOnParcelle = false; + if (goog.isDefAndNotNull(oProperties)) { + if (goog.isDefAndNotNull(oProperties["anc"])) { + if (goog.isDefAndNotNull(oProperties["anc"][sObject])) { + if (goog.isDefAndNotNull(oProperties["anc"][sObject]["zoom_on_parcelle"])) { + if (oProperties["anc"][sObject]["zoom_on_parcelle"] === true) { + bZoomOnParcelle = true; + } + } + } + } + } + return bZoomOnParcelle; + } + + /** + * Récupère l'id_par correspondant à l'installation + * + * @param {object} scope description + * @return {string|undefined} id_par de la parcelle correspondante + */ + angular.element(vitisApp.appMainDrtv).scope()['getAncInstallSuiviIdPar'] = function(scope){ + $log.info('getAncInstallSuiviIdPar'); + + var sParcelle; + if (goog.isDefAndNotNull(scope['oFormValues'])) { + if (goog.isDefAndNotNull(scope['sFormDefinitionName'])) { + if (goog.isDefAndNotNull(scope['oFormValues'][scope['sFormDefinitionName']])) { + if (goog.isDefAndNotNull(scope['oFormValues'][scope['sFormDefinitionName']]['id_parc'])) { + sParcelle = scope['oFormValues'][scope['sFormDefinitionName']]['id_parc']; + } + } + } + } + + return sParcelle; + } + + /** + * Récupère l'id_par correspondant à l'installation dans une promesse + * + * @param {object} scope description + * @return {promise} + */ + angular.element(vitisApp.appMainDrtv).scope()['getAncControleSchemaIdPar'] = function(scope){ + $log.info('getAncControleSchemaIdPar'); + + var deferred = $q.defer(); + + var sInstall = this['getAncControleSchemaIdInstall'](scope); + + // Requête Ajax pour récupérer la définition complète de l'install + if (!goog.isDefAndNotNull(sInstall) || sInstall == '') { + console.error('id_installation non valide'); + deferred.reject(); + } else { + // Récupère la liste des rapports disponibles + ajaxRequest({ + 'method': 'GET', + 'url': propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + '/anc/installations/' + sInstall, + 'headers': { + 'Accept': 'application/x-vm-json' + }, + 'success': function (response) { + if (!goog.isDefAndNotNull(response['data'])) { + console.error('response.data undefined: ', response); + deferred.reject(); + return 0; + } + if (!goog.isDefAndNotNull(response['data']['data'])) { + console.error('Aucune installation disponible pour ' + sInstall); + deferred.reject(); + return 0; + } + if (!goog.isDefAndNotNull(response['data']['data'][0])) { + console.error('Aucune installation disponible pour ' + sInstall); + deferred.reject(); + return 0; + } + if (!goog.isDefAndNotNull(response['data']['data'][0]['id_parc'])) { + console.error('Aucune parcelle disponible pour ' + sInstall); + deferred.reject(); + return 0; + } + var sParcelle = response['data']['data'][0]['id_parc']; + deferred.resolve(sParcelle); + } + }); + } + + return deferred.promise; + } + + /** + * Récupère l'id_install correspondant au contrôle + * + * @param {object} scope description + * @return {string|undefined} id_install de la parcelle correspondante + */ + angular.element(vitisApp.appMainDrtv).scope()['getAncControleSchemaIdInstall'] = function(scope){ + $log.info('getAncControleSchemaIdInstall'); + + var sInstall; + if (goog.isDefAndNotNull(scope['oFormValues'])) { + if (goog.isDefAndNotNull(scope['sFormDefinitionName'])) { + if (goog.isDefAndNotNull(scope['oFormValues'][scope['sFormDefinitionName']])) { + if (goog.isDefAndNotNull(scope['oFormValues'][scope['sFormDefinitionName']]['id_installation'])) { + sInstall = scope['oFormValues'][scope['sFormDefinitionName']]['id_installation']; + } + } + } + } + + return sInstall; + } + + /** + * Récupère la geom correspondant à l'installation + * + * @param {object} scope description + * @return {string|undefined} + */ + angular.element(vitisApp.appMainDrtv).scope()['ancMapGetFormGeom'] = function(scope, sObject){ + $log.info('ancMapGetFormGeom'); + + var sGeom, sField; + + if (sObject === 'installation') { + sField = 'geom'; + } + if (sObject === 'controle') { + sField = 'composants'; + } + + if (goog.isDefAndNotNull(sField)) { + if (goog.isDefAndNotNull(scope['oFormValues'])) { + if (goog.isDefAndNotNull(scope['sFormDefinitionName'])) { + if (goog.isDefAndNotNull(scope['oFormValues'][scope['sFormDefinitionName']])) { + if (goog.isDefAndNotNull(scope['oFormValues'][scope['sFormDefinitionName']][sField])) { + sGeom = scope['oFormValues'][scope['sFormDefinitionName']][sField]; + } + } + } + } + } + + return sGeom; + } + + /** + * Requeête Ajax pour récupérer la définition de la parcelle + * + * @param {string} sIdPar id_par de la parcelle + * @return {promise} + */ + angular.element(vitisApp.appMainDrtv).scope()['ancMapGetParcelleDef'] = function(sIdPar){ + $log.info('ancMapGetParcelleDef'); + + var deferred = $q.defer(); + + if (!goog.isDefAndNotNull(sIdPar) || sIdPar == '') { + console.error('id_par non valide'); + deferred.reject(); + } else { + + // Récupère la liste des rapports disponibles + ajaxRequest({ + 'method': 'GET', + 'url': propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + '/cadastreV2/parcelles/' + sIdPar, + 'headers': { + 'Accept': 'application/x-vm-json' + }, + 'success': function (response) { + if (!goog.isDefAndNotNull(response['data'])) { + console.error('response.data undefined: ', response); + deferred.reject(); + return 0; + } + if (!goog.isDefAndNotNull(response['data']['data'])) { + console.error('Aucune parcelle disponible pour ' + sIdPar); + deferred.reject(); + return 0; + } + if (!goog.isDefAndNotNull(response['data']['data'][0])) { + console.error('Aucune parcelle disponible pour ' + sIdPar); + deferred.reject(); + return 0; + } + if (!goog.isDefAndNotNull(response['data']['data'][0]['id_par'])) { + console.error('Aucune parcelle disponible pour ' + sIdPar); + deferred.reject(); + return 0; + } + var oParcelle = response['data']['data'][0]; + deferred.resolve(oParcelle); + } + }); + } + + return deferred.promise; + } + + /** + * Met à jour l'étendue de la carte sur des features + * + * @param {object} oMap carte + * @param {array} aFeatures features + */ + angular.element(vitisApp.appMainDrtv).scope()['ancMapUpdateOlMapExtent'] = function(oMap, aFeatures){ + $log.info('ancMapUpdateOlMapExtent'); + + if (goog.isDefAndNotNull(aFeatures[0])) { + var featureExtent = aFeatures[0].getGeometry().getExtent(); + oMap.MapObject.getView().fit(featureExtent); + if (aFeatures[0].getGeometry().getType() === 'Point') { + oMap.MapObject.getView().setZoom(15); + } + } + } + + /** + * Zoom la carte sur la parcelle correspondante + * + * @param {string} sIdPar id_par de la parcelle + * @return {promise} + */ + angular.element(vitisApp.appMainDrtv).scope()['ancMapZoomOnParcelle'] = function(sIdPar, sObject){ + $log.info('ancMapZoomOnParcelle'); + + var this_ = this; + var sMapElemId; + + if (sObject === 'installation') { + sMapElemId = 'anc_saisie_anc_installation_suivi_map'; + } else if (sObject === 'controle') { + sMapElemId = 'anc_saisie_anc_controle_schema_map'; + } + + if (goog.isDefAndNotNull(sIdPar) || sIdPar == '') { + this['ancMapGetParcelleDef'](sIdPar).then(function(oParcelle){ + setTimeout(function () { + var oMap = angular.element($('#' + sMapElemId)).scope()['oMap']; + var sGeom = oParcelle['geom']; + if (!goog.isDefAndNotNull(sGeom) || sGeom == '') { + console.error('parcelle ' + sIdPar + ' non valide'); + return null; + } + var aFeatures = oMap.getFeaturesByString(oParcelle['geom'], 'ewkt'); + this_['ancMapUpdateOlMapExtent'](oMap, aFeatures); + }, 1000); + }); + } else { + console.error('parcelle ' + sIdPar + ' non valide'); + } + } +}); diff --git a/src/module_anc/module/javascript/script_module.js b/src/module_anc/module/javascript/script_module.js index 7d639dfe35c9936fdd5640a7ef12929b90c2702c..81e3922428dd7ee1abab391cc19ab0b2818772da 100755 --- a/src/module_anc/module/javascript/script_module.js +++ b/src/module_anc/module/javascript/script_module.js @@ -2,7 +2,9 @@ 'use strict'; goog.provide('vmap.anc.script_module'); +goog.require('vmap.anc.anc_saisie_map'); vitisApp.on('appMainDrtvLoaded', function () { + /** * initAncControlForm function. * Traitements avant l'affichage du formulaire de la section "Dossier" de l'onglet "Contrôle". @@ -337,9 +339,13 @@ vitisApp.on('appMainDrtvLoaded', function () { var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); var $rootScope = angular.element(vitisApp.appMainDrtv).injector().get(["$rootScope"]); var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["envSrvc"]); - // + $log.info("initAncInstallationSuiviForm"); - // Attends la fin du chargement de tous les champs du formulaire. + + // Initialise la carte + this['initAncInstallationSuiviFormMap'](); + + // Attend la fin du chargement de tous les champs du formulaire. var clearListener = $rootScope.$on('formExtracted', function (event, sFormDefinitionName) { // Supprime le "listener". clearListener(); @@ -621,9 +627,9 @@ vitisApp.on('appMainDrtvLoaded', function () { */ } else { oFormFieldsToDisplay = { - "BON FONCTIONNEMENT": ["tra_dist_hab", "tra_dist_lim_parc", "tra_dist_veget", "tra_dist_puit", "tra_regrep_mat", "tra_regrep_affl", "tra_regrep_equi", "tra_regbl_mat", "tra_regbl_affl", "tra_regcol_mat", "tra_regcol_affl", "maj", "maj_date", "create", "create_date", "Element_0", "Element_1", "Element_3", "Element_4", "Element_5", "Element_6"], - "CONCEPTION": ["maj", "maj_date", "create", "create_date", "Element_0", "Element_6"], - "REALISATION": ["tra_dist_lim_parc", "tra_dist_veget", "tra_dist_puit", "tra_vm_grav_qual", "tra_vm_grav_ep", "tra_vm_geo_text", "tra_vm_bon_mat", "tra_regrep_mat", "tra_regrep_affl", "tra_regrep_equi", "tra_regrep_perf", "tra_regbl_mat", "tra_regbl_affl", "tra_regbl_hz", "tra_regbl_epand", "tra_regbl_perf", "tra_regcol_mat", "tra_regcol_affl", "tra_regcol_hz", "maj", "maj_date", "create", "create_date", "Element_0", "Element_1", "Element_2", "Element_3", "Element_4", "Element_5", "Element_6", "tra_dist_hab", "tra_vm_racine", "tra_vm_humidite", "tra_vm_imper", "tra_vm_geogrille", "tra_vm_tuy_perf", "tra_vm_sab_qual", "tra_vm_sab_ep", "tra_vm_geomembrane"] + "BON FONCTIONNEMENT": ["tra_dist_hab", "tra_dist_lim_parc", "tra_dist_veget", "tra_dist_puit", "tra_regrep_mat", "tra_regrep_affl", "tra_regrep_equi", "tra_regbl_mat", "tra_regbl_affl", "tra_regcol_mat", "tra_regcol_affl", "maj", "maj_date", "create", "create_date", "Element_0", "Element_1", "Element_3", "Element_4", "Element_5", "Element_6", "tra_commentaire"], + "CONCEPTION": ["maj", "maj_date", "create", "create_date", "Element_0", "Element_6", "tra_commentaire"], + "REALISATION": ["tra_dist_lim_parc", "tra_dist_veget", "tra_dist_puit", "tra_vm_grav_qual", "tra_vm_grav_ep", "tra_vm_geo_text", "tra_vm_bon_mat", "tra_regrep_mat", "tra_regrep_affl", "tra_regrep_equi", "tra_regrep_perf", "tra_regbl_mat", "tra_regbl_affl", "tra_regbl_hz", "tra_regbl_epand", "tra_regbl_perf", "tra_regcol_mat", "tra_regcol_affl", "tra_regcol_hz", "maj", "maj_date", "create", "create_date", "Element_0", "Element_1", "Element_2", "Element_3", "Element_4", "Element_5", "Element_6", "tra_dist_hab", "tra_vm_racine", "tra_vm_humidite", "tra_vm_imper", "tra_vm_geogrille", "tra_vm_tuy_perf", "tra_vm_sab_qual", "tra_vm_sab_ep", "tra_vm_geomembrane", "tra_commentaire"] }; // var setTypeTraitement = function (event) { @@ -1135,9 +1141,9 @@ vitisApp.on('appMainDrtvLoaded', function () { var aFormFieldsToConcat = [envSrvc["sMode"] + "_button", "id_traitement", "id_controle", "tra_type", "id_installation"]; var oFormFieldsToDisplay, aFormFieldsToDisplay = []; oFormFieldsToDisplay = { - "BON FONCTIONNEMENT": ["tra_dist_hab", "tra_dist_lim_parc", "tra_dist_veget", "tra_dist_puit", "tra_regrep_mat", "tra_regrep_affl", "tra_regrep_equi", "tra_regbl_mat", "tra_regbl_affl", "tra_regcol_mat", "tra_regcol_affl", "maj", "maj_date", "create", "create_date", "Element_0", "Element_1", "Element_3", "Element_4", "Element_5", "Element_6"], - "CONCEPTION": ["maj", "maj_date", "create", "create_date", "Element_0", "Element_6"], - "REALISATION": ["tra_dist_lim_parc", "tra_dist_veget", "tra_dist_puit", "tra_vm_grav_qual", "tra_vm_grav_ep", "tra_vm_geo_text", "tra_vm_bon_mat", "tra_regrep_mat", "tra_regrep_affl", "tra_regrep_equi", "tra_regrep_perf", "tra_regbl_mat", "tra_regbl_affl", "tra_regbl_hz", "tra_regbl_epand", "tra_regbl_perf", "tra_regcol_mat", "tra_regcol_affl", "tra_regcol_hz", "maj", "maj_date", "create", "create_date", "Element_0", "Element_1", "Element_2", "Element_3", "Element_4", "Element_5", "Element_6", , "tra_vm_racine", "tra_vm_humidite", "tra_vm_imper", "tra_vm_geogrille", "tra_vm_tuy_perf", "tra_vm_sab_qual", "tra_vm_sab_ep", "tra_vm_geomembrane"] + "BON FONCTIONNEMENT": ["tra_dist_hab", "tra_dist_lim_parc", "tra_dist_veget", "tra_dist_puit", "tra_regrep_mat", "tra_regrep_affl", "tra_regrep_equi", "tra_regbl_mat", "tra_regbl_affl", "tra_regcol_mat", "tra_regcol_affl", "maj", "maj_date", "create", "create_date", "Element_0", "Element_1", "Element_3", "Element_4", "Element_5", "Element_6","tra_commentaire"], + "CONCEPTION": ["maj", "maj_date", "create", "create_date", "Element_0", "Element_6","tra_commentaire"], + "REALISATION": ["tra_dist_lim_parc", "tra_dist_veget", "tra_dist_puit", "tra_vm_grav_qual", "tra_vm_grav_ep", "tra_vm_geo_text", "tra_vm_bon_mat", "tra_regrep_mat", "tra_regrep_affl", "tra_regrep_equi", "tra_regrep_perf", "tra_regbl_mat", "tra_regbl_affl", "tra_regbl_hz", "tra_regbl_epand", "tra_regbl_perf", "tra_regcol_mat", "tra_regcol_affl", "tra_regcol_hz", "maj", "maj_date", "create", "create_date", "Element_0", "Element_1", "Element_2", "Element_3", "Element_4", "Element_5", "Element_6", , "tra_vm_racine", "tra_vm_humidite", "tra_vm_imper", "tra_vm_geogrille", "tra_vm_tuy_perf", "tra_vm_sab_qual", "tra_vm_sab_ep", "tra_vm_geomembrane","tra_commentaire"] }; // var setTypeTraitement = function (event) { diff --git a/src/module_anc/module/lang/lang-en.json b/src/module_anc/module/lang/lang-en.json index 9c458e29aced1e4ba66d568140a802113f7931bf..1487e6a0045603c213cd191d9f05ee99c01562a1 100644 --- a/src/module_anc/module/lang/lang-en.json +++ b/src/module_anc/module/lang/lang-en.json @@ -427,6 +427,7 @@ "ANC_SAISIE_ANC_CONTROLE_CONTROLE_PRETRAITEMENT_TITLE_UPDATE" : "Pretreatment n°{{sId}}", "ANC_SAISIE_ANC_CONTROLE_CONTROLE_PRETRAITEMENT_TITLE_DISPLAY" : "Pretreatment n°{{sId}}", "ANC_SAISIE_ANC_CONTROLE_CONTROLE_SCHEMA_TITLE" : "", + "ANC_SAISIE_ANC_CONTROLE_CONTROLE_RAPPORT_TITLE" : "Reports", "GRID_TITLE_ANC_SAISIE_ANC_CONTROLE_CONTROLE_TRAITEMENT" : "Liste des traitements du contrôle", "ANC_SAISIE_ANC_CONTROLE_CONTROLE_TRAITEMENT_TITLE_INSERT" : "Treatement", "ANC_SAISIE_ANC_CONTROLE_CONTROLE_TRAITEMENT_TITLE_UPDATE" : "Treatement n°{{sId}}", diff --git a/src/module_anc/module/lang/lang-fr.json b/src/module_anc/module/lang/lang-fr.json index 42e7f1224d3048de063b209203a858a81a7e75a0..b2fd7288a32cc36971715c24ac4c18e04739dc44 100644 --- a/src/module_anc/module/lang/lang-fr.json +++ b/src/module_anc/module/lang/lang-fr.json @@ -428,6 +428,7 @@ "ANC_SAISIE_ANC_CONTROLE_CONTROLE_PRETRAITEMENT_TITLE_UPDATE" : "Prétraitement n°{{sId}}", "ANC_SAISIE_ANC_CONTROLE_CONTROLE_PRETRAITEMENT_TITLE_DISPLAY" : "Prétraitement n°{{sId}}", "ANC_SAISIE_ANC_CONTROLE_CONTROLE_SCHEMA_TITLE" : "", + "ANC_SAISIE_ANC_CONTROLE_CONTROLE_RAPPORT_TITLE" : "Rapports", "GRID_TITLE_ANC_SAISIE_ANC_CONTROLE_CONTROLE_TRAITEMENT" : "Liste des traitements du contrôle", "ANC_SAISIE_ANC_CONTROLE_CONTROLE_TRAITEMENT_TITLE_INSERT" : "Traitement", "ANC_SAISIE_ANC_CONTROLE_CONTROLE_TRAITEMENT_TITLE_UPDATE" : "Traitement n°{{sId}}", diff --git a/src/module_anc/module/less/controle.less b/src/module_anc/module/less/controle.less new file mode 100644 index 0000000000000000000000000000000000000000..58349156f8a25029e8ebf618f3663700b2e0b4e4 --- /dev/null +++ b/src/module_anc/module/less/controle.less @@ -0,0 +1,29 @@ + + +ul.anc_saisie_controle_rapports_list { + float: left; + min-width: 50%; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); +} + +ul.anc_saisie_controle_rapports_list > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: 400; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} diff --git a/src/module_anc/module/less/installation.less b/src/module_anc/module/less/installation.less new file mode 100644 index 0000000000000000000000000000000000000000..e38d8f784d3187ee36503dd58890da72e2b6b8fe --- /dev/null +++ b/src/module_anc/module/less/installation.less @@ -0,0 +1,13 @@ +// Bouton "supprimer les installations". +button[name="anc_saisie_anc_installation_deleteFlexigrid"] { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +// Bouton "Ajouter une installation". +button[name="anc_saisie_anc_installation_add_smallFlexigrid"] { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; + margin-right: 100px; +} \ No newline at end of file diff --git a/src/module_anc/module/less/main.less b/src/module_anc/module/less/main.less new file mode 100644 index 0000000000000000000000000000000000000000..527f89c953f796ab8027de8bab8048ac2e37e216 --- /dev/null +++ b/src/module_anc/module/less/main.less @@ -0,0 +1,6 @@ +// LESS +@ui-grid-bg-image: "../images/ui-grid/wbg.gif"; +@font-color-purple: #6d1a67; +@test-color: black; +@import 'installation.less'; +@import 'controle.less'; diff --git a/src/module_anc/web_service/conf/properties.inc b/src/module_anc/web_service/conf/properties.inc index a9031e78ca538fae970a6fb1226362541fc3d0b2..49ff6cc5d92f56cd3041f402deee449567e41717 100755 --- a/src/module_anc/web_service/conf/properties.inc +++ b/src/module_anc/web_service/conf/properties.inc @@ -7,4 +7,9 @@ $properties["anc"]["code_postal"]["schema"] = ''; $properties["anc"]["code_postal"]["table"] = ''; $properties["anc"]["code_postal"]["column"] = ''; -?> \ No newline at end of file + $properties["anc"]["controle"]["business_object_id"] = ''; + $properties["anc"]["controle"]["map_id"] = false; + $properties["anc"]["controle"]["zoom_on_parcelle"] = true; + $properties["anc"]["installation"]["map_id"] = false; + $properties["anc"]["installation"]["zoom_on_parcelle"] = true; +?> diff --git a/src/module_anc/web_service/sql/sqlQueries.xml b/src/module_anc/web_service/sql/sqlQueries.xml index 2cac10d2514ed43b687b4cbb469f796fe2d06fb3..c3d9f5e91d0fa278d75cac91ec07ee441e599b86 100644 --- a/src/module_anc/web_service/sql/sqlQueries.xml +++ b/src/module_anc/web_service/sql/sqlQueries.xml @@ -3114,5 +3114,59 @@ ]]> </code> </query> + <query> + <type>init</type> + <version>2019.01.00</version> + <code> + <![CDATA[ + -- Frédéric le 16/01/2019 10:15 + UPDATE s_vitis.vm_table_field SET name = 'commune', width = 200 WHERE tab_id = (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'anc_entreprise') AND name = 'id_com'; + DELETE FROM s_vitis.vm_table_button WHERE tab_id = (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'anc_installation') AND label_id IN ('anc_13', 'anc_14'); + INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('add_smallFlexigrid',(SELECT nextval('s_vitis.seq_vm'::regclass)), 'AddSectionForm', 'anc_14', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'anc_installation'), (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'anc_installation')); + INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('deleteFlexigrid',(SELECT nextval('s_vitis.seq_vm'::regclass)), 'DeleteSelection', 'anc_13', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'anc_installation'), (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'anc_installation')); + UPDATE s_vitis.vm_tab SET sorted_dir = 'DESC' WHERE name = 'anc_installation'; + -- Armand 16/01/2019 15h01 + INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('section rapport', 'anc_135'); + INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('anc_135', 'en', 'Reports'); + INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('anc_135', 'fr', 'Rapports'); + INSERT INTO s_vitis.vm_section (label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ('anc_135', 'controle_rapport', 12, 'Javascript:loadSectionForm', (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'anc_controle'), 'simpleFormTpl.html', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'anc_controle'), 'anc'); + -- Frédéric le 16/01/2019 15:52 + ALTER TABLE s_anc.param_entreprise ADD COLUMN commune character varying(50); + UPDATE s_anc.param_entreprise SET commune = id_com; + UPDATE s_anc.param_entreprise as "pe" SET commune = (SELECT texte FROM s_cadastre.commune WHERE id_com = "pe".id_com) WHERE (SELECT texte FROM s_cadastre.commune WHERE id_com = "pe".id_com) is not null; + ALTER TABLE s_anc.param_entreprise ALTER COLUMN commune SET NOT NULL; + -- Frédéric 17/01/2019 09:20 + DROP RULE insert_v_controle ON s_anc.v_controle; + DROP VIEW s_anc.v_installation; + ALTER TABLE s_anc.installation ALTER COLUMN parc_adresse TYPE character varying(254); + ALTER TABLE s_anc.installation ALTER COLUMN code_postal TYPE character varying(254); + ALTER TABLE s_anc.installation ALTER COLUMN parc_commune TYPE character varying(254); + ALTER TABLE s_anc.installation ALTER COLUMN prop_adresse TYPE character varying(254); + ALTER TABLE s_anc.installation ALTER COLUMN prop_code_postal TYPE character varying(254); + ALTER TABLE s_anc.installation ALTER COLUMN prop_commune TYPE character varying(254); + CREATE OR REPLACE VIEW s_anc.v_installation AS SELECT installation.id_installation,installation.id_com,installation.id_parc,installation.parc_sup,installation.parc_parcelle_associees,installation.parc_adresse,installation.code_postal,installation.parc_commune,installation.prop_titre,installation.prop_nom_prenom,installation.prop_adresse,installation.prop_code_postal,installation.prop_commune,installation.prop_tel,installation.prop_mail,installation.bati_type,installation.bati_ca_nb_pp,installation.bati_ca_nb_eh,installation.bati_ca_nb_chambres,installation.bati_ca_nb_autres_pieces,installation.bati_ca_nb_occupant,installation.bati_nb_a_control,installation.bati_date_achat,installation.bati_date_mutation,installation.cont_zone_enjeu,installation.cont_zone_sage,installation.cont_zone_autre,installation.cont_zone_urba,installation.cont_zone_anc,installation.cont_alim_eau_potable,installation.cont_puits_usage,installation.cont_puits_declaration,installation.cont_puits_situation,installation.cont_puits_terrain_mitoyen,installation.observations,installation.maj,installation.maj_date,installation."create",installation.create_date,installation.archivage,installation.geom,installation.photo_f,installation.document_f,(installation.id_com::text || '_anc_'::text) || installation.id_installation AS num_dossier,v_commune.nom AS commune,v_vmap_parcelle_all_geom.section,v_vmap_parcelle_all_geom.parcelle,count(controle_1.*) AS nb_controle,controle_2.last_date_control,controle_2.cl_avis,controle_3.next_control,controle_4.cl_classe_cbf AS classement_installation FROM s_anc.installation LEFT JOIN s_anc.controle controle_1 ON installation.id_installation = controle_1.id_installation LEFT JOIN ( SELECT b.last_date_control, b.id_installation,controle.cl_avis FROM ( SELECT max(a.des_date_control) AS last_date_control,a.id_installation FROM ( SELECT controle_a.des_date_control,controle_a.id_installation FROM s_anc.controle controle_a WHERE controle_a.des_date_control < now()) a GROUP BY a.id_installation ORDER BY a.id_installation) b LEFT JOIN s_anc.controle ON b.id_installation = controle.id_installation AND b.last_date_control = controle.des_date_control) controle_2 ON installation.id_installation = controle_2.id_installation LEFT JOIN ( SELECT b.next_control,b.id_installation FROM ( SELECT min(a.next_control) AS next_control,a.id_installation FROM ( SELECT controle_b.id_installation,controle_b.des_date_control + '1 year'::interval * controle_b.des_interval_control::double precision AS next_control FROM s_anc.controle controle_b WHERE controle_b.des_interval_control > 0 AND (controle_b.des_date_control + '1 year'::interval * controle_b.des_interval_control::double precision) > now()) a GROUP BY a.id_installation ORDER BY a.id_installation) b) controle_3 ON installation.id_installation = controle_3.id_installation LEFT JOIN ( SELECT controle.cl_classe_cbf,b.id_installation FROM ( SELECT max(a.des_date_control) AS last_date_controle,a.id_installation FROM ( SELECT controle_c.des_date_control,controle_c.id_installation FROM s_anc.controle controle_c WHERE controle_c.des_date_control < now() AND controle_c.controle_type::text <> 'CONCEPTION'::text) a GROUP BY a.id_installation ORDER BY a.id_installation) b LEFT JOIN s_anc.controle ON b.id_installation = controle.id_installation AND b.last_date_controle = controle.des_date_control) controle_4 ON installation.id_installation = controle_4.id_installation LEFT JOIN s_cadastre.v_commune ON installation.id_com::bpchar = v_commune.id_com LEFT JOIN s_cadastre.v_vmap_parcelle_all_geom ON installation.id_parc::bpchar = v_vmap_parcelle_all_geom.id_par WHERE installation.id_com::text ~ similar_escape(( SELECT "user".restriction FROM s_vitis."user" WHERE "user".login::name = "current_user"()), NULL::text) GROUP BY installation.id_installation, v_commune.nom, v_vmap_parcelle_all_geom.section, v_vmap_parcelle_all_geom.parcelle, controle_2.cl_avis, controle_2.last_date_control, controle_3.next_control, controle_4.cl_classe_cbf; + ALTER TABLE s_anc.v_installation OWNER TO postgres; + GRANT ALL ON TABLE s_anc.v_installation TO postgres; + GRANT ALL ON TABLE s_anc.v_installation TO u_vitis; + GRANT ALL ON TABLE s_anc.v_installation TO anc_admin; + GRANT ALL ON TABLE s_anc.v_installation TO anc_user; + CREATE OR REPLACE RULE delete_v_installation AS ON DELETE TO s_anc.v_installation DO INSTEAD DELETE FROM s_anc.installation WHERE installation.id_installation = old.id_installation; + CREATE OR REPLACE RULE insert_v_installation AS ON INSERT TO s_anc.v_installation DO INSTEAD INSERT INTO s_anc.installation (id_installation, id_com, id_parc, parc_sup, parc_parcelle_associees, parc_adresse, code_postal, parc_commune, prop_titre, prop_nom_prenom, prop_adresse, prop_code_postal, prop_commune, prop_tel, prop_mail, bati_type, bati_ca_nb_pp, bati_ca_nb_eh, bati_ca_nb_chambres, bati_ca_nb_autres_pieces, bati_ca_nb_occupant, bati_nb_a_control, bati_date_achat, bati_date_mutation, cont_zone_enjeu, cont_zone_sage, cont_zone_autre, cont_zone_urba, cont_zone_anc, cont_alim_eau_potable, cont_puits_usage, cont_puits_declaration, cont_puits_situation, cont_puits_terrain_mitoyen, observations, maj, maj_date, "create", create_date, archivage, geom, photo_f, document_f) VALUES (new.id_installation, new.id_com, new.id_parc, new.parc_sup, new.parc_parcelle_associees, new.parc_adresse, new.code_postal, new.parc_commune, new.prop_titre, new.prop_nom_prenom, new.prop_adresse, new.prop_code_postal, new.prop_commune, new.prop_tel, new.prop_mail, new.bati_type, new.bati_ca_nb_pp, new.bati_ca_nb_eh, new.bati_ca_nb_chambres, new.bati_ca_nb_autres_pieces, new.bati_ca_nb_occupant, new.bati_nb_a_control, new.bati_date_achat, new.bati_date_mutation, new.cont_zone_enjeu, new.cont_zone_sage, new.cont_zone_autre, new.cont_zone_urba, new.cont_zone_anc, new.cont_alim_eau_potable, new.cont_puits_usage, new.cont_puits_declaration, new.cont_puits_situation, new.cont_puits_terrain_mitoyen, new.observations, new.maj, new.maj_date, new."create", new.create_date, new.archivage, new.geom, new.photo_f, new.document_f) RETURNING installation.id_installation,installation.id_com,installation.id_parc,installation.parc_sup,installation.parc_parcelle_associees,installation.parc_adresse,installation.code_postal,installation.parc_commune,installation.prop_titre,installation.prop_nom_prenom,installation.prop_adresse,installation.prop_code_postal,installation.prop_commune,installation.prop_tel,installation.prop_mail,installation.bati_type,installation.bati_ca_nb_pp,installation.bati_ca_nb_eh,installation.bati_ca_nb_chambres,installation.bati_ca_nb_autres_pieces,installation.bati_ca_nb_occupant,installation.bati_nb_a_control,installation.bati_date_achat,installation.bati_date_mutation,installation.cont_zone_enjeu,installation.cont_zone_sage,installation.cont_zone_autre,installation.cont_zone_urba,installation.cont_zone_anc,installation.cont_alim_eau_potable,installation.cont_puits_usage,installation.cont_puits_declaration,installation.cont_puits_situation,installation.cont_puits_terrain_mitoyen,installation.observations,installation.maj,installation.maj_date,installation."create",installation.create_date,installation.archivage,installation.geom,installation.photo_f,installation.document_f,(installation.id_com::text || '_anc_'::text) || installation.id_installation AS num_dossier,( SELECT commune.texte AS commune FROM s_cadastre.commune WHERE commune.id_com = installation.id_com::bpchar) AS commune,( SELECT parcelle.section FROM s_cadastre.parcelle WHERE parcelle.id_par = installation.id_parc::bpchar) AS section,( SELECT parcelle.parcelle FROM s_cadastre.parcelle WHERE parcelle.id_par = installation.id_parc::bpchar) AS parcelle,( SELECT count(*) AS nb_controle FROM s_anc.controle WHERE controle.id_installation = installation.id_installation) AS nb_controle,( SELECT controle.des_date_control FROM s_anc.controle WHERE controle.des_date_control < now() AND controle.id_installation = installation.id_installation ORDER BY controle.des_date_control DESC LIMIT 1) AS last_date_control,( SELECT controle.cl_avis FROM s_anc.controle WHERE controle.des_date_control < now() AND controle.id_installation = installation.id_installation ORDER BY controle.des_date_control DESC LIMIT 1) AS cl_avis,( SELECT controle.des_date_control + '1 year'::interval * controle.des_interval_control::double precision AS next_control FROM s_anc.controle WHERE controle.des_date_control < now() AND controle.id_installation = installation.id_installation ORDER BY controle.des_date_control LIMIT 1) AS next_control,( SELECT controle.cl_classe_cbf FROM s_anc.controle WHERE controle.des_date_control < now() AND controle.id_installation = installation.id_installation AND controle.controle_type::text <> 'CONCEPTION'::text ORDER BY controle.des_date_control DESC LIMIT 1) AS classement_installation; + CREATE OR REPLACE RULE update_v_installation AS ON UPDATE TO s_anc.v_installation DO INSTEAD UPDATE s_anc.installation SET id_com = new.id_com, id_parc = new.id_parc, parc_sup = new.parc_sup, parc_parcelle_associees = new.parc_parcelle_associees, parc_adresse = new.parc_adresse, code_postal = new.code_postal, parc_commune = new.parc_commune, prop_titre = new.prop_titre, prop_nom_prenom = new.prop_nom_prenom, prop_adresse = new.prop_adresse, prop_code_postal = new.prop_code_postal, prop_commune = new.prop_commune, prop_tel = new.prop_tel, prop_mail = new.prop_mail, bati_type = new.bati_type, bati_ca_nb_pp = new.bati_ca_nb_pp, bati_ca_nb_eh = new.bati_ca_nb_eh, bati_ca_nb_chambres = new.bati_ca_nb_chambres, bati_ca_nb_autres_pieces = new.bati_ca_nb_autres_pieces, bati_ca_nb_occupant = new.bati_ca_nb_occupant, bati_nb_a_control = new.bati_nb_a_control, bati_date_achat = new.bati_date_achat, bati_date_mutation = new.bati_date_mutation, cont_zone_enjeu = new.cont_zone_enjeu, cont_zone_sage = new.cont_zone_sage, cont_zone_autre = new.cont_zone_autre, cont_zone_urba = new.cont_zone_urba, cont_zone_anc = new.cont_zone_anc, cont_alim_eau_potable = new.cont_alim_eau_potable, cont_puits_usage = new.cont_puits_usage, cont_puits_declaration = new.cont_puits_declaration, cont_puits_situation = new.cont_puits_situation, cont_puits_terrain_mitoyen = new.cont_puits_terrain_mitoyen, observations = new.observations, maj = new.maj, maj_date = new.maj_date, "create" = new."create", create_date = new.create_date, archivage = new.archivage, geom = new.geom, photo_f = new.photo_f, document_f = new.document_f WHERE installation.id_installation = new.id_installation; + CREATE OR REPLACE RULE insert_v_controle AS ON INSERT TO s_anc.v_controle DO INSTEAD INSERT INTO s_anc.controle (id_controle, id_installation, controle_type, controle_ss_type, des_date_control, des_interval_control, des_pers_control, des_agent_control, des_installateur, des_refus_visite, des_date_installation, des_date_recommande, des_numero_recommande, dep_date_depot, dep_liste_piece, dep_dossier_complet, dep_date_envoi_incomplet, des_nature_projet, des_concepteur, des_ancien_disp, car_surface_dispo_m2, car_permea, car_valeur_permea, car_hydromorphie, car_prof_app, car_nappe_fond, car_terrain_innondable, car_roche_sol, car_dist_hab, car_dist_lim_par, car_dist_veget, car_dist_puit, des_reamenage_terrain, des_reamenage_immeuble, des_real_trvx, des_anc_ss_accord, des_collecte_ep, des_sep_ep_eu, des_eu_nb_sortie, des_eu_tes_regards, des_eu_pente_ecoul, des_eu_regars_acces, des_eu_alteration, des_eu_ecoulement, des_eu_depot_regard, des_commentaire, ts_conforme, ts_type_effluent, ts_capacite_bac, ts_nb_bac, ts_coher_taille_util, ts_aire_etanche, ts_aire_abri, ts_ventilation, ts_cuve_etanche, ts_val_comp, ts_ruissel_ep, ts_absence_nuisance, ts_respect_regles, ts_commentaires, vt_primaire, vt_secondaire, vt_prim_loc, vt_prim_ht, vt_prim_diam, vt_prim_type_extract, vt_second_loc, vt_second_ht, vt_second_diam, vt_second_type_extract, da_chasse_acces, da_chasse_auto, da_chasse_pr_nat_eau, da_chasse_ok, da_chasse_dysfonctionnement, da_chasse_degradation, da_chasse_entretien, da_pr_loc_pompe, da_pr_acces, da_pr_nb_pompe, da_pr_nat_eau, da_pr_ventilatio, da_pr_ok, da_pr_alarme, da_pr_clapet, da_pr_etanche, da_pr_branchement, da_pr_dysfonctionnement, da_pr_degradation, da_pr_entretien, da_commentaires, cl_avis, cl_classe_cbf, cl_commentaires, cl_date_avis, cl_auteur_avis, cl_date_prochain_control, cl_montant, cl_facture, cl_facture_le, maj, maj_date, "create", create_date, cloturer, photos_f, fiche_f, rapport_f, schema_f, documents_f, plan_f, cl_constat, cl_travaux, vt_commentaire, tra_vm_geomembrane, emplacement_vt_secondaire, vt_prim_type_materiau, vt_second_type_materiau) VALUES (new.id_controle, new.id_installation, new.controle_type, new.controle_ss_type, new.des_date_control, new.des_interval_control, new.des_pers_control, new.des_agent_control, new.des_installateur, new.des_refus_visite, new.des_date_installation, new.des_date_recommande, new.des_numero_recommande, new.dep_date_depot, new.dep_liste_piece, new.dep_dossier_complet, new.dep_date_envoi_incomplet, new.des_nature_projet, new.des_concepteur, new.des_ancien_disp, new.car_surface_dispo_m2, new.car_permea, new.car_valeur_permea, new.car_hydromorphie, new.car_prof_app, new.car_nappe_fond, new.car_terrain_innondable, new.car_roche_sol, new.car_dist_hab, new.car_dist_lim_par, new.car_dist_veget, new.car_dist_puit, new.des_reamenage_terrain, new.des_reamenage_immeuble, new.des_real_trvx, new.des_anc_ss_accord, new.des_collecte_ep, new.des_sep_ep_eu, new.des_eu_nb_sortie, new.des_eu_tes_regards, new.des_eu_pente_ecoul, new.des_eu_regars_acces, new.des_eu_alteration, new.des_eu_ecoulement, new.des_eu_depot_regard, new.des_commentaire, new.ts_conforme, new.ts_type_effluent, new.ts_capacite_bac, new.ts_nb_bac, new.ts_coher_taille_util, new.ts_aire_etanche, new.ts_aire_abri, new.ts_ventilation, new.ts_cuve_etanche, new.ts_val_comp, new.ts_ruissel_ep, new.ts_absence_nuisance, new.ts_respect_regles, new.ts_commentaires, new.vt_primaire, new.vt_secondaire, new.vt_prim_loc, new.vt_prim_ht, new.vt_prim_diam, new.vt_prim_type_extract, new.vt_second_loc, new.vt_second_ht, new.vt_second_diam, new.vt_second_type_extract, new.da_chasse_acces, new.da_chasse_auto, new.da_chasse_pr_nat_eau, new.da_chasse_ok, new.da_chasse_dysfonctionnement, new.da_chasse_degradation, new.da_chasse_entretien, new.da_pr_loc_pompe, new.da_pr_acces, new.da_pr_nb_pompe, new.da_pr_nat_eau, new.da_pr_ventilatio, new.da_pr_ok, new.da_pr_alarme, new.da_pr_clapet, new.da_pr_etanche, new.da_pr_branchement, new.da_pr_dysfonctionnement, new.da_pr_degradation, new.da_pr_entretien, new.da_commentaires, new.cl_avis, new.cl_classe_cbf, new.cl_commentaires, new.cl_date_avis, new.cl_auteur_avis, new.cl_date_prochain_control, new.cl_montant, new.cl_facture, new.cl_facture_le, new.maj, new.maj_date, new."create", new.create_date, new.cloturer, new.photos_f, new.fiche_f, new.rapport_f, new.schema_f, new.documents_f, new.plan_f, new.cl_constat, new.cl_travaux, new.vt_commentaire, new.tra_vm_geomembrane, new.emplacement_vt_secondaire, new.vt_prim_type_materiau, new.vt_second_type_materiau) RETURNING controle.id_controle,controle.id_installation,( SELECT (v_installation.id_com::text || '_anc_'::text) || v_installation.id_installation AS num_dossier FROM s_anc.v_installation WHERE v_installation.id_com::text ~ similar_escape(( SELECT "user".restriction FROM s_vitis."user" WHERE "user".login::name = "current_user"()), NULL::text) AND controle.id_installation = v_installation.id_installation) AS num_dossier,controle.controle_type,controle.controle_ss_type,controle.des_date_control,controle.des_interval_control,controle.des_pers_control,controle.des_agent_control,controle.des_installateur,controle.des_refus_visite,controle.des_date_installation,controle.des_date_recommande,controle.des_numero_recommande,controle.dep_date_depot,controle.dep_liste_piece,controle.dep_dossier_complet,controle.dep_date_envoi_incomplet,controle.des_nature_projet,controle.des_concepteur,controle.des_ancien_disp,controle.car_surface_dispo_m2,controle.car_permea,controle.car_valeur_permea,controle.car_hydromorphie,controle.car_prof_app,controle.car_nappe_fond,controle.car_terrain_innondable,controle.car_roche_sol,controle.car_dist_hab,controle.car_dist_lim_par,controle.car_dist_veget,controle.car_dist_puit,controle.des_reamenage_terrain,controle.des_reamenage_immeuble,controle.des_real_trvx,controle.des_anc_ss_accord,controle.des_collecte_ep,controle.des_sep_ep_eu,controle.des_eu_nb_sortie,controle.des_eu_tes_regards,controle.des_eu_pente_ecoul,controle.des_eu_regars_acces,controle.des_eu_alteration,controle.des_eu_ecoulement,controle.des_eu_depot_regard,controle.des_commentaire,controle.ts_conforme,controle.ts_type_effluent,controle.ts_capacite_bac,controle.ts_nb_bac,controle.ts_coher_taille_util,controle.ts_aire_etanche,controle.ts_aire_abri,controle.ts_ventilation,controle.ts_cuve_etanche,controle.ts_val_comp,controle.ts_ruissel_ep,controle.ts_absence_nuisance,controle.ts_respect_regles,controle.ts_commentaires,controle.vt_primaire,controle.vt_secondaire,controle.vt_prim_loc,controle.vt_prim_ht,controle.vt_prim_diam,controle.vt_prim_type_extract,controle.vt_second_loc,controle.vt_second_ht,controle.vt_second_diam,controle.vt_second_type_extract,controle.da_chasse_acces,controle.da_chasse_auto,controle.da_chasse_pr_nat_eau,controle.da_chasse_ok,controle.da_chasse_dysfonctionnement,controle.da_chasse_degradation,controle.da_chasse_entretien,controle.da_pr_loc_pompe,controle.da_pr_acces,controle.da_pr_nb_pompe,controle.da_pr_nat_eau,controle.da_pr_ventilatio,controle.da_pr_ok,controle.da_pr_alarme,controle.da_pr_clapet,controle.da_pr_etanche,controle.da_pr_branchement,controle.da_pr_dysfonctionnement,controle.da_pr_degradation,controle.da_pr_entretien,controle.da_commentaires,controle.cl_avis,controle.cl_classe_cbf,controle.cl_commentaires,controle.cl_date_avis,controle.cl_auteur_avis,controle.cl_date_prochain_control,controle.cl_montant,controle.cl_facture,controle.cl_facture_le,controle.maj,controle.maj_date,controle."create",controle.create_date,controle.cloturer,controle.photos_f,controle.fiche_f,controle.rapport_f,controle.schema_f,controle.documents_f,controle.plan_f,controle.cl_constat,controle.cl_travaux,controle.vt_commentaire,controle.tra_vm_geomembrane,controle.emplacement_vt_secondaire,controle.vt_prim_type_materiau,controle.vt_second_type_materiau; + -- Frédéric 17/01/2019 12:04 + ALTER TABLE s_anc.traitement ADD COLUMN tra_commentaire text; + DROP VIEW s_anc.v_traitement; + CREATE OR REPLACE VIEW s_anc.v_traitement AS SELECT traitement.id_traitement,traitement.id_controle,traitement.tra_type,traitement.tra_nb,traitement.tra_long,traitement.tra_larg,traitement.tra_tot_lin,traitement.tra_surf,traitement.tra_largeur,traitement.tra_hauteur,traitement.tra_profondeur,traitement.tra_dist_hab,traitement.tra_dist_lim_parc,traitement.tra_dist_veget,traitement.tra_dist_puit,traitement.tra_vm_racine,traitement.tra_vm_humidite,traitement.tra_vm_imper,traitement.tra_vm_geogrille,traitement.tra_vm_grav_qual,traitement.tra_vm_grav_ep,traitement.tra_vm_geo_text,traitement.tra_vm_ht_terre_veget,traitement.tra_vm_tuy_perf,traitement.tra_vm_bon_mat,traitement.tra_vm_sab_ep,traitement.tra_vm_sab_qual,traitement.tra_regrep_mat,traitement.tra_regrep_affl,traitement.tra_regrep_equi,traitement.tra_regrep_perf,traitement.tra_regbl_mat,traitement.tra_regbl_affl,traitement.tra_regbl_hz,traitement.tra_regbl_epand,traitement.tra_regbl_perf,traitement.tra_regcol_mat,traitement.tra_regcol_affl,traitement.tra_regcol_hz,traitement.maj,traitement.maj_date,traitement."create",traitement.create_date,traitement.photos_f,traitement.fiche_f,traitement.schema_f,traitement.documents_f,traitement.plan_f,controle.id_installation,controle.controle_type,(installation.id_com::text || '_anc_'::text) || installation.id_installation AS num_dossier,traitement.tra_longueur,traitement.tra_profond,traitement.tra_commentaire FROM s_anc.traitement LEFT JOIN s_anc.controle ON traitement.id_controle = controle.id_controle LEFT JOIN s_anc.installation ON controle.id_installation = installation.id_installation WHERE installation.id_com::text ~ similar_escape(( SELECT "user".restriction FROM s_vitis."user" WHERE "user".login::name = "current_user"()), NULL::text); + ALTER TABLE s_anc.v_traitement OWNER TO u_vitis; + GRANT ALL ON TABLE s_anc.v_traitement TO u_vitis; + GRANT ALL ON TABLE s_anc.v_traitement TO anc_admin; + GRANT ALL ON TABLE s_anc.v_traitement TO anc_user; + CREATE OR REPLACE RULE delete_v_traitement AS ON DELETE TO s_anc.v_traitement DO INSTEAD DELETE FROM s_anc.traitement WHERE traitement.id_traitement = old.id_traitement; + CREATE OR REPLACE RULE insert_v_traitement AS ON INSERT TO s_anc.v_traitement DO INSTEAD INSERT INTO s_anc.traitement (id_traitement, id_controle, tra_type, tra_nb, tra_long, tra_larg, tra_tot_lin, tra_surf, tra_largeur, tra_hauteur, tra_profondeur, tra_dist_hab, tra_dist_lim_parc, tra_dist_veget, tra_dist_puit, tra_vm_racine, tra_vm_humidite, tra_vm_imper, tra_vm_geogrille, tra_vm_grav_qual, tra_vm_grav_ep, tra_vm_geo_text, tra_vm_ht_terre_veget, tra_vm_tuy_perf, tra_vm_bon_mat, tra_vm_sab_ep, tra_vm_sab_qual, tra_regrep_mat, tra_regrep_affl, tra_regrep_equi, tra_regrep_perf, tra_regbl_mat, tra_regbl_affl, tra_regbl_hz, tra_regbl_epand, tra_regbl_perf, tra_regcol_mat, tra_regcol_affl, tra_regcol_hz, maj, maj_date, "create", create_date, photos_f, fiche_f, schema_f, documents_f, plan_f, tra_longueur, tra_profond, tra_commentaire) VALUES (new.id_traitement, new.id_controle, new.tra_type, new.tra_nb, new.tra_long, new.tra_larg, new.tra_tot_lin, new.tra_surf, new.tra_largeur, new.tra_hauteur, new.tra_profondeur, new.tra_dist_hab, new.tra_dist_lim_parc, new.tra_dist_veget, new.tra_dist_puit, new.tra_vm_racine, new.tra_vm_humidite, new.tra_vm_imper, new.tra_vm_geogrille, new.tra_vm_grav_qual, new.tra_vm_grav_ep, new.tra_vm_geo_text, new.tra_vm_ht_terre_veget, new.tra_vm_tuy_perf, new.tra_vm_bon_mat, new.tra_vm_sab_ep, new.tra_vm_sab_qual, new.tra_regrep_mat, new.tra_regrep_affl, new.tra_regrep_equi, new.tra_regrep_perf, new.tra_regbl_mat, new.tra_regbl_affl, new.tra_regbl_hz, new.tra_regbl_epand, new.tra_regbl_perf, new.tra_regcol_mat, new.tra_regcol_affl, new.tra_regcol_hz, new.maj, new.maj_date, new."create", new.create_date, new.photos_f, new.fiche_f, new.schema_f, new.documents_f, new.plan_f, new.tra_longueur, new.tra_profond, new.tra_commentaire) RETURNING traitement.id_traitement,traitement.id_controle,traitement.tra_type,traitement.tra_nb,traitement.tra_long,traitement.tra_larg,traitement.tra_tot_lin,traitement.tra_surf,traitement.tra_largeur,traitement.tra_hauteur,traitement.tra_profondeur,traitement.tra_dist_hab,traitement.tra_dist_lim_parc,traitement.tra_dist_veget,traitement.tra_dist_puit,traitement.tra_vm_racine,traitement.tra_vm_humidite,traitement.tra_vm_imper,traitement.tra_vm_geogrille,traitement.tra_vm_grav_qual,traitement.tra_vm_grav_ep,traitement.tra_vm_geo_text,traitement.tra_vm_ht_terre_veget,traitement.tra_vm_tuy_perf,traitement.tra_vm_bon_mat,traitement.tra_vm_sab_ep,traitement.tra_vm_sab_qual,traitement.tra_regrep_mat,traitement.tra_regrep_affl,traitement.tra_regrep_equi,traitement.tra_regrep_perf,traitement.tra_regbl_mat,traitement.tra_regbl_affl,traitement.tra_regbl_hz,traitement.tra_regbl_epand,traitement.tra_regbl_perf,traitement.tra_regcol_mat,traitement.tra_regcol_affl,traitement.tra_regcol_hz,traitement.maj,traitement.maj_date,traitement."create",traitement.create_date,traitement.photos_f,traitement.fiche_f,traitement.schema_f,traitement.documents_f,traitement.plan_f, ( SELECT controle.id_installation FROM s_anc.controle WHERE traitement.id_controle = controle.id_controle) AS id_installation, ( SELECT controle.controle_type FROM s_anc.controle WHERE traitement.id_controle = controle.id_controle) AS controle_type, ( SELECT (installation.id_com::text || '_anc_'::text) || installation.id_installation AS num_dossier FROM s_anc.installation WHERE installation.id_com::text ~ similar_escape(( SELECT "user".restriction FROM s_vitis."user" WHERE "user".login::name = "current_user"()), NULL::text) AND installation.id_installation = installation.id_installation) AS num_dossier,traitement.tra_longueur,traitement.tra_profond,traitement.tra_commentaire; + CREATE OR REPLACE RULE update_v_traitement AS ON UPDATE TO s_anc.v_traitement DO INSTEAD UPDATE s_anc.traitement SET id_traitement = new.id_traitement, id_controle = new.id_controle, tra_type = new.tra_type, tra_nb = new.tra_nb, tra_long = new.tra_long, tra_larg = new.tra_larg, tra_tot_lin = new.tra_tot_lin, tra_surf = new.tra_surf, tra_largeur = new.tra_largeur, tra_hauteur = new.tra_hauteur, tra_profondeur = new.tra_profondeur, tra_dist_hab = new.tra_dist_hab, tra_dist_lim_parc = new.tra_dist_lim_parc, tra_dist_veget = new.tra_dist_veget, tra_dist_puit = new.tra_dist_puit, tra_vm_racine = new.tra_vm_racine, tra_vm_humidite = new.tra_vm_humidite, tra_vm_imper = new.tra_vm_imper, tra_vm_geogrille = new.tra_vm_geogrille, tra_vm_grav_qual = new.tra_vm_grav_qual, tra_vm_grav_ep = new.tra_vm_grav_ep, tra_vm_geo_text = new.tra_vm_geo_text, tra_vm_ht_terre_veget = new.tra_vm_ht_terre_veget, tra_vm_tuy_perf = new.tra_vm_tuy_perf, tra_vm_bon_mat = new.tra_vm_bon_mat, tra_vm_sab_ep = new.tra_vm_sab_ep, tra_vm_sab_qual = new.tra_vm_sab_qual, tra_regrep_mat = new.tra_regrep_mat, tra_regrep_affl = new.tra_regrep_affl, tra_regrep_equi = new.tra_regrep_equi, tra_regrep_perf = new.tra_regrep_perf, tra_regbl_mat = new.tra_regbl_mat, tra_regbl_affl = new.tra_regbl_affl, tra_regbl_hz = new.tra_regbl_hz, tra_regbl_epand = new.tra_regbl_epand, tra_regbl_perf = new.tra_regbl_perf, tra_regcol_mat = new.tra_regcol_mat, tra_regcol_affl = new.tra_regcol_affl, tra_regcol_hz = new.tra_regcol_hz, maj = new.maj, maj_date = new.maj_date, "create" = new."create", create_date = new.create_date, photos_f = new.photos_f, fiche_f = new.fiche_f, schema_f = new.schema_f, documents_f = new.documents_f, plan_f = new.plan_f, tra_longueur = new.tra_longueur, tra_profond = new.tra_profond, tra_commentaire = new.tra_commentaire WHERE traitement.id_traitement = new.id_traitement; + ]]> + </code> + </query> </queriesCollection> </sqlQueries> diff --git a/src/module_anc/web_service/ws/Entreprise.class.inc b/src/module_anc/web_service/ws/Entreprise.class.inc index 00bb4aece45baabc3d64902c330bfd6edabaa6fe..acb6df42df2a3bbae7edbe1b3aed0129c037ec94 100755 --- a/src/module_anc/web_service/ws/Entreprise.class.inc +++ b/src/module_anc/web_service/ws/Entreprise.class.inc @@ -12,7 +12,7 @@ require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection * \brief This file contains the Entreprise php class * * This class defines operation for one Entreprise - * + * */ class Entreprise extends Anc { @@ -30,11 +30,11 @@ class Entreprise extends Anc { $this->aPath = $aPath; $this->aProperties = $properties; $this->oConnection = new Connection($this->aValues, $this->aProperties); - $this->aSelectedFields = Array("id_parametre_entreprises", "id_com", "siret", "raison_sociale", "nom_entreprise", "nom_contact", "telephone_fixe", "telephone_mobile", "web", "mail", "code_postal", "voie", "bureau_etude", "concepteur", "constructeur", "installateur", "vidangeur", "en_activite", "observations", "creat", "creat_date", "maj", "maj_date", "geom"); + $this->aSelectedFields = Array("id_parametre_entreprises", "commune", "siret", "raison_sociale", "nom_entreprise", "nom_contact", "telephone_fixe", "telephone_mobile", "web", "mail", "code_postal", "voie", "bureau_etude", "concepteur", "constructeur", "installateur", "vidangeur", "en_activite", "observations", "creat", "creat_date", "maj", "maj_date", "geom"); } /** - * @SWG\Get(path="/entreprises/{id_entreprise}", + * @SWG\Get(path="/entreprises/{id_entreprise}", * tags={"Entreprises"}, * summary="Get Entreprise", * description="Request to get Entreprise by id", @@ -91,4 +91,4 @@ class Entreprise extends Anc { } -?> \ No newline at end of file +?> diff --git a/src/module_anc/web_service/ws/Entreprises.class.inc b/src/module_anc/web_service/ws/Entreprises.class.inc index 625e00892081a0f50eb0fc4dbdfbf8f3b7b15e8e..25cdc54b0555421acf78651a5a4eac21c8e2dd83 100755 --- a/src/module_anc/web_service/ws/Entreprises.class.inc +++ b/src/module_anc/web_service/ws/Entreprises.class.inc @@ -9,7 +9,7 @@ * \brief This file contains the Entreprises php class * * This class defines Rest Api to Vitis Entreprises - * + * */ require_once __DIR__ . '/Anc.class.inc'; require_once 'Entreprise.class.inc'; @@ -40,7 +40,7 @@ class Entreprises extends Anc { $this->aPath = $aPath; $this->aProperties = $properties; $this->oConnection = new Connection($this->aValues, $this->aProperties); - $this->aSelectedFields = Array("id_parametre_entreprises", "id_com", "siret", "raison_sociale", "nom_entreprise", "nom_contact", "telephone_fixe", "telephone_mobile", "web", "mail", "code_postal", "voie", "bureau_etude", "concepteur", "constructeur", "installateur", "vidangeur", "en_activite", "observations", "creat", "creat_date", "maj", "maj_date", "geom"); + $this->aSelectedFields = Array("id_parametre_entreprises", "commune", "siret", "raison_sociale", "nom_entreprise", "nom_contact", "telephone_fixe", "telephone_mobile", "web", "mail", "code_postal", "voie", "bureau_etude", "concepteur", "constructeur", "installateur", "vidangeur", "en_activite", "observations", "creat", "creat_date", "maj", "maj_date", "geom"); } /** @@ -154,7 +154,7 @@ class Entreprises extends Anc { */ function POST() { $this->aValues['creat'] = $_SESSION["ses_Login"]; - $this->aValues['creat_date'] = date('Y-m-d'); + $this->aValues['creat_date'] = date('Y-m-d'); $aReturn = $this->genericPost($this->aProperties['schema_anc'], 'param_entreprise', $this->aProperties['schema_anc'].'.param_entreprise_id_parametre_entreprises_seq', 'id_parametre_entreprises'); return $aReturn['sMessage']; } @@ -269,4 +269,4 @@ class Entreprises extends Anc { return $aReturn['sMessage']; } } -?> \ No newline at end of file +?> diff --git a/src/module_vm4ms/_install/dependency.xml b/src/module_vm4ms/_install/dependency.xml index 227abf73166d76fe8c1da97a313dbe0889023f41..45b8b1355f5dd3d168f710fa857c3db26576bbce 100755 --- a/src/module_vm4ms/_install/dependency.xml +++ b/src/module_vm4ms/_install/dependency.xml @@ -33,7 +33,7 @@ <dependency> <name>mapserver</name> <nature>extern-post</nature> - <location>mapserver-7.0.7.1</location> + <location>mapserver-7.2.1</location> </dependency> <!-- Dépendances de mapserver --> <dependency> diff --git a/src/module_vmap/module/forms/vmap_business_object/vmap_business_object_vmap_business_object.json b/src/module_vmap/module/forms/vmap_business_object/vmap_business_object_vmap_business_object.json index 8cb2ecdec963ced0325b07610c491658275c9c5c..7dea0252d242dfedad6b2d5a00b345d4129d7bb7 100644 --- a/src/module_vmap/module/forms/vmap_business_object/vmap_business_object_vmap_business_object.json +++ b/src/module_vmap/module/forms/vmap_business_object/vmap_business_object_vmap_business_object.json @@ -536,9 +536,18 @@ }, "disabled": false, "required": true, - "nb_cols": 12, + "nb_cols": 2, "default_value": true - }, { + }, + { + "type": "text", + "name": "location_placeholder", + "label": "FORM_LOCATION_PLACEHOLDER_VMAP_BUSINESS_OBJECT", + "nb_cols": 4, + "id": "bo_location_placeholder", + "default_value": "Localiser..." + }, + { "type": "radio", "options": { "choices": [ @@ -1029,9 +1038,17 @@ }, "disabled": false, "required": true, - "nb_cols": 12, + "nb_cols": 2, "default_value": true - }, { + }, + { + "type": "text", + "name": "location_placeholder", + "label": "FORM_LOCATION_PLACEHOLDER_VMAP_BUSINESS_OBJECT", + "nb_cols": 4, + "id": "bo_location_placeholder" + }, + { "type": "radio", "options": { "choices": [ @@ -1305,6 +1322,16 @@ } ] }, + { + "fields": [ + { + "type": "label", + "name": "location_placeholder", + "label": "FORM_LOCATION_PLACEHOLDER_VMAP_BUSINESS_OBJECT", + "nb_cols": 12 + } + ] + }, { "fields": [ { 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 2a5fe743b519e0186dae873e6317327fee403212..593b84d22c30b1a15dcd6b4229e6a21921dc1e94 100644 --- a/src/module_vmap/module/javascript/app/vmap/mapmanager/layerstree.js +++ b/src/module_vmap/module/javascript/app/vmap/mapmanager/layerstree.js @@ -158,11 +158,21 @@ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController = function ($scope, this['layerstree_collapsed'] = oVmap['properties']['vmap']['layerstree_collapsed']; } + console.log("oUrlParams: ", oUrlParams); + + var oPositionOptions = {}; if (goog.isDefAndNotNull(oUrlParams['extent'])){ - var aExtent = decodeURI(oUrlParams['extent']).split("|"); + oPositionOptions['extent'] = decodeURI(oUrlParams['extent']).split("|"); + } + if (goog.isDefAndNotNull(oUrlParams['lon']) && + goog.isDefAndNotNull(oUrlParams['lat']) && + goog.isDefAndNotNull(oUrlParams['zoom'])){ + oPositionOptions['lon'] = decodeURI(oUrlParams['lon']); + oPositionOptions['lat'] = decodeURI(oUrlParams['lat']); + oPositionOptions['zoom'] = decodeURI(oUrlParams['zoom']); } - this.loadTree(aExtent); + this.loadTree(oPositionOptions); // Événements sur les couches var keepLoadedTiles = true; @@ -389,10 +399,11 @@ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.reloadTre /** * Load layers from the tree - * @param {array|undefined} aExtent exent to fit on + * @param {object|undefined} oPositionOptions + * @param {array|undefined} oPositionOptions.extent exent to fit on * @returns {undefined} */ -nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.loadTree = function (aExtent) { +nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.loadTree = function (oPositionOptions) { oVmap.log('nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.loadTree'); if (this['map'].getLayers().getArray().length > 0) @@ -452,9 +463,22 @@ nsVmap.nsMapManager.LayersTree.prototype.LayertreeController.prototype.loadTree this.addLayer(olLayers[i]); } - // Va à l'étendue fournie - if (goog.isDefAndNotNull(aExtent)) { - this['map'].getView().fit(aExtent, { + // Va à la position fournie + if (goog.isDefAndNotNull(oPositionOptions['lon']) && + goog.isDefAndNotNull(oPositionOptions['lat']) && + goog.isDefAndNotNull(oPositionOptions['zoom'])){ + + // Projette les coordonnées + var coordinates = [parseFloat(oPositionOptions['lon']), parseFloat(oPositionOptions['lat'])]; + var projection = 'EPSG:4326'; + var currentProjeciton = this['map'].getView().getProjection(); + var projectedCoordinates = ol.proj.transform(coordinates, projection, currentProjeciton); + + this['map'].getView().setCenter(projectedCoordinates); + this['map'].getView().setZoom(oPositionOptions['zoom']); + } + if (goog.isDefAndNotNull(oPositionOptions['extent'])) { + this['map'].getView().fit(oPositionOptions['extent'], { nearest : true }); } 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 e3373e5ecdddf34f2da578fbcc5916f4284c67b0..19118736763025e374066fb7bbc34cc4f9032595 100644 --- a/src/module_vmap/module/javascript/app/vmap/mapmanager/mapmanager.js +++ b/src/module_vmap/module/javascript/app/vmap/mapmanager/mapmanager.js @@ -1489,7 +1489,8 @@ nsVmap.nsMapManager.MapManager.prototype.getBusinessObjectsFromLayers = function '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 + 'bo_index': goog.isDefAndNotNull(aBos[ii]['index']) ? aBos[ii]['index'] : 1000000, + 'location_placeholder': aBos[ii]['location_placeholder'] }; } } diff --git a/src/module_vmap/module/javascript/app/vmap/vmap.js b/src/module_vmap/module/javascript/app/vmap/vmap.js index f178a8c8318359837bd33d27463450bfe7744ea8..827c9d01c74d66819605bb7bba3177a2804d6454 100644 --- a/src/module_vmap/module/javascript/app/vmap/vmap.js +++ b/src/module_vmap/module/javascript/app/vmap/vmap.js @@ -897,7 +897,7 @@ oVmap.maxResizeBottomBar = function () { oVmap.minResizeBottomBar = function () { angular.element($('#olMap')).scope()['ctrl'].startAnimation(); angular.element($('#olMapCompare')).scope()['ctrl'].startAnimation(); - + if ($("#map-container").hasClass("open2")) { $("#map-container").removeClass("open2"); $("#bottombar").removeClass("open2"); @@ -1131,9 +1131,17 @@ oVmap.generatePrintReport = function (opt_options) { } printWindow.document.write('<div style="width: 100%; text-align: center; margin-top: 80px"><img src="images/ajax-big-loader.GIF" alt="Load img" style="width: 200px;height: 170px;"><br><br><i style="color: gray">Construction de la fiche en cours..</i></div>'); + var sUrl; + if (goog.isDefAndNotNull(oVmap['properties']['api_url'])) { + sUrl = oVmap['properties']['api_url'] + '/vmap/printreportservices'; + } else { + var propertiesSrvc = angular.element(vitisApp.appMainDrtv).injector().get(['propertiesSrvc']); + sUrl = propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + '/vmap/printreportservices'; + } + ajaxRequest({ 'method': 'POST', - 'url': oVmap['properties']['api_url'] + '/vmap/printreportservices', + 'url': sUrl, 'headers': { 'Accept': 'application/x-vm-json' }, diff --git a/src/module_vmap/module/lang/lang-en.json b/src/module_vmap/module/lang/lang-en.json index 22870579e4c6a05d7fee7d8247e3199325d51741..1886712e70f395502e6800569c25f8e411591008 100644 --- a/src/module_vmap/module/lang/lang-en.json +++ b/src/module_vmap/module/lang/lang-en.json @@ -190,6 +190,7 @@ "FORM_LOCATABLE_VMAP_BUSINESS_OBJECT": "Enable locate", "FORM_LOCATABLE_VMAP_BUSINESS_OBJECT_TOOLTIP": "Display the object on the locate tool", "LIST_DELETE_CONFIRM_VMAP_BUSINESS_OBJECT": "Delete the selected items and associations with layers?", + "FORM_LOCATION_PLACEHOLDER_VMAP_BUSINESS_OBJECT": "Location placeholder", "": "", "FORM_TITLE_VMAP_MODULE_MODULE": "Module {{::label}}", "FORM_LABEL_VMAP_MODULE_MODULE": "Label", diff --git a/src/module_vmap/module/lang/lang-fr.json b/src/module_vmap/module/lang/lang-fr.json index c8fbb96d7d8d74812d0fe9c5e7fabd27320f4e91..0ac88683c207408ea5834ee26934aef5eb313e2d 100644 --- a/src/module_vmap/module/lang/lang-fr.json +++ b/src/module_vmap/module/lang/lang-fr.json @@ -190,6 +190,7 @@ "FORM_LOCATABLE_VMAP_BUSINESS_OBJECT": "Objet localisable", "FORM_LOCATABLE_VMAP_BUSINESS_OBJECT_TOOLTIP": "Affiche l'objet dans la liste de l'outil de localisation (ne garantit pas la sécurité de la donnée)", "LIST_DELETE_CONFIRM_VMAP_BUSINESS_OBJECT": "Supprimer les objets métiers sélectionnés et les associations avec les calques ?", + "FORM_LOCATION_PLACEHOLDER_VMAP_BUSINESS_OBJECT": "Balise du champ localisation", "": "", "FORM_TITLE_VMAP_MODULE_MODULE": "Module {{::label}}", "FORM_LABEL_VMAP_MODULE_MODULE": "Libellé", diff --git a/src/module_vmap/module/template/tools/location.html b/src/module_vmap/module/template/tools/location.html index 62e46ed34e6b7d9853846d9d0845101216ac75a9..59d1b1faed4848c8ed64c87adc9b30dccf43eb7a 100644 --- a/src/module_vmap/module/template/tools/location.html +++ b/src/module_vmap/module/template/tools/location.html @@ -4,7 +4,7 @@ <!--Recherche--> <input id="location-search-input" type="text" - placeholder="Localiser.." + placeholder="{{ctrl.oBusinessObjects[ctrl.sSelectedLocationService].bo_enable_location && ctrl.oBusinessObjects[ctrl.sSelectedLocationService].location_placeholder != '' ? ctrl.oBusinessObjects[ctrl.sSelectedLocationService].location_placeholder : 'Localiser...'}}" ng-model="ctrl.locationSearch" ng-click="ctrl.searchLocation()"> <!--Sélecteur--> diff --git a/src/module_vmap/web_service/sql/sqlQueries.xml b/src/module_vmap/web_service/sql/sqlQueries.xml index d3109edecc1cc39dc4fecbfb44c362087fb92139..4a1e026efafc58a3a828aa29a84425e347e3d53d 100644 --- a/src/module_vmap/web_service/sql/sqlQueries.xml +++ b/src/module_vmap/web_service/sql/sqlQueries.xml @@ -1164,6 +1164,10 @@ ALTER TABLE s_vmap.business_object ADD COLUMN enable_selection boolean; ALTER TABLE s_vmap.business_object ADD COLUMN enable_location boolean; UPDATE s_vmap.business_object SET enable_selection=true, enable_location=true; + -- Frédéric 18/01/2019 Placeholder dans la localisation + ALTER TABLE s_vmap.business_object ADD COLUMN location_placeholder character varying(100); + -- Armand 23/01/2019 Placeholder dans la localisation + UPDATE s_vmap.business_object set location_placeholder='Localiser...'; ]]> </code> </query> diff --git a/src/module_vmap/web_service/ws/BusinessObject.class.inc b/src/module_vmap/web_service/ws/BusinessObject.class.inc index ba6c8a045c1f09fc523b786231592909c5fb546f..2a990d6d616181648cdf2a9dcd6f9abb36d4e781 100644 --- a/src/module_vmap/web_service/ws/BusinessObject.class.inc +++ b/src/module_vmap/web_service/ws/BusinessObject.class.inc @@ -31,7 +31,7 @@ class BusinessObject extends Vmap { */ function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) { parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - $this->aSelectedFields = Array("business_object_id", "title", "formtitle", "summarytitle", "id_field", "database", "schema", "table", "sql_summary", "sql_list", "sorted_by", "geom_column", "search_field", "result_field", "search_use_strict", "event_id", "index", "add_form_size", "edit_form_size", "display_form_size", "selection_buffer", "user_rights", "max_edition_scale", "min_edition_scale", "enable_selection", "enable_location"); + $this->aSelectedFields = Array("business_object_id", "title", "formtitle", "summarytitle", "id_field", "database", "schema", "table", "sql_summary", "sql_list", "sorted_by", "geom_column", "search_field", "result_field", "search_use_strict", "event_id", "index", "add_form_size", "edit_form_size", "display_form_size", "selection_buffer", "user_rights", "max_edition_scale", "min_edition_scale", "enable_selection", "enable_location", "location_placeholder"); } /** diff --git a/src/module_vmap/web_service/ws/BusinessObjects.class.inc b/src/module_vmap/web_service/ws/BusinessObjects.class.inc index 6479b6aa94a034329e6ad8d56a68076a75fc29f5..a90bc69b890d9b7c617ff219a4cc2bb996525eb8 100755 --- a/src/module_vmap/web_service/ws/BusinessObjects.class.inc +++ b/src/module_vmap/web_service/ws/BusinessObjects.class.inc @@ -42,7 +42,7 @@ class BusinessObjects extends Vmap { */ function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) { parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - $this->aSelectedFields = Array("business_object_id", "title", "formtitle", "summarytitle", "id_field", "database", "schema", "table", "sql_summary", "sql_list", "sorted_by", "geom_column", "search_field", "result_field", "search_use_strict", "event_id", "index", "add_form_size", "edit_form_size", "display_form_size", "selection_buffer", "user_rights", "max_edition_scale", "min_edition_scale", "enable_selection", "enable_location"); + $this->aSelectedFields = Array("business_object_id", "title", "formtitle", "summarytitle", "id_field", "database", "schema", "table", "sql_summary", "sql_list", "sorted_by", "geom_column", "search_field", "result_field", "search_use_strict", "event_id", "index", "add_form_size", "edit_form_size", "display_form_size", "selection_buffer", "user_rights", "max_edition_scale", "min_edition_scale", "enable_selection", "enable_location", "location_placeholder"); } /** diff --git a/src/vitis/client/javascript/externs/formReader/component/map.js b/src/vitis/client/javascript/externs/formReader/component/map.js index 0482db946269fcaebace4fb649834a3e949861c0..84e8ba3cc709ec0c973afeee8a915f6be0de8a41 100755 --- a/src/vitis/client/javascript/externs/formReader/component/map.js +++ b/src/vitis/client/javascript/externs/formReader/component/map.js @@ -117,6 +117,10 @@ nsVitisComponent.Map = function (opt_option) { * @private */ this.$log_ = angular.element(vitisApp.appHtmlFormDrtv).injector().get(["$log"]); + /** + * @private + */ + this.$q_ = angular.element(vitisApp.appHtmlFormDrtv).injector().get(["$q"]); var this_ = this; @@ -355,7 +359,31 @@ nsVitisComponent.Map = function (opt_option) { } } - /****************************************************Map*******************************/ + var hiddenFeatures = angular.copy($("#" + this.hiddenFieldId).val()); + + // Initialise la carte + this.initMap(options).then(function(){ + // Initialise l'étendue de la carte + this_.initExtent(options); + // Initialise le CSS de la carte + this_.initCSS(options); + // Initialise les features de la carte + this_.initFeatureOverlay(options, hiddenFeatures); + }); + + return this; +}; + +/** + * Initialise la carte + * + * @param {object} options + */ +nsVitisComponent.Map.prototype.initMap = function (options) { + this.$log_.info('nsVitisComponent.Map.initMap'); + + var deferred = this.$q_.defer(); + var this_ = this; this.MapObject = new ol.Map({ target: this_.Target, @@ -372,16 +400,54 @@ nsVitisComponent.Map = function (opt_option) { this.setExtent(options["center"]["extent"]); } - if (options["type"] === "vmap" && options["tree"]) { - this['aTree'] = this.loadTree(options["tree"]); + if (options["type"] === "vmap") { + if (options["tree"]) { + this['aTree'] = this.loadTree(options["tree"]); + } else if (options["map_id"]) { + this.getAjaxVmapMap(options["map_id"]).then(function(oMap){ + + // Set map + this_['aTree'] = this_.loadTree(oMap); + + // Set proj_ + this_.proj_ = this_.MapObject.getView().getProjection().getCode(); + + deferred.resolve(this_['aTree']); + }, + // Cas où carte non trouvée + function(){ + this_.MapObject.addLayer(new ol.layer.Tile({ + source: new ol.source.OSM() + })); + this_['aTree'] = [{ + 'service': options["type"], + 'layers': this_.Layers + }]; + setTimeout(function () { + deferred.resolve(this_['aTree']); + }); + }); + } } else { this['aTree'] = [{ - 'service': options["type"], - 'layers': this.Layers - }]; + 'service': options["type"], + 'layers': this.Layers + }]; + setTimeout(function () { + deferred.resolve(this_['aTree']); + }); } - /****************************************Extent***************************************/ + return deferred.promise; +} + +/** + * Initialise l'étendue de la carte + * + * @param {object} options + */ +nsVitisComponent.Map.prototype.initExtent = function (options) { + this.$log_.info('nsVitisComponent.Map.initExtent'); // Vérifie que l'étendue soit valable var projExtent = ol.proj.get(options["proj"]).getExtent(); @@ -393,20 +459,34 @@ nsVitisComponent.Map = function (opt_option) { console.error('map extent oversized'); this.MapObject.getView().fit(projExtent); } +} +/** + * Initialise lle CSS de la carte + * + * @param {object} options + */ +nsVitisComponent.Map.prototype.initCSS = function (options) { + this.$log_.info('nsVitisComponent.Map.initCSS'); - //****************************************CSS******************************************/ $(".ol-mouse-position").css("bottom", "8px"); $(".ol-mouse-position").css("top", "auto"); $(".ol-mouse-position").css("background", this.appColor); $(".ol-mouse-position").css("color", "#ffffff"); $(".ol-mouse-position").css("border-radius", "4px"); - $(".ol-scale-line").css("background", this.appColor); - $(".ol-current-projection-studio").css("background", this.appColor); +} + +/** + * Initialise les features de la carte + * + * @param {object} options + */ +nsVitisComponent.Map.prototype.initFeatureOverlay = function (options, hiddenFeatures) { + this.$log_.info('nsVitisComponent.Map.initFeatureOverlay'); - /****************************************Feature Overlay********************************/ + var this_ = this; options["draw_color"] = goog.isDef(options["draw_color"]) ? options["draw_color"] : "rgba(54,184,255,0.6)"; options["contour_color"] = goog.isDef(options["contour_color"]) ? options["contour_color"] : "rgba(0,0,0,0.4)"; @@ -464,40 +544,72 @@ nsVitisComponent.Map = function (opt_option) { source: this_.FeatureOverlay.getSource() }) - var hiddenFeatures = $("#" + this.hiddenFieldId).val(); + // Met en place les Features + this.setFeatures(hiddenFeatures); + + // Écrit les features dans le champ hidden + this.Features.on("change", function () { + setTimeout(function () { + this_.saveFeatures(); + this_.MapObject.dispatchEvent('moveend'); + }); + }); +} + +/** + * Set the map features + * + * @param {string} hiddenFeatures GeoJSON features + */ +nsVitisComponent.Map.prototype.setFeatures = function (hiddenFeatures) { + this.$log_.info('nsVitisComponent.Map.setFeatures'); + + // Vide les précédentes features + this.FeatureOverlay.getSource().forEachFeature(function(oFeature){ + this.FeatureOverlay.getSource().removeFeature(oFeature); + }, this); // Lit les features écrites dans le champ hidden if (goog.isDef(hiddenFeatures)) { if (!goog.string.isEmpty(hiddenFeatures) && hiddenFeatures !== "[object Object]") { - var aFeatures = this_.getFeaturesByString(hiddenFeatures); + var aFeatures = this.getFeaturesByString(hiddenFeatures); // Ajoute les features for (var i = 0; i < aFeatures.length; i++) { this.FeatureOverlay.getSource().addFeature(aFeatures[i]); } - var featuresExtent = this.FeatureOverlay.getSource().getExtent(); - this.MapObject.getView().fit(featuresExtent); - // En cas de simple point - if (aFeatures.length === 1) { - if (aFeatures[0].getGeometry().getType() === 'Point') { - this.MapObject.getView().setZoom(12); - } - } + // Zoom sur les features + this.zoomOnFeatures(); + + // Sauvegarde les features + this.saveFeatures(); } } +} - // Écrit les features dans le champ hidden - this.Features.on("change", function () { - setTimeout(function () { - this_.saveFeatures(); - this_.MapObject.dispatchEvent('moveend'); - }); - }); +/** + * Zoom sur les features de this.FeatureOverlay + */ +nsVitisComponent.Map.prototype.zoomOnFeatures = function () { + this.$log_.info('nsVitisComponent.Map.zoomOnFeatures'); - return this; -}; + var aFeatures = this.FeatureOverlay.getSource().getFeatures(); + var featuresExtent = this.FeatureOverlay.getSource().getExtent(); + + if (aFeatures.length > 0) { + + this.MapObject.getView().fit(featuresExtent); + + // En cas de simple point + if (aFeatures.length === 1) { + if (aFeatures[0].getGeometry().getType() === 'Point') { + this.MapObject.getView().setZoom(15); + } + } + } +} /** * Save the current features @@ -526,14 +638,20 @@ nsVitisComponent.Map.prototype.saveFeatures = function () { /** * Parse the string (GeoJSON, WKT) and return the features * @param {string} sFeatures + * @param {string} sFormat * @returns {Array} + * @export */ -nsVitisComponent.Map.prototype.getFeaturesByString = function (sFeatures) { +nsVitisComponent.Map.prototype.getFeaturesByString = function (sFeatures, sFormat) { this.$log_.info('nsVitisComponent.Map.getFeaturesByString'); var aFeatures = []; - if (this.outputFormat_ === 'wkt' || this.outputFormat_ === 'ewkt') { + if (!goog.isDefAndNotNull(sFormat)) { + sFormat = this.outputFormat_; + } + + if (sFormat === 'wkt' || sFormat === 'ewkt') { if (ol.isEWKTGeom(sFeatures)) { aFeatures = ol.getFeaturesFromEWKT(sFeatures, this.proj_); } else { @@ -547,7 +665,7 @@ nsVitisComponent.Map.prototype.getFeaturesByString = function (sFeatures) { console.error('cannot read the geometry on format wkt'); } } - } else if (this.outputFormat_ === 'geojson') { + } else if (sFormat === 'geojson') { try { aFeatures = this.geoJSONFormat.readFeatures(sFeatures, { dataProjection: this.baseProj_, @@ -1318,10 +1436,19 @@ nsVitisComponent.Map.prototype.activeInteraction = function (sInteraction, bForc this_.MapObject.addInteraction(this.snapInteraction_); }; +/** + * Get the formReaderScope + * @return {object} scope + */ nsVitisComponent.Map.prototype.getFormReaderScope_ = function (){ return angular.element(this.Target).scope(); } +/** + * Show the divide segment form + * @param {string} sFeature1 + * @param {string} sFeature2 + */ nsVitisComponent.Map.prototype.showDividedSegmentForm_ = function (sFeature1, sFeature2){ var this_ = this; @@ -1674,6 +1801,62 @@ nsVitisComponent.Map.prototype.removeFeature = function (oFeature) { this.Features.changed(); }; +/** + * Requête Ajax pour répupérer la définition d'une carte + * @param {string} sMapId map_id + * @return {object} map json + */ +nsVitisComponent.Map.prototype.getAjaxVmapMap = function (sMapId) { + + var deferred = this.$q_.defer(); + + if (!angular.isDefined(sMapId) || sMapId == '') { + console.error('map_id non valide'); + deferred.reject(); + } else { + + // Récupère la liste des rapports disponibles + ajaxRequest({ + 'method': 'GET', + 'url': this.$propertiesSrvc_["web_server_name"] + "/" + this.$propertiesSrvc_["services_alias"] + '/vmap/mapjsons/' + sMapId, + 'headers': { + 'Accept': 'application/x-vm-json' + }, + 'success': function (response) { + if (!goog.isDefAndNotNull(response['data'])) { + console.error('response.data undefined: ', response); + deferred.reject(); + return 0; + } + if (!goog.isDefAndNotNull(response['data']['data'])) { + console.error('Aucune carte disponible pour ' + sMapId); + deferred.reject(); + return 0; + } + if (!goog.isDefAndNotNull(response['data']['data'][0])) { + console.error('Aucune carte disponible pour ' + sMapId); + deferred.reject(); + return 0; + } + if (!goog.isDefAndNotNull(response['data']['data'][0]['children'])) { + console.error('Aucune carte disponible pour ' + sMapId); + deferred.reject(); + return 0; + } + if (!goog.isDefAndNotNull(response['data']['data'][0]['children'][1])) { + console.error('Aucune carte disponible pour ' + sMapId); + deferred.reject(); + return 0; + } + var oMap = response['data']['data'][0]; + deferred.resolve(oMap); + } + }); + } + + return deferred.promise; +} + /** * Load a Map.json to set layers and view of the map * @param {Object} tree Json tree to set the map (he's generated by Vmap) diff --git a/src/vitis/client/javascript/externs/formReader/component/map_workbench/map_workbench.js b/src/vitis/client/javascript/externs/formReader/component/map_workbench/map_workbench.js index 32ed53d696a53063fe3dd4020ed207461e8f235a..76b09c686bef4b3411631f3042d7f1c92ef4929c 100755 --- a/src/vitis/client/javascript/externs/formReader/component/map_workbench/map_workbench.js +++ b/src/vitis/client/javascript/externs/formReader/component/map_workbench/map_workbench.js @@ -365,7 +365,7 @@ nsVitisComponent.MapWorkbenchDirective = function ($timeout) { break; } }); - }); + }, 500); // Intancie le subform setTimeout(function () { @@ -745,7 +745,7 @@ nsVitisComponent.MapWorkbenchController.prototype.addFeature = function () { }); }); - // Désactive la possibilité d'ajouter des features + // Désactive la possibilité d'ajouter des features this.unactiveDrawInteractions_(); // Ajoute la/les nouvelle interaction @@ -811,7 +811,7 @@ nsVitisComponent.MapWorkbenchController.prototype.setStyleFromType_ = function ( // La chaine commence et se finit par {{ et }} ? if (oStyle[key1][key2].substr(0, 2) === '{{' && oStyle[key1][key2].substr(-2, 2) === '}}') { - // Le contenu des balises est un des champs du formulaire ? + // Le contenu des balises est un des champs du formulaire ? var sTag = oStyle[key1][key2].substr(2, oStyle[key1][key2].length - 4); if (goog.isDefAndNotNull(oAttributes[sTag])) { oStyle[key1][key2] = oAttributes[sTag]; @@ -887,4 +887,4 @@ nsVitisComponent.MapWorkbenchController.prototype.unactiveDrawInteractions_ = fu // this.$scope_['oMap']['setInteractions'](this.$scope_['field']['map_options']['interactions']); // } // } -}; \ No newline at end of file +}; diff --git a/src/vitis/client/javascript/externs/formReader/formReaderDrtv.js b/src/vitis/client/javascript/externs/formReader/formReaderDrtv.js index 49bc4b74cfe3be5fcf16eaf31b3f9ea51fe80594..d9b441ea60aa072df322f492c7ec9516d50c003d 100644 --- a/src/vitis/client/javascript/externs/formReader/formReaderDrtv.js +++ b/src/vitis/client/javascript/externs/formReader/formReaderDrtv.js @@ -1351,7 +1351,9 @@ formReader.appFormFieldSpecificParamsDrtv = function ($timeout, $translate, prop scope['oFormValues'][scope['sFormDefinitionName']][scope['field']['name']] = 0; // Quand le slider change par l'action de l'utilisateur $(element).on('slide', function () { - scope['oFormValues'][scope['sFormDefinitionName']][scope['field']['name']] = $(element)['slider']('getValue'); + scope.$applyAsync(function(){ + scope['oFormValues'][scope['sFormDefinitionName']][scope['field']['name']] = $(element)['slider']('getValue'); + }); }); // Quand la valeur dans oFormValues du slider change scope.$watch('oFormValues.' + scope['sFormDefinitionName'] + '["' + scope['field']['name'] + '"]', function () { diff --git a/src/vitis/vas/rest/ws/vitis/GenericQuerys.class.inc b/src/vitis/vas/rest/ws/vitis/GenericQuerys.class.inc index ae3ade89fea7b65a19aed0869f12b0357b914be6..7394491a162f775ffb0d7ec7731e124bbb5621c9 100644 --- a/src/vitis/vas/rest/ws/vitis/GenericQuerys.class.inc +++ b/src/vitis/vas/rest/ws/vitis/GenericQuerys.class.inc @@ -457,7 +457,6 @@ class GenericQuerys extends Vitis { $this->aValues['password'] = ''; } } - $this->oBd = new BD($this->aValues['login'], $this->aValues['password'], $this->aValues['database'], $this->aValues['server'], $this->aValues['port'], $this->aValues['sgbd'], $this->aValues['encoding']); if ($this->oBd->erreurRencontree) { writeToErrorLog(ERROR_CONNECTION_PROBLEM); @@ -525,6 +524,28 @@ class GenericQuerys extends Vitis { $this->oBd = new BD($this->aValues['login'], $this->aValues['password'], $sDatabase, $this->aValues['server'], $this->aValues['port'], $this->aValues['sgbd'], $this->aValues['encoding']); $sSql = $this->aSql[$this->aValues['sgbd']]['getSchemas']; $aSQLParams = array(); + //order by + if (!empty($this->aValues['order_by'])) { + $aOrder = explode("|", $this->aValues['order_by']); + foreach ($aOrder as $value) { + $sColumnKey = 'column_' . vitisUniqId(); + if (strpos($sSql, "ORDER BY") == FALSE) + $sSql .= " ORDER BY " . str_replace("=", " ", "[" . $sColumnKey . "]"); + else + $sSql .= ", " . str_replace("=", " ", "[" . $sColumnKey . "]"); + $aSQLParams[$sColumnKey] = array('value' => $value, 'type' => 'column_name'); + } + } + // sort_order + if (!empty($this->aValues['sort_order'])) { + switch (strtoupper($this->aValues['sort_order'])) { + case 'DESC': + $sSql .= " DESC"; + break; + default: + $sSql .= " ASC"; + } + } $oPDOresult = $this->oBd->executeWithParams($sSql, $aSQLParams); if ($this->oBd->enErreur()) { $oError = new VitisError(1, $this->oBd->getBDMessage());