# Simboli

> La libreria Simboli: le undici librerie di sistema e I miei simboli, la ricerca e i filtri della galleria, l'ispettore con i suoi ingressi vivi e i suoi morsetti, l'editor Nuovo simbolo utente e ogni natura di zona attiva, Importa simbolo…, Esporta il pacchetto, Duplica, Copia l'istruzione per la chat, e dove si usa un simbolo.

**Symbols** è la quarta categoria sotto la radice Assets: il disegno che un componente [Simbolo](component-symbol) di dashboard disegna e anima. Il pannello è intitolato « Simboli », con la riga « Librerie realizzate apposta per dashboard moderne, banchi di prova, prodotti connessi, schemi normativi, sistemi industriali e impianti. Ogni simbolo di sistema è ispezionabile e può essere duplicato in I miei simboli. » e la pillola di conteggio. Leggere e ispezionare richiedono **Visualizzare Logic**; creare, importare, duplicare, modificare ed eliminare richiedono **Configurare Logic**. Il formato di file con cui un simbolo viaggia è descritto in [Simboli SVG portabili](ganter-symbols).

## Le librerie {#the-libraries}

| Libreria | Che cosa contiene | Norma | Simboli |
| --- | --- | --- | --- |
| Process | Disegni a strati di apparecchiature di processo, per dashboard di supervisione e schemi di processo | | 86 |
| ISA / P&ID | Disegni schematici di processo, tubazioni, valvole e strumentazione | ANSI/ISA-5.1 / ISO 10628 | 99 |
| Manufacturing & Material Flow | Apparecchiature di fabbricazione discreta, assemblaggio, lotto, confezionamento, controllo e intralogistica | | 48 |
| Lab & Test Bench | Simboli di laboratorio, acquisizione dati, metrologia, attrezzaggio del provino, camera climatica e controllo qualità | | 35 |
| Prototyping Electronics | Controllori, schede di sviluppo, connettori, moduli sensore, attuatori, alimentazione e radio | | 35 |
| IoT Field Sensors | Simboli di ambiente, condizione, posizione, misura, gateway radio e controllo in periferia | | 36 |
| Smart Home & Building | Illuminazione, comfort, controllo accessi, sicurezza, elettrodomestici, acqua e dispositivi di comando interoperabili | Matter / BACnet / notazione corrente della domotica di edificio | 39 |
| IT, Network & Datacenter | Calcolo, armadi, archiviazione, reti, sicurezza, piattaforme cloud, alimentazione e raffreddamento dei locali | Notazione corrente delle infrastrutture informatiche / SNMP / Redfish | 35 |
| Electrical & Energy | Schemi unifilari, distribuzione, conversione, misura e rinnovabili, con stati di contatto ricavati dalla geometria | IEC 60617 / IEEE 315 | 39 |
| Energy, Microgrid & e-Mobility | Generazione distribuita, conversione, accumulo, misura, protezione, microreti e ricarica di veicoli elettrici | Notazione da dashboard orientata a IEC / IEEE / OCPP | 40 |
| Facilities & Utilities | Climatizzazione, acqua e acque reflue, sistemi di sicurezza, servizi di stabilimento e infrastruttura di comando | | 38 |
| I miei simboli | I simboli composti, importati o duplicati dall'operatore | | Quelli dell'operatore |

Le librerie di sistema sono disegni originali Ganter Lab, compilati nel prodotto e in sola lettura: un aggiornamento le sostituisce senza toccare i dati della stazione. Ogni definizione porta un riferimento stabile `system:<key>`, la sua libreria e la sua categoria, una descrizione, etichette di ricerca, la norma che le si applica e i metadati di origine e di licenza.

## La galleria {#the-gallery}

Sopra le schede: **Cerca** (testo segnaposto « Nome, categoria o parola chiave »; la ricerca confronta il nome, la descrizione, la categoria, la norma e le etichette del simbolo, senza distinguere maiuscole e minuscole; la libreria si sceglie con il suo filtro), **Libreria** (« Tutte le librerie (530) » oppure una libreria con il suo conteggio; sceglierne una azzera la categoria e mostra la descrizione della libreria sotto i filtri), **Categoria** (« Tutte le categorie » oppure una categoria della libreria scelta), **Origine** e **Per pagina**. Una scheda mostra la libreria, un'anteprima nelle proporzioni naturali del disegno, il nome, la categoria, l'origine (Sistema o Miei) e una riga di capacità: « Statico », « 1 ingresso » o « N ingressi », seguite da « · N morsetti » quando il simbolo dichiara morsetti di collegamento. Un risultato vuoto dice « Nessun simbolo corrisponde a questi filtri. » con **Azzera i filtri**. Quando i simboli dell'operatore non si sono potuti leggere, una nota dice « In questo momento I miei simboli non è disponibile. Sono elencate solo le librerie di sistema. » invece di far passare il pacchetto di sistema per l'intero catalogo.

