Skip to main content

Custom Commands et édition des pages By Module

Routeur serveur

La majorité des actions étudiantes passent par _utils/command/utils_custom_command_by_module.js. La fonction executeCommandByModule() route commandUid vers la fonction métier appropriée.

Commandes majeures

FonctionResponsabilité
startStudentModuleInitialise/démarre un module pour l'équipe.
saveStudentModuleRowInputValueSauvegarde une valeur d'input dans une row.
saveStudentModuleRowInputOptionsSauvegarde les options d'un input.
saveStudentModuleInputFormulaSauvegarde une formule; voir page dédiée Formules.
add/remove/edit ... RowGestion des rows dynamiques et de leur ordre.
add/remove/edit ... SectionGestion des sections dynamiques.
saveDynamicDropdownDataPersistance des données de dropdown dynamique.
getModuleGradeCalcule/récupère la correction.
getTeamModuleTypeResultsRetourne les résultats déjà générés.
restartStudentModuleRéinitialise un essai de module selon les règles.
ignoreErrorFromTeamModuleResultsPermet l'override/ignorance d'une erreur de correction.

Rows et sections dynamiques

Lorsqu'une row/section temporaire doit être persistée, le serveur peut lui attribuer un nouvel ObjectId. Il renvoie alors les alias et index à l'UI afin que le client remplace l'UID local. Le serveur maintient aussi les références de formules associées.

Synchronisation du ledger

Après certaines modifications de pages, le code vérifie utilsByModule.shouldSyncLedger(moduleSettings, pageUid). Si nécessaire, il appelle rebuildLedgerFromJournals() puis envoie sendLedgerPageChangedMessage(). Une édition dans un journal peut donc modifier indirectement la page ledger.

RTT

Chaque commande émet un message précis, par exemple team_module_row_input_options_changed, team_module_row_removed, dynamic_dropdown_data_changed ou team_module_input_formula_changed. Les gros objets ne sont pas toujours envoyés directement : le message get_data peut demander au client de relire seulement un chemin d'entité.

Côté Unity

TeamByModuleController envoie ces commandes, reçoit les messages et met à jour TeamModuleTypeData. Les classes DataDrivenTableControl, DataDrivenRowControl, DataDrivenSectionControl et les contrôles d'input construisent l'interface à partir des données statiques + runtime.