Les trois règles de coordination des switchs

Module d’exemple : hellotypes, propriétés switchoneofmany/switchatmostone/switchany.

Plusieurs éléments ElementBool d’une même propriété peuvent être coordonnés entre eux comme des boutons radio ou des cases indépendantes, via "rule" dans le JSON de la propriété :

ruleComportement
0 — OneOfManyExactement un vrai à la fois (radio). Passer un élément à true remet tous les autres à false. Le repasser directement à false est refusé — il faut en choisir un autre.
1 — AtMostOneZéro ou un vrai (radio optionnel). Même comportement, sauf qu’on peut aussi désélectionner directement.
2 — Any (défaut)Aucune contrainte, cases indépendantes.
"switchoneofmany": {
  "permission": 2,
  "rule": 0,
  "e": {
    "calibrate": { "type": "bool", "directedit": true },
    "guide":     { "type": "bool", "directedit": true },
    "stop":      { "type": "bool", "directedit": true }
  }
}

Entièrement déclaratif : l’application réelle de la règle vit dans le framework lui-même, déclenchée par n’importe quelle écriture sur l’un des éléments — aucun code à écrire dans le module pour que ça fonctionne, seulement pour fixer un état initial cohérent si besoin.