Export Web/SCORM : corrige la résolution des champs "relation" hors ligne
Bug signalé : une Donnée liée/un filtre référençant un champ "relation"
affichait "{{champ}}" tel quel une fois exporté, alors qu'il fonctionnait
en ligne. Deux causes cumulées :
- full_game_payload.py lisait la colonne SQL "<champ>" au lieu de
"<champ>_id" (seule vraie colonne d'un champ relation, voir
_field_column dans filter_repeater_rows.py) en construisant
gameData.data — une valeur toujours None. Invisible en ligne (les
filtres y requêtent la base fraîche, jamais cette snapshot), mais
fatal hors ligne (aucune base à requêter).
- Une fois ce None corrigé, le port JS (forgeFieldColumn) relisait
cette même valeur sous une clé slugifiée+suffixée ("boss_id") alors
que gameData.data est déjà indexé par le nom D'AFFICHAGE du champ
("boss") — mismatch qui ne se voyait que sur un champ relation (le
seul cas où slugify(nom)+suffixe diverge du nom original). Supprime
ce port erroné, lit directement row[fieldName] partout.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
7bc4c89eaa
commit
e08c53e042
@@ -25,8 +25,6 @@ function forgeRenderRepeater(el, meta, gameData, childrenMap, ctx, parentFlexDir
|
||||
|
||||
var rows = gameData.data[definitionId] || [];
|
||||
rows = forgeFilterRepeaterRows(gameData, definitionId, rows, attrsRaw);
|
||||
var fieldCols = {};
|
||||
fieldsMetaForDef.forEach(function (f) { fieldCols[f.name] = forgeFieldColumn(fieldsMetaForDef, f.name); });
|
||||
|
||||
var templateTree = null;
|
||||
if (templateTypeId) {
|
||||
@@ -35,9 +33,13 @@ function forgeRenderRepeater(el, meta, gameData, childrenMap, ctx, parentFlexDir
|
||||
|
||||
var items = rows.map(function (row) {
|
||||
var rowCtx = Object.assign({}, ctx || {});
|
||||
Object.keys(fieldCols).forEach(function (fname) {
|
||||
var v = row[fieldCols[fname]];
|
||||
rowCtx[fname] = v === null || v === undefined ? "" : String(v);
|
||||
// gameData.data est déjà indexé par le nom D'AFFICHAGE du champ (voir
|
||||
// full_game_payload.py), jamais par sa colonne SQL — row[f.name] lit
|
||||
// donc directement la bonne valeur, y compris pour un champ "relation"
|
||||
// (voir filter-repeater-rows.js pour le détail de ce piège).
|
||||
fieldsMetaForDef.forEach(function (f) {
|
||||
var v = row[f.name];
|
||||
rowCtx[f.name] = v === null || v === undefined ? "" : String(v);
|
||||
});
|
||||
var inner;
|
||||
if (templateTree) {
|
||||
@@ -73,5 +75,4 @@ if (typeof module !== 'undefined' && module.exports) {
|
||||
});
|
||||
var filterMod = require('./filter-repeater-rows.js');
|
||||
global.forgeFilterRepeaterRows = global.forgeFilterRepeaterRows || filterMod.forgeFilterRepeaterRows;
|
||||
global.forgeFieldColumn = global.forgeFieldColumn || filterMod.forgeFieldColumn;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user