Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
bb96bfa
feat: Initialisation du nouveau widget Panoramax
lowzonenose Feb 23, 2026
8c9abe0
feat: ajout du support pour le visualiseur de photos Panoramax et amé…
lowzonenose Feb 24, 2026
465cbd8
feat: ajout de styles css et harmoniser la jsdoc
lowzonenose Feb 24, 2026
eec34c5
feat: ajout de nouvelles options et améliorations pour le widget Pano…
lowzonenose Feb 25, 2026
4d03b53
Merge branch 'main' into feature/panoramax
lowzonenose Feb 25, 2026
09815fe
feat: ajout de nouvelles options de style et de fond pour le widget P…
lowzonenose Feb 26, 2026
bd0c146
feat: ajout d'une fenêtre de visualisation pour le widget Panoramax, …
lowzonenose Feb 26, 2026
685ee4c
feat: amélioration du widget Panoramax avec des options de taille et …
lowzonenose Feb 27, 2026
43f1bba
feat: ajout de la gestion des boutons dans le widget Panoramax, améli…
lowzonenose Feb 27, 2026
c75850d
feat: ajout d'options expérimentales pour la cible DOM des panneaux d…
lowzonenose Feb 27, 2026
afd8069
feat: ajout de la licence Panoramax, mise à jour du changelog et du f…
lowzonenose Feb 27, 2026
48f30b6
feat: meilleur gestion des couches Mapbox dans le widget Panoramax, a…
lowzonenose Feb 28, 2026
2aa69af
feat: ajout d'un panneau de filtres dans le widget Panoramax, incluan…
lowzonenose Mar 1, 2026
473bcd2
feat: mise à jour des dépendances et amélioration des filtres de date…
lowzonenose Mar 2, 2026
5a1996b
feat: ajout de la gestion des groupes de couches dans le widget Panor…
lowzonenose Mar 3, 2026
252b87f
feat: amélioration des performances avec la mise en place d'une fonct…
lowzonenose Mar 3, 2026
fbadfb0
feat: ajout de la gestion des filtres de dates dans le widget Panoram…
lowzonenose Mar 3, 2026
0c775a7
fix(layerImport): suppression de l'id du style pour éviter les problè…
lowzonenose Mar 3, 2026
e8b109b
Update src/packages/Controls/Panoramax/Panoramax.js
lowzonenose Mar 4, 2026
5b5e6ab
feat(Panoramax): correctifs suggestions
lowzonenose Mar 4, 2026
e270267
Update src/packages/Controls/Panoramax/PanoramaxDOM.js
lowzonenose Mar 4, 2026
c617928
Update src/packages/Controls/Panoramax/Panoramax.js
lowzonenose Mar 4, 2026
b8e3e78
Update src/packages/Controls/Panoramax/PanoramaxDOM.js
lowzonenose Mar 4, 2026
ceb0308
Update src/packages/Controls/Panoramax/PanoramaxDOM.js
lowzonenose Mar 4, 2026
2261054
feat(Panoramax): ajout de la gestion des styles et des filtres dans l…
lowzonenose Mar 5, 2026
29b63f4
Merge branch 'main' into feature/panoramax
lowzonenose Mar 5, 2026
d1bcae9
Merge branch 'main' into feature/panoramax
lowzonenose Mar 16, 2026
6465e31
feat(Panoramax): amélioration du viewer photo avec ajout de widgets p…
lowzonenose Mar 18, 2026
55b4421
feat(Panoramax): mode fullscreen
lowzonenose Mar 18, 2026
c058330
feat(Panoramax): ajout de la légende des photos
lowzonenose Mar 18, 2026
586469f
feat(Panoramax): ajout d'un panneau d'options et refactorisation des …
lowzonenose Mar 19, 2026
9c6649c
feat(Panoramax): ajout d'un bouton de réinitialisation des filtres et…
lowzonenose Mar 19, 2026
e03c529
feat(Panoramax): ajustement de la position des panneaux en bas de l'é…
lowzonenose Mar 19, 2026
40d8639
feat(Panoramax): todo/fixme
lowzonenose Mar 19, 2026
53ebb67
feat(Panoramax): ajout de la taille "fullscreen-map" pour la fenêtre …
lowzonenose Mar 21, 2026
d9bc76a
feat(Panoramax): ajout de la méthode hideWidgetPictureMetadata pour m…
lowzonenose Mar 21, 2026
2421b65
feat(Panoramax): amélioration des css sur les options de filtres
lowzonenose Mar 21, 2026
21ce61b
fix(Panoramax): mode fullscreen-map
lowzonenose Mar 21, 2026
ef6b739
fix(panoramax): réinitialiser tous les filtres à leur état initial
lowzonenose Mar 21, 2026
5663207
feat(Panoramax): ajout de styles pour le header et amélioration de la…
lowzonenose Mar 22, 2026
1b3dcfd
fix(Panoramax): activer le panneau d'options et gérer les événements …
lowzonenose Mar 23, 2026
6d3f9c9
fix(Panoramax): ajustements divers sur les options et le style des co…
lowzonenose Mar 23, 2026
4b22e43
feat(Panoramax): build bundle / modules avec lib externe
lowzonenose Mar 24, 2026
8a0c3ad
doc(Panoramax): mise à jour des types et des exemples dans la documen…
lowzonenose Mar 24, 2026
7e4fbff
Merge branch 'main' into feature/panoramax
lowzonenose Mar 24, 2026
e49abb8
Merge branch 'main' into feature/panoramax
lowzonenose Apr 2, 2026
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
24 changes: 24 additions & 0 deletions DEPENDENCIES.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,3 +107,27 @@ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE._

