Ajout de tableaux dans la partie templates / pages de lore : possibilité d'ajouter un tableau multiligne (par exemple pour faire des tableaux d'objets dans les boutiques) ; tableau type liste clé / valeur (pour des statistiques et ce genre de chose).
All checks were successful
All checks were successful
Ajout de la possibilité de lié un PNJ à une page de lore Ajout d'un graphe de liaison entre lore / PNJs Passage en v.0.12.3-beta
This commit is contained in:
@@ -6,8 +6,10 @@
|
||||
* - 'IMAGE' : galerie d'images (rendu en app-image-gallery)
|
||||
* - 'NUMBER' : valeur numerique (rendu en input number)
|
||||
* - 'KEY_VALUE_LIST' : liste de paires {label, value} avec labels figes au template
|
||||
* - 'TABLE' : tableau a colonnes figees (labels = noms de colonnes) et
|
||||
* lignes libres ajoutees au remplissage (boutique, inventaire…)
|
||||
*/
|
||||
export type FieldType = 'TEXT' | 'IMAGE' | 'NUMBER' | 'KEY_VALUE_LIST';
|
||||
export type FieldType = 'TEXT' | 'IMAGE' | 'NUMBER' | 'KEY_VALUE_LIST' | 'TABLE';
|
||||
|
||||
/**
|
||||
* Variante de rendu pour un champ IMAGE. Miroir de
|
||||
@@ -28,10 +30,45 @@ export interface TemplateField {
|
||||
type: FieldType;
|
||||
/** Uniquement pour type='IMAGE'. Absent/null = 'GALLERY'. */
|
||||
layout?: ImageLayout | null;
|
||||
/** Labels predefinis pour KEY_VALUE_LIST (ordre significatif). */
|
||||
/**
|
||||
* Labels predefinis (ordre significatif) :
|
||||
* KEY_VALUE_LIST = libelles des lignes ; TABLE = noms des colonnes.
|
||||
*/
|
||||
labels?: string[] | null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construit un TemplateField propre pour un type donne (attributs par defaut,
|
||||
* conservation des attributs compatibles de `previous` lors d'un changement de
|
||||
* type). Partage par les editeurs de template du Lore (create/edit).
|
||||
*/
|
||||
export function buildLoreTemplateField(
|
||||
name: string,
|
||||
type: FieldType,
|
||||
previous?: TemplateField
|
||||
): TemplateField {
|
||||
switch (type) {
|
||||
case 'IMAGE':
|
||||
return { name, type, layout: previous?.layout ?? 'GALLERY' };
|
||||
case 'KEY_VALUE_LIST':
|
||||
case 'TABLE':
|
||||
// Les labels (lignes KV / colonnes TABLE) survivent au changement de type
|
||||
// entre ces deux variantes.
|
||||
return { name, type, labels: previous?.labels ?? [] };
|
||||
default:
|
||||
return { name, type: 'TEXT' };
|
||||
}
|
||||
}
|
||||
|
||||
/** Retire les libelles vides (lignes KV / colonnes TABLE) avant sauvegarde. */
|
||||
export function cleanFieldLabels(fields: TemplateField[]): TemplateField[] {
|
||||
return fields.map(f =>
|
||||
f.type === 'KEY_VALUE_LIST' || f.type === 'TABLE'
|
||||
? { ...f, labels: (f.labels ?? []).map(l => l.trim()).filter(l => !!l) }
|
||||
: f
|
||||
);
|
||||
}
|
||||
|
||||
export interface Template {
|
||||
id?: string;
|
||||
loreId: string;
|
||||
|
||||
Reference in New Issue
Block a user