{{ counter }}{
diff --git a/assets/additional/js/search-startup.js b/assets/additional/js/search-startup.js
index 1a972e4e8968..24409971f3c8 100644
--- a/assets/additional/js/search-startup.js
+++ b/assets/additional/js/search-startup.js
@@ -36,7 +36,13 @@ const THEMATIQUES = [
"Travail / Emploi",
];
-const filters = [];
+function setLocationParam(param, value) {
+ const url = new URL(window.location);
+
+ url.searchParams.set(param, value);
+
+ history.replaceState(null, null, url);
+}
const createStartupCard = (startup) => {
const card = document.createElement("div");
@@ -116,9 +122,15 @@ const filterCards = (startups) => {
)
.filter((startup) =>
filters.is_national_impact ? startupHasNationalImpact(startup) : true,
+ )
+ .filter((startup) =>
+ filters.excludeInvestigations ? startupIsNotInvestigation(startup) : true,
);
};
+const startupIsNotInvestigation = (startup) =>
+ startup.phase !== "investigation";
+
const startupHasNationalImpact = (startup) =>
startup.events.find((event) => event.name === "national_impact");
@@ -210,81 +222,62 @@ const updateCards = (data) => {
}
};
-const createIncubatorSelect = (selectElement, data, incubators, initValue) => {
+const createIncubatorSelect = (selectElement, data, incubators) => {
const optionFragment = document.createDocumentFragment();
- for (let i = 0; i < incubators.length; i++) {
- const incubator = incubators[i];
+
+ for (const incubator of incubators) {
const option = document.createElement("option");
option.innerText = incubator.title;
option.value = incubator.id;
optionFragment.appendChild(option);
}
+
selectElement.appendChild(optionFragment);
+
const onIncubatorChange = (value) => {
filters.incubator = value;
- const incubatorElements =
- document.getElementsByClassName("incubator-header");
- for (let i = 0; i < incubatorElements.length; i++) {
- const incubatorElement = incubatorElements[i];
+
+ for (const incubatorElement of document.getElementsByClassName(
+ "incubator-header",
+ )) {
if (incubatorElement.id !== value) {
incubatorElement.style.display = "none";
} else {
incubatorElement.style.display = "block";
}
}
+
updateCards(data);
};
- if (initValue) {
- selectElement.value = initValue;
- onIncubatorChange(initValue);
- }
- selectElement.addEventListener("change", (e) => {
- const value = e.target.value;
- onIncubatorChange(value);
- const urlParams = new URLSearchParams(window.location.search);
- urlParams.set("incubateur", value);
- history.replaceState(
- null,
- null,
- `${window.location.origin + window.location.pathname}?${urlParams}`,
- );
- });
+
+ if (filters.incubator) selectElement.value = filters.incubator;
+
+ selectElement.addEventListener("change", ({ target: { value } }) =>
+ updateFilters("incubator", "incubateur", value),
+ );
};
-const createUsertypesSelect = (selectElement, data, initValue) => {
+const createUsertypesSelect = (selectElement, data) => {
const optionFragment = document.createDocumentFragment();
const usertypes = Object.keys(USERTYPES);
- for (let i = 0; i < usertypes.length; i++) {
- const usertypeKey = usertypes[i];
- const usertypeLabel = USERTYPES[usertypeKey];
+
+ for (const [value, label] of Object.entries(USERTYPES)) {
const option = document.createElement("option");
- option.innerText = usertypeLabel;
- option.value = usertypeKey;
+ option.innerText = label;
+ option.value = value;
optionFragment.appendChild(option);
}
+
selectElement.appendChild(optionFragment);
- const onUsertypesChange = (value) => {
- filters.usertypes = value;
- updateCards(data);
- };
- if (initValue) {
- selectElement.value = initValue;
- onUsertypesChange(initValue);
- }
- selectElement.addEventListener("change", (e) => {
- const value = e.target.value;
- onUsertypesChange(value);
- const urlParams = new URLSearchParams(window.location.search);
- urlParams.set("usertypes", value);
- history.replaceState(
- null,
- null,
- `${window.location.origin + window.location.pathname}?${urlParams}`,
- );
- });
+
+ if (filters.usertypes) selectElement.value = filters.usertypes;
+
+ selectElement.addEventListener("change", ({ target: { value } }) =>
+ updateFilters("usertypes", "usertypes", value),
+ );
};
-const createThematiquesSelect = (selectElement, data, initValue) => {
+const createThematiquesSelect = (selectElement, data) => {
const optionFragment = document.createDocumentFragment();
for (const thematique of THEMATIQUES) {
const option = document.createElement("option");
@@ -295,47 +288,35 @@ const createThematiquesSelect = (selectElement, data, initValue) => {
selectElement.appendChild(optionFragment);
- const onThematiquesChange = (value) => {
- filters.thematiques = value;
- updateCards(data);
- };
- if (initValue) {
- selectElement.value = initValue;
- onThematiquesChange(initValue);
- }
- selectElement.addEventListener("change", (e) => {
- const value = e.target.value;
- onThematiquesChange(value);
- const urlParams = new URLSearchParams(window.location.search);
- urlParams.set("thematiques", value);
- history.replaceState(
- null,
- null,
- `${window.location.origin + window.location.pathname}?${urlParams}`,
- );
- });
+ if (filters.thematiques) selectElement.value = filters.thematiques;
+
+ selectElement.addEventListener("change", ({ target: { value } }) =>
+ updateFilters("thematiques", "thematiques", value),
+ );
};
-const createNationalImpactSelect = (selectElement, data, initValue) => {
- const onNationalImpactChange = (value) => {
- filters.is_national_impact = value;
- updateCards(data);
- };
- if (initValue === "true") {
- setTimeout(() => {
- selectElement.checked = true;
- }, 1000);
- onNationalImpactChange(true);
- }
- selectElement.addEventListener("change", (e) => {
- const value = selectElement.checked;
- onNationalImpactChange(value);
- const urlParams = new URLSearchParams(window.location.search);
- urlParams.set("national_impact", value);
- history.replaceState(
- null,
- null,
- `${window.location.origin + window.location.pathname}?${urlParams}`,
- );
- });
+const createNationalImpactSelect = (selectElement, data) => {
+ selectElement.checked = filters.is_national_impact;
+
+ selectElement.addEventListener("change", ({ target: { checked: value } }) =>
+ updateFilters("is_national_impact", "national_impact", value),
+ );
};
+
+function setupExcludeInvestigations() {
+ const toggle = document.getElementById("exclude-investigations-toggle");
+
+ toggle.checked = filters.excludeInvestigations;
+
+ toggle.addEventListener("change", ({ target: { checked: value } }) =>
+ updateFilters("excludeInvestigations", "exclude-investigations", value),
+ );
+}
+
+function updateFilters(filterName, paramName, value) {
+ filters[filterName] = value;
+
+ setLocationParam(paramName, value);
+
+ updateCards(data);
+}
diff --git a/content/templates/authors.md b/content/templates/authors.md
deleted file mode 100644
index 71c6ad69c369..000000000000
--- a/content/templates/authors.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-fullname: Camille Dupont # penser à modifier le nom du fichier ci-dessus en prenom.nom.md !
-role: Smartass # Développeuse / Développeur / Intrapreneuse / Intrapreneur / Coach / Chargée de développement / Chargé de développement...
-github: pseudo_github # optionnel : nom d'utilisateur GitHub, permet d'être ajouté automatiquement à l'organisation GitHub betagouv
-avatar: # optionnel, voir ci-dessous
-# En premier, on va regarder si tu as mis une image au format prenom.nom dans /img/authors/
-# Sinon, on utilisera le lien externe du champs avatar
-# Si tu laisse ce champs vide, alors on regardera si tu as une image sur GitHub
-# Enfin, si aucune image n'est trouvée, alors la fiole beta.gouv.fr sera utilisée sur la page communauté
-link: # optionnel : lien vers une page perso externe.
-missions: # ton historique de missions avec nous dans l'ordre chronologique. Remplis déjà la première pour commencer !
- - start: 2019-01-01 # date d'arrivée au format ISO (AAAA-MM-JJ)
- end: 2019-12-31 # date de fin de contrat au format ISO (AAAA-MM-JJ)
- status:
- employer: # si applicable, le nom de ton administration, SSII, etc.
-startups: # ta ou tes startups actuelles
- - super_startup # le nom du fichier de la startup dans le répertoire /content/_startups/ sans l'extension .md
-#previously: # enleve le commentaire '#' de la première ligne pour indiquer ta ou tes anciennes startups
-# - ancienne_super_startup # le nom du fichier de la startup dans le répertoire /content/_startups/ sans l'extension .md
-#badges: # enleve le commentaire '#' pour indiquer que tu as demandé un badge
-# - segur # Pour Ségur, si tu penses venir 1 fois par semaine
----
-
-Écrit des autobiographies percutantes en moins de 200 caractères depuis 1972.
diff --git a/content/templates/incubators.md b/content/templates/incubators.md
deleted file mode 100644
index acfbc7daf2fd..000000000000
--- a/content/templates/incubators.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: # nom de l'incubateur
-owner: # porteur de l'incubateur
-website: # URL du site de l'incubateur
-github: # URL de l'organisation GitHub de l'incubateur
-contact: # adresse de contact
-address: # adresse postale
----
-
-Description de l'incubateur.
diff --git a/content/templates/jobs.md b/content/templates/jobs.md
deleted file mode 100644
index 9d279ca072d8..000000000000
--- a/content/templates/jobs.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-roles: intitulé du/des poste/s # un développeuse ou un développeur, un ou une bizdev, un ou une coach et un développeur ou une développeuse, etc.
-startup: identifiant de la startup # identifiant de la startup pour laquelle le recrutement est fait ; créer la startup si elle n'existe pas encore
-techno: Choix libre # s'il s'agit d'une offre dev, ajouter la techno ou expliciter que le choix est libre ; enlever s'il s'agit d'un autre type d'offre
-junior: true # S'il est possible de candidater avec peu d'expérience
-open: true # Basculer à 'false' ou supprimer une fois l'offre pourvue
-title: titre # Permet d'avoir un titre spécifique pour la page de cette offre
----
-
-Écrire ici le descriptif du poste. Dans la cadre de la double labellisation égalité diversité, pensez à vérifier la féminisation des adjectifs et des intitulés de poste (candidat ou candidate, chef ou cheffe, directeur ou directrice).
-
-**Pensez à modifier le nom de ce fichier : il doit être au format `AAAA-MM-DD-nom_offre.md` !**
-Où `AAAA-MM-DD` est la date à laquelle vous souhaitez que l'offre soit publiée.
diff --git a/content/templates/page.md b/content/templates/page.md
deleted file mode 100644
index 7f3ac9f5281d..000000000000
--- a/content/templates/page.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: page
-permalink: /page/
-title: Titre de page
----
-
-## Introduction
-Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
-
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-
-Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-
-Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
diff --git a/content/templates/startups.md b/content/templates/startups.md
deleted file mode 100644
index 62f0d9663083..000000000000
--- a/content/templates/startups.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Mes Aides # une majuscule et pas d'acronymes
-mission: Accéder aux conseils de professionnels à proximité pour trouver un logement # infinitif, pas de point ; compléter la phrase « En investissant dans ce produit l'État cherche à… »
-sponsors:
- - /organisations/dinum # Liste des administrations sponsors, les valeurs possibles sont définies dans /content/_organisations/
-incubator: dinum # le nom du fichier de l'incubateur de la startup
-phases: # les différentes étapes de la vie des startups - les phases possibles sont définies dans /content/_phases/
- - name: investigation
- start: 2020-03-16 # date au format ISO (AAAA-MM-DD)
-events: # les évènements marquants de la startup - les noms possibles sont définies dans /content/_events/
- - name: committee
- date: 2020-03-16 # date au format ISO (AAAA-MM-DD)
- comment: Premier comité de financement # Informations complémentaires
-link: https://mes-aides.gouv.fr
-repository: https://github.com/betagouv/mes-aides-ui # ou page de description des dépôts s'il y en a plusieurs
-stats: false # mettre à true pour renvoyer vers ta page de stats. Attention, elle doit se trouver sur [url du site]/stats !
-stats_url: # optionnel, si stats est à true, alors tu peux indiquer vers quelle URL pointer vers tes stats.
-contact: contact@mes-aides.gouv.fr # sera visible de tous
----
-
-## Fiche produit
-
-Texte libre au format [Markdown](http://ricostacruz.com/cheatsheets/markdown.html).
-
-
-## Rappels
-
-- [ ] Supprimer les commentaires dans le front-matter : supprimer les croisillons et le texte qui les suit dans la partie entre tirets
-- [ ] Modifier le nom du fichier `nom-startup.md` dans le champ ci-dessus (attention à bien inclure l'extension `.md`)
-- [ ] Assurez-vous que le fichier est bien dans le dossier `/content/_startups/`
-- [ ] Screenshot : ajouter une image en 1280x720px dans /img/startups/$nom-startup.png (ou .jpg)
-- [ ] Créer une nouvelle branche pour l'ajout de ce fichier, et la nommer du même nom que le fichier `nom-startup`.
-- [ ] Ouvrir une pull request pour valider l'intégration.
-- [ ] Effacer ce texte une fois que vous l'avez lu 😉
diff --git a/trampoline.html b/trampoline.html
deleted file mode 100644
index a1fd2ff1dae7..000000000000
--- a/trampoline.html
+++ /dev/null
@@ -1,23 +0,0 @@
----
-layout: null
----
-
-
- Trampoline
-
-
-
-
-