Coder Social home page Coder Social logo

ignf / geoportal-extensions-openlayers-samples Goto Github PK

View Code? Open in Web Editor NEW
4.0 9.0 1.0 26.78 MB

French Geoportal Extensions for well-known javascript mapping library OpenLayers : samples

Home Page: https://ignf.github.io/geoportal-extensions-openlayers-samples/

JavaScript 43.33% Dockerfile 2.17% CSS 1.69% HTML 1.07% Vue 44.91% MDX 6.83%
geoportal-extensions vuejs openlayers generator samples geoportail

geoportal-extensions-openlayers-samples's People

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

victorgratacap

geoportal-extensions-openlayers-samples's Issues

Ajouter la possibilité de choisir le thème du site (classique ou dsfr)

Ajouter un composant toggle switcher qui permet de basculer de thème à la volée entre le classique ou le dsfr.

👍 Création d'un composant vueJS !

Exemple d'utilisation :

<TheThematic selected="portail"/>

  • Ajouter les CSS avec un thème par défaut (portail) :
<!DOCTYPE html>
<html>
    <head>
      (...)
      <link href="./node_modules/geoportal-extensions-openlayers/css/Portail.css" rel="stylesheet" id="portail">
      <link href="./node_modules/geoportal-extensions-openlayers/css/Dsfr.css" rel="alternate stylesheet" id="dsfr">
      (...)
  • Placer un composant graphique sur la page, et qui permet de basculer de thème :
<h2>Choix du thème</h2>
<div id="toggle">
  <label id="switch" class="switch">
    <input type="checkbox" onchange="toggleTheme()" id="slider">
    <span class="slider round"></span>
  </label>
</div>
  • Code JS du toggle :
(function () {
    localStorage.setItem("theme", "portail");
    if (document.getElementById("slider")) {
        document.getElementById("slider").checked = true;
    }
})();

function toggleTheme () {
    var portail = document.getElementById("portail");
    var dsfr = document.getElementById("dsfr");

    if (localStorage.getItem("theme") === "portail") {
        localStorage.setItem("theme", "dsfr");
        enableStylesheet(dsfr);
        disableStylesheet(portail);
    } else {
        localStorage.setItem("theme", "portail");
        enableStylesheet(portail);
        disableStylesheet(dsfr);
    }
}

function enableStylesheet (node) {
    node.rel = "stylesheet";
}

function disableStylesheet (node) {
    node.rel = "alternate stylesheet";
}
  • Code CSS du toggle :
:root {
    --color-primary: #0060df;
    --color-secondary: #fbfbfe;
    --font-color: #000000;
}

#toggle {
    display: flex;
    width: 100%;
    height: 100%;
    background: var(--color-secondary);
    flex-direction: column;
    /* justify-content: center;
    align-items: center; */
}

#toggle button {
    color: var(--font-color);
    background: var(--color-primary);
    padding: 10px 20px;
    border: 0;
    border-radius: 5px;
}

/* The switch - the box around the slider */
.switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 34px;
}

/* Hide default HTML checkbox */
.switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

/* The slider */
.slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #ccc;
    -webkit-transition: 0.4s;
    transition: 0.4s;
}

.slider:before {
    position: absolute;
    content: "";
    height: 40px;
    width: 40px;
    left: 0px;
    bottom: 4px;
    top: 0;
    bottom: 0;
    margin: auto 0;
    -webkit-transition: 0.4s;
    transition: 0.4s;
    box-shadow: 0 0px 15px #2020203d;
    background: white url('https://i.ibb.co/FxzBYR9/night.png');
    background-repeat: no-repeat;
    background-position: center;
}

input:checked+.slider {
    background-color: #2196f3;
}

input:focus+.slider {
    box-shadow: 0 0 1px #2196f3;
}

input:checked+.slider:before {
    -webkit-transform: translateX(24px);
    -ms-transform: translateX(24px);
    transform: translateX(24px);
    background: white url('https://i.ibb.co/7JfqXxB/sunny.png');
    background-repeat: no-repeat;
    background-position: center;
}

/* Rounded sliders */
.slider.round {
    border-radius: 34px;
}

.slider.round:before {
    border-radius: 50%;
}

Décocher par défaut toutes les options

Tous les controls sont cochés par défaut. Ce qui fait que quand on veut tester un widget à ajouter à la carte en particulier, il faut décocher toutes les autres checkbox au préalable.

Peut-être serait-il mieux de n'avoir aucune checkbox cochée par défaut ?

Formater plus lisiblement l'affichage du code

Cliquer sur affichage du code :

  • une popup s'ouvre avec le code JS nécessaire à l'affichage de la carte
  • scrolbar horizontale
  • pas de couleur
  • pas moyen de fermer la pop-up à part en scrollant tout en bas et en cliquant sur le bouton "fermer"

Suggestions :

  • popup plus grande
  • cadre pour afficher le code, éventuellement le coloriser à la mode JS
  • ajouter une croix pour fermer la popup
  • éventuellement un bouton "copy to clipboard" pour ne pas avoir à selectionner manuellement le code à copier

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.