# Panoramax - The Panoramax viewer is a web JS library which displays pictures and sequences from a Panoramax server, or any STAC API offering geolocated pictures.

MIT License

Copyright (c) 2022 Adrien Pavie

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
2 changes: 2 additions & 0 deletions DRAFT_CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ __DATE__

* ✨ [Added]

- Panoramax : 🎉 nouveau widget !

* 🔨 [Changed]

- perf: écoute évènement moveend sur map au lieu de change:resolution sur view
Expand Down
7 changes: 7 additions & 0 deletions build/licences/licence-panoramax.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/*!
* @overview Panoramax - a web JS viewer library which displays pictures and sequences from a Panoramax server
* @copyright Copyright (c) 2022 Adrien Pavie
* @license Licensed under MIT license
* See https://gitlab.com/panoramax/clients/web-viewer/-/raw/develop/LICENSE
* @version {__VERSION__}
*/
8 changes: 7 additions & 1 deletion build/webpack/bundle.webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ module.exports = (env, argv) => {
amd : "ol",
root : "ol"
},
"@panoramax/web-viewer/build/photoviewer" : {
commonjs : "@panoramax/web-viewer/build/photoviewer",
commonjs2 : "@panoramax/web-viewer/build/photoviewer",
amd : "Panoramax",
root : "Panoramax"
},
request : {
commonjs2 : "request",
commonjs : "request",
Expand Down Expand Up @@ -171,7 +177,7 @@ module.exports = (env, argv) => {
test : /\.css$/,
include : [
path.join(rootdir, "src", "packages", "CSS"),
/node_modules\/@gouvfr\/dsfr\/dist/,
/node_modules\/@gouvfr\/dsfr\/dist/
],
use : [
MiniCssExtractPlugin.loader,
Expand Down
6 changes: 6 additions & 0 deletions build/webpack/extend.banners.webpack.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ module.exports = (env, argv) => {
raw : true,
entryOnly : true
}),
new BannerWebPackPlugin({
banner : header(fs.readFileSync(path.join(rootdir, "build/licences", "licence-panoramax.tmpl"), "utf8"), {
__VERSION__ : pkg.dependencies["@panoramax/web-viewer"],
}),
raw : true
}),
]
};
};
1 change: 1 addition & 0 deletions build/webpack/extend.base.webpack.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ module.exports = (env, argv) => {
include : [
path.join(rootdir, "src", "packages", "CSS"),
/node_modules\/@gouvfr\/dsfr\/dist/,
/node_modules\/@panoramax\/web-viewer\/build/,
],
use : [
MiniCssExtractPlugin.loader,
Expand Down
2 changes: 2 additions & 0 deletions build/webpack/extend.themes.webpack.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ module.exports = (env, argv) => {
path.join(rootdir, "src", "packages", "CSS", "Controls/ControlList", "GPFcontrolListStyle.css"),
path.join(rootdir, "src", "packages", "CSS", "Controls/ContextMenu", "GPFcontextMenuStyle.css"),
path.join(rootdir, "src", "packages", "CSS", "Controls/Reporting", "GPFreportingStyle.css"),
path.join(rootdir, "src", "packages", "CSS", "Controls/Panoramax", "GPFpanoramaxStyle.css"),
],
// CSS themes dsfr
"Dsfr" : [
Expand Down Expand Up @@ -76,6 +77,7 @@ module.exports = (env, argv) => {
path.join(rootdir, "src", "packages", "CSS", "Controls/ControlList", "DSFRcontrolListStyle.css"),
path.join(rootdir, "src", "packages", "CSS", "Controls/ContextMenu", "DSFRcontextMenuStyle.css"),
path.join(rootdir, "src", "packages", "CSS", "Controls/Reporting", "DSFRreportingStyle.css"),
path.join(rootdir, "src", "packages", "CSS", "Controls/Panoramax", "DSFRpanoramaxStyle.css"),
],
}
};
Expand Down
12 changes: 10 additions & 2 deletions build/webpack/modules.webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ module.exports = (env, argv) => {
"GpfExtOlControlList" : path.join(rootdir, "src", "packages", "Controls/ControlList", "ControlList.js"),
"GpfExtOlContextMenu" : path.join(rootdir, "src", "packages", "Controls/ContextMenu", "ContextMenu.js"),
"GpfExtOlReporting" : path.join(rootdir, "src", "packages", "Controls/Reporting", "Reporting.js"),
"GpfExtOlPanoramax" : path.join(rootdir, "src", "packages", "Controls/Panoramax", "Panoramax.js"),

// Formats étendus
"GpfExtOlFormats" : [
path.join(rootdir, "src", "packages", "Formats", "GeoJSON.js"),
Expand Down Expand Up @@ -120,6 +122,12 @@ module.exports = (env, argv) => {
amd : "ol",
root : "ol"
},
"@panoramax/web-viewer/build/photoviewer" : {
commonjs : "@panoramax/web-viewer/build/photoviewer",
commonjs2 : "@panoramax/web-viewer/build/photoviewer",
amd : "Panoramax",
root : "Panoramax"
},
request : {
commonjs2 : "request",
commonjs : "request",
Expand All @@ -134,7 +142,7 @@ module.exports = (env, argv) => {
],
devtool : "source-map",
devServer : {
webSocketServer: false,
webSocketServer : false,
server : "https",
open : ["samples/index-modules.html"],
static : {
Expand Down Expand Up @@ -222,7 +230,7 @@ module.exports = (env, argv) => {
test : /\.css$/,
include : [
path.join(rootdir, "src", "packages", "CSS"),
/node_modules\/@gouvfr\/dsfr\/dist/,
/node_modules\/@gouvfr\/dsfr\/dist/
],
use : [
MiniCssExtractPlugin.loader,
Expand Down
8 changes: 5 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "geopf-extensions-openlayers",
"description": "French Geoportal Extensions for OpenLayers libraries",
"version": "1.0.0-beta.9-496",
"version": "1.0.0-beta.9-492",
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La version du package est décrémentée (...-496 -> ...-492). Sauf intention explicite, ça casse la monotonie des versions et peut perturber la publication/CI. Ajuster pour incrémenter (ou justifier le changement).

Suggested change
"version": "1.0.0-beta.9-492",
"version": "1.0.0-beta.9-497",

Copilot uses AI. Check for mistakes.
"date": "12/03/2026",
"module": "src/index.js",
"directories": {},
Expand Down Expand Up @@ -44,19 +44,21 @@
"dependencies": {
"@gouvfr/dsfr": "^1.13.1",
"@mapbox/mapbox-gl-style-spec": "14.8.0",
"@panoramax/web-viewer": "^4.4.0",
"@xmldom/xmldom": "^0.9.0",
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"clusterize.js": "^1.0.0",
"date-fns": "^4.1.0",
"doctoc": "^2.3.0",
"dompurify": "^3.2.6",
"dompurify": "^3.3.3",
"eventbusjs": "0.2.0",
"geoportal-access-lib": "3.4.6",
"loglevel": "^1.9.1",
"marked": "^16.2.1",
"ol": "^10.3.1",
"ol-contextmenu": "^5.5.0",
"ol-mapbox-style": "^12.3.5",
"ol-mapbox-style": "^13.3.0",
"proj4": "2.15.0",
"sortablejs": "1.15.3",
"typescript": "^5.3.3",
Expand Down
34 changes: 23 additions & 11 deletions samples-src/pages/tests/Default/pages-ol-bundle-dsfr-default.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{{#extend "ol-sample-bundle-dsfr-layout"}}

{{#content "vendor"}}
<link rel="stylesheet" href="{{ resources }}/vendor/panoramax/v4.4.0/photoviewer.css" />
<script src="{{ resources }}/vendor/panoramax/v4.4.0/photoviewer.js"></script>
<link rel="stylesheet" href="{{ baseurl }}/dist/bundle/GpfExtOL.css" />
<script src="{{ baseurl }}/dist/bundle/GpfExtOL.js"></script>
{{/content}}
Expand Down Expand Up @@ -46,8 +48,18 @@ <h2>Ajout de tous les widgets</h2>
})
});

var panoramax = new ol.control.Panoramax({
position: "bottom-left",
collapsed: true,
panel : true,
visualizationWindow : {
size : "fullscreen-map",
}
});
map.addControl(panoramax);

var catalog = new ol.control.Catalog({
position : "top-left"
position : "top-right"
});
map.addControl(catalog);

Expand All @@ -56,22 +68,22 @@ <h2>Ajout de tous les widgets</h2>
});
map.addControl(reporting);

var zoom = new ol.control.GeoportalZoom({
position : "bottom-left"
});
map.addControl(zoom);

var fullscreen = new ol.control.GeoportalFullScreen({
position : "top-right"
position : "bottom-right"
});
map.addControl(fullscreen);

var overview = new ol.control.GeoportalOverviewMap({
position : "bottom-left",
collapsed: false
position : "bottom-right",
collapsed: true
});
map.addControl(overview);


var zoom = new ol.control.GeoportalZoom({
position : "bottom-right"
});
map.addControl(zoom);

var drawing = new ol.control.Drawing({
position : "bottom-left"
});
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
{{#extend "ol-sample-modules-dsfr-layout"}}

{{#content "vendor"}}
<link rel="stylesheet" href="{{ resources }}/vendor/panoramax/v4.4.0/photoviewer.css" />
<script src="{{ resources }}/vendor/panoramax/v4.4.0/photoviewer.js"></script>
<link rel="stylesheet" href="{{ baseurl }}/dist/modules/GpfExtOlCatalog.css" />
<script src="{{ baseurl }}/dist/modules/GpfExtOlCatalog.js"></script>
<link rel="stylesheet" href="{{ baseurl }}/dist/modules/GpfExtOlLayerSwitcher.css" />
<script src="{{ baseurl }}/dist/modules/GpfExtOlLayerSwitcher.js"></script>
<link rel="stylesheet" href="{{ baseurl }}/dist/modules/GpfExtOlPanoramax.css" />
<script src="{{ baseurl }}/dist/modules/GpfExtOlPanoramax.js"></script>
<script src="{{ baseurl }}/dist/modules/GpfExtOlLayers.js"></script>
{{/content}}

{{#content "head"}}
<title>Sample openlayers Panoramax</title>
{{/content}}

{{#content "style"}}
<style>
div#map {
width: 100vw;
height: calc(100vh - 200px);
background-image:url("{{ resources }}/geoportail-waiting.gif");
background-position:center center;
background-repeat:no-repeat;
}

</style>
{{/content}}

{{#content "body"}}
<h2>Ajout du widget Panoramax, avec les options par défaut</h2>
<!-- map -->
<div id="map">
</div>
{{/content}}

{{#content "js"}}
<script>
if (window.Gp) {
localStorage.setItem("loglevel", "debug");
localStorage.setItem("loglevel:panoramax", "debug");
// activation des loggers
Gp.Logger.enableAll();
}
var map;
var panoramax;

var createMap = function () {
document.getElementById('map').style.backgroundImage = 'none';

// Création de la map
map = new ol.Map({
target : "map",
view : new ol.View({
center : [288074.8449901076, 6247982.515792289],
zoom : 18
})
});

var gpMaps = new ol.layer.GeoportalWMTS({
layer: "GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2"
});
map.addLayer(gpMaps);

// Ajout du contrôle de gestion des couches
var layerSwitcher = new ol.control.LayerSwitcher({
options : {
collapsed: true,
position: "top-left",
panel: true,
counter: true
}
});
map.addControl(layerSwitcher);

var catalog = new ol.control.Catalog({
position: "top-left",
collapsed : true
});
map.addControl(catalog);

// Ajout du contrôle Panoramax
var options = {
collapsed: false,
panel : true
};
panoramax = new ol.control.Panoramax(options);
// Gestion de l'événement d'ouverture du formulaire de Panoramax
// mais, une seule fois !
panoramax.once("pnx:opened", function () {
console.log("Panoramax event opened !");
});
map.addControl(panoramax);
};
Gp.Services.getConfig({
customConfigFile : "{{ configurl }}",
callbackSuffix : "",
// apiKey: "{{ apikey }}",
timeOut : 20000,
onSuccess : createMap,
onFailure : (e) => {
console.error(e);
}
});
</script>
{{/content}}
{{/extend}}
Loading