From fb418df5702d2446de2cb5fb2d4af9ecf9dec48c Mon Sep 17 00:00:00 2001 From: elias couppe Date: Wed, 18 Dec 2024 12:36:14 +0100 Subject: [PATCH 1/2] =?UTF-8?q?feat(gfi):=20pas=20d'affichage=20du=20tout?= =?UTF-8?q?=20si=20pas=20de=20donn=C3=A9es=20sous=20le=20clic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controls/GetFeatureInfo/GetFeatureInfo.js | 13 +++++++------ .../Controls/GetFeatureInfo/GetFeatureInfoDOM.js | 13 ------------- 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/src/packages/Controls/GetFeatureInfo/GetFeatureInfo.js b/src/packages/Controls/GetFeatureInfo/GetFeatureInfo.js index de4279e82..e0060fb9b 100644 --- a/src/packages/Controls/GetFeatureInfo/GetFeatureInfo.js +++ b/src/packages/Controls/GetFeatureInfo/GetFeatureInfo.js @@ -169,7 +169,6 @@ var GetFeatureInfo = class GetFeatureInfo extends Control { this.panelGetFeatureInfoHeaderContainer = null; // usefull for the dragNdrop this.buttonGetFeatureInfoClose = null; this.getFeatureInfoAccordionGroup = null; - this.noDataMessage = null; this.panelGetFeatureInfoEntriesContainer = null; /** {Array} specify some events listeners */ @@ -218,7 +217,6 @@ var GetFeatureInfo = class GetFeatureInfo extends Control { var accordionGroup = this.getFeatureInfoAccordionGroup = this._createGetFeatureInfoAccordionGroup(); getFeatureInfoPanelDiv.appendChild(accordionGroup); - this.noDataMessage = this._createGetFeatureInfoNoData(); container.appendChild(getFeatureInfoPanel); logger.log(container); @@ -270,8 +268,6 @@ var GetFeatureInfo = class GetFeatureInfo extends Control { onMapClick (e) { if (this.getFeatureInfoIsActive() === "true") { this.getFeatureInfoAccordionGroup.remove(); - this.noDataMessage.remove(); - this.buttonGetFeatureInfoClose.setAttribute("aria-pressed", true); this.layers = e.map.getLayers().getArray().filter((l) => { // On ne passe au GFI que les layers visibles if (l.isVisible(e.map.getView()) && l.getOpacity() > 0){ @@ -290,7 +286,8 @@ var GetFeatureInfo = class GetFeatureInfo extends Control { } // Aucun layer visible sur la carte else { - this.getFeatureInfoPanelDiv.append(this.noDataMessage); + // rien à afficher car pas de couches visibles sur la carte, on s'arrête là. + return; } } } @@ -483,7 +480,11 @@ var GetFeatureInfo = class GetFeatureInfo extends Control { //s'il n'y a aucun résultat valide on affiche un message d'erreur if (gfiContent.filter(gfi => gfi.get("pending") === true).length == 0 && gfiContent.filter(gfi => gfi.get("content")).length == 0) { - this.getFeatureInfoPanelDiv.append(this.noDataMessage); + // on n'affiche pas la pop-up car pas de données + this.buttonGetFeatureInfoClose.setAttribute("aria-pressed", false); + } else { + // on affiche la pop-up car il y a des données à afficher + this.buttonGetFeatureInfoClose.setAttribute("aria-pressed", true); } } }); diff --git a/src/packages/Controls/GetFeatureInfo/GetFeatureInfoDOM.js b/src/packages/Controls/GetFeatureInfo/GetFeatureInfoDOM.js index c69212b81..236c36242 100644 --- a/src/packages/Controls/GetFeatureInfo/GetFeatureInfoDOM.js +++ b/src/packages/Controls/GetFeatureInfo/GetFeatureInfoDOM.js @@ -174,19 +174,6 @@ var GetFeatureInfoDOM = { return waitingDivString; }, - /** - * Create group d'accodeon - * @returns {DOMElement} DOM element - */ - _createGetFeatureInfoNoData : function () { - // contexte d'execution - var self = this; - var div = document.createElement("div"); - div.className = "GPgetFeatureInfoNoData fr-py-2w fr-px-2w"; - div.innerText = "Aucune donnée à afficher"; - return div; - }, - // ################################################################### // // ####################### Methods for Layer GFI ####################### // // ################################################################### // From 7ec857f512124a659584cf7efa7efc2881fbbc68 Mon Sep 17 00:00:00 2001 From: elias couppe Date: Fri, 20 Dec 2024 13:50:08 +0100 Subject: [PATCH 2/2] =?UTF-8?q?fix(gfi):=20affichage=20de=20la=20pop-up=20?= =?UTF-8?q?gfi=20que=20quand=20des=20entr=C3=A9es=20sont=20renvoy=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controls/GetFeatureInfo/GetFeatureInfo.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/packages/Controls/GetFeatureInfo/GetFeatureInfo.js b/src/packages/Controls/GetFeatureInfo/GetFeatureInfo.js index e0060fb9b..2709edf67 100644 --- a/src/packages/Controls/GetFeatureInfo/GetFeatureInfo.js +++ b/src/packages/Controls/GetFeatureInfo/GetFeatureInfo.js @@ -451,6 +451,8 @@ var GetFeatureInfo = class GetFeatureInfo extends Control { var content = null; var accordeon = this._createGetFeatureInfoLayerAccordion(layername); + // on affiche pas l'entrée avant d'être confirmation qu'elle aura du contenu renvoyé + accordeon.style.display = "none"; var pending = true; return new AsyncData({ ...gfiLayer, @@ -473,18 +475,20 @@ var GetFeatureInfo = class GetFeatureInfo extends Control { data.set("pending", false); if (data.get("content")) { data.get("contentDiv").querySelector("div.fr-collapse").innerHTML = data.get("content"); + // on affiche la pop-up car il y a au moins une entrée à afficher + this.buttonGetFeatureInfoClose.setAttribute("aria-pressed", true); + // du contenu est renvoyé : on affiche l'entrée + data.get("contentDiv").style.display = "block"; } else { + // pas de contenu renvoyé : on retire l'entrée du DOM data.get("contentDiv").remove(); } - //s'il n'y a aucun résultat valide on affiche un message d'erreur + // s'il n'y a aucun contenu renvoyé par le GFI if (gfiContent.filter(gfi => gfi.get("pending") === true).length == 0 && gfiContent.filter(gfi => gfi.get("content")).length == 0) { // on n'affiche pas la pop-up car pas de données this.buttonGetFeatureInfoClose.setAttribute("aria-pressed", false); - } else { - // on affiche la pop-up car il y a des données à afficher - this.buttonGetFeatureInfoClose.setAttribute("aria-pressed", true); } } });