AYLICRÉA El tuto
AYLICRÉA

Tuto Site

Codificación JSON

Toute valeur CMS passe par les encodeurs Safe.* et ViewData*. Un JSON « joli » mais mal typé est silencieusement defaulté : page vide, 100 %, pas de theme.

Identité record

ChampType JSONLoi
uuidstring v7clé. Vide → Glo.uuidV7() à la lecture
idint0 ⇒ isNew (PUT full)
odrintseul ordre d’affichage parmi les frères
xstring | nulluuid serveur. L’IA peut laisser null

Booléens — 1 / 0

Safe.boolFromJsonDB : null | false | 0 → false ; tout le reste → true. Émettre 1 / 0, jamais true / false.

Champs view : enable, desktop, mobile, pop, tel, mail, time_private, time_video, open, gen, folder, menu, push.

Piège. Omettre enable ⇒ view filtré (invisible). Toujours enable: 1, desktop: 1, mobile: 1 sauf intention contraire. Défaut fromJson de ces bools = 0.

Dual écran l / s × dual state i / e

Tous les ViewData* : l = desktop (P.size.isLarge), s = mobile. Fallback live : small absent → large ; e absent → i pour Size. Un JSON avec seulement "width":{"l":{"i":60}} donne 60 % partout, init et enable, desktop et mobile.

ViewDataCoordinate (pad, pos, border) n’a pas le fallback e→i. Sans ticker, PositionedWidget lit uniquement e*. Dupliquer i* et e* sur pos.

Unités — défauts différents

FamilleClés typeDéfaut si type absentUnités
ViewDataSize (width/height)iT eT%% px ratio
ViewDataCoordinate (pad, pos, border)iTL iTR iTT iTB…px% px
ViewDataCorner (radius)iTTL…px% px
ValeurSize (w/h)Coord pospad / border / radius
clé absentesize → 100 puis %côté inactif (null Positioned)0 / none / zero
0hug / flexible0 px ou 0 %0
< 0 (sauf −1 pos)100 % de la zone—clamp 0
-1100 % zonehors écran = -sizeInitclamp 0

TextLocale — objet 7 langues

Locales produit : fr en nl es it pt de. Une string nue remplit uniquement la locale serveur au parse — non déterministe. Toujours l’objet, même si 6 langues sont vides.

{
  "title": {
    "fr": "Découvrir",
    "en": "Discover",
    "nl": "",
    "es": "",
    "it": "",
    "pt": "",
    "de": ""
  }
}

ViewDataString — theme / gradient / shadow

Pas une string nue sur un view. Back = string nue (autre encodeur).

"uuid_theme": { "l": { "i": "d5878c72-23ec-4d9a-8f99-8c4f7c25596b" } }

style_title / style_subtitle = string uuid StyleTextContent. Inverser les deux encodeurs = style mort + theme mort.

Couleur, durées, listes

LoiLive
CouleurColorTheme {"light":"#aarrggbb","dark":"#aarrggbb"}. Transparent défaut #00ffffff
Duréestime_start / time_end / time = int millisecondes
Listesuuid_action, theme, platform, locale → tableaux. Émettre [], pas ""
layer omisdéfaut 0 — préférer 1 (pages live)
type omisid_space 7d620726-e168-11ed-b5ea-0242ac120002
width/height videslargeInit 100 %
box_fitcover (2)
Piège. Size sans iT = pourcent. Pad/pos sans iTL = pixels. Pos sans ticker lit uniquement e*.