Annotazioni — travi continue
Aggiornato al 14/10/2026, quarto giro. Le voci chiuse
si tolgono quando sono chiuse e provate, non quando si crede di averle
chiuse.
Fatte il 14/10 — terzo gruppo di modifiche di Francesco
- Inclinazione dell'asse nel disegno. La trave si disegnava sempre
orizzontale, e le quote L,1 L,2 L,3 sembravano proiezioni: il campo
dell'inclinazione non aveva alcun effetto visibile, e un dato che si
immette e non si vede è un dato di cui non ci si fida. Ora l'asse
si inclina, con l'orizzontale di riferimento tratteggiata e l'angolo
quotato. RUOTANO l'asse e le quote delle campate, che misurano l'asse;
NON ruotano i vincoli, che poggiano su terreno orizzontale, né le
frecce dei carichi, che sono verticali perché verticale è
la gravità. L'incastro fa eccezione e ruota, perché
rappresenta la struttura in cui la trave è incastrata. La
didascalia riporta la proiezione orizzontale accanto allo sviluppo e
ripete che i carichi non sono proiettati dal programma.
- Carichi distribuiti impilati e colorati per condizione, invece che
sommati in un profilo solo. Il profilo sommato diceva quanto carico
c'è in ogni punto e taceva di che cosa fosse fatto: due carichi
scambiati di condizione — l'errore più facile da fare e il
più difficile da vedere nei numeri — davano esattamente lo
stesso disegno. La cima della pila resta la somma, quindi non si perde
niente di quello che il disegno diceva prima. Positivi verso l'alto,
negativi (vento che solleva) verso il basso. Legenda sotto il disegno,
solo quando le condizioni sono più di una.
I due permanenti hanno un colore fisso; le variabili pescano da una
tavolozza nell'ordine delle condizioni dato dal SERVER, così
aggiungere un carico non cambia il colore di quelle che vengono dopo. Le
condizioni scelte in una riga e non ancora inviate si accodano in ordine
alfabetico, non nell'ordine in cui si digita: altrimenti il colore
dipenderebbe da quale campata si è compilata per prima.
- Vista «Solo risultati»: si nasconde l'intera tabella dei
dati, riquadro dello schema compreso. Nascondendo le sole sezioni la riga
restava alta quanto il riquadro e i risultati cominciavano trecento pixel
più in basso, sotto una fascia vuota.
- «Dati modificati» non prende più il posto del riquadro
di sintesi in testa alla pagina: è un'etichetta rossa accanto al
pulsante CALCOLA, cioè accanto al comando che la risolve. La
sintesi si nasconde invece di essere riscritta.
- Dicitura sul vento tolta dalla pagina: il contenuto sta nell'aiuto
del campo e in guida. Risponde a una domanda che l'utente si fa una volta
sola, e in pagina occupava quattro righe a ogni apertura.
- Dicitura sul vincolo torsionale sostituita da un AVVISO che compare
solo quando un momento torcente c'è davvero — verde se un
nodo lo trattiene, rosso se nessuno lo trattiene, e in quel caso dice che
il calcolo si fermerà. La spiegazione resta nell'aiuto del campo.
- Aggiornamento automatico dei disegni per AGGANCIO: ogni campo
dentro le sezioni dei dati chiama tcCambio() al cambiamento, agganciato in
un ciclo all'avvio invece che con un onchange scritto a mano su ciascuno.
I campi sono quasi duecento e nascono e muoiono con le righe di carico:
quello dimenticato non si vedeva, il disegno semplicemente non seguiva e
sembrava sbagliato il disegno. Le righe aggiunte dopo si agganciano quando
nascono, perché cloneNode non copia i listener.
- Disegno della SEZIONE accanto a quello della trave, con gli assi
principali (forte e debole, con i nomi che hanno nei risultati), la
rotazione e la freccia del peso che resta verticale mentre la sezione
gira: è l'unico posto in cui la rotazione si vede, e un numero in
gradi non dice da che parte giri. Rettangolari, profili a I, a U e tondi.
La scala si prende dall'ingombro DOPO la rotazione, altrimenti a 45 gradi
la sezione usciva dal riquadro proprio nel caso in cui il disegno serve.
La didascalia dichiara da dove si guarda.
- Elenco delle condizioni rifatto: la voce vuota dice inserisci
nuovo e la coda offre le CATEGORIE della Tab. 3.1.II, neve e vento,
invece di identificativi generici q1..q4. La condizione nasce con
l'identificativo della categoria e con i psi e la durata già presi dalla
tabella: un passaggio in meno e nessun intervallo in cui la condizione
vive con i valori di riserva.
- Difetto trovato di conseguenza: i carichi generali creavano la
condizione
cat mentre a mano si sceglieva A, e
le due erano DUE condizioni per la stessa azione — combinate come
indipendenti, con sottostima. È esattamente l'errore contro cui la
guida mette in guardia. Ora anche i generali usano la categoria come
identificativo.
- Righe di carico: via il pulsante Aggiungi. Un carico nasce
assegnando una condizione alla riga vuota in fondo, e sotto ne compare
un'altra; si toglie con il cestino a fine riga (img/cestino.png,
con ripiego testuale se l'immagine non c'è). Nel titolo della sezione
Elimina tutti i carichi, con conferma che dice quanti carichi sta
per togliere invece di chiedere «sei sicuro?».
- Pagina di validazione (
validazione_travecontinua.php):
chiude l'ultima voce di allinea, che ora è vuoto. La
pagina non DICHIARA la validazione, la esegue: costruisce 41 casi,
li fa calcolare dal motore vero e li confronta con valori in forma chiusa,
con la derivazione scritta accanto a ciascuno. Una tabella copiata a mano
continuerebbe a dire la stessa cosa anche dopo una correzione che rompesse
tutto.
Regola adottata, dopo essersi accorti del contrario: dal motore si
prendono SOLO i valori di tabella del materiale (E, G, peso specifico);
area, inerzia e costante di torsione si ricalcolano nella pagina. La prima
stesura confrontava J,t del motore con
TraveJtRett() — cioè con se stesso — e un
J,t sbagliato del 5 per cento passava. Trovato rompendo il motore di
proposito per vedere se la pagina se ne accorgeva; ora J,t si confronta
con la SERIE esatta di De Saint-Venant, e lo scarto mostrato (0,087 per
cento) è l'errore dell'approssimazione beta che il motore usa.
Prove di efficacia fatte: inerzia +2 per cento → 7 righe rosse;
area -2 per cento → 26; J,t +5 per cento → 2; segno della
ricomposizione, frecce e reazioni → 1 ciascuno.
- Controllo dei testi per REGOLA e non solo per elenco: le parole in
-ità scritte con l'apostrofo al posto dell'accento sono
decine, e l'elenco esplicito non poteva contenerle tutte. Estremità
era passata così nelle intestazioni della tabella di validazione,
letta da chiunque aprisse la pagina. Ora una regola copre la famiglia
intera; sul resto dell'albero non produce nemmeno un falso allarme.
Nota per chi scriverà le prossime annotazioni: il controllo
segnala anche una parola difettosa CITATA come esempio, perché non
sa distinguere l'uso dalla menzione. Si cita il termine corretto e si
descrive il difetto, invece di riprodurlo.
- Reazioni ricomposte. Con la sezione ruotata la relazione riportava
la reazione del PIANO FORTE sotto un'intestazione generica: a 30 gradi
è cos(30) = 0,866 volte la verticale, cioè il 13 per cento
in meno, nel verso sbagliato. Ora si ricompongono per motivo e si
inviluppano dopo, con la stessa macchina delle frecce:
R,V = R,f·cosα - R,d·senα. La relazione riporta
per prima la verticale, l'orizzontale quando non è nulla, e in coda
i due piani prima della ricomposizione per il confronto con altri
programmi.
- Il piano debole si costruiva solo con la sezione ruotata, e una
forza con componente V,y o un momento M,z immessi su una
trave NON ruotata sparivano in silenzio: la tabella dei carichi della
relazione li stampava, il calcolo non li vedeva, e il risultato sembrava
quello di una trave caricata. Difetto nato quando le componenti sono
diventate sei — prima V,y e M,z non esistevano e «ruotata»
bastava. Ora il piano debole si costruisce quando porta qualcosa, e
con rotazione nulla la cosa viene dichiarata, perché i due piani
sono allora caricati da forze diverse e non dallo stesso carico
decomposto.
- Unione degli elenchi dei motivi nella ricomposizione. Un motivo
nasce solo se un carico lo riempie, quindi un carico la cui aliquota su un
piano è nulla genera un motivo nel SOLO altro piano. Scorrendo i
motivi del piano forte, come si faceva, quel carico spariva dalla
ricomposizione. Prima reggeva per un caso fortunato: cos(90°) in
virgola mobile non è esattamente zero, e il motivo nasceva lo
stesso con un carico microscopico. Con V,y a rotazione nulla l'aliquota
è zero davvero, e il difetto si vedeva.
- La tabella delle reazioni orizzontali non si stampa se è tutta
nulla, che è il caso del solo carico verticale su sezione
ruotata; al suo posto una riga che dice perché. Una tabella di zeri
lascerebbe credere che un ritegno laterale debba portare qualcosa. Stessa
cosa per la figura della freccia orizzontale, che su spostamenti nulli
usciva piatta con l'avvertenza «scala amplificata 1.640.625
volte».
- I due piani avevano DISCRETIZZAZIONI DIVERSE. È il difetto
peggiore dei tre, trovato guardando una figura e non un numero: la freccia
orizzontale aveva un salto su un appoggio. Un carico crea nodi nel modello
— una forza concentrata nel punto di applicazione, un carico
parziale ai due estremi del tratto — e un carico la cui aliquota su
un piano è nulla non creava i propri nodi su quel piano. I due
piani finivano con elenchi di punti di lettura diversi, e la
ricomposizione, che appaia i punti per INDICE, combinava ascisse diverse:
non un errore, una curva quasi giusta. Ora ogni carico crea i propri nodi
su TUTTI i piani, anche dove la sua aliquota è nulla — un
carico nullo non cambia la soluzione, aggiunge un nodo — e
CalcolaTrave() controlla che i due elenchi coincidano prima
di ricomporre, fermandosi e dichiarandolo se non coincidono. Il difetto
c'era anche nelle frecce consegnate il 12/10: si vedeva solo con un carico
presente su un piano solo, e con la sola rotazione della sezione non
capitava mai, perché cos(90°) in virgola mobile non è
esattamente zero e il carico generava il motivo su entrambi i piani.
Fatte in questo giro, e come sono provate
- Modello dei carichi rifatto. Ogni carico è una riga con
condizione, unità (kN/m² oppure kN/m), valore iniziale e
finale, tratto. Ascisse riferite alla CAMPATA con la regola del segno
(0 = estremo naturale, >0 dall'inizio, <0 dalla fine). Concentrate
con sei componenti. Provato in
prova_travecontinua.php: carichi parziali e trapezi
confrontati con la forma chiusa nei punti campionati (1e-9), quattro
scritture equivalenti della stessa posizione, tratti impossibili
dichiarati come errore.
- Condizioni di carico derivate dai carichi, con
cond_scelte che sopravvive alla sparizione della
condizione. Provato: comparsa e sparizione, scelte conservate.
- Combinazioni come dato del tool.
T1DCombinazioni() accetta ora
$sch["combinazioni"] e, in sua assenza, genera come sempre
(T1DCombinazioniAuto(), lo stesso codice di prima: uno
schema che non le dichiara dà esattamente i risultati di prima).
Nel tool: generazione dalle condizioni, rigenerazione con avviso che
NOMINA le combinazioni comparse e sparite, attiva/disattiva per
combinazione, coefficienti parziali sostituibili riga per riga, durata
per combinazione. Le combinazioni spente sono dichiarate in relazione,
in una colonna della tabella e in un avviso. Provato: lo spegnimento
toglie davvero la combinazione dall'inviluppo, il coefficiente
sostituito arriva al solutore e cambia il momento della quota attesa,
le scelte sopravvivono, tutte spente non si accetta.
- Tre piani con una macchina sola. Rotazione della sezione: secondo
piano con EJ dell'asse debole, frecce ricomposte PER MOTIVO e
inviluppate dopo. Torsione: blocco assiale del solutore con
G·J,t al posto di E·A. Provato: sezione quadrata a 45
gradi (w,V identica a 7e-18, w,H nulla), rotazione di 90 gradi esatta,
con rotazione nulla il secondo piano non si costruisce e non costa
niente; torsione a mensola e a due estremi bloccati con ripartizione
esatta, rotazione theta,x in forma chiusa.
- Serie u(x) nel solutore. Lo spostamento assiale non era
campionato: la rotazione torsionale si poteva conoscere solo ai nodi,
dove vale zero, e non si poteva inviluppare. Aggiunta con la soluzione
particolare del carico assiale distribuito lineare. Provata in
prova_telaio1d.php contro la forma chiusa (forza in punta e
carico distribuito), esatta a macchina.
- Rotazione torsionale grande. Oltre 0,1 rad il modello lineare non
è applicabile, e dirlo soltanto «cautelativo» come fa
l'avviso sull'ingobbamento lascerebbe credere che il numero sia
utilizzabile. Avviso proprio, con il valore in gradi.
- Relazione: i tre piani dichiarati. Inviluppi del piano forte e del
piano debole in due tabelle distinte, frecce ricomposte con il limite
superiore della risultante, torsione con M,t e theta,x, vincolo
torsionale e giacitura nello schema statico. Le figure della freccia
mostrano la VERTICALE quando la sezione è ruotata, e l'orizzontale
in una figura propria: fra una tabella e un disegno che si
contraddicono vince sempre il disegno.
- Migrazione provata per confronto, non dichiarata: due alberi, il
vecchio e il nuovo, quattro casi nel formato precedente, risultati
identici bit per bit a ogni passo di questo lavoro.
Aperte: il calcolo
- Verifiche di sezione: non scritte. È il buco principale e il
motivo per cui il tool resta in
sviluppo e la sua relazione si
intitola «sollecitazioni». Il punto di innesto esiste già
in CalcolaTrave(), dove i tre moduli consumerebbero
$sol["inviluppi"] senza toccare nulla di quanto sta sopra.
Ordine sensato: acciaio (il più semplice), poi legno (serve
k,mod per classe di durata, che gli inviluppi già portano), poi
deformabilità con k,def.
- Taratura dei valori di partenza. I predefiniti — tre campate
da 5,00 m, IPE330, fascia 2,50 m — vanno ritarati perché
l'esito risulti soddisfatto con margini fra 1,2 e 1,9 il giorno in cui i
margini esisteranno. Oggi non sono verificabili e non vanno dichiarati
tarati.
- Gruppi esclusivi di azioni. L'inviluppo accende e spegne ogni
azione in modo indipendente: due azioni alternative fra loro —
pressione e depressione del vento sulla stessa falda — verrebbero
combinate anche nel caso che non può avvenire. Serve al solutore la
nozione di gruppo esclusivo. Dichiarato fra i limiti nella guida; finché
non c'è, quel caso si tratta con due calcoli separati.
- Combinazione della flessione deviata. I due piani si calcolano, le
frecce si ricompongono, ma le sollecitazioni restano in due tabelle: la
combinazione caso per caso è una verifica di sezione, quindi segue
le verifiche.
- Inclinazione dell'asse: proiezione non applicata. Il valore si
immette, si conserva e si riporta in relazione, ma i carichi non vengono
proiettati: vanno immessi già proiettati. Marcato DA COMPLETARE
nel motore, nell'aiuto del campo, nella guida e in relazione — in
tutt'e quattro i posti, perché un campo che accetta un valore e
non lo usa è peggio di un campo che non c'è.
Da ricordare la decisione del 7/10: il tool ospite non calcola
c,pe, perché una trave calcolata isolata appartiene a una
struttura che non conosciamo (lunga, aperta, con quali aperture).
- Reazioni nel riferimento dell'appoggio ruotato. Verticale e
orizzontale ci sono, ricomposte. Resta il terzo caso chiesto: un appoggio
la cui giacitura sia essa stessa ruotata rispetto alla verticale —
un appoggio su falda — dove servono le componenti nel riferimento
locale di quell'appoggio. Serve un angolo per nodo, che oggi non
c'è.
- Torsione non uniforme. Oggi è De Saint-Venant: su profilo
aperto le tensioni risultano in difetto. Il sagomario porta già la
costante settoriale
Iw di ogni profilo, che è il dato
che serve: manca l'elemento, non il dato.
Il primo gruppo di modifiche (12/10): fatto
Tutte e sei le voci sono implementate e provate; si veda
l'elenco in testa. Resta fuori la sola proiezione per inclinazione,
che non era in quel gruppo, e la combinazione della flessione deviata, che
è una verifica di sezione.
Le due cose sono la stessa cosa
Vale la pena dirlo perché cambia l'ordine dei lavori.
La richiesta sui carichi chiede che ogni carico porti una categoria,
con peso proprio e permanente nello stesso elenco dei variabili; la richiesta
sulle combinazioni chiede di gestire le condizioni di carico. Sono lo
stesso oggetto visto da due parti: una condizione di carico è
l'insieme dei carichi che si accendono e si spengono INSIEME, e la
«categoria» di un carico è il nome della condizione a cui
appartiene. Oggi il tool ne ha tre impliciti — G1, G2, e un'azione
variabile per identificativo — cablati nella struttura dei dati.
Farli diventare un elenco esplicito risolve le due richieste insieme, e
scriverle separatamente significherebbe rifare la pagina due volte.
Aperte: dati e interfaccia
- Materiale UTENTE non si conserva fra lavori. I valori assegnati a
mano vivono nel file del lavoro. Andrebbero in
<utente>/archivio/materiali.json, così un
lamellare con certificato proprio si dichiara una volta e si richiama.
- Disegno della sezione nello schema e simbolo della molla per
gli appoggi elastici: lo schema a lato oggi non li rappresenta.
- Carichi trapezi e parziali. Il solutore li sa trattare
(
T1DCaricoParziale, nodi posti in x1 e x2, vettore dei carichi
nodali equivalenti esatto); l'interfaccia non li espone ancora.
- Pagina di validazione (
validazione_travecontinua.php):
è l'unica voce che resta nel campo allinea della
scheda. Il materiale c'è già e in buona parte è
provato: solver/prova_telaio1d.php contiene 60 riscontri in
forma chiusa, tutti passanti. Mancano i riscontri al livello del TOOL
(sezioni dal sagomario, conversione kN/m² → kN/m, pesi propri) e
la pagina che li mostra.
- DXF: non previsto per questo tool. Il modulo comune
inc/dxf.php c'è; un diagramma di sollecitazione in DXF
serve poco, una tavola con lo schema quotato forse sì. Da decidere,
non da fare per completezza.
Da verificare
- Larghezza delle immagini nel documento Word. La pagina rasterizza a
1040 px perché
RelPngMisure() di
relazione_inc.php dimezza per difetto le misure dichiarate
(assume la doppia risoluzione): così nel documento l'immagine esce a
520 punti, la larghezza della pagina stampata. rebar_input.php
rasterizza a 520 e passa per la stessa funzione, quindi i suoi disegni
dovrebbero uscire a 260 punti, meno di un terzo della pagina. Da
controllare su un documento vero: se confermato, il rimedio sta in un
posto solo — un parametro di RelDisegno() — e non
in ogni tool.
- Freccia dello sbalzo.
TraveTogliCorda() misura la
freccia di una mensola dalla tangente all'appoggio. Alcuni
riferimenti la misurano dalla retta orizzontale per l'appoggio; con
appoggi rigidi le due coincidono, con un appoggio cedevole no.
- Costante di torsione J,t del sagomario. Nell'archivio di origine
(CDS) è la somma ingenua di b·t³/3, senza i raccordi, in
media il 21% in difetto.
inc/converti_sagomario.php la
ricalcola con El Darwish-Johnston e conserva il valore d'archivio in
Jt_arch, con Jt_met a dire quale sia stato usato.
Il confronto con le tabelle Euronorm pubblicate non è stato fatto:
da controllare a campione su IPE300, HEA300 e HEB200. J,t non entra nei
risultati di questa versione (serve allo svergolamento, che non si
calcola), quindi la verifica non è urgente ma va fatta prima di
usarlo.
- Firma di
SuiteLimiteRegistra().
limitazioni_travecontinua.php non registra nulla di proprio e
tiene la chiamata commentata: la firma non è stata letta sul modulo
vero. Da scoperchiare dopo il confronto.
- Tabella del legno duplicata.
TraveClassiLegno() è
la stessa di SolaioLegnoCls. Va estratta in un modulo
condiviso insieme a k,mod, k,def e k,cr. Finché è duplicata,
ogni correzione va fatta in due posti, che è il modo sicuro per
farli divergere.
- Posizione del momento massimo fra combinazioni simmetriche. Su tre
campate uguali la tabella può riportare x = 2,00 m per una
combinazione e x = 13,00 m per un'altra: sono i due punti simmetrici, e la
scelta fra i due dipende dall'ultima cifra dell'aritmetica. Non è
un errore, ma in un tabulato la differenza fa alzare un sopracciglio. Da
decidere se, a pari valore entro una tolleranza, riportare il primo.
Chiuse: primo gruppo di modifiche (12/10)
- Vincoli non disegnati. Il disegno dello schema cercava il tipo
appoggio, che non esiste più: da quando il solutore
distingue lo scorrimento assiale i tipi sono carrello e
cerniera. Il confronto non tornava mai e nessun simbolo
veniva disegnato: la trave appariva sospesa in aria. È il
difetto peggiore di questa famiglia — non si vede un errore, si
vede un disegno incompleto, e si pensa che il disegno faccia così.
Ora i quattro simboli dicono che cosa il vincolo trattiene: carrello con i
rulli, cerniera con il terreno tratteggiato, incastro, molla.
- q,var non seguiva la categoria. Il selettore della categoria nei
carichi generali non aveva alcun gestore: si sceglieva E2 e il carico
restava quello della categoria A. Ora il valore di tabella si
scrive, non si propone soltanto, e la nota dice che cosa è
cambiato. Dove la norma non quantifica (E2, I, K) il campo non si tocca e
si dice perché; dove il valore è un minimo di norma lo si
scrive e lo si dichiara minimo; per la neve si rimanda al campo proprio,
che ha il selettore della zona e il modulo di calcolo.
- Limiti di freccia distinti per campate e sbalzi. In una stessa
travata si trovano entrambi, e con un campo solo bisognava scegliere il
più severo per tutti. Il rapporto dello sbalzo resta riferito al
doppio della sua lunghezza: cambia il denominatore, non la
convenzione. I valori di partenza coincidono con quelli delle campate, e
un file salvato prima riapre con i predefiniti senza errori.
- Cinque collegamenti alla guida su otto erano rotti:
#frecce, #categorie, #conoscenza,
#durata, #sagomario. Chi li premeva arrivava in
cima alla guida senza nulla che glielo dicesse. Aggiunte le sotto-ancore
con gsub(), che registra anche il capitolo che le contiene:
un collegamento a una sotto-ancora deve prima APRIRE il capitolo, o porta
a un titolo dentro un riquadro chiuso. E aggiunto il controllo
automatico sotto ?aiuti=1, che legge le ancore dal file
della guida — non da un elenco dichiarato, che diverge appena si
rinomina una sezione — e dice quali aiuti citano un'ancora che non
c'è.
Chiuse, con il perché
- Calcestruzzo armato fuori perimetro. Scelta di merito: una trave in
c.a. appartiene a un telaio che si calcola con un modello completo, e la
sua verifica non è separabile dal progetto dell'armatura. Il caso
che interessa — la trave esistente con il progetto del rinforzo
— ha il tool
rinforzotravica. Le funzioni sul
calcestruzzo (TraveClassiCls, TraveEcm, la
geometria delle sezioni a T e a L) restano scritte in
travecontinua.php di proposito: sono il materiale di partenza
di quel tool, e non sono raggiungibili dall'interfaccia.
- Un inviluppo per azione dominante, non uno solo. EC5 2.3.2.1: il
k,mod è quello dell'azione di durata più breve della
combinazione. Un inviluppo unico renderebbe la verifica del legno
sbagliata e dalla parte non cautelativa.
- Motivi elementari invece delle disposizioni. Sei campate e tre
azioni fanno oltre un miliardo di disposizioni e venticinque motivi.
L'inviluppo per sovrapposizione è esatto, non un
sottoinsieme scelto, e il caso dello sbalzo che si scarica cade fuori da
sé.
- Due figure per deformata e freccia. Coincidono solo con appoggi
rigidi e trave orizzontale, e non coincidono proprio nei casi in cui
contano.
- Descrizione in vetrina. Diceva «Verifica di travi
continue». Corretta il 12/10: la vetrina è il primo posto in
cui un tool promette qualcosa.
- Classi degli aiuti. Erano
tc_aiutomk e
tc_aiutobox. Passate a aiutomk e
aiutobox: non per aspetto — la resa era quasi identica
— ma perché le regole @media print del foglio
comune aprono i riquadri e nascondono i segni, e una classe propria ne
restava fuori. In stampa gli aiuti non comparivano.
- Due campi per la descrizione del file. Toltone uno: con
inc/progetto_inc.php la descrizione che accompagna il file
è $dati["descrizione"]. Due campi per un dato solo
divergono alla prima volta che si compila uno e non l'altro.
Difetti trovati altrove, mentre si allineava questo tool
inc/relazione_inc.php: id duplicato nelle figure.
RelDisegno() emetteva <div
id="boxschema">. Con un disegno solo funzionava; questo tool ne
produce uno per combinazione e per tipo, e cinque elementi con lo stesso
identificativo prendevano tutti il position:sticky della
regola #boxschema — riquadri che si accavallano
scorrendo. Corretto in class="reldis", con la regola nuova in
inc/stile.css. Il riquadro dello schema nella colonna della
pagina di calcolo è un elemento della PAGINA, non della relazione, e
non cambia.
- Lo standard par. 13.5 previsto il caso, e la soluzione proposta era
quella giusta. Diceva che un tool con due disegni vuole due coppie di
campi, e che un elenco sarebbe la via pulita. Qui l'elenco è
necessario, non preferibile: quante figure ci siano dipende da quante
combinazioni si chiedono, e non si sa prima del calcolo.