-
Notifications
You must be signed in to change notification settings - Fork 4
feat(layerSwitcher): Ajout bouton header layerSwitcher + doc #434
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
Conversation
Ajout producer / picto + customisation possible du layer switcher (param allowDraggable; allowDelete)
@elias75015 @lowzonenose
|
TODO : paramètrer les boutons dans la config
La partie "outil avancée a été modifié" :
Pour ajouter des boutons d'options avancés, il faut, dans les options de construction du gestionnaire de couche, ajouter le paramètre suivant :
Par exemple : import VectorLayer from 'ol/layer/Vector.js';
import TileLayer from 'ol/layer/Tile.js';
import { LayerSwitcher } from 'geopf-extensions-openlayers/src/index.js';
let callBackBtn = function (e, layerSwitcher, layer, options) {
console.log(e, layerSwitcher, layer, options)
alert(options.title);
}
let switcher = new LayerSwitcher({
options: {
position: "top-right",
collapsed: false,
panel: true,
counter: true,
allowDelete: true,
advancedTools: [
// Bouton d'information
{
key: ol.control.LayerSwitcher.switcherButtons.INFO,
},
// Surcharge bouton Noir et blanc
{
key: ol.control.LayerSwitcher.switcherButtons.GREYSCALE,
label: 'Tiles (N&B)',
icon: 'fr-icon-france-fill',
cb: callBackBtn, // Sans aucun effet
},
// Bouton n'acceptant que les vecteur ou couches GeoportalWMTS
{
label: 'Vecteur et Géoportal WMTS',
// icon : 'fr-icon-fire-fill',
accepted: [ol.layer.Vector, ol.layer.GeoportalWMTS],
cb: callBackBtn,
},
// Fichier svg local
{
label: 'Get layer',
icon: '{{ resources }}/data/recherche-avancee.svg',
cb: callBackBtn,
attributes: {
'data-action': 'get-layer'
}
},
// Icône svg
{
label: 'Édition',
icon: '<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.66667 15.3333L6 12.6667H11.3333L8.66667 15.3333ZM8.66667 2L11.3333 4.66667H6L8.66667 2ZM8.66667 10C7.93027 10 7.33333 9.40307 7.33333 8.66667C7.33333 7.93027 7.93027 7.33333 8.66667 7.33333C9.40307 7.33333 10 7.93027 10 8.66667C10 9.40307 9.40307 10 8.66667 10ZM2 8.66667L4.66667 6V11.3333L2 8.66667ZM15.3333 8.66667L12.6667 11.3333V6L15.3333 8.66667Z" fill="#000091"/></svg>',
className: 'edit-action',
cb: callBackBtn,
attributes: {
'data-action': 'edit'
}
},
// URL en ligne
{
label: 'Renommer',
icon: 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/How_to_use_icon.svg/1200px-How_to_use_icon.svg.png',
className: 'style-action',
cb: callBackBtn,
attributes: {
'data-action': 'rename'
}
},
]
}
}) |
* Callback au clic sur un bouton du header. | ||
* @callback HeaderButtonCallback | ||
* @param {PointerEvent} e Événement générique au clic sur l'outil | ||
* @param {LayerSwitcher} layerSwitcher instance du gestionnaire de couche |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai l'impression que lockLayer n'est plus exploité (couche grisée dans le layerSwitcher)
Est-ce que ce mécanisme est toujours necessaire pour l'editeur carto étant donné que maintenant on peut désactiver le drag & drop ? D'un point de vue utilisateur développeur côté API, je le trouve utile
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai ajouté un exemple avec un bouton pour verrouiller la couche et cela semble fonctionner. Par contre il faudrait peut-être revoir la définition d'une couche verrouillée, car avec un bouton pour verrouiller la couche, cela donne ça :

Il n'est donc plus possible d'interagir avec la couche, pas seulement de ne plus la déplacer ou la modifier. On ne peut pas la déverrouiller ni même rétrécir le panneau d'outils avancés, ou bien déplacer des couches au dessus d'elle (embêtant d'un point de vue UX). Il faudrait peut être redéfinir le statut d'une couche verrouillée afin de voir ce que l'on peut faire ou non (par exemple, impossible de la modifier, supprimer ou modifier son opacité mais possible de la déplacer / cacher ?).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok peut être faudra t'il améliorer le lock pour choisir quoi verrouiller. Pours l'instant c'est tout ou rien effectivement.
n'hésite pas à pousser l'exemple (je ne le vois pas)
…d layer Chgt exemple DSFR pour mettre à jour les logos
Chgt exemples pour genericproperties + modif dragndrop
Bouton "Déplacer vers le haut/bas" accessible seulement au focus. Ajout d'un attribut sur la div de la couche pour garder cette information.
Facilite le suivi si un outil de tracking est mis en place derrière.
...si la config est bien récupérée depuis un fichier de conf (via le cartalogue par ex)
let defaultSrc = ""; | ||
|
||
if (checkDsfr()) { | ||
defaultSrc = "../../../src/packages/CSS/Controls/LayerSwitcher/img/alt-image.png"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello @MatRouillard
On a essayé d'importer l'extension dans l'entrée carto et les vignettes par défaut ne sont pas trouvées.
Dans les autres controls on écrit plutot les chemins en css par exemple :
button[id^="GPshowControlListPicto-"]::after {
-webkit-mask: url("img/more-line.svg") center no-repeat;
mask: url("img/more-line.svg") center no-repeat;
mask-size: 70%;
}
Refonte layer switcher pour cohérence entrée carto / éditeur carto
1 - ajout d'un mécanisme pour nouveaux boutons généraux en header du layerswitcher, avec association à un callback et envoi d'événement;
2 - Refonte du conteneur non développé de la couche, avec ajout d'un producteur de donnée et setter sur ce producteur;
3 - Ajout du slider d'opacité;
4 - Ajout de boutons d'options avancé, avec des mots clés pour les fonctionnalités déjà existantes;
5 - Mise en place du CSS pour le mode non DSFR.