V3 Groupe de travail - mathalea/mathalea GitHub Wiki
Partir d'une feuille blanche, utiliser des outils modernes (plus de SemanticUI, plus de JQuery, plus de manipulation de string d'HTML) et refaire les fonctionnalités actuelles de façon plus modulaire et plus maintenable.
Lorsque les fonctionnalités actuels seront de retour, on pourra ajouter de nouvelles fonctionnalités.
La v3 sera aussi l'occasion de moderniser l'interface utilisateur.
Nouveau dépôt qui reprend exercices et modules de l'actuelConfiguration viteJs + TypeScriptdisplayExercice(Promise, HTMLDivElement) => PromisedisplayQuestion(Promise, numQuestion, HTMLDivElement) => PromisedisplayCorrection(Promise, HTMLDivElement) => PromisedisplayCorrectionQuestion(Promise, HTMLDivElement) => Promise- displayIntroEtConsigne(exerciceEtParams) => HTMLDivElement
- lister et gérer les exercices qui ont un affichage particulier et ceux qui attendent un event exercicesAffiches
- displayParamsExercice(exerciceEtParams) => HTMLDivElement
- Gérer l'ordre d'affichage des exercices (à l'heure actuelle la vitesse de chargement peut modifier l'ordre)
- updateExercice(exerciceEtParams) modifie la div de l'exercice avec ses nouveaux paramètres
- updateUrl(exercicesChoisisEtParams)
- buildJsonExercices()
- buildReferentiel()
- displayMenu(sectionActive) => HTMLDivElement
- updateMenu(sectionActive) injecte dans le DOM les éléments nécessaires à la section, réalise une animation et affiche le menu
- updateOrdreDesExercices() met à jour l'ordre de exercicesChoisisEtParams et met à jour l'affichage
- Gérer les chargements de modules :
- MathLive
- IEP
- xCas
- MG32
- Scratch
-
Chantier display
- Afficher les div des exercices
- Voir les adaptations à apporter aux exercices particuliers (animations Instrumenpoche, mathalea2d, ceux qui attendent l'event exercicesAffiches...)
- Tester l'interactivité
-
Chantier json et menus
- Faire un buildJsons() en nodeJS
- Générer le HTML de ces menus
-
Chantier interface graphique
- Si framework il y a, il devra avoir une place très limitée pour pouvoir en changer facilement
Dans un 2e temps, il faudra réfléchir aux fonctionnalités avancées et aux différentes sorties
Liste de tests créée par Cédric
- Exercices classiques (6C10-1)
- Exercice avec MathALEA2D (6G10)
- Exercice avec IEP après clic sur bouton (5G40)
- Exercice avec IEP (3G11)
- Exercice avec Scratch (6Algo10)
- Exercice de DNB / CRPE...
- exercicesChoisisEtParams est une liste d'objet exerciceEtParams
- exerciceEtParams est un objet {url, seed, nbQuestions, sup, sup2, sup3, sup4, objetParametres, typeDAffichage, div}
- objetParametres pour de futurs exercices pour avoir plus de souplesses que sup, sup2... ? À réfléchir pour le codage dans l'url
- typeDAffichage : 'web'|'diaporama'|'latex'|'amc'...
{
can : {
6e : {
can6C : {
can6C01 : UUID,
can6C02 : UUID,
}
}
},
3e :
{ 3G2 :
{
3G20 : UUID,
3G21 : UUID,
},
3G3 :
{
3G30 : UUID,
3G31 : UUID,
}
}
}
Les différents référentiel devront permettre de construire l'arbre fermé avec les niveaux et chapitres. Au clic sur un niveau ou un chapitre, on récupère les identifiants des items et les UUID.
{
3e : {
3G2 : {
UUID : {
titre: "...",
tags: [amcReady, interactifReady...],
themes: [Pythagore, ...]
datePublication: "...",
dateModif: "..."
},
UUID : ...
}
Proposition pour exercicesAleatoiresDisponibles (Rémi 23/07) :
{
{
"uuid": "gfdg345",
"url": "6e/6C10.js",
titre: "Utiliser les tables de multiplications",
tags: ["amcReady", "interactifReady"...],
themes: ["Pythagore", ...],
datePublication: "...",
dateModif: null
},
{
"uuid":"azertp",
"url": 'can/6e/can6N20.js',
titre: "Écriture décimale",
tags: [amcReady, interactifReady...],
themes: ["Numération", ...],
datePublication: "...",
dateModif: "..."
},
}
Faire l'équivalent avec exercicesDisponibles6.json (sans CAN), exercicesDisponiblesCan6.json...
On connait la liste des UUID à afficher, on filtre et on récupère les informations utiles à la construction du menu.
Remarque : les référentiels ne sont pas obligatoires, on peut imaginer un affichage par mots-clés ou par mot contenu dans le titre. Il sera aussi possible d'ouvrir un référentiel et de le combiner avec un filtre suivant la recherche de l'utilisateur.
{ "UUID" : "exercices/3e/3G20.ts" }
Au clic, on récupère l'URL du constructeur de l'exercice avant d'en créer une instance
- Cohabitation des deux moteurs ?
- Anciennes url qui pointent vers les nouvelles UUID ?
mathalea.html?id=45erere,s=1,s2=false,n=10&id=bvcbv&n=10&s=2&serie=fdsfd&v=...&z=... mathalea.html?ex=3G20 => mathalea.html?id=45erere
settingsToUrl() : contraindre la mise à jour avec un temps minimum (1s ?)
Utiliser l'objet natif URL
Raccourcir les url ? Nous ou un serveur externe
URL <=> listeOrdonneeExercicesEtParametres [{UUID, paramètres, ordre: 1}, {UUID2, paramètres, ordre: 2}, ...]
liste à garder dans un store ?
Comment les créer ? Comment s'assurer de ne pas créer de doublons Processus retenu par Jean-claude -> La fonction builJsonDictionnaireExercices() de exercicesToJson.js parcours l'ensemble des exercices. -> Le dictionnaire est chargé si il est présent, sinon il est créé. -> La liste des uuids déjà utilisées (si il y en a) est créée afin d'éviter de réutiliser ces uuids. -> Les uuids sont créées en même temps que les exercices sont ajoutés au dictionnaire exercicesDisponiblesReferentiel2022.json -> On vérifie bien entendu que la nouvelle uuids n'est pas dans la liste de celles qui sont déjà utilisées. -> à ce moment là, on renseigne deux propriétés exportées dans le fichier de l'exercice : uuid et ref. -> La présence de ces propriétés signifie que l'exercice est déjà dans le dictionnaire (qui contient aussi l'uuid de chaque entrée) donc il est ignoré. Note: La classification des exercices dans le dictionnaire (niveau, chapitre) est basée sur le nom du fichier. Il convient donc de respecter les préfixes communs à tous les exercices d'un même niveau. Les exercices dont le nom commence par beta ou P0 sont ignorés par le processus. Note: Aucune uuid ne doit être renseignée manuellement. Note: Pendant ce processus, deux autres fichiers sont alimentés : referentiel2022.json et uuidToUrl.json