diff --git a/scripts/App.svelte b/scripts/App.svelte index 6068b006..4f8c7862 100644 --- a/scripts/App.svelte +++ b/scripts/App.svelte @@ -18,7 +18,7 @@ {id: '70'}, ] - export let espèces; + export let espècesProtégéesParClassification; /** @type { DescriptionMenaceEspèce[] } */ export let descriptionMenacesEspèces; @@ -74,7 +74,7 @@ {/each} - + {#if classification === "oiseau"} diff --git a/scripts/main.js b/scripts/main.js index 2f9e5f1b..885d915f 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -1,6 +1,11 @@ -import App from './App.svelte'; +//@ts-check + import { dsv } from 'd3-fetch'; +import App from './App.svelte'; + +import './types.js' + function getURL(selector){ const element = document.head.querySelector(selector) @@ -28,10 +33,31 @@ data.forEach(d => { }) console.log(dataMap) +/** @type { {REGNE: Règne, CLASSE: Classe, CD_NOM: string }[] } */ +const listeEspècesProtégées = [...dataMap.values()] + +const filtreParClassification = new Map([ + ["oiseau", ((/** @type {{REGNE: Règne, CLASSE: Classe}} */ {REGNE, CLASSE}) => { + return REGNE === 'Animalia' && CLASSE === 'Aves' + })], + ["faune non-oiseau", ((/** @type {{REGNE: Règne, CLASSE: Classe}} */ {REGNE, CLASSE}) => { + return REGNE === 'Animalia' && CLASSE !== 'Aves' + })], + ["flore", ((/** @type {{REGNE: Règne, CLASSE: Classe}} */ {REGNE}) => { + return REGNE === 'Plantae' + })] +]) + +const espècesProtégéesParClassification = new Map( + [...filtreParClassification].map(([classif, filtre]) => ([classif, listeEspècesProtégées.filter(filtre)])) +) + +console.log('espècesProtégéesParClassification', espècesProtégéesParClassification) + const app = new App({ target: document.querySelector('.svelte-main'), props: { - espèces: [...dataMap.values()], + espècesProtégéesParClassification, descriptionMenacesEspèces: [ { classification: "oiseau", // Type d'espèce menacée diff --git a/scripts/types.js b/scripts/types.js index 4189fd8b..68fa71f6 100644 --- a/scripts/types.js +++ b/scripts/types.js @@ -1,5 +1,8 @@ /** @typedef { 1 | 2 | 3 | 4 | 5 | 60 | 70 } ActivitéMenançante // tous */ /** @typedef { 0 | 1 | 2 | 10 | 11 | 12 | 13 | 14 } MéthodeMenançante // tous */ +/** @typedef { 'Animalia' | 'Plantae' | 'Fungi' | 'Chromista' } Règne // incomplet */ +/** @typedef { 'Amphibia' | 'Actinopterygii' | 'Malacostraca' | 'Mammalia' | 'Aves' | 'Anthozoa' | 'Equisetopsida' | 'Gastropoda' | 'Insecta' | 'Bivalvia' | 'Petromyzonti' | 'Lecanoromycetes' | 'Ulvophyceae' | 'Holothuroidea' | 'Elasmobranchii' | 'Arachnida' | 'Charophyceae' | 'Cephalopoda' | 'Echinoidea' | 'Phaeophyceae' } Classe // incomplet */ + /** * @typedef {"oiseau" | "faune non-oiseau" | "flore"} ClassificationEtreVivant