Tuto Site
Codificação 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
| Champ | Type JSON | Loi |
|---|---|---|
uuid | string v7 | clé. Vide → Glo.uuidV7() à la lecture |
id | int | 0 ⇒ isNew (PUT full) |
odr | int | seul ordre d’affichage parmi les frères |
x | string | null | uuid 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.
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
| Famille | Clés type | Défaut si type absent | Unités |
|---|---|---|---|
ViewDataSize (width/height) | iT eT | % | % px ratio |
ViewDataCoordinate (pad, pos, border) | iTL iTR iTT iTB… | px | % px |
ViewDataCorner (radius) | iTTL… | px | % px |
| Valeur | Size (w/h) | Coord pos | pad / border / radius |
|---|---|---|---|
| clé absente | size → 100 puis % | côté inactif (null Positioned) | 0 / none / zero |
0 | hug / flexible | 0 px ou 0 % | 0 |
| < 0 (sauf −1 pos) | 100 % de la zone | — | clamp 0 |
-1 | 100 % zone | hors écran = -sizeInit | clamp 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
| Loi | Live |
|---|---|
| Couleur | ColorTheme {"light":"#aarrggbb","dark":"#aarrggbb"}. Transparent défaut #00ffffff |
| Durées | time_start / time_end / time = int millisecondes |
| Listes | uuid_action, theme, platform, locale → tableaux. Émettre [], pas "" |
layer omis | défaut 0 — préférer 1 (pages live) |
type omis | id_space 7d620726-e168-11ed-b5ea-0242ac120002 |
width/height vides | largeInit 100 % |
box_fit | cover (2) |
iT = pourcent. Pad/pos sans iTL = pixels. Pos sans ticker lit uniquement e*.