Le tre regole di coordinamento degli switch

Modulo di esempio: hellotypes, proprietà switchoneofmany/switchatmostone/switchany.

Diversi elementi ElementBool di una stessa proprietà possono essere coordinati tra loro come pulsanti radio o caselle indipendenti, tramite "rule" nel JSON della proprietà:

ruleComportamento
0 — OneOfManyEsattamente uno vero alla volta (radio). Portare un elemento a true riporta tutti gli altri a false. Riportarlo direttamente a false è rifiutato — bisogna scegliere un altro elemento.
1 — AtMostOneZero o uno vero (radio opzionale). Stesso comportamento, tranne che si può anche deselezionare direttamente.
2 — Any (default)Nessun vincolo, caselle indipendenti.
"switchoneofmany": {
  "permission": 2,
  "rule": 0,
  "e": {
    "calibrate": { "type": "bool", "directedit": true },
    "guide":     { "type": "bool", "directedit": true },
    "stop":      { "type": "bool", "directedit": true }
  }
}

Interamente dichiarativo: l’applicazione effettiva della regola vive nel framework stesso, innescata da qualsiasi scrittura su uno degli elementi — nessun codice da scrivere nel modulo per farlo funzionare, solo per fissare uno stato iniziale coerente se necessario.