Skip to content

Commit 6b6e311

Browse files
authored
Merge pull request #499 from IGNF/main
Rebase main into feature/drawing-refonte
2 parents 7cd7cf0 + 2115242 commit 6b6e311

9 files changed

Lines changed: 132 additions & 12 deletions

File tree

CHANGELOG.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
5454
- [🎉 Summary](#-summary-8)
5555
- [💥 Breaking changes](#-breaking-changes-8)
5656
- [📖 Changelog](#-changelog-8)
57+
- [Extension Geoplateforme OpenLayers, 🔖 version 1.0.0-beta.9](#extension-geoplateforme-openlayers--version-100-beta9)
58+
- [Unreleased](#unreleased-9)
59+
- [🎉 Summary](#-summary-9)
60+
- [💥 Breaking changes](#-breaking-changes-9)
61+
- [📖 Changelog](#-changelog-9)
5762

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

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

548553

549554
---
555+
## Extension Geoplateforme OpenLayers, 🔖 version 1.0.0-beta.9
556+
557+
2026-03-11
558+
> 🚀 Release Extension Geoplateforme openlayers
559+
560+
### Unreleased
561+
562+
<https://github.com/IGNF/geopf-extensions-openlayers/compare/1.0.0-beta.9...HEAD>
563+
564+
### 🎉 Summary
565+
566+
Release qui contient des corrections diverses, principalement liées à de l'UI.
567+
568+
### 💥 Breaking changes
569+
570+
### 📖 Changelog
571+
572+
*[Added]
573+
574+
* 🔨 [Changed]
575+
576+
* 🔥 [Deprecated]
577+
578+
* 🔥 [Removed]
579+
580+
* 🐛 [Fixed]
581+
582+
- Buttons : en mode classique, réaffichage correct des boutons et des icones (#487)
583+
- SearchEngine : recherche guidée parcellaire sur les DROM-COM (#491)
584+
- Reporting: suppression de la classe gpf-button-no-gutter par défaut (#493)
585+
- Territories: suppression d'une classe qui empeche la tooltip de s'afficher (#494)
586+
- MousePosition: supprime l'ajout d'une balise <body> dans le panel (#495)
587+
588+
* 🔒 [Security]
589+
590+
- Build : transformation images en base 64 pour se passer de lodash.template (#488)
591+
---

build/release/package.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const path = require("path");
44
var yargs = require("yargs");
55
const child_process = require("child_process");
66
const fg = require("fast-glob");
7-
const base64Img = require("base64-img");
7+
88

99
async function main () {
1010
const argv = yargs
@@ -73,7 +73,21 @@ async function main () {
7373
if (!url.startsWith("data:")) {
7474
url = path.normalize(url);
7575
url = path.join(path.dirname(entry), url);
76-
const data = base64Img.base64Sync(url);
76+
// Remplacement de base64-img par une lecture/encodage natif
77+
const imgBuffer = fse.readFileSync(url);
78+
const mimeType = (() => {
79+
const ext = path.extname(url).toLowerCase();
80+
switch (ext) {
81+
case '.png': return 'image/png';
82+
case '.jpg':
83+
case '.jpeg': return 'image/jpeg';
84+
case '.svg': return 'image/svg+xml';
85+
case '.gif': return 'image/gif';
86+
case '.webp': return 'image/webp';
87+
default: return 'application/octet-stream';
88+
}
89+
})();
90+
const data = `data:${mimeType};base64,${imgBuffer.toString('base64')}`;
7791
line = line.substring(0, start) + "('" + data + "'" + line.substring(end);
7892
}
7993
}

package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "geopf-extensions-openlayers",
33
"description": "French Geoportal Extensions for OpenLayers libraries",
4-
"version": "1.0.0-beta.8",
5-
"date": "10/02/2026",
4+
"version": "1.0.0-beta.9-496",
5+
"date": "12/03/2026",
66
"module": "src/index.js",
77
"directories": {},
88
"engines": {
@@ -48,7 +48,7 @@
4848
"ajv": "^8.17.1",
4949
"ajv-formats": "^3.0.1",
5050
"clusterize.js": "^1.0.0",
51-
"doctoc": "^2.2.1",
51+
"doctoc": "^2.3.0",
5252
"dompurify": "^3.2.6",
5353
"eventbusjs": "0.2.0",
5454
"geoportal-access-lib": "3.4.6",
@@ -69,7 +69,6 @@
6969
"@babel/preset-env": "^7.23.9",
7070
"@types/sanitize-html": "^2.16.0",
7171
"babel-loader": "^9.1.3",
72-
"base64-img": "^1.0.4",
7372
"copy-webpack-plugin": "^12.0.2",
7473
"core-js": "^3.35.1",
7574
"css-loader": "^7.1.2",

src/packages/Controls/MousePosition/MousePositionDOM.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,8 @@ var MousePositionDOM = {
600600
</section>
601601
`
602602
);
603+
// get first element
604+
div = div.firstChild;
603605
htmlContent.map(content => div.getElementsByClassName("fr-collapse")[0].append(content));
604606
div.getElementsByTagName("button")[0].addEventListener("click", function (e) {
605607
var status = (e.target.ariaExpanded === "true");

src/packages/Controls/Reporting/ReportingDOM.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ var ReportingDOM = {
4747
_createMainContainerElement : function () {
4848
var container = document.createElement("div");
4949
container.id = this._addUID("GPreporting");
50-
container.className = "gpf-widget gpf-widget-button gpf-mobile-fullscreen gpf-button-no-gutter";
50+
container.className = "gpf-widget gpf-widget-button gpf-mobile-fullscreen";
5151
return container;
5252
},
5353

src/packages/Controls/SearchEngine/ParcelAdvancedSearch.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -675,9 +675,12 @@ class ParcelAdvancedSearch extends AbstractAdvancedSearch {
675675
* @returns {Promise} Promesse avec les données GeoJSON (feuilles ou parcelles si section renseignée)
676676
*/
677677
async _fetchCadastre (code, arrond, prefix, section) {
678-
const domtom = ["97","98"].includes(code.slice(0,2));
679-
const dep = code.slice(0, domtom ? 3 : 2);
680-
const com = code.slice(domtom ? 3 : 2, 5);
678+
// const domtom = ["97","98"].includes(code.slice(0,2));
679+
// const dep = code.slice(0, domtom ? 3 : 2);
680+
// const com = code.slice(domtom ? 3 : 2, 5);
681+
// Pas de traitement différent pour les drom-com;
682+
const dep = code.slice(0, 2);
683+
const com = code.slice(2, 5);
681684
const url = "https://data.geopf.fr/wfs/ows?";
682685
const params = {
683686
service : "WFS",

src/packages/Controls/Territories/Territories.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ class Territories extends Control {
7777
* @fires territories:change
7878
* @fires territories:add
7979
* @fires territories:remove
80+
* @fires territories:reset
81+
* @fires territories:order
8082
* @public
8183
* @example
8284
* var territories = new ol.control.Territories({
@@ -95,6 +97,8 @@ class Territories extends Control {
9597
* territories.on("territories:loaded", (e) => { console.log(e.data); });
9698
* territories.on("territories:add", (e) => { console.log(e); });
9799
* territories.on("territories:remove", (e) => { console.log(e); });
100+
* territories.on("territories:reset", (e) => { console.log(e); });
101+
* territories.on("territories:order", (e) => { console.log(e); });
98102
*/
99103
constructor (options) {
100104
options = options || {};
@@ -198,6 +202,24 @@ class Territories extends Control {
198202
// ################### getters / setters ############################# //
199203
// ################################################################### //
200204

205+
/**
206+
* Get all territories
207+
* @returns {Array<Territory>} - list of territories
208+
*/
209+
getTerritories () {
210+
return this.territories.map(t => t.data);
211+
}
212+
213+
/**
214+
* Find a territory by its ID
215+
* @param {String} id - territory ID
216+
* @returns {Territory|null} - territory or null if not found
217+
*/
218+
findTerritoryById (id) {
219+
var found = this.territories.find(e => e.data.id === id);
220+
return found ? found.data : null;
221+
}
222+
201223
/**
202224
* Add a territory
203225
*
@@ -537,6 +559,9 @@ class Territories extends Control {
537559
*/
538560
closePanelUpLoad () {
539561
// document.getElementById("gpf-territories-upload-container-id")
562+
if (!this.containerTerritoriesOptions) {
563+
return;
564+
}
540565
var button = this.containerTerritoriesOptions.children[0];
541566
if (button) {
542567
button.setAttribute("aria-expanded", "false");
@@ -842,6 +867,24 @@ class Territories extends Control {
842867
var nb = this.territories.filter(t => !t.isRemoved).length;
843868
count.innerText = nb;
844869
}
870+
/**
871+
* event triggered when a territory is reset
872+
*
873+
* @event territories:reset
874+
* @defaultValue "territories:reset"
875+
* @group Events
876+
* @property {Object} type - event
877+
* @property {Object} target - instance Territories
878+
* @property {Object} territories - territories
879+
* @example
880+
* Territories.on("territories:reset", function (e) {
881+
* console.log(e.territories);
882+
* })
883+
*/
884+
this.dispatchEvent({
885+
type : "territories:reset",
886+
territories : this.getTerritories()
887+
});
845888
}
846889

847890
/**
@@ -912,6 +955,24 @@ class Territories extends Control {
912955
this.territories.forEach(territory => {
913956
this.panelTerritoriesEntriesContainer.appendChild(territory.domEntry);
914957
});
958+
/**
959+
* event triggered when a territory is reordered
960+
*
961+
* @event territories:order
962+
* @defaultValue "territories:order"
963+
* @group Events
964+
* @property {Object} type - event
965+
* @property {Object} target - instance Territories
966+
* @property {Object} territories - territories
967+
* @example
968+
* Territories.on("territories:order", function (e) {
969+
* console.log(e.territories);
970+
* })
971+
*/
972+
this.dispatchEvent({
973+
type : "territories:order",
974+
territories : this.getTerritories()
975+
});
915976
}
916977

917978
};

src/packages/Controls/Territories/TerritoriesDOM.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ var TerritoriesDOM = {
9090
button.id = this._addUID("GPshowTerritoriesPicto");
9191
button.classList.add("GPshowOpen", "GPshowAdvancedToolPicto", "GPshowTerritoriesPicto");
9292
button.classList.add("gpf-btn", "gpf-btn--tertiary", "gpf-btn-icon", "gpf-btn-icon-territories");
93-
button.classList.add("fr-icon-france-line");
9493
button.classList.add("fr-btn", "fr-btn--tertiary");
9594
button.setAttribute("aria-label", "Sélectionner un territoire");
9695
button.setAttribute("tabindex", "0");

src/packages/Layers/SourceWFS.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class SourceWFS extends VectorSource {
107107

108108
var loadFeatures = (self, url, extent, success, failure) => {
109109
const xhr = new XMLHttpRequest();
110-
xhr.open("POST", url);
110+
xhr.open("GET", url);
111111
const onError = function () {
112112
self.removeLoadedExtent(extent);
113113
failure();

0 commit comments

Comments
 (0)