Refonte partielle de JS et surtout de l'interface python -> JS
Follow up, about #53 (closed)
Goal:
- split the files into more, SMALL files
- deduplicate the code when obvious
-
do NOT change the behaviors yet(yeah, I knew it...😁 )
-
Suppression du crochet
on_post_page_macros
: l'introduction du fichier de hooks mkdocs l'a rendu obsolète -
Restauration du
Ctrl+C
sur les balises<code>
-
Rend possible l'utilisation de plusieurs IDEs dans la même page, en dehors des admonitions
-
découpage du fichier
IDE.js
en plein de petits bouts + nettoyage de sections de code devenues inutiles suite à d'autres changements -
les fichiers JS sont "marqués" et ne sont insérés que dans les pages qui en ont besoin
-
refonte de la façon de passer de l'info de python à JS:
- insertion d'un balise
<script>
en bas de page, définissant une variable "globale" et contenant toutes les données nécessaires pour chaque ide défini dans la page - suppression des données ajoutée à la volée en tant qu'attribut de balises diverses et variées (évite toutes les navigations dans le DOM pour atteindre les éléments voulus => retrouver les données devient indépendant de la structure du DOM et donc devient ROBUSTE ( :cough: ...)
- insertion d'un balise
-
refonte complète de la gestion des corrections, remarques, et compteurs d'essais
-
suppression des fichiers
start_REM.md
etend_REM.md
-
suppression de tous les shenanigans autour des
escape_problematic_characters_in_files
: les contenus qui devaient être "protégés" contre les rendus automatiquesmd->html
ne sont plus insérés dans le markdown mais sont passés via les scripts -
une
div
dédiée au contenu des éventuelles correction + remarques est maintenant systématiquement présente, de manière à standardiser les comportements (évite des erreurs). Elle reste vide si pas de contenu -
intégration automatique des corrections et remarques dans cette div:
-
sous la forme d'une admonition à déplier (
??? tip "..."
). De cette façon, ceux qui ont besoin de plus d'essais puissent ne pas avoir le éléments de solutions visibles tout de suite en-dessous -
le titre change automatiquement selon le contenu (
Solution
,Solution & Remarques
,Remarques
), de manière à ce que l'utilisateur sache exactement ce qu'il va y trouver ou non (=> suppression du "pas de remarques particulières") -
l'admonition n'apparaît que lorsque le compteur d'essai tombe à 0
-
le contenu des correction et remarques est encodé pour ne pas être lisible dans le DOM, tant que le compteur d'essais n'atteint pas 0
-
-
modification du compteur d'essais:
- il apparaît systématiquement sous tous les IDEs => simplifie le code ailleurs (ROBUSTESSE)
- s'il n'y a pas de remarque ou de correction, il affiche
\infty/\infty
-
Concrètement, ça ressemble à ça:
-
Augmentation du
MaestroEnv
, qui a généré des rejetons au passage, pour pouvoir mieux gérer les insertions de scripts & données dans une logique "par page" -
Amélioration du comportement des boutons sous les IDEs (gestion de ce qui est sauvé ou pas dans le localeStorage à tel ou tel moment. Ajout notamment d'une sauvegarde systématique quand un IDE est lancé). Dans le même temps, remplacement de déclarations avec
var
par deslet
ouconst
quand c'est possible, pour rendre l'ensemble plus robuste. -
Introduction d'un fichier
globalsJsRuntime.js
, qui permet de retrouver facilement toutes les variables utilisées globalement dans la partie front -
Suppression du
dict
(globale, en JS), servant à faire les décomptes d'essais: cette variable n'a pas vocation à être globale est est maintenant gérée "par page" -
Réécriture de qqes parties d'
interpreter.js
, notamment celle qui gérait l'affichage de la solution et des remarques : toute la partie "modification du DOM et création d'éléments à la volée" a été virée, grâce à la nouvelle façon de gérer les corrections et remarques => le code est BCP plus simple maintenant... -
Réécriture du code qui "toggle" les tests publiques, de manière à ce qu'il différencie le code à basculer des commentaires écrits dans les tests, qui doivent rester commentés.