Skip to content
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
42 changes: 42 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- [🎉 Summary](#-summary-8)
- [💥 Breaking changes](#-breaking-changes-8)
- [📖 Changelog](#-changelog-8)
- [Extension Geoplateforme OpenLayers, 🔖 version 1.0.0-beta.9](#extension-geoplateforme-openlayers--version-100-beta9)
- [Unreleased](#unreleased-9)
- [🎉 Summary](#-summary-9)
- [💥 Breaking changes](#-breaking-changes-9)
- [📖 Changelog](#-changelog-9)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

Expand Down Expand Up @@ -547,3 +552,40 @@ Corrections sur le layerSwitcher et amélioration de l'affichage des couches dan


---
## Extension Geoplateforme OpenLayers, 🔖 version 1.0.0-beta.9

2026-03-11
> 🚀 Release Extension Geoplateforme openlayers

### Unreleased

<https://github.com/IGNF/geopf-extensions-openlayers/compare/1.0.0-beta.9...HEAD>

### 🎉 Summary

Release qui contient des corrections diverses, principalement liées à de l'UI.

### 💥 Breaking changes

### 📖 Changelog

* ✨ [Added]

* 🔨 [Changed]

* 🔥 [Deprecated]

* 🔥 [Removed]

* 🐛 [Fixed]

- Buttons : en mode classique, réaffichage correct des boutons et des icones (#487)
- SearchEngine : recherche guidée parcellaire sur les DROM-COM (#491)
- Reporting: suppression de la classe gpf-button-no-gutter par défaut (#493)
- Territories: suppression d'une classe qui empeche la tooltip de s'afficher (#494)
- MousePosition: supprime l'ajout d'une balise <body> dans le panel (#495)

* 🔒 [Security]

- Build : transformation images en base 64 pour se passer de lodash.template (#488)
---
18 changes: 16 additions & 2 deletions build/release/package.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const path = require("path");
var yargs = require("yargs");
const child_process = require("child_process");
const fg = require("fast-glob");
const base64Img = require("base64-img");


async function main () {
const argv = yargs
Expand Down Expand Up @@ -73,7 +73,21 @@ async function main () {
if (!url.startsWith("data:")) {
url = path.normalize(url);
url = path.join(path.dirname(entry), url);
const data = base64Img.base64Sync(url);
// Remplacement de base64-img par une lecture/encodage natif
const imgBuffer = fse.readFileSync(url);
const mimeType = (() => {
const ext = path.extname(url).toLowerCase();
switch (ext) {
case '.png': return 'image/png';
case '.jpg':
case '.jpeg': return 'image/jpeg';
case '.svg': return 'image/svg+xml';
case '.gif': return 'image/gif';
case '.webp': return 'image/webp';
default: return 'application/octet-stream';
}
})();
const data = `data:${mimeType};base64,${imgBuffer.toString('base64')}`;
line = line.substring(0, start) + "('" + data + "'" + line.substring(end);
}
}
Expand Down
7 changes: 3 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "geopf-extensions-openlayers",
"description": "French Geoportal Extensions for OpenLayers libraries",
"version": "1.0.0-beta.8",
"date": "10/02/2026",
"version": "1.0.0-beta.9-496",
"date": "12/03/2026",
"module": "src/index.js",
"directories": {},
"engines": {
Expand Down Expand Up @@ -48,7 +48,7 @@
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"clusterize.js": "^1.0.0",
"doctoc": "^2.2.1",
"doctoc": "^2.3.0",
"dompurify": "^3.2.6",
"eventbusjs": "0.2.0",
"geoportal-access-lib": "3.4.6",
Expand All @@ -69,7 +69,6 @@
"@babel/preset-env": "^7.23.9",
"@types/sanitize-html": "^2.16.0",
"babel-loader": "^9.1.3",
"base64-img": "^1.0.4",
"copy-webpack-plugin": "^12.0.2",
"core-js": "^3.35.1",
"css-loader": "^7.0.0",
Expand Down
2 changes: 2 additions & 0 deletions src/packages/Controls/MousePosition/MousePositionDOM.js
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,8 @@ var MousePositionDOM = {
</section>
`
);
// get first element
div = div.firstChild;
htmlContent.map(content => div.getElementsByClassName("fr-collapse")[0].append(content));
div.getElementsByTagName("button")[0].addEventListener("click", function (e) {
var status = (e.target.ariaExpanded === "true");
Expand Down
2 changes: 1 addition & 1 deletion src/packages/Controls/Reporting/ReportingDOM.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ var ReportingDOM = {
_createMainContainerElement : function () {
var container = document.createElement("div");
container.id = this._addUID("GPreporting");
container.className = "gpf-widget gpf-widget-button gpf-mobile-fullscreen gpf-button-no-gutter";
container.className = "gpf-widget gpf-widget-button gpf-mobile-fullscreen";
return container;
},

Expand Down
9 changes: 6 additions & 3 deletions src/packages/Controls/SearchEngine/ParcelAdvancedSearch.js
Original file line number Diff line number Diff line change
Expand Up @@ -675,9 +675,12 @@ class ParcelAdvancedSearch extends AbstractAdvancedSearch {
* @returns {Promise} Promesse avec les données GeoJSON (feuilles ou parcelles si section renseignée)
*/
async _fetchCadastre (code, arrond, prefix, section) {
const domtom = ["97","98"].includes(code.slice(0,2));
const dep = code.slice(0, domtom ? 3 : 2);
const com = code.slice(domtom ? 3 : 2, 5);
// const domtom = ["97","98"].includes(code.slice(0,2));
// const dep = code.slice(0, domtom ? 3 : 2);
// const com = code.slice(domtom ? 3 : 2, 5);
// Pas de traitement différent pour les drom-com;
const dep = code.slice(0, 2);
const com = code.slice(2, 5);
const url = "https://data.geopf.fr/wfs/ows?";
const params = {
service : "WFS",
Expand Down
61 changes: 61 additions & 0 deletions src/packages/Controls/Territories/Territories.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ class Territories extends Control {
* @fires territories:change
* @fires territories:add
* @fires territories:remove
* @fires territories:reset
* @fires territories:order
* @public
* @example
* var territories = new ol.control.Territories({
Expand All @@ -95,6 +97,8 @@ class Territories extends Control {
* territories.on("territories:loaded", (e) => { console.log(e.data); });
* territories.on("territories:add", (e) => { console.log(e); });
* territories.on("territories:remove", (e) => { console.log(e); });
* territories.on("territories:reset", (e) => { console.log(e); });
* territories.on("territories:order", (e) => { console.log(e); });
*/
constructor (options) {
options = options || {};
Expand Down Expand Up @@ -198,6 +202,24 @@ class Territories extends Control {
// ################### getters / setters ############################# //
// ################################################################### //

/**
* Get all territories
* @returns {Array<Territory>} - list of territories
*/
getTerritories () {
return this.territories.map(t => t.data);
}

/**
* Find a territory by its ID
* @param {String} id - territory ID
* @returns {Territory|null} - territory or null if not found
*/
findTerritoryById (id) {
var found = this.territories.find(e => e.data.id === id);
return found ? found.data : null;
}

/**
* Add a territory
*
Expand Down Expand Up @@ -537,6 +559,9 @@ class Territories extends Control {
*/
closePanelUpLoad () {
// document.getElementById("gpf-territories-upload-container-id")
if (!this.containerTerritoriesOptions) {
return;
}
var button = this.containerTerritoriesOptions.children[0];
if (button) {
button.setAttribute("aria-expanded", "false");
Expand Down Expand Up @@ -842,6 +867,24 @@ class Territories extends Control {
var nb = this.territories.filter(t => !t.isRemoved).length;
count.innerText = nb;
}
/**
* event triggered when a territory is reset
*
* @event territories:reset
* @defaultValue "territories:reset"
* @group Events
* @property {Object} type - event
* @property {Object} target - instance Territories
* @property {Object} territories - territories
* @example
* Territories.on("territories:reset", function (e) {
* console.log(e.territories);
* })
*/
this.dispatchEvent({
type : "territories:reset",
territories : this.getTerritories()
});
}

/**
Expand Down Expand Up @@ -912,6 +955,24 @@ class Territories extends Control {
this.territories.forEach(territory => {
this.panelTerritoriesEntriesContainer.appendChild(territory.domEntry);
});
/**
* event triggered when a territory is reordered
*
* @event territories:order
* @defaultValue "territories:order"
* @group Events
* @property {Object} type - event
* @property {Object} target - instance Territories
* @property {Object} territories - territories
* @example
* Territories.on("territories:order", function (e) {
* console.log(e.territories);
* })
*/
this.dispatchEvent({
type : "territories:order",
territories : this.getTerritories()
});
}

};
Expand Down
1 change: 0 additions & 1 deletion src/packages/Controls/Territories/TerritoriesDOM.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ var TerritoriesDOM = {
button.id = this._addUID("GPshowTerritoriesPicto");
button.classList.add("GPshowOpen", "GPshowAdvancedToolPicto", "GPshowTerritoriesPicto");
button.classList.add("gpf-btn", "gpf-btn--tertiary", "gpf-btn-icon", "gpf-btn-icon-territories");
button.classList.add("fr-icon-france-line");
button.classList.add("fr-btn", "fr-btn--tertiary");
button.setAttribute("aria-label", "Sélectionner un territoire");
button.setAttribute("tabindex", "0");
Expand Down
2 changes: 1 addition & 1 deletion src/packages/Layers/SourceWFS.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ class SourceWFS extends VectorSource {

var loadFeatures = (self, url, extent, success, failure) => {
const xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.open("GET", url);
const onError = function () {
self.removeLoadedExtent(extent);
failure();
Expand Down
Loading