Le liste di valori
Modulo di esempio: hellotypes, proprietà lovscopes.
Una lista di valori (LOV) propone suggerimenti o impone una scelta chiusa su un elemento string/int/float. Esiste in tre ambiti diversi.
Ambito elemento (locale)
"lovelement": {
"type": "string",
"listOfValues": [
["e1", "Valeur 1"],
["e2", "Valeur 2"]
]
}Un array letterale di coppie [chiave, etichetta], proprio a questo elemento, mai condiviso.
Ambito modulo
{
"globallov": {
"malov": {
"type": "string",
"label": "Ma liste",
"values": [["mod1", "Valeur 1"], ["mod2", "Valeur 2"]]
}
},
"p": {
"mapropriete": {
"e": {
"monelement": { "type": "string", "listOfValues": "malov" }
}
}
}
}Una lista con nome, dichiarata nella sezione globallov dello stesso file JSON, condivisa da tutti gli elementi del modulo che la referenziano per nome — invisibile dagli altri moduli.
Ambito controller
"monelement": {
"type": "string",
"listOfValues": "availableconfs",
"listOfValuesIsExternal": true
}Una lista mantenuta dal controller stesso, condivisa da tutti i moduli del server. Alcune liste controller esistenti: availableconfs (configurazioni disponibili), indiconfigurations, optics, servers, equipments, locations, e due famiglie generate dinamicamente a ogni modulo caricato — loadedModules-<type> e loadedFamilies-<famille> (vedi Relazione master/slave).
listOfValuesIsExternal: true è ciò che fa passare l’ambito da “modulo” a “controller” — senza di esso, listOfValues cercherebbe una lista con lo stesso nome nel globallov del modulo, non nel controller.
constrained: lista chiusa o semplice suggerimento
Per default, una lista di valori è solo un suggerimento (campo libero con autocompletamento). setLovConstrained(true) ne fa una scelta chiusa (menu a tendina, solo i valori della lista):
getEltString("lovscopes", "monelement")->setLovConstrained(true);constrained si imposta solo in codice, nel costruttore del modulo — non esiste una chiave JSON equivalente a directedit/autoupdate per questa impostazione.
constrained è un’impostazione per elemento, indipendente dall’ambito della lista che interessa — un elemento può rendere constrained una lista di qualsiasi dei tre ambiti sopra.
Gli array di coppie [["chiave", "Etichetta"], ...] sopra sono il formato del file JSON sorgente di un modulo — quello che lo sviluppatore scrive. Una volta dumpato verso il client, listOfValues diventa un oggetto {"chiave": "Etichetta"}, e la distinzione modulo/controller si ritrova sotto altri nomi, globallov/lovScope, piuttosto che listOfValues/listOfValuesIsExternal. I due formati descrivono la stessa cosa in due punti diversi della catena — vedi la documentazione del protocollo client per il formato filo in detail.