j'arrive pas a commit
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
Je met ici toutes les infos qui m'on été necessaires pour construire ne serais-ce que les fonctionnalités de base, parce que franchement je suis nul en html css javascript donc je vais avoir besoin d'un mémo.
|
||||
- Cléo
|
||||
|
||||
(PS: je fais tout ca dans l'ordre chronologique.. c'est donc un peu le bordel, mais ca peut rendre la correction plus facile si par chance je pense a bien ecrire le nom de chaque fichier et bloc de code dans lequel chaque point du memo s'inscrit)
|
||||
(PPS: pour des raisons evidentes, je balance les attributs parcousup tout en bas)
|
||||
(PPPS: ce fichier est surtout destiné a moi meme et a warrhen pour ne pas mourir le jour de la soutenance en ayant deja tout oublié. Pour vous, Monsieur, on a une version plus propre ailleurs. Pardonnez donc les divagations innombrables que vous pourriez lire ci dessous si vous decidiez de le parcourir (note de l'auteur: S'il vous plait, cliquez sur un autre fichier...) malgré tous mes avertissement (et supplications) quant a la totale absence de quelque qualité redactionnelle que ce soit. (Il existe un legende disans qu'un jour, ce memo finira par comprendre de quoi il parle, mais qu'en l'etat des choses il est trop catastrophiquement mal ecrit pour cela. Tellement mal ecrit que j'ai fais au minimum cinqu fautes d'accord dans cette seule ligne, et j'ai meme reussi, allez savoir comment, a ecrire "disans" avec un S et un u est sorti de nulle part derriere "cinqu") )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
index.html : a ce qu'il parait, div c'est une boite vide qu'on peut tranquilement remplir sur commande. Pratique.
|
||||
viewport (ds le head) sert juste a ce que la taille s'adapte a lecran.
|
||||
|
||||
|
||||
src > main.js : on enregistre (register) le composant ligne-resultat.riot apres avoir importé qq composants et la biblio riot
|
||||
|
||||
|
||||
|
||||
|
||||
api/parcoursup.js > recupereFormations() : async permet de laisser tourner la page pendant qu'on chope la reponse, await de bloquer le js en attendant le resultat de la requete sans quoi, kaboom
|
||||
url construit l'url de la requete en fonction des mots clefs, puis fetch envoie la requette http
|
||||
response.json() transforme en format json utilisable le resultat en text brut de l'api
|
||||
data renvoie un paquet de trucs, mais seul son tableau result semble interessant de ce que j'ai pu voir dans l'api en faisant mumuse avec les requetes. (Et apres on se demande pourquoi je code lentement.. je comprends deja rien et en plus je fait joujoue avec tout ce qui bouge)
|
||||
|
||||
|
||||
|
||||
main.js : les variables c pareil qu'en android/xml, et ca c'est cool
|
||||
|
||||
> addEventListener : divResultat.innerHtml en gros ca remplace juste tout le contenu de la boite div evoquee plus haut par "chargement"
|
||||
j'aime toujours pas les fleches. Pas sur de savoir en quoi ca aide a comprendre le code cela dit.
|
||||
on balance dans formations le resultat de la requete, et pr chaque ligne on met les infos necesaire dans le composant ligne-resultat.riot
|
||||
et apres on rempli le div avec les formations
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Liste des attributs de parcourup, gentiment rédigé par claude.ai:
|
||||
|
||||
|
||||
|
||||
|
||||
L'établissement et la formation
|
||||
|
||||
Champ Signification
|
||||
|
||||
g_ea_lib_vx Nom de l'établissement
|
||||
fil_lib_voe_acc Filière (ex: Informatique)
|
||||
lib_for_voe_ins Nom complet de la formation
|
||||
detail_forma Détail de la formation
|
||||
fili Type (Licence, BTS, CPGE...)
|
||||
select_form Sélective ou non sélective
|
||||
ville_etab Ville
|
||||
dep_lib Département
|
||||
region_etab_aff Région
|
||||
contrat_etab Public ou Privé
|
||||
lien_form_psup Lien vers la fiche Parcoursup
|
||||
|
||||
|
||||
|
||||
|
||||
La carte
|
||||
|
||||
Champ Signification
|
||||
|
||||
g_olocalisation_des_formations.lat Latitude
|
||||
g_olocalisation_des_formations.lon Longitude
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Les chiffres clés
|
||||
|
||||
Champ Signification
|
||||
|
||||
capa_fin Nombre de places disponibles
|
||||
voe_tot Nombre total de candidatures
|
||||
acc_tot Nombre total d'admis
|
||||
taux_acces_ens Taux d'accès global (%)
|
||||
|
||||
|
||||
|
||||
|
||||
Les candidatures par type de bac
|
||||
|
||||
Champ Signification
|
||||
|
||||
nb_voe_pp_bg Candidatures bac général
|
||||
nb_voe_pp_bt Candidatures bac techno
|
||||
nb_voe_pp_bp Candidatures bac pro
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Les admis par type de bac
|
||||
Champ Signification
|
||||
pct_bg % admis bac général
|
||||
pct_bt % admis bac techno
|
||||
pct_bp % admis bac pro
|
||||
acc_bg Nombre admis bac général
|
||||
acc_bt Nombre admis bac techno
|
||||
acc_bp Nombre admis bac pro
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Les admis par mention
|
||||
|
||||
Champ Signification
|
||||
|
||||
pct_ab % admis mention Assez Bien
|
||||
pct_b % admis mention Bien
|
||||
pct_tb % admis mention Très Bien
|
||||
pct_tbf % admis mention Très Bien Félicitations
|
||||
pct_sansmention % admis sans mention
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
La sélectivité
|
||||
|
||||
Champ Signification
|
||||
|
||||
ran_grp1 Dernier appelé (rang du dernier admis)
|
||||
prop_tot Nombre total de propositions d'admission
|
||||
prop_tot_bg Propositions aux bacheliers généraux
|
||||
@@ -0,0 +1,24 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Parcoursup but coded by an idiot</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Explorateur de formations</h1>
|
||||
<input type="text" id="requete" placeholder="Ex: informatique, médecine...">
|
||||
<button id="entrerRequete">Lancer la recherche</button>
|
||||
<div id="affichageResultats"></div>
|
||||
|
||||
<script type="module" src="/src/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Generated
+1137
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "parcoursup-app",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"devDependencies": {
|
||||
"vite": "^8.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@riotjs/compiler": "^10.0.1",
|
||||
"riot": "^10.1.3",
|
||||
"rollup-plugin-riot": "^10.0.0"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 9.3 KiB |
@@ -0,0 +1,24 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<symbol id="bluesky-icon" viewBox="0 0 16 17">
|
||||
<g clip-path="url(#bluesky-clip)"><path fill="#08060d" d="M7.75 7.735c-.693-1.348-2.58-3.86-4.334-5.097-1.68-1.187-2.32-.981-2.74-.79C.188 2.065.1 2.812.1 3.251s.241 3.602.398 4.13c.52 1.744 2.367 2.333 4.07 2.145-2.495.37-4.71 1.278-1.805 4.512 3.196 3.309 4.38-.71 4.987-2.746.608 2.036 1.307 5.91 4.93 2.746 2.72-2.746.747-4.143-1.747-4.512 1.702.189 3.55-.4 4.07-2.145.156-.528.397-3.691.397-4.13s-.088-1.186-.575-1.406c-.42-.19-1.06-.395-2.741.79-1.755 1.24-3.64 3.752-4.334 5.099"/></g>
|
||||
<defs><clipPath id="bluesky-clip"><path fill="#fff" d="M.1.85h15.3v15.3H.1z"/></clipPath></defs>
|
||||
</symbol>
|
||||
<symbol id="discord-icon" viewBox="0 0 20 19">
|
||||
<path fill="#08060d" d="M16.224 3.768a14.5 14.5 0 0 0-3.67-1.153c-.158.286-.343.67-.47.976a13.5 13.5 0 0 0-4.067 0c-.128-.306-.317-.69-.476-.976A14.4 14.4 0 0 0 3.868 3.77C1.546 7.28.916 10.703 1.231 14.077a14.7 14.7 0 0 0 4.5 2.306q.545-.748.965-1.587a9.5 9.5 0 0 1-1.518-.74q.191-.14.372-.293c2.927 1.369 6.107 1.369 8.999 0q.183.152.372.294-.723.437-1.52.74.418.838.963 1.588a14.6 14.6 0 0 0 4.504-2.308c.37-3.911-.63-7.302-2.644-10.309m-9.13 8.234c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.894 0 1.614.82 1.599 1.82.001 1-.705 1.82-1.6 1.82m5.91 0c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.893 0 1.614.82 1.599 1.82 0 1-.706 1.82-1.6 1.82"/>
|
||||
</symbol>
|
||||
<symbol id="documentation-icon" viewBox="0 0 21 20">
|
||||
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="m15.5 13.333 1.533 1.322c.645.555.967.833.967 1.178s-.322.623-.967 1.179L15.5 18.333m-3.333-5-1.534 1.322c-.644.555-.966.833-.966 1.178s.322.623.966 1.179l1.534 1.321"/>
|
||||
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M17.167 10.836v-4.32c0-1.41 0-2.117-.224-2.68-.359-.906-1.118-1.621-2.08-1.96-.599-.21-1.349-.21-2.848-.21-2.623 0-3.935 0-4.983.369-1.684.591-3.013 1.842-3.641 3.428C3 6.449 3 7.684 3 10.154v2.122c0 2.558 0 3.838.706 4.726q.306.383.713.671c.76.536 1.79.64 3.581.66"/>
|
||||
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M3 10a2.78 2.78 0 0 1 2.778-2.778c.555 0 1.209.097 1.748-.047.48-.129.854-.503.982-.982.145-.54.048-1.194.048-1.749a2.78 2.78 0 0 1 2.777-2.777"/>
|
||||
</symbol>
|
||||
<symbol id="github-icon" viewBox="0 0 19 19">
|
||||
<path fill="#08060d" fill-rule="evenodd" d="M9.356 1.85C5.05 1.85 1.57 5.356 1.57 9.694a7.84 7.84 0 0 0 5.324 7.44c.387.079.528-.168.528-.376 0-.182-.013-.805-.013-1.454-2.165.467-2.616-.935-2.616-.935-.349-.91-.864-1.143-.864-1.143-.71-.48.051-.48.051-.48.787.051 1.2.805 1.2.805.695 1.194 1.817.857 2.268.649.064-.507.27-.857.49-1.052-1.728-.182-3.545-.857-3.545-3.87 0-.857.31-1.558.8-2.104-.078-.195-.349-1 .077-2.078 0 0 .657-.208 2.14.805a7.5 7.5 0 0 1 1.946-.26c.657 0 1.328.092 1.946.26 1.483-1.013 2.14-.805 2.14-.805.426 1.078.155 1.883.078 2.078.502.546.799 1.247.799 2.104 0 3.013-1.818 3.675-3.558 3.87.284.247.528.714.528 1.454 0 1.052-.012 1.896-.012 2.156 0 .208.142.455.528.377a7.84 7.84 0 0 0 5.324-7.441c.013-4.338-3.48-7.844-7.773-7.844" clip-rule="evenodd"/>
|
||||
</symbol>
|
||||
<symbol id="social-icon" viewBox="0 0 20 20">
|
||||
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M12.5 6.667a4.167 4.167 0 1 0-8.334 0 4.167 4.167 0 0 0 8.334 0"/>
|
||||
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M2.5 16.667a5.833 5.833 0 0 1 8.75-5.053m3.837.474.513 1.035c.07.144.257.282.414.309l.93.155c.596.1.736.536.307.965l-.723.73a.64.64 0 0 0-.152.531l.207.903c.164.715-.213.991-.84.618l-.872-.52a.63.63 0 0 0-.577 0l-.872.52c-.624.373-1.003.094-.84-.618l.207-.903a.64.64 0 0 0-.152-.532l-.723-.729c-.426-.43-.289-.864.306-.964l.93-.156a.64.64 0 0 0 .412-.31l.513-1.034c.28-.562.735-.562 1.012 0"/>
|
||||
</symbol>
|
||||
<symbol id="x-icon" viewBox="0 0 19 19">
|
||||
<path fill="#08060d" fill-rule="evenodd" d="M1.893 1.98c.052.072 1.245 1.769 2.653 3.77l2.892 4.114c.183.261.333.48.333.486s-.068.089-.152.183l-.522.593-.765.867-3.597 4.087c-.375.426-.734.834-.798.905a1 1 0 0 0-.118.148c0 .01.236.017.664.017h.663l.729-.83c.4-.457.796-.906.879-.999a692 692 0 0 0 1.794-2.038c.034-.037.301-.34.594-.675l.551-.624.345-.392a7 7 0 0 1 .34-.374c.006 0 .93 1.306 2.052 2.903l2.084 2.965.045.063h2.275c1.87 0 2.273-.003 2.266-.021-.008-.02-1.098-1.572-3.894-5.547-2.013-2.862-2.28-3.246-2.273-3.266.008-.019.282-.332 2.085-2.38l2-2.274 1.567-1.782c.022-.028-.016-.03-.65-.03h-.674l-.3.342a871 871 0 0 1-1.782 2.025c-.067.075-.405.458-.75.852a100 100 0 0 1-.803.91c-.148.172-.299.344-.99 1.127-.304.343-.32.358-.345.327-.015-.019-.904-1.282-1.976-2.808L6.365 1.85H1.8zm1.782.91 8.078 11.294c.772 1.08 1.413 1.973 1.425 1.984.016.017.241.02 1.05.017l1.03-.004-2.694-3.766L7.796 5.75 5.722 2.852l-1.039-.004-1.039-.004z" clip-rule="evenodd"/>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
@@ -0,0 +1,10 @@
|
||||
const API_BASE = "https://data.education.gouv.fr/api/explore/v2.1/catalog/datasets/fr-esr-parcoursup/records";
|
||||
|
||||
export async function recupereFormations(motCle, limit = 20) {
|
||||
const url = `${API_BASE}?where=search("${motCle}")&limit=${limit}`;
|
||||
|
||||
const response = await fetch(url);
|
||||
const data = await response.json();
|
||||
|
||||
return data.results;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<ligne-resultat>
|
||||
<div class="ligne-resultat">
|
||||
<h3>{ props.formation.fil_lib_voe_acc } — { props.formation.g_ea_lib_vx }</h3>
|
||||
<p>{ props.formation.ville_etab } ({ props.formation.dep_lib })</p>
|
||||
<p>Taux d'accès : { props.formation.taux_acces_ens }%</p>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.ligne-resultat {
|
||||
border: 1px solid #ccc;
|
||||
padding: 10px;
|
||||
margin: 5px 0;
|
||||
}
|
||||
</style>
|
||||
</ligne-resultat>
|
||||
@@ -0,0 +1,27 @@
|
||||
import * as riot from 'riot'
|
||||
import LigneResultat from './components/ligne-resultat.riot'
|
||||
import { recupereFormations } from './api/parcoursup.js'
|
||||
|
||||
|
||||
riot.register('ligne-resultat', LigneResultat)
|
||||
|
||||
const bouton = document.getElementById("entrerRequete")
|
||||
const champRecherche = document.getElementById("requete")
|
||||
const divResultats = document.getElementById("affichageResultats")
|
||||
|
||||
bouton.addEventListener("click", async () => {
|
||||
const motCle = champRecherche.value
|
||||
divResultats.innerHTML = "Chargement..."
|
||||
|
||||
const formations = await recupereFormations(motCle)
|
||||
|
||||
divResultats.innerHTML = ""
|
||||
|
||||
formations.forEach(f => {
|
||||
const listeFormations = riot.mount(
|
||||
document.createElement('ligne-resultat'),
|
||||
{ formation: f }
|
||||
)
|
||||
divResultats.appendChild(listeFormations[0].root)
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,8 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import riot from 'rollup-plugin-riot'
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
riot()
|
||||
]
|
||||
})
|
||||
Reference in New Issue
Block a user