Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(gfi): pas d'affichage du tout si pas de données sous le clic #301

Merged
merged 5 commits into from
Dec 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions src/packages/Controls/GetFeatureInfo/GetFeatureInfo.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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){
Expand All @@ -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;
}
}
}
Expand Down Expand Up @@ -454,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,
Expand All @@ -476,14 +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) {
this.getFeatureInfoPanelDiv.append(this.noDataMessage);
// on n'affiche pas la pop-up car pas de données
this.buttonGetFeatureInfoClose.setAttribute("aria-pressed", false);
}
}
});
Expand Down
13 changes: 0 additions & 13 deletions src/packages/Controls/GetFeatureInfo/GetFeatureInfoDOM.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 ####################### //
// ################################################################### //
Expand Down