├── .gitignore ├── LICENSE ├── README.md ├── babel.config.js ├── data └── sigles.csv ├── deploy.sh ├── package-lock.json ├── package.json ├── public ├── favico │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ └── site.webmanifest ├── index.html └── robots.txt ├── scripts ├── addKeys.sh ├── compareKeysWithDic.sh ├── config_template.sh ├── functions.sh ├── getContributions.sh ├── getSlashtrad.sh ├── merge.py ├── merge.sh ├── publish.sh └── saveNewExplanations.sh ├── src ├── AboutSection.md ├── AboutSection.vue ├── App.vue ├── CopyButton.vue └── main.js └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | scripts/config.sh 4 | /dist 5 | 6 | data 7 | !./data/sigles.csv 8 | 9 | # local env files 10 | .env.local 11 | .env.*.local 12 | 13 | # Log files 14 | npm-debug.log* 15 | yarn-debug.log* 16 | yarn-error.log* 17 | pnpm-debug.log* 18 | 19 | # Editor directories and files 20 | .idea 21 | .vscode 22 | *.suo 23 | *.ntvs* 24 | *.njsproj 25 | *.sln 26 | *.sw? 27 | 28 | .~lock* 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Colin Maudry 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dictionnaire des sigles 2 | 3 | > Version 1.4.0 4 | 5 | => https://dicosigles.fr 6 | 7 | ## Utilisation 8 | 9 | **Pour combiner la base de sigles et les contributions dans data/sigles.csv** 10 | 11 | 1. remplir scripts/config.sh 12 | 2. exécuter scripts/merge.sh 13 | 3. si tout est bon, exéculter scripts/publish.sh 14 | 15 | **Pour ajouter des sigles au dictionnaire à partir d'un fichier CSV** 16 | 17 | Le fichier CSV importé doit avoir les champs attendus. 18 | 19 | **Pour comparer un fichier CSV de termes** (en-têtes : `id,term,definition,explanation`, `explanation` peut être vide) avec data/sigles.csv : 20 | 21 | ```bash 22 | ./scripts/compareKeysWithDic.sh [fichier de termes] [nom de la source de ce fichier] [URL de la source] 23 | ``` 24 | 25 | Le script produit un fichier `.new.csv` à côté du fichier de termes contenant les termes qui ne sont pas encore présents dans data/sigles.csv (et dicosigles.fr). 26 | 27 | **Pour détecter les explications dans un fichier CSV de termes pouvant compléter des termes existants** dans data/sigles.csv : 28 | 29 | ```bash 30 | scripts/saveNewExplanations.sh [fichier de termes] [nom de la source de ce fichier] [URL de la source] 31 | ``` 32 | 33 | ## Format de fichier 34 | 35 | ### Format d'import 36 | 37 | Le fichier importé doit avoir les caractéritiques suivantes : 38 | 39 | Séparateur : ";" ou "," 40 | 41 | Colonnes obligatoires (dans n'importe quel ordre) : 42 | 43 | - **term** (obligatoire) : le sigle. Par exemple : CADES 44 | - **definition** (obligatoire) : la forme longue du sigle. Par exemple : Caisse d’amortissement de la dette sociale 45 | - **url_source** (obligatoire) : l'URL de la page page Web officielle où ce sigle est défini. Par exemple : https://www.cnle.gouv.fr/Sigles-de-l-Administration.html 46 | - **source** (obligatoire) : nom de la source. Par exemple : CNLE 47 | - **explanation** (optionnel) : définition du concept. Par exemple : La mission de la CADES est est de financer et d'éteindre la dette cumulée de la Sécurité Sociale. 48 | - **url_source_explanation** (obligatoire pour chaque explication) : https://www.cades.fr/fr/a-propos/mission-et-fonctionnement 49 | - **source_explanation** (obligatoire pour chaque explication) : nom de la source de l'explication. Par exemple : CADES. 50 | 51 | ## Notes de version 52 | 53 | ### 1.4.0 (25/09/2024) 54 | 55 | - une bonne partie du merge est faite en python/pandas plutôt que bash/xsv 56 | - changement de l'URL d'API utilisée (csvapi => tabular-api) 57 | - suppression de l'iframe Matomo 58 | - correction de bugs dans le script getContributions.sh 59 | 60 | ### 1.3.2 (01/09/2020) 61 | 62 | - bug dans le script de fusion des sigles 63 | 64 | ### 1.3.1 (31/07/2020) 65 | 66 | - la largeur de la documentation s'adapte aux petits écrans 67 | - ajout d'une marge entre les `
  • ` des sources 68 | - désactivation de l'import de markdown brut pour la documentation (les éléments HTML n'étaient pas interprétés) 69 | 70 | ### 1.3.0 (31/07/2020) 71 | 72 | - ajout d'un bouton pour copier un lien court vers la recherche dans le presse-papier 73 | 74 | ### 1.2.0 (28/07/2020) 75 | 76 | - script pour ajouter des sigles en masse avec dédoublonnage par clé ([#20](https://github.com/ColinMaudry/dictionnaire-sigles/issues/20)) 77 | - ajout de 688 sigles liés à la gendarmerie et à la police nationale (Merci [Denis Merigoux](https://merigoux.ovh) !) 78 | - nombre total de termes injecté dans package.json pour affichage 79 | 80 | #### 1.1.1 (25/07/2020) 81 | 82 | - l'app ne gérait pas bien les colonnes supplémentaires (`explanation`, etc.) 83 | 84 | ### 1.1.0 (25/07/2020) 85 | 86 | - scripts d'aggrégation et de publication 87 | 88 | ### 1.0.0 (12/07/2020) 89 | 90 | - Première version, sans scripts d'aggrégation 91 | 92 | ## Project setup 93 | ``` 94 | npm install 95 | ``` 96 | 97 | ### Compiles and hot-reloads for development 98 | ``` 99 | npm run serve 100 | ``` 101 | 102 | ### Compiles and minifies for production 103 | ``` 104 | npm run build 105 | ``` 106 | 107 | ### Lints and fixes files 108 | ``` 109 | npm run lint 110 | ``` 111 | 112 | ### Customize configuration 113 | See [Configuration Reference](https://cli.vuejs.org/config/). 114 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # abort on errors 4 | set -e 5 | 6 | echo Push to origin master... 7 | 8 | git push 9 | 10 | echo Building. this may take a minute... 11 | npm run build 12 | 13 | # navigate into the build output directory 14 | cd dist 15 | 16 | # if you are deploying to a custom domain 17 | # echo 'example.com' > CNAME 18 | 19 | echo Deploying.. 20 | git init 21 | git checkout -b gh-pages 22 | echo "dicosigles.fr" > ./CNAME 23 | git add -A 24 | git commit -m 'deploy' 25 | 26 | # deploy 27 | git remote add origin git@github.com:ColinMaudry/dictionnaire-sigles.git 28 | git push -f git@github.com:ColinMaudry/dictionnaire-sigles.git gh-pages 29 | 30 | cd - 31 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dictionnaire-sigles-web", 3 | "version": "1.4.0", 4 | "scripts": { 5 | "serve": "vue-cli-service serve", 6 | "build": "vue-cli-service build --modern", 7 | "lint": "vue-cli-service lint" 8 | }, 9 | "dependencies": { 10 | "core-js": "^3.6.5", 11 | "vue": "^2.6" 12 | }, 13 | "devDependencies": { 14 | "@vue/cli-plugin-babel": "~4.4.0", 15 | "@vue/cli-plugin-eslint": "~4.4.0", 16 | "@vue/cli-plugin-router": "^4.4.5", 17 | "@vue/cli-service": "~4.4.0", 18 | "babel-eslint": "^10.1.0", 19 | "eslint": "^6.7.2", 20 | "eslint-plugin-vue": "^6.2.2", 21 | "vue-template-compiler": "^2.6.11" 22 | }, 23 | "eslintConfig": { 24 | "root": true, 25 | "env": { 26 | "node": true 27 | }, 28 | "extends": [ 29 | "plugin:vue/essential", 30 | "eslint:recommended" 31 | ], 32 | "parserOptions": { 33 | "parser": "babel-eslint" 34 | }, 35 | "rules": {} 36 | }, 37 | "browserslist": [ 38 | "> 1%", 39 | "last 2 versions", 40 | "not dead" 41 | ], 42 | "config": { 43 | "resourceId": "0fca6fc3-4919-458d-9c81-a2cf54a801ba", 44 | "nbTerms": 5550 45 | }, 46 | "license": "MIT", 47 | "repository": "https://github.com/ColinMaudry/dictionnaire-sigles.git" 48 | } 49 | -------------------------------------------------------------------------------- /public/favico/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColinMaudry/dictionnaire-sigles/b0d866b1e69c4bb1d9666a00dcbc101f6c03fa2c/public/favico/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/favico/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColinMaudry/dictionnaire-sigles/b0d866b1e69c4bb1d9666a00dcbc101f6c03fa2c/public/favico/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/favico/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColinMaudry/dictionnaire-sigles/b0d866b1e69c4bb1d9666a00dcbc101f6c03fa2c/public/favico/apple-touch-icon.png -------------------------------------------------------------------------------- /public/favico/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColinMaudry/dictionnaire-sigles/b0d866b1e69c4bb1d9666a00dcbc101f6c03fa2c/public/favico/favicon-16x16.png -------------------------------------------------------------------------------- /public/favico/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColinMaudry/dictionnaire-sigles/b0d866b1e69c4bb1d9666a00dcbc101f6c03fa2c/public/favico/favicon-32x32.png -------------------------------------------------------------------------------- /public/favico/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColinMaudry/dictionnaire-sigles/b0d866b1e69c4bb1d9666a00dcbc101f6c03fa2c/public/favico/favicon.ico -------------------------------------------------------------------------------- /public/favico/site.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Dictionnaire des sigles de l'administration française (5550 entrées) 15 | 116 | 117 | 118 | 148 | 149 | 150 | 151 | 152 | 155 |
    156 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /scripts/addKeys.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | file="$1" 3 | 4 | source scripts/functions.sh 5 | 6 | head=`head -n 1 $file` 7 | 8 | echo "Création des clés (hashes) des entrées de $file dans dicKeys.csv..." 9 | echo "id,key" > dicKeys.csv 10 | 11 | while IFS=, read -r `echo $head | sed 's/,/ /g'` 12 | do 13 | key=`makeKey "$term" "$definition"` 14 | echo "$id,${key}" >> dicKeys.csv 15 | done < $file 16 | 17 | echo "Jointure de $file et dicKeys.csv pour ajouter la colonne keys..." 18 | xsv join id $file id dicKeys.csv | xsv select "$head,key" > temp 19 | 20 | if [[ `cat temp | wc -l` -gt 1 ]] 21 | then 22 | mv temp $file 23 | fi 24 | 25 | rm dicKeys.csv 26 | -------------------------------------------------------------------------------- /scripts/compareKeysWithDic.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | source scripts/config.sh 3 | source scripts/functions.sh 4 | 5 | fileori=$1 6 | file=`newDelimiter $fileori` 7 | echo $file 8 | source=$2 9 | sourceUrl=$3 10 | 11 | headers="id${d}term${d}definition${d}explanation" 12 | 13 | if [[ ! `head -n 1 $file` == $headers ]] 14 | then 15 | echo "Les en-têtes doivent être $headers." 16 | head -n 1 $file 17 | exit 1 18 | fi 19 | 20 | xsv select key $sigles | tail -n +2 > dicKeys.csv 21 | 22 | echo "id,term,definition,source,url_source,explanation,source_explanation,url_source_explanation" > $fileori.new.csv 23 | 24 | duplicates=0 25 | 26 | while IFS="$d" read -r id term definition explanation 27 | do 28 | if [[ ! $definition == "definition" ]] 29 | then 30 | key=`makeKey "$term" "$definition"` 31 | isDuplicate=0 32 | for k in `cat dicKeys.csv` 33 | do 34 | if [[ $k == $key ]] 35 | then 36 | echo "$term $definition" 37 | isDuplicate=1 38 | ((duplicates++)) 39 | break; 40 | fi 41 | done 42 | if [[ $isDuplicate == 0 ]] 43 | then 44 | if [[ $explanation == "" ]] 45 | then 46 | sourceExplanation="" 47 | sourceExplanationUrl="" 48 | else 49 | sourceExplanation=$source 50 | sourceExplanationUrl=$sourceUrl 51 | fi 52 | if [[ "$term" == "Agro Paris Tech - ENGREF" ]] 53 | then 54 | echo "$definition" 55 | fi 56 | echo "\"${id}\",\"${term}\",\"${definition}\",\"${source}\",\"${sourceUrl}\",\"${explanation}\",\"${sourceExplanation}\",\"${sourceExplanationUrl}\"" >> $fileori.new.csv 57 | fi 58 | fi 59 | done < $file 60 | 61 | echo "$duplicates doublons détectés et supprimés dans $fileori.new.csv par rapport à $fileori." 62 | 63 | rm dicKeys.csv 64 | rm $file 65 | -------------------------------------------------------------------------------- /scripts/config_template.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | headers=id,term,definition,source,url_source,explanation,source_explanation,url_source_explanation 4 | headersDev=$headers,term_status,explanation_status 5 | 6 | 7 | contributionsUrl=https://docs.google.com/spreadsheets/d/1kEJzE-8nCBZakKWptfrc5HhuctOEnMYy8AgxGz6dNW4/export\?format\=csv\&id\=1kEJzE-8nCBZakKWptfrc5HhuctOEnMYy8AgxGz6dNW4\&gid\=0 8 | slashtradUrl=https://docs.google.com/spreadsheets/d/1H6708p9IT9hfdDY1C02PX33ZmLyGPV8P_OYLrQre0vU/export\?format\=csv\&id\=1H6708p9IT9hfdDY1C02PX33ZmLyGPV8P_OYLrQre0vU\&gid\=676342226 9 | 10 | resource_sigle_id=0fca6fc3-4919-458d-9c81-a2cf54a801ba 11 | 12 | datagouvfr_API_key= 13 | 14 | sigles=data/sigles.csv 15 | 16 | # Délimiteur alternatif pour remplacer les virgules, sources d'erreur dans les traitements en bash 17 | d="|" 18 | -------------------------------------------------------------------------------- /scripts/functions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source scripts/config.sh 4 | 5 | makeKey() { 6 | echo "${1}${2}" | 7 | # Minuscule 8 | sed -e 's/\(.*\)/\L\1/' | 9 | # Suppression des espaces et de la ponctuation 10 | tr -d "[:punct:][:space:]’" 11 | } 12 | 13 | newDelimiter() { 14 | file="$1" 15 | xsv fmt -t "$d" $file > $file.newdelim 16 | echo $file.newdelim 17 | } 18 | 19 | csv() { 20 | input="$1" 21 | if [ ! "${input:0:1}" == '"' -a ! "${input:-1}" == '"' ] 22 | then 23 | output="\"$input\"" 24 | else 25 | output="$input" 26 | fi 27 | echo "$output" 28 | } 29 | -------------------------------------------------------------------------------- /scripts/getContributions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ./scripts/config.sh 4 | 5 | newFile=$1 6 | 7 | rm data/contribution* 8 | 9 | echo "Téléchargement des contributions (Google sheet)..." 10 | echo "" 11 | 12 | echo "$headersDev" > data/contributions.csv 13 | curl -sL $contributionsUrl \ 14 | | xsv search -s "Statut sigle" "Vérifié|Publié" \ 15 | | xsv select id,Sigle,"Forme complète","Source","URL source sigle",Explication,"Source explication","URL source explication","Statut sigle","Statut explication" \ 16 | | tail -n +2 >> data/contributions.csv 17 | 18 | echo "Filtre des sigles avec explication vérifiée..." 19 | 20 | xsv search -s "explanation_status" "Vérifié|Publié" data/contributions.csv | \ 21 | xsv select $headers > data/contributionsVerifiees.csv 22 | 23 | 24 | # Sigles avec terme valide mais sans explication 25 | echo "Filtre des sigles sans explication..." 26 | echo $headersDev > data/contributionsTemp.csv 27 | 28 | grep -e ",$" data/contributions.csv >> data/contributionsTemp.csv 29 | 30 | # Sigles dont l'explication n'a pas été vérifiée 31 | xsv search -s "explanation_status" "À vérifier" data/contributions.csv \ 32 | | xsv select "!explanation" \ 33 | | xsv select "!source_explanation" \ 34 | | xsv select "!url_source_explanation" \ 35 | | xsv select "!term_status" \ 36 | | xsv select "!explanation_status" \ 37 | | tail -n +2 >> data/contributionsTemp.csv 38 | 39 | xsv fixlengths data/contributionsTemp.csv \ 40 | | xsv select $headers \ 41 | | tail -n +2 >> data/contributionsVerifiees.csv 42 | 43 | rm data/contributionsTemp.csv 44 | -------------------------------------------------------------------------------- /scripts/getSlashtrad.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source scripts/config.sh 4 | 5 | echo "Téléchargement du document slashtrad..." 6 | curl -sL $slashtradUrl | \ 7 | xsv search -s "Relu" "OK|MODIFIE" | \ 8 | xsv sort -s "term" | \ 9 | xsv select "$headers" \ 10 | > data/slashtrad.csv 11 | -------------------------------------------------------------------------------- /scripts/merge.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from subprocess import call, run 3 | import os 4 | 5 | def make_key(term, definition): 6 | """Combine the term and the definition to make a slug-like identifier""" 7 | key = f"{term}{definition}" 8 | # Convert to lowercase 9 | key = key.lower() 10 | # Remove spaces and punctuation 11 | key = ''.join(char for char in key if char.isalnum()) 12 | return key 13 | 14 | 15 | contributions="data/contributionsVerifiees.csv" 16 | slashtrad="data/slashtrad.csv" 17 | sigles = os.environ["sigles"] 18 | 19 | call("scripts/getContributions.sh") 20 | call("scripts/getSlashtrad.sh") 21 | run(["git","checkout","--","data/sigles.csv"]) 22 | 23 | df_sigles: pd.DataFrame = pd.read_csv(sigles, index_col="id", dtype=str, 24 | encoding='unicode_escape') 25 | print(f"{df_sigles.index.size} sigles avant le merge") 26 | print("""+++++++++++++++ 27 | """) 28 | 29 | df_slashtrad: pd.DataFrame = pd.read_csv(slashtrad, index_col="id", dtype=str) 30 | df_contributions: pd.DataFrame = pd.read_csv(contributions, index_col="id", dtype=str) 31 | 32 | if ",".join(df_contributions.columns) == ",".join(df_slashtrad.columns): 33 | print("Fusion de slashtrad et contributions dans sigles.csv...") 34 | 35 | df = pd.concat([df_slashtrad, df_contributions]) 36 | df = df.sort_values(by="term", ascending=True) 37 | df["key"] = df.apply(lambda row: make_key(row['term'], row['definition']), axis=1) 38 | df = df.drop_duplicates(subset="key") 39 | df.drop(columns="key") 40 | 41 | print(""" 42 | ++++++++++++++""") 43 | print(f"{df.index.size} sigles après le merge") 44 | 45 | df.to_csv("data/sigles.csv") 46 | df.to_excel("data/sigles.xlsx") 47 | 48 | else: 49 | print("Les en-têtes de colonnes ne correspondent pas.") 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /scripts/merge.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source scripts/config.sh 4 | 5 | contributions="data/contributionsVerifiees.csv" 6 | slashtrad="data/slashtrad.csv" 7 | 8 | python scripts/merge.py 9 | -------------------------------------------------------------------------------- /scripts/publish.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source scripts/config.sh 4 | 5 | sigles=$sigles 6 | 7 | if [[ "$1" ]] 8 | then 9 | message="$1" 10 | api="https://www.data.gouv.fr/api/1" 11 | 12 | # Pour l'instant l'app ne gère pas les colonnes supplémentaires 13 | cp $sigles ${sigles}.ori 14 | xsv select "term,definition,source,url_source" $sigles | xsv sort -s term > temp.csv 15 | mv temp.csv $sigles 16 | 17 | curl -sL "$api/datasets/5ee0d624d915e528468166c6/resources/${resource_sigle_id}/upload/" -F "file=@$sigles" -H "X-API-KEY: $datagouvfr_API_key" > response.json 18 | 19 | 20 | jq .success response.json 21 | 22 | url=`jq -r .url response.json` 23 | jq --arg url "$url" '.config.resourceUrl |= $url' package.json > temp 24 | mv temp package.json 25 | git add package.json 26 | 27 | rm -f response.json 28 | 29 | mv $sigles.ori $sigles 30 | git add $sigles 31 | git commit -m "$message" 32 | 33 | fi 34 | 35 | # Mise à jour de l'URL de la ressource et du nombre de sigles dans l'app 36 | nb=`xsv count $sigles` 37 | echo "" 38 | echo "$nb sigles" 39 | 40 | jq --arg nb $nb '.config.nbTerms |= ($nb|tonumber)' package.json > temp 41 | mv temp package.json 42 | git add package.json data/sigles.csv 43 | 44 | # Ajout du nombre d'entrées dans le 45 | sed -i "s/[0-9]* entrées/$nb entrées/" public/index.html 46 | git add public/index.html 47 | 48 | git commit -m "Nombre d'entrées actualisé ($nb) mis à jour" 49 | 50 | echo "" 51 | echo "Publication complète, n'oublie pas de marquer les contributions comme publiées." 52 | -------------------------------------------------------------------------------- /scripts/saveNewExplanations.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | source scripts/config.sh 3 | source scripts/functions.sh 4 | 5 | file=$1 6 | source=$2 7 | urlSource=$3 8 | head=`head -n 1 $file` 9 | 10 | headers="id,term,definition,explanation" 11 | 12 | if [[ ! $head == $headers ]] 13 | then 14 | echo "Les en-têtes doivent être $headers." 15 | exit 1 16 | fi 17 | 18 | xsv search --select explanation ".+" $file | xsv select term,definition,explanation | xsv fmt -t "$d" > $file.temp 19 | xsv search --select explanation "^\$" $sigles | xsv select key > dicNoExplanation.csv 20 | 21 | echo "term,explanation,source_explanation,url_source_explanation" > $file.expl.csv 22 | 23 | while IFS="$d" read -r term definition explanation 24 | do 25 | key2=`makeKey "$term" "$definition"` 26 | for key in `cat dicNoExplanation.csv` 27 | do 28 | if [[ "$key2" == "$key" ]] 29 | then 30 | echo "$term" 31 | echo "$term,`csv "$explanation"`,$source,$urlSource" >> $file.expl.csv 32 | ((newExplanations++)) 33 | fi 34 | done < dicNoExplanation.csv 35 | 36 | done < $file.temp 37 | 38 | echo "$newExplanations nouvelles explications." 39 | rm $file.temp 40 | 41 | # Problème de guillements dans le CSV, qui casse la séparation des cases. Voir AIFE. 42 | -------------------------------------------------------------------------------- /src/AboutSection.md: -------------------------------------------------------------------------------- 1 | # Dictionnaire des sigles de l’administration française 2 | 3 | Ce dictionnaire en ligne est destiné à combler le fossé qui existe en France entre les personnes qui connaissent le sens des sigles, et celles qui ne le connaissent pas. 4 | 5 | **Les données** de ce dictionnaire ont été rassemblées et triées par Colin Maudry à partir de plusieurs [sources](#lessources). Elles sont publiées selon les termes de la [licence Creative Commons Zero](http://creativecommons.org/publicdomain/zero/1.0/). 6 | 7 | * [Le jeu de données sur data.gouv.fr](https://www.data.gouv.fr/datasets/5ee0d624d915e528468166c6) 8 | 9 | **Le code source** de cette application a été rédigé par Colin Maudry à l’aide de plein de logiciels libres et est publié selon les termes de la licence MIT. 10 | 11 | Quelques précieuses heures ont été économisées grâce à du code partagé par [Tam-Kien Duong](https://github.com/taniki). 12 | 13 | Cette application se veut volontairement minimaliste de façon à être accessible, rapide et peu gourmande en énergie. 14 | 15 | * [Le code source sur github.com](https://github.com/ColinMaudry/dictionnaire-sigles) 16 | 17 | ## Comment contribuer 18 | 19 | Si vous souhaitez ajouter ou corriger un sigle, ça se passe [par ici](https://docs.google.com/spreadsheets/d/1kEJzE-8nCBZakKWptfrc5HhuctOEnMYy8AgxGz6dNW4/edit) (tableur Google, pas besoin d’un compte). 20 | 21 | Si vous souhaitez ajouter une épaisse liste de sigles à ce dictionnaire et que vous l’avez sous forme de fichier, merci de [me contacter](#contact). Il doit s’agir de sigles utilisés par l’administration française ou utilisés dans la loi française. 22 | 23 | Souvent, la limite à ne pas franchir est celle du vocabulaire technique ou scientifique, même s’il y a des exceptions pour les termes les plus employés. 24 | 25 | Merci de privilégier les formats structurés, par ordre de préférence : 26 | 27 | * csv (comma separated values) 28 | * json (javascript object notation) 29 | * xml (extended markup language) 30 | * ods (Open Document spreadsheet), xlsx (Excel Microsoft Office Open XML Format Spreadsheet file) 31 | * html (hypertext markup language) 32 | 33 | ## Les sources 34 | 35 | * [Petit dictionnaire des sigles du Sénat](https://www.senat.fr/histoire/sigles.html) 36 | * [Lexique des abréviations ou sigles de la direction générale de l’offre de soins (DGOS)](http://www.metiers-fonctionpubliquehospitaliere.sante.gouv.fr/Lexique-des-abreviations-ou-sigles.html) 37 | * [Les contributions de la communauté beta.gouv.fr](https://github.com/betagouv/glossary-bot) 38 | * [Petit dictionnaire des sigles et acronymes de la Compagnie des commissaires-enquêteurs du Languedoc-Roussillon](http://www.cce-lrv.com/documents/images/general_photos/151_Fichier.pdf), assemblé par Michel Lefay 39 | * [Glossaire des sigles du social, de la santé et de l’administration](http://maraudes.fr/glossaire-sigles-social-de-sante-de-ladministration/), par [Laurent Bohu](https://twitter.com/lolobobo) 40 | * [Sigles de l’Administration](https://www.cnle.gouv.fr/Sigles-de-l-Administration.html) du Conseil national des politiques de lutte contre la pauvreté et l’exclusion sociale (CNLE) 41 | * [Sigles et acronymes relatifs aux marchés publics](http://www.marche-public.fr/Marches-publics/Definitions/Marches-publics-Sigles.htm), par [Frédéric Makowski](https://twitter.com/marchespublics) 42 | * [Liste des sigles](https://www.fonction-publique.gouv.fr/files/files/statistiques/rapports_annuels/2016/G_Liste_des_sigles.pdf), par la Direction générale de l’administration et de la fonction publique (DGAFP) 43 | * [Sigles et abbréviations utilisées](http://www.justice.gouv.fr/art_pix/Stat_Annuaire_ministere-justice_sigles.pdf), par le Ministère de la justice 44 | * [Acronymes administratifs](https://www.keratocone.net/acronymes.html), par l’association Keratocone 45 | * [Lexique des abréviations de la Fonction Publique](https://concours-fonction-publique.publidia.fr/guide-fonction-publique/infos-utiles/lexique-fonction-publique), par Publidia 46 | * [Glossaire des sigles et acronymes](http://www.ac-grenoble.fr/college/poisy/orientation/orientation-sigles-et-acronymes/), par le collège de Poisy (académie de Grenoble), à partir d’un manuel de l’Onisep 47 | * [Sigles de la gendarmerie et de la police nationale](https://gist.github.com/ColinMaudry/fe30f024d3cea20d1f6ccd579d9acd3f#file-gendarmerie-csv) collectés par [Denis Merigoux](https://merigoux.ovh) 48 | * Sources indiquées par les contributeurs et contributrices de ce dictionnaire 49 | 50 | ## Contact 51 | 52 | * email : colin+sigles@maudry.com 53 | * twitter : [@col1m](https://twitter.com/col1m) 54 | 55 | ## Vie privée 56 | 57 | Ce site dépose un petit fichier texte (un « cookie ») sur votre ordinateur lorsque vous le consultez ([Wikipédia](https://fr.wikipedia.org/wiki/Cookie_(informatique))). Cela me permet de mesurer le nombre de visites et de distinguer les nouveaux visiteurs des utilisateurs réguliers. 58 | 59 | <div style="background-color: #ccc;"><iframe style="border: 0; height: 200px; width: 100%;" title="Opt-out du cookie de suivi" src="https://analytics.maudry.com/index.php?module=CoreAdminHome&action=optOut&language=fr&backgroundColor=&fontColor=&fontSize=&fontFamily="></iframe></div> 60 | 61 | ### Ce site n’affiche pas de bannière de consentement aux cookies, pourquoi ? 62 | 63 | C’est vrai, vous n’avez pas eu à cliquer sur un bloc qui recouvre la moitié de la page pour dire que vous êtes d’accord avec le dépôt de cookies. 64 | 65 | Rien d’exceptionnel, je respecte simplement la loi, qui dit que certains outils de suivi d’audience, correctement configurés pour respecter la vie privée, sont exemptés d’autorisation préalable. 66 | 67 | J’utilise pour cela [Matomo](https://matomo.org/), un outil [libre](https://matomo.org/free-software/), paramétré pour être en conformité avec la [recommandation « Cookies »](https://www.cnil.fr/fr/solutions-pour-les-cookies-de-mesure-daudience) de la [CNIL](http://sigl.es/cnil). Cela signifie que votre adresse IP, par exemple, est anonymisée avant d’être enregistrée. Il m’est donc impossible d’associer vos visites sur ce site à votre personne. 68 | 69 | ## Mentions légales 70 | 71 | Le dictionnaire des sigles de l’administration française a été compilé et édité par Colin Maudry, inscrit au répertoire SIRENE sous le numéro 812 231 132, et dont le siège social est situé au 7 avenue Aristide Briand, 35000 Rennes. 72 | 73 | Le dictionnaire des sigles de l’administration française est hébergé par la société Github, propriété de Microsoft Corporation. 74 | 75 | Icône presse-papier dessinée par [Pixel perfect](https://icon54.com/) de [Flaticon](http://www.flaticon.com). 76 | -------------------------------------------------------------------------------- /src/AboutSection.vue: -------------------------------------------------------------------------------- 1 | <template> 2 | <div> 3 | <h1 id="dictionnairedessiglesdeladministrationfranaise">Dictionnaire des sigles de l’administration française</h1> 4 | 5 | <p>Ce dictionnaire en ligne est destiné à combler le fossé qui existe en France entre les personnes qui connaissent le sens des sigles, et celles qui ne le connaissent pas.</p> 6 | 7 | <p><strong>Les données</strong> de ce dictionnaire ont été rassemblées et triées par Colin Maudry à partir de plusieurs <a href="#lessources">sources</a>. Elles sont publiées selon les termes de la <a href="http://creativecommons.org/publicdomain/zero/1.0/">licence Creative Commons Zero</a>.</p> 8 | 9 | <ul> 10 | <li><a href="https://www.data.gouv.fr/datasets/5ee0d624d915e528468166c6">Le jeu de données sur data.gouv.fr</a></li> 11 | </ul> 12 | 13 | <p><strong>Le code source</strong> de cette application a été rédigé par Colin Maudry à l’aide de plein de logiciels libres et est publié selon les termes de la licence MIT.</p> 14 | 15 | <p>Quelques précieuses heures ont été économisées grâce à du code partagé par <a href="https://github.com/taniki">Tam-Kien Duong</a>.</p> 16 | 17 | <p>Cette application se veut volontairement minimaliste de façon à être accessible, rapide et peu gourmande en énergie.</p> 18 | 19 | <ul> 20 | <li><a href="https://github.com/ColinMaudry/dictionnaire-sigles">Le code source sur github.com</a></li> 21 | </ul> 22 | 23 | <h2 id="commentcontribuer">Comment contribuer</h2> 24 | 25 | <p>Si vous souhaitez ajouter ou corriger un sigle, ça se passe <a href="https://docs.google.com/spreadsheets/d/1kEJzE-8nCBZakKWptfrc5HhuctOEnMYy8AgxGz6dNW4/edit">par ici</a> (tableur Google, pas besoin d’un compte).</p> 26 | 27 | <p>Si vous souhaitez ajouter une épaisse liste de sigles à ce dictionnaire et que vous l’avez sous forme de fichier, merci de <a href="#contact">me contacter</a>. Il doit s’agir de sigles utilisés par l’administration française ou utilisés dans la loi française.</p> 28 | 29 | <p>Souvent, la limite à ne pas franchir est celle du vocabulaire technique ou scientifique, même s’il y a des exceptions pour les termes les plus employés.</p> 30 | 31 | <p>Merci de privilégier les formats structurés, par ordre de préférence :</p> 32 | 33 | <ul> 34 | <li>csv (comma separated values)</li> 35 | 36 | <li>json (javascript object notation)</li> 37 | 38 | <li>xml (extended markup language)</li> 39 | 40 | <li>ods (Open Document spreadsheet), xlsx (Excel Microsoft Office Open XML Format Spreadsheet file)</li> 41 | 42 | <li>html (hypertext markup language)</li> 43 | </ul> 44 | 45 | <h2 id="lessources">Les sources</h2> 46 | 47 | <ul> 48 | <li><a href="https://www.senat.fr/histoire/sigles.html">Petit dictionnaire des sigles du Sénat</a></li> 49 | 50 | <li><a href="http://www.metiers-fonctionpubliquehospitaliere.sante.gouv.fr/Lexique-des-abreviations-ou-sigles.html">Lexique des abréviations ou sigles de la direction générale de l’offre de soins (DGOS)</a></li> 51 | 52 | <li><a href="https://github.com/betagouv/glossary-bot">Les contributions de la communauté beta.gouv.fr</a></li> 53 | 54 | <li><a href="http://www.cce-lrv.com/documents/images/general_photos/151_Fichier.pdf">Petit dictionnaire des sigles et acronymes de la Compagnie des commissaires-enquêteurs du Languedoc-Roussillon</a>, assemblé par Michel Lefay</li> 55 | 56 | <li><a href="http://maraudes.fr/glossaire-sigles-social-de-sante-de-ladministration/">Glossaire des sigles du social, de la santé et de l’administration</a>, par <a href="https://twitter.com/lolobobo">Laurent Bohu</a></li> 57 | 58 | <li><a href="https://www.cnle.gouv.fr/Sigles-de-l-Administration.html">Sigles de l’Administration</a> du Conseil national des politiques de lutte contre la pauvreté et l’exclusion sociale (CNLE)</li> 59 | 60 | <li><a href="http://www.marche-public.fr/Marches-publics/Definitions/Marches-publics-Sigles.htm">Sigles et acronymes relatifs aux marchés publics</a>, par <a href="https://twitter.com/marchespublics">Frédéric Makowski</a></li> 61 | 62 | <li><a href="https://www.fonction-publique.gouv.fr/files/files/statistiques/rapports_annuels/2016/G_Liste_des_sigles.pdf">Liste des sigles</a>, par la Direction générale de l’administration et de la fonction publique (DGAFP)</li> 63 | 64 | <li><a href="http://www.justice.gouv.fr/art_pix/Stat_Annuaire_ministere-justice_sigles.pdf">Sigles et abbréviations utilisées</a>, par le Ministère de la justice</li> 65 | 66 | <li><a href="https://www.keratocone.net/acronymes.html">Acronymes administratifs</a>, par l’association Keratocone</li> 67 | 68 | <li><a href="https://concours-fonction-publique.publidia.fr/guide-fonction-publique/infos-utiles/lexique-fonction-publique">Lexique des abréviations de la Fonction Publique</a>, par Publidia</li> 69 | 70 | <li><a href="http://www.ac-grenoble.fr/college/poisy/orientation/orientation-sigles-et-acronymes/">Glossaire des sigles et acronymes</a>, par le collège de Poisy (académie de Grenoble), à partir d’un manuel de l’Onisep</li> 71 | 72 | <li><a href="https://gist.github.com/ColinMaudry/fe30f024d3cea20d1f6ccd579d9acd3f#file-gendarmerie-csv">Sigles de la gendarmerie et de la police nationale</a> collectés par <a href="https://merigoux.ovh">Denis Merigoux</a></li> 73 | 74 | <li>Sources indiquées par les contributeurs et contributrices de ce dictionnaire</li> 75 | </ul> 76 | 77 | <h2 id="contact">Contact</h2> 78 | 79 | <ul> 80 | <li>email : colin+sigles@maudry.com</li> 81 | 82 | <li>twitter : <a href="https://twitter.com/col1m">@col1m</a></li> 83 | </ul> 84 | 85 | <h2 id="vieprive">Vie privée</h2> 86 | 87 | <p>Ce site dépose un petit fichier texte (un « cookie ») sur votre ordinateur lorsque vous le consultez (<a href="https://fr.wikipedia.org/wiki/Cookie_(informatique)">Wikipédia</a>). Cela me permet de mesurer le nombre de visites et de distinguer les nouveaux visiteurs des utilisateurs réguliers.</p> 88 | 89 | <!-- <div style="background-color: #ccc;"><iframe style="border: 0; height: 200px; width: 100%;" title="Opt-out du cookie de suivi" src="https://analytics.maudry.com/index.php?module=CoreAdminHome&action=optOut&language=fr&backgroundColor=&fontColor=&fontSize=&fontFamily="></iframe></div> --> 90 | 91 | <h3 id="cesitenaffichepasdebanniredeconsentementauxcookiespourquoi">Ce site n’affiche pas de bannière de consentement aux cookies, pourquoi ?</h3> 92 | 93 | <p>C’est vrai, vous n’avez pas eu à cliquer sur un bloc qui recouvre la moitié de la page pour dire que vous êtes d’accord avec le dépôt de cookies.</p> 94 | 95 | <p>Rien d’exceptionnel, je respecte simplement la loi, qui dit que certains outils de suivi d’audience, correctement configurés pour respecter la vie privée, sont exemptés d’autorisation préalable.</p> 96 | 97 | <p>J’utilise pour cela <a href="https://matomo.org/">Matomo</a>, un outil <a href="https://matomo.org/free-software/">libre</a>, paramétré pour être en conformité avec la <a href="https://www.cnil.fr/fr/solutions-pour-les-cookies-de-mesure-daudience">recommandation « Cookies »</a> de la <a href="http://sigl.es/cnil">CNIL</a>. Cela signifie que votre adresse IP, par exemple, est anonymisée avant d’être enregistrée. Il m’est donc impossible d’associer vos visites sur ce site à votre personne.</p> 98 | 99 | <h2 id="mentionslgales">Mentions légales</h2> 100 | 101 | <p>Le dictionnaire des sigles de l’administration française a été compilé et édité par Colin Maudry, inscrit au répertoire SIRENE sous le numéro 812 231 132, et dont le siège social est situé au 7 avenue Aristide Briand, 35000 Rennes.</p> 102 | 103 | <p>Le dictionnaire des sigles de l’administration française est hébergé par la société Github, propriété de Microsoft Corporation.</p> 104 | 105 | <p>Icône presse-papier dessinée par <a href="https://icon54.com/">Pixel perfect</a> de <a href="http://www.flaticon.com">Flaticon</a>.</p> 106 | </div></template> 107 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | <template> 2 | <div id="app2"> 3 | <div id="search-frame"> 4 | <input 5 | id="search" 6 | v-model="search" 7 | v-on:keyup="makeSearch" 8 | title="Champ de recherche" 9 | placeholder="Sigle ou acronyme" 10 | aria-label="Rechercher un sigle ou acronyme" 11 | type="search" 12 | autofocus="autofocus" 13 | > 14 | <copy-button v-bind:search="search" v-show="hasClipboardApi && search !== ''"/> 15 | </div> 16 | <p v-show="!rows[0] && search === ''">Recherchez la signification d'un sigle parmi les {{ nbTerms }} que compte ce dictionnaire</p> 17 | <table id="results" v-show="rows[0] && !loading && search"> 18 | <colgroup> 19 | <col style=""/> 20 | <col style=""/> 21 | <col style=""/> 22 | </colgroup> 23 | <thead> 24 | <td>Sigle</td> 25 | <td>Définition</td> 26 | <td>Source</td> 27 | </thead> 28 | <tbody> 29 | <tr v-for="row in rows" :key="row.term + row.definition"> 30 | <td>{{ row.term }}</td> 31 | <td>{{ row.definition }}</td> 32 | <td><a v-bind:href="row.url_source" target="_blank">{{ row.source }}</a></td> 33 | </tr> 34 | </tbody> 35 | </table> 36 | <p v-show="!loading && !rows[0] && search !== ''">Le dictionnaire ne contient pas de sigle contenant le texte <strong>{{ search }}</strong>.</p> 37 | <div v-show="loading"> 38 | <p>Chargement...</p> 39 | </div> 40 | <about-section id="about" v-show="!rows[0]"/> 41 | </div> 42 | </template> 43 | 44 | <style> 45 | 46 | </style> 47 | 48 | <script> 49 | import AboutSection from "./AboutSection.vue"; 50 | import CopyButton from "./CopyButton.vue"; 51 | export default { 52 | components: { 53 | AboutSection, 54 | CopyButton 55 | }, 56 | data () { 57 | return { 58 | endpoint: null, 59 | total: 0, 60 | error: null, 61 | hasClipboardApi:false, 62 | currentPage: 1, 63 | perPage: 50, 64 | loading: false, 65 | search: "", 66 | nbTerms: process.env.VUE_APP_NBTERMS, 67 | resource: { 68 | id: process.env.VUE_APP_RESOURCEID 69 | }, 70 | showRowId: false, 71 | rows: [] 72 | } 73 | }, 74 | created() { 75 | let split=window.location.href.split("/"); 76 | let search=split[split.length - 1]; 77 | if (search !== "#" && search[0] !== "#") { 78 | this.search=search; 79 | this.makeSearch(); 80 | } 81 | if (navigator.clipboard.writeText) { 82 | this.hasClipboardApi=true; 83 | } else { 84 | console.log("Votre navigateur ne supporte pas la méthode writeText de l'API presse-papier.") 85 | } 86 | }, 87 | computed: {}, 88 | async mounted () { 89 | if (this.search) { 90 | this.makeSearch(); 91 | } 92 | }, 93 | methods: { 94 | request(method, url) { 95 | return new Promise(function (resolve, reject) { 96 | var xhr = new XMLHttpRequest(); 97 | xhr.open(method, url); 98 | xhr.onload = resolve; 99 | xhr.onerror = reject; 100 | xhr.send(); 101 | }); 102 | }, 103 | makeSearch() { 104 | if (this.search !== "") { 105 | let ctx=this; 106 | 107 | console.log("Let's search " + this.search); 108 | const url = `https://tabular-api.data.gouv.fr/api/resources/${ctx.resource.id}/data/` 109 | this.loading = true 110 | let params = `term__sort=asc&page_size=${ctx.perPage}&term__contains=${this.search}` 111 | this.request("GET", `${url}?${params}`) 112 | .then((res) => { 113 | let response=JSON.parse(res.target.response); 114 | this.loading = false 115 | this.total = response.meta.total 116 | this.rows = response.data 117 | }) 118 | .catch((error) => { 119 | this.loading = false 120 | if (error.target.response) { 121 | this.error = error.response.error 122 | } else { 123 | this.error = error.toString() 124 | } 125 | //callback(null) 126 | }) 127 | return null 128 | 129 | } else { 130 | this.rows=[] 131 | } 132 | } 133 | } 134 | } 135 | </script> 136 | -------------------------------------------------------------------------------- /src/CopyButton.vue: -------------------------------------------------------------------------------- 1 | <template> 2 | <a 3 | href="#" 4 | v-on:click="copyLink" 5 | title="Copier un lien court vers cette recherche" 6 | id="copyLink"> 7 | <svg id="clipIcon" height="25" viewBox="0 0 24 24" width="25" xmlns="http://www.w3.org/2000/svg"><path d="m17 22c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5zm0-9c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4z"/><path d="m23.5 24c-.128 0-.256-.049-.354-.146l-3.318-3.318c-.195-.195-.195-.512 0-.707s.512-.195.707 0l3.318 3.318c.195.195.195.512 0 .707-.097.097-.225.146-.353.146z"/><path d="m10.5 21h-8c-1.378 0-2.5-1.121-2.5-2.5v-13c0-1.379 1.122-2.5 2.5-2.5h2c.276 0 .5.224.5.5s-.224.5-.5.5h-2c-.827 0-1.5.673-1.5 1.5v13c0 .827.673 1.5 1.5 1.5h8c.276 0 .5.224.5.5s-.224.5-.5.5z"/><path d="m11.5 6h-6c-.827 0-1.5-.673-1.5-1.5v-2c0-.276.224-.5.5-.5h1.55c.233-1.14 1.242-2 2.45-2s2.217.86 2.45 2h1.55c.276 0 .5.224.5.5v2c0 .827-.673 1.5-1.5 1.5zm-6.5-3v1.5c0 .275.224.5.5.5h6c.276 0 .5-.225.5-.5v-1.5h-1.5c-.276 0-.5-.224-.5-.5 0-.827-.673-1.5-1.5-1.5s-1.5.673-1.5 1.5c0 .276-.224.5-.5.5z"/><path d="m13.5 9h-10c-.276 0-.5-.224-.5-.5s.224-.5.5-.5h10c.276 0 .5.224.5.5s-.224.5-.5.5z"/><path d="m12.5 12h-9c-.276 0-.5-.224-.5-.5s.224-.5.5-.5h9c.276 0 .5.224.5.5s-.224.5-.5.5z"/><path d="m10 15h-6.5c-.276 0-.5-.224-.5-.5s.224-.5.5-.5h6.5c.276 0 .5.224.5.5s-.224.5-.5.5z"/><path d="m16.5 10c-.276 0-.5-.224-.5-.5v-4c0-.827-.673-1.5-1.5-1.5h-2c-.276 0-.5-.224-.5-.5s.224-.5.5-.5h2c1.378 0 2.5 1.121 2.5 2.5v4c0 .276-.224.5-.5.5z"/> 8 | </svg> 9 | </a> 10 | </template> 11 | <style> 12 | a#copyLink { 13 | display: flex; 14 | float: right; 15 | align-items: center; 16 | fill:white; 17 | } 18 | a#copyLink:active { 19 | fill:orange; 20 | } 21 | </style> 22 | <script> 23 | export default { 24 | props: { 25 | search: String 26 | }, 27 | methods: { 28 | copyLink() { 29 | if (this.search) { 30 | let link="http://sigl.es/" + this.search; 31 | navigator.clipboard.writeText(link); 32 | } 33 | } 34 | } 35 | } 36 | 37 | </script> 38 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | 4 | Vue.config.productionTip = false 5 | 6 | new Vue({ 7 | render: h => h(App) 8 | }).$mount('#app') 9 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | process.env.VUE_APP_NBTERMS = require('./package.json').config.nbTerms 2 | process.env.VUE_APP_RESOURCEID = require('./package.json').config.resourceId 3 | 4 | 5 | module.exports = { 6 | productionSourceMap: false 7 | } 8 | --------------------------------------------------------------------------------