Skip to content

Refonte partielle de JS et surtout de l'interface python -> JS

Frederic Zinelli a demandé de fusionner 53-next-rebuild-JS-area vers main

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... 😁 )

  1. Suppression du crochet on_post_page_macros: l'introduction du fichier de hooks mkdocs l'a rendu obsolète

  2. Restauration du Ctrl+C sur les balises <code>

  3. Rend possible l'utilisation de plusieurs IDEs dans la même page, en dehors des admonitions

  4. découpage du fichier IDE.js en plein de petits bouts + nettoyage de sections de code devenues inutiles suite à d'autres changements

  5. les fichiers JS sont "marqués" et ne sont insérés que dans les pages qui en ont besoin

  6. 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: ...)
  7. refonte complète de la gestion des corrections, remarques, et compteurs d'essais

    • suppression des fichiers start_REM.md et end_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 automatiques md->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: image

  1. 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"

  2. 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 des let ou const quand c'est possible, pour rendre l'ensemble plus robuste.

  3. Introduction d'un fichier globalsJsRuntime.js, qui permet de retrouver facilement toutes les variables utilisées globalement dans la partie front

  4. 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"

  5. 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...

  6. 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.

    • "\s*#?\S" est considéré comme du code à dés-/activer
    • "\s*# " est considéré comme un commentaire à laisser intact Exemple: image
Modification effectuée par Frederic Zinelli

Rapports de requête de fusion