## L'ispettore {#the-inspector}

Selezionare una scheda apre l'ispettore accanto alla galleria:

- Il nome e un contrassegno: **Di sistema · sola lettura**, **Simbolo mio**, oppure **Bozza non salvata** solo finché il simbolo è nuovo e non ancora creato, o finché la modifica aperta ha un errore che impedisce il salvataggio automatico (il contrassegno resta **Simbolo mio** mentre una modifica si salva da sola, anche nel mezzo secondo prima del salvataggio).
- La libreria, la categoria e la norma; la descrizione.
- **Ingombro** (la dimensione consigliata sulla dashboard, in celle, larghezza × altezza) e **Adattamento** (Contieni, Estendi, Estendi in orizzontale o Estendi in verticale).
- « N ingressi · N morsetti di collegamento », oppure « solo visivo » quando non ci sono morsetti.
- **Provenienza del disegno**, una sezione espandibile con l'origine e, per un simbolo di sistema, la licenza.
- Le azioni: **Esporta il pacchetto** per ogni ruolo; per un simbolo di sistema **Duplica in I miei simboli**, per quelli dell'operatore **Modifica** ed **Elimina** (solo per i ruoli che configurano).
- La scena di anteprima: il disegno depurato, reso dallo stesso runtime di una dashboard, con una maniglia disegnata all'ancoraggio di ogni morsetto. Un disegno che non si può rendere lascia la scena vuota con « Anteprima non disponibile » e il motivo. Quando il depuratore ha dovuto correggere il markup, una sezione espandibile « L'anteprima usa l'SVG depurato » elenca le correzioni (al massimo otto, poi « Altre N correzioni non sono mostrate. »).
- **Ingressi**: « Le costanti temporanee valgono solo per questa anteprima. » e **Azzera gli ingressi**. Una sezione per ogni zona attiva dichiarata, con il suo nome, l'effetto che comanda, una frase che descrive la corrispondenza, l'intervallo di ingresso e l'elemento di destinazione (`#id`), e un comando per provarla: un numero (con un cursore quando l'intervallo di ingresso è finito), un interruttore Attivo/Inattivo, una casella di testo, oppure un selettore di colore con una casella del valore di colore. « Questo simbolo non dichiara ingressi dinamici. » quando non ce ne sono; una dichiarazione non valida mostra il suo errore invece di un comando. Le costanti che imposti qui non vengono mai salvate e non arrivano mai a una dashboard.

Gli effetti e il modo in cui l'ispettore li descrive:

