Skip to content
Draft
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
Binary file added geopf-extensions-openlayers-1.0.0-beta.10-490.tgz
Binary file not shown.
Binary file removed geopf-extensions-openlayers-1.0.0-beta.10-503.tgz
Binary file not shown.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"name": "cartes.gouv.fr-entree-carto",
"type": "module",
"version": "1.0.16-8-hotfix-share",
"version": "1.0.16-8-test-drawing",
"description": "Interface cartographique permettant de visualiser et manipuler les données de la Géoplateforme",
"date": "29/04/2026",
"date": "12/05/2026",
"directories": {},
"engines": {
"node": ">=20"
Expand Down Expand Up @@ -51,7 +51,7 @@
"@gouvfr/dsfr": "^1.14.4",
"@gouvminint/vue-dsfr": "^8.15.0",
"@iconify/vue": "^4.3.0",
"geopf-extensions-openlayers": "1.0.0-beta.10",
"geopf-extensions-openlayers": "./geopf-extensions-openlayers-1.0.0-beta.10-490.tgz",
"cartes.gouv.fr-vue-components": "git+https://github.com/IGNF/cartes.gouv.fr-vue-components#v0.0.2",
"jspdf": "^4.2.0",
"keycloak-js": "^26.2.2",
Expand Down
103 changes: 89 additions & 14 deletions src/components/carte/control/Drawing.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,10 @@ import {
} from '@/components/carte/control/actions/actionSaveButton';

import {
Drawing,
ButtonExport
Draw as Drawing,
// Drawing,
ButtonExport,
KML
} from 'geopf-extensions-openlayers';

import { toShare } from '@/features/share';
Expand Down Expand Up @@ -81,6 +83,7 @@ const btnExport = ref(new ButtonExport({
},
direction : "column",
format : formatByDefault,
target : drawing.value.getDialog().getFooterContent(),
icons : {
menu : "",
button : "export"
Expand All @@ -91,6 +94,7 @@ const btnSave = ref(new ButtonExport({
kind : "primary",
download : false,
name: "Mon croquis",
target : drawing.value.getDialog().getFooterContent(),
description: "",
control: drawing.value,
menu: false,
Expand All @@ -115,7 +119,8 @@ const btnSave = ref(new ButtonExport({
*/
emitter.addEventListener("vector:edit:clicked", (e) => {
if (drawing.value) {
drawing.value.setCollapsed(false);
// drawing.value.setCollapsed(false);
drawing.value.setActive(true);
drawing.value.setLayer(e.layer);
btnExport.value.setName(e.options.title || "");
btnSave.value.setName(e.options.title || "");
Expand Down Expand Up @@ -146,7 +151,8 @@ emitter.addEventListener("vector:edit:clicked", (e) => {
*/
emitter.addEventListener("drawing:open:clicked", (e) => {
if (drawing.value) {
drawing.value.setCollapsed(!e.open);
// drawing.value.setCollapsed(!e.open);
drawing.value.setActive(e.open);
}
});

Expand All @@ -156,7 +162,8 @@ emitter.addEventListener("drawing:open:clicked", (e) => {
*/
emitter.addEventListener("drawing:close", () => {
if (drawing.value) {
drawing.value.setCollapsed(true);
// drawing.value.setCollapsed(true);
drawing.value.setActive(false);
}
});

Expand Down Expand Up @@ -191,7 +198,8 @@ const restoreTemporaryDocument = (payload) => {
data : payload.content
}).then((layer) => {
// restaurer le croquis dans le widget puis l'afficher
drawing.value.setCollapsed(false);
// drawing.value.setCollapsed(false);
drawing.value.setActive(true);
drawing.value.setLayer(layer);
btnExport.value.setName(payload.name || "Document restauré");
btnExport.value.setFormat(payload.format);
Expand Down Expand Up @@ -248,13 +256,15 @@ onMounted(() => {
}
map.addControl(btnSave.value);
if (props.analytic) {
// TODO : changer car ne va pas fonctionner ?
var el = drawing.value.element.querySelector("button[id^=GPshowDrawingPicto-]");
useActionButtonEulerian(el);
}
/** abonnement au widget */
btnSave.value.on("button:clicked", onSaveVector);
btnExport.value.on("button:clicked", onExportVector);
drawing.value.on("change:collapsed", onToggleShowVector);
// drawing.value.on("change:collapsed", onToggleShowVector);
drawing.value.on("change:active", onToggleShowVector);
}

// Fallback: si l'event a ete emis avant le montage du composant,
Expand All @@ -278,13 +288,15 @@ onBeforeUpdate(() => {
}
map.addControl(btnSave.value);
if (props.analytic) {
// TODO : changer car ne va pas fonctionner ?
var el = drawing.value.element.querySelector("button[id^=GPshowDrawingPicto-]");
useActionButtonEulerian(el);
}
/** abonnement au widget */
btnSave.value.on("button:clicked", onSaveVector);
btnExport.value.on("button:clicked", onExportVector);
drawing.value.on("change:collapsed",onToggleShowVector);
// drawing.value.on("change:collapsed",onToggleShowVector);
drawing.value.on("change:active", onToggleShowVector);
}
else {
map.removeControl(btnSave.value);
Expand All @@ -293,6 +305,20 @@ onBeforeUpdate(() => {
}
})

const exportFeatures = () => {
const format = new KML({
writeStyles : true
});
const featProj = drawing.value.getLayer().getSource().getProjection() || drawing.value.getMap().getView().getProjection();

const result = format.writeFeatures(drawing.value.getLayer().getSource().getFeatures(), {
dataProjection : "EPSG:4326",
featureProjection : featProj
});

return result;
}

/**
* Gestionnaire d'evenement
*
Expand All @@ -301,15 +327,23 @@ onBeforeUpdate(() => {
*/
const onToggleShowVector = (e) => {
log.debug(e);
if (e.target.collapsed) {
// if (e.target.collapsed) {
if (!e.target.getActive()) {
if (!service.authenticated) {
// saveTemporaryDocument({
// content : drawing.value.exportFeatures(),
// name : drawing.value.getExportName(),
// description : "",
// format : drawing.value.getExportFormat(),
// layer : drawing.value.getLayer(),
// });
saveTemporaryDocument({
content : drawing.value.exportFeatures(),
name : drawing.value.getExportName(),
description : "",
format : drawing.value.getExportFormat(),
content : exportFeatures(),
name : "Croquis",
description: "",
format : "KML",
layer : drawing.value.getLayer(),
});
})
}
// dissociation de la couche du widget
// pour permettre une autre saisie dans
Expand Down Expand Up @@ -463,6 +497,47 @@ const onExportVector = (e) => {
<style lang="scss">
@use "@/assets/variables" as *;

.position-container-top-right .gpf-widget-button:nth-child(3) .GPToggleButton {
border-radius: 0;
}

.position-container-top-right > .gpf-widget-button:nth-child(2) ~ .gpf-widget-button:nth-last-child(2) > .GPToggleButton {
border-radius: 0 0 0.25rem 0.25rem;
}

div[id^="position-container-"] > div.GPToggleControl {
height: 48px;
width: 48px;
padding: 0;

> button.GPToggleButton {
width: 48px;
height: 48px;
max-width: unset;
max-height: unset;

&::before {
margin-left: 0.25rem;
margin-right: 0.25rem;
}
}

&.gpf-button-no-gutter > button {
background-color: var(--background-default-grey);
box-shadow: inset 4px 0 var(--background-default-grey), inset -4px 0 var(--background-default-grey), inset 0 3px var(--background-default-grey), inset 0 -3px var(--background-default-grey);
transition: background-color 300ms;
}
}

dialog.GPF-dialog[id^=style-dialog] {
// z-index: 2;

@include min(sm) {
// left: 4rem;
top: 4rem;
}
}

// gp-label-div/gp-styling-div sont les sous-panel de "annoter la carte"
// positionne au même endroit qu'un panel de gauche
.ol-overlay-container:has(.gp-label-div),
Expand Down
Loading