| Natura (etichetta dell'editor) | Effetto | Comando | Descrizione |
| --- | --- | --- | --- |
| Rotate | Rotazione | Numero | Ruota da `<uscita min>`° a `<uscita max>`° |
| Opacity | Opacità | Numero | Cambia l'opacità da `<uscita min>` a `<uscita max>` |
| Fill | Stato del riempimento | Interruttore | Commuta il riempimento dal colore inattivo al colore attivo; una sorgente numerica commuta a metà dell'intervallo di ingresso |
| Visible | Visibilità | Interruttore | Nasconde l'elemento quando è inattivo e lo mostra quando è attivo |
| Text | Testo mostrato | Testo | Sostituisce il testo mostrato dentro l'elemento |
| Translate | Spostamento | Numero | Sposta da (x, y) a (x, y) unità SVG |
| Scale | Scala | Numero | Scala da (x, y) a (x, y) |
| Stroke | Stato del contorno | Interruttore | Commuta il contorno tra il colore inattivo e quello attivo; una sorgente numerica commuta a metà dell'intervallo di ingresso |
| Spin (°/s) | Velocità di rotazione | Numero | Ruota di continuo da `<min>`°/s a `<max>`°/s; zero mette in pausa e un valore negativo inverte il senso |
| Spin enabled | Stato della rotazione | Interruttore, attivo all'inizio | Mette in pausa o riprende la rotazione senza nascondere l'elemento né azzerarne l'angolo |
| Fill color | Colore del riempimento | Colore | Imposta il riempimento direttamente da una risorsa Colore, da una variabile Colore o da un colore letterale |
| Stroke color | Colore del contorno | Colore | Imposta il contorno direttamente da una risorsa Colore, da una variabile Colore o da un colore letterale |
| Stroke width | Spessore del contorno | Numero | Imposta direttamente lo spessore del contorno, da 0.5 a 32 unità SVG |

## Nuovo simbolo utente {#new-user-symbol}

Il verbo sopra la riga Symbols apre l'editor nella colonna della galleria (« Nuovo simbolo utente »: « Comporre un SVG inerte e le sue zone attive di ingresso per la dashboard. »); l'ispettore segue la bozza non salvata mentre scrivi, così provi il simbolo prima di crearlo.

| Campo | Che cos'è | Valori e valore predefinito | Effetto |
| --- | --- | --- | --- |
| Nome | Il nome visualizzato. | Obbligatorio; « Serve un nome. » finché è vuoto. | A differenza di un'icona o di un colore, il nome di un simbolo può cambiare in seguito: le dashboard lo referenziano per id. |
| Markup SVG | Il disegno, incollato come testo. | Obbligatorio. | Depurato mentre scrivi; un errore di disegno (« Il markup SVG deve avere una radice `<svg>`. », « Il markup SVG supera il limite di 512 KB. », un id duplicato…) blocca la creazione e ogni zona attiva. |
| Adattamento | Come il disegno riempie la cella della dashboard. | Contieni (predefinito), Estendi in entrambe le direzioni, Estendi in orizzontale, Estendi in verticale. | Letto dall'editor delle dashboard quando il simbolo viene posato. |
| Larghezza iniziale, Altezza iniziale | L'ingombro di partenza di una nuova istanza su una dashboard. | Da 1 a 24 celle, da 1 a 12 celle; 4 × 4 all'inizio. | Idem. |
| Morsetti di collegamento | Una nota in sola lettura. | « Questo disegno è solo visivo. I morsetti tipizzati possono essere forniti da un pacchetto Ganter Symbol v2. » oppure « N morsetti definiti dal pacchetto sono conservati. La geometria dei morsetti è volutamente di sola lettura in Ganter Lab. » | I morsetti non si disegnano né si modificano qui: vengono da un pacchetto importato o da un simbolo di sistema duplicato, e la modifica li lascia come sono. |
| Zone attive di ingresso | Gli ingressi che il simbolo espone (« Ogni zona attiva punta a un solo id di elemento SVG ed espone una sola primitiva sicura di runtime. »). | **Aggiungi zona attiva** aggiunge una riga sotto un nome generato (`param`, poi numerato). | Ogni riga: un nome, un id di elemento (un elenco a discesa degli id trovati nel markup, oppure un id qualsiasi che digiti), **Rimuovi la zona attiva**, la natura, Minimo e massimo in ingresso, Minimo e massimo in uscita (l'asse X per Translate e Scale), una coppia facoltativa di Y minimo e Y massimo, e a seconda della natura: per Stroke width la nota « Il valore della dashboard è una larghezza SVG diretta da 0.5 a 32. »; per Fill color e Stroke color un Colore di anteprima; per ogni altra natura un Colore attivo e un Colore inattivo. |

Le regole delle zone attive, ciascuna segnalata sotto i campi con la riga in errore incorniciata: il nome deve essere un identificatore (una lettera o `_` per primo, poi lettere, cifre, `_`, `.`, `:` o `-`) ed essere univoco; l'id dell'elemento deve esistere nel markup; Text punta solo a `text` e `tspan`; Fill e Fill color puntano alle forme riempibili, ai gruppi, a `use` e al testo; le altre nature puntano ai gruppi, a `use`, alle forme e al testo; Rotate, Spin e Scale richiedono che l'elemento porti `data-ganter-pivot="x y"`; ogni valore di intervallo deve essere finito; la coppia Y c'è per intero o non c'è, e solo per Translate e Scale; i colori attivo e inattivo devono essere un esadecimale, un token di tema come `var(--color-success)` o un nome di colore CSS; un elemento prende al massimo una zona attiva per canale (riempimento, contorno, spessore del contorno, oppure una per ogni altra natura); una zona attiva Spin enabled richiede una zona attiva Spin sullo stesso elemento.

**Crea simbolo** resta grigio finché resta un errore; **Annulla** o **Indietro** esce senza creare nulla. Al buon esito il registro delle azioni dice « Simbolo creato. » e la nuova scheda viene selezionata.

## Modifica, Duplica, Elimina {#edit-duplicate-delete}

**Modifica** (solo per i simboli dell'operatore) apre lo stesso editor con « Le modifiche valide di nome, SVG e zone attive vengono salvate automaticamente. »: una modifica valida viene salvata mezzo secondo dopo l'ultima battuta (« Simbolo salvato. »), e una bozza non valida non viene salvata e annulla il salvataggio in attesa, così il simbolo memorizzato non diverge mai da quello che l'ispettore mostra. **Duplica in I miei simboli** (simboli di sistema) copia il disegno, il riquadro di visualizzazione, l'adattamento, l'ingombro, le configurazioni di tipo, i morsetti e i suggerimenti in un simbolo indipendente chiamato « copia di `<Name>` » (« copia 2 di `<Name>` »… quando il nome è preso) e lo seleziona nella galleria senza aprire l'editor (« Simbolo di sistema copiato in I miei simboli. »): l'ispettore lo mostra accanto alla galleria, qualsiasi ricerca o filtro che nasconderebbe la copia viene azzerato e la galleria passa alla pagina che la contiene, e **Modifica** la apre per la modifica; la definizione di sistema non viene mai cambiata. **Elimina** chiede « Eliminare 'X'? Le dashboard che lo usano mostreranno un segnaposto. L'operazione non è reversibile. » (« Simbolo eliminato. »).

## Importa simbolo… {#import-symbol}

Il secondo verbo sopra la riga è un selettore di file che accetta file `.svg` e `.ganter-symbol.json` di al massimo 1 MB (« Il file del simbolo supera il limite di 1 MB. »). Il contenuto decide la strada:

- **SVG grezzo** (il contenuto comincia con `<`) viene importato come disegno solo visivo: nessuna zona attiva e nessun morsetto. Il depuratore lo corregge e il registro delle azioni conta le correzioni (« Simbolo importato come nuova risorsa; 3 elementi SVG non sicuri sono stati rimossi. »). Il nome è quello del file senza estensione.
- **Un pacchetto Ganter symbol v2** (il contenuto comincia con `{`) viene importato per intero: nome, SVG, riquadro di visualizzazione, adattamento, ingombro, zone attive, configurazioni di tipo, morsetti e suggerimenti. Un pacchetto è severo: formato, versione e schema devono corrispondere, l'SVG deve essere già depurato (un pacchetto che avrebbe bisogno di correzioni viene rifiutato, non corretto), il riquadro di visualizzazione deve corrispondere alla radice SVG, e ogni morsetto, configurazione e suggerimento deve essere valido ([il contratto](ganter-symbols)). Il registro delle azioni nomina il primo problema (« Importazione del simbolo non riuscita: … »).

Un nome già usato da un simbolo dell'operatore riceve un suffisso (« 2 », « 3 »…). Ogni importazione crea un nuovo simbolo e non ne sovrascrive mai uno.

## Esporta il pacchetto {#export-package}

**Esporta il pacchetto** nell'ispettore scarica il simbolo selezionato, di sistema o dell'operatore, come `<name>.ganter-symbol.json`: lo stesso pacchetto v2 che l'importazione legge, senza alcuna identità di stazione, così viaggia tra le stazioni (« Esportato `<file>`. »). Un simbolo il cui disegno non ha un riquadro di visualizzazione alla radice, o una delle cui zone attive porta un indirizzo di stazione, viene rifiutato (« Esportazione del simbolo non riuscita: … »).

## Copia l'istruzione per la chat {#copy-chat-instruction}

**Copia l'istruzione per la chat** copia negli appunti un'istruzione autosufficiente per una chat IA esterna che non ha accesso alla stazione. Comincia con « Create a Ganter Lab symbol for me. Return ONLY the file content, either raw SVG or a single .ganter-symbol.json v2 package, with no commentary, so I can save it as a file and import it unchanged. », prosegue con il contratto v2 completo (i due ingressi accettati, l'involucro del pacchetto, i sedici ancoraggi globali, gli otto tipi di tratto, le nature di zona attiva e le loro regole, i token di tema, le regole di geometria dei morsetti, i limiti del depuratore e un pacchetto minimo valido) e finisce con come riportare indietro la risposta: salvare la risposta come file `.svg` o `.ganter-symbol.json` e importarlo qui. Lo stesso contratto è quello che leggono gli strumenti `symbol_validate` e `symbol_import` dell'agente, così una chat e un agente producono lo stesso file. Il registro delle azioni dice « Istruzione per la chat copiata. Incollarla in una chat di intelligenza artificiale e importare l'SVG che restituisce. » (oppure « Gli appunti hanno rifiutato la copia. »). Il verbo è disegnato per ogni ruolo, perché legge soltanto.

## Dove si usa un simbolo {#where-a-symbol-is-used}

Il componente di dashboard [Simbolo](component-symbol) referenzia un simbolo come `system:<key>` o `user:<id>`, associa ogni zona attiva a un indirizzo di Logic, sceglie il tipo di tratto di ogni morsetto configurabile e unisce i morsetti con tratti disegnati nell'[editor delle dashboard](view-editor) tramite i [tipi di tratto](assets-connection-types). Un simbolo non ha un indirizzo di Logic proprio.

## Che cosa non fa la libreria {#what-the-library-does-not-do}

Non disegna né sposta morsetti e percorsi interni, non modifica sul posto il disegno di sistema, non importa un pacchetto che avrebbe bisogno di correzioni, non tiene una cronologia delle versioni e non condivide da sola i simboli dell'operatore tra stazioni: per questo si esporta e si importa il pacchetto.
