JS - SBH Web

Guide del client web del gestionale SIGEA (sbh-web), generate dal repository adsw-next.

JS1 SBH — accesso e novita'


JS1 SBH — accesso e novita'

1. Accesso

La finestra dell'SBH Helper

Se l'SBH Helper non risponde, prima di connettersi compare «Avvio dell'SBH Helper»: sbh-web prova ad avviarlo. Dopo qualche secondo, se non parte, propone Installa e Riprova ad avviarlo. Con Continua senza si entra lo stesso: mancano stampa diretta, cartelle, posta e terminalini.

Nessuna schermata: su questo PC l'helper era gia' acceso, quindi la finestra non compare.

La pagina di avvio

Pagina di avvio

Al centro Connetti. Sotto:

✔ Verifica: la pagina mostra «Connetti» e la riga «Postazione».

Server di connessione

Il clic sul server apre Server di connessione: server e porta, fra quelli ammessi dal gateway. Ripristina predefinito torna a quello del gateway.

✔ Verifica: la finestra «Server di connessione» ha i campi Server e Porta.

Connessioni salvate

Nuova configurazione

Nuova configurazione: nome, server, porta ed etichette (fino a 8, ognuna col suo colore). Salva questa connessione salva invece il server scelto sopra.

Connessioni salvate filtrate

Le etichette diventano filtri sopra l'elenco (qui solo «prova»). La ricerca trova per nome, server, prodotto, cliente o etichetta. Un clic sulla riga si collega; la matita modifica (F2), il cestino elimina. Le connessioni stanno nel browser.

✔ Verifica: tre connessioni salvate; il filtro «prova» ne mostra due.

Login

Login

Utente e password del server SIGEA (massimo 12 caratteri). La password e' mascherata; l'occhio la mostra. Il primo accesso scarica i menu di tutti i moduli: 2-4 minuti. Poi restano nel browser.

✔ Verifica: il campo password e' di tipo password.

JS1 SBH — accesso e novita'

2. Dopo il login

Menu e benvenuto

A sinistra il menu del modulo: in alto il modulo (clic per cambiarlo), la ricerca, poi Preferiti e Recenti del modulo, poi le funzioni. Se un modulo ha piu' versioni, il menu ne mostra una riga per versione. In fondo: modulo, versione e rilascio.

Al centro il benvenuto: modulo, utente, uscita predefinita e i tasti utili.

✔ Verifica: il piede del menu dice «Menu B20».

Pannello di avvio

Scelta una voce, il pannello di avvio mostra il percorso, il logo del prodotto (eSIGEA o SIGEAdb) in alto a destra, i tipi di lavoro (Inserimento, Modifica, Interrogazione, Cancellazione), modalita', ruolo e uscita. Avvia (o Invio) apre la funzione.

Dal menu, Tab porta il cursore nel pannello, sul tipo di lavoro scelto: si continua da tastiera.

✔ Verifica: quattro tipi di lavoro; dopo Tab il tipo scelto ha il fuoco.

Recenti

Dopo aver usato una funzione, compare fra i Recenti del modulo (anche nel benvenuto). La stella del pannello la mette fra i Preferiti.

✔ Verifica: la sezione Preferiti/Recenti del menu e' a video.

JS1 SBH — accesso e novita'

3. In una funzione

La funzione

✔ Verifica: il percorso nella barra contiene «Condizioni».

Vista moderna

L'interruttore della vista passa da Fedele (come il client, a coordinate) a Fedele con tasti a Moderna (a flusso: campi allineati, tendine «Scegli», lente accanto al campo). Un clic per vista.

✔ Verifica: dopo uno o piu' clic la maschera e' nella vista Moderna.

Ricerca F8

F8 sul campo apre la Ricerca. Il filtro agisce sulle righe caricate; Altre righe chiede la pagina dopo. Il doppio clic su una riga la sceglie e la riporta nel campo.

✔ Verifica: dopo il doppio clic il campo Codice pagamento ha un valore.

Clic destro: Sviluppo

Il clic destro sulla maschera apre il menu con la sezione Sviluppo: il nome della maschera e Copia nome maschera (su un campo, anche il nome del campo).

✔ Verifica: il menu mostra «Copia nome maschera».

Ispettore

Shift + clic destro su un campo apre l'ispettore: form, maschera, campo, posizione nel record, help e valore. Senza traffico verso il server.

✔ Verifica: l'ispettore si apre sul campo CODE-PAGA.

JS1 SBH — accesso e novita'

4. Schede delle sessioni

Schede e tooltip

Nella barra in basso c'e' una scheda per sessione. Si aggiunge col + (con login) o con Duplica dal clic destro sulla scheda (senza login). Ogni scheda mostra utente, modulo e slot (#5, #6). Passando sopra, il tooltip dice server, utente, modulo, slot e stato.

L'icona del telefonino accanto allo slot (qui sulla scheda #5) indica la sessione a cui sono agganciati i terminalini RMH dell'SBH Helper.

✔ Verifica: due schede, il tooltip della seconda e' a video.

Dopo F5

F5 (ricarica della pagina) riprende tutte le sessioni, ognuna dove era: qui le due schede tornano sul menu, senza rifare il login.

✔ Verifica: dopo la ricarica le schede sono ancora due, col menu.

JS1 SBH — accesso e novita'

5. Opzioni utili

Il pulsante ☰ in basso a sinistra apre le Opzioni, a gruppi.

Opzioni: Sessione Opzioni: Vista e Impostazioni

La voce Servizi RMH (terminalini) compare solo con un SBH Helper che li offre: spenta, sbh-web non li avvia.

Dati salvati nel browser

Dati salvati nel browser: quanto occupa sbh-web, per categoria (sessioni da riprendere, menu, maschere, guide, preferenze). Svuota cache libera spazio (il server rimanda i dati); Dimentica sessioni da riprendere cancella i rientri.

✔ Verifica: la finestra «Dati salvati nel browser» si apre dalle Opzioni.

SBH Helper: Dispositivi

SBH Helper apre il pannello dell'helper: versione, Dispositivi (i terminalini RMH: ping, log, messaggi), Stampanti, Aggiorna. Qui i servizi RMH erano occupati da un'altra sessione (slot 5): Riprova li richiede per la sessione attiva. Senza helper, la voce propone di scaricarlo.

Nessun terminalino era collegato: l'elenco dei dispositivi e' vuoto.

Personalizzazione

Personalizzazione (icona in alto a destra della barra): «Stai personalizzando» sceglie il prodotto (eSIGEA o SIGEAdb). Superficie e tinta dello sfondo valgono per le sessioni di quel prodotto.

Campi di input

Campi di input: sfondo, bordo e bordo al focus dei campi attivi, e dei campi disattivi e in sola lettura. Auto usa il colore del tema. Valgono per il modo chiaro o scuro in uso.

✔ Verifica: il pannello mostra la scelta del prodotto.

JS2 SBH — avvio della sessione, login, schede, rientro e uscita


JS2 SBH — avvio della sessione, login, schede, rientro e uscita

4. Opzioni › Informazioni sulla sessione

Informazioni sulla sessione

Dal pulsante delle opzioni (le tre righe in basso a sinistra) › Informazioni sulla sessione: chi e' collegato, a quale server, con quale connessione, versione e catalogo. E' quello che si chiede a chi segnala un problema; Copia lo mette negli appunti in una volta.

✔ Verifica: la finestra mostra «Server (nodo)» e «Connessione n.».

✔ Verifica: «Postazione (client)» e' GUIDA-AVVIO, il nome scritto al §1: il nome client arriva davvero al server.

✔ Verifica: «Utente» e' valorizzato.

JS2 SBH — avvio della sessione, login, schede, rientro e uscita

5. Piu' sessioni: le schede

Il menu della scheda

Ogni scheda della barra in basso e' una sessione completa, con la sua connessione al server: due schede sono due utenti collegati, indipendenti. Il tasto destro su una scheda apre il suo menu.

✔ Verifica: nel menu della scheda «Duplica» e «Chiudi la scheda» sono attivi.

La scheda duplicata

Duplica apre una connessione nuova con le stesse credenziali, senza rifare il login: le credenziali restano nella memoria della pagina, mai nel browser (vedi il §8: dopo una ricarica non ci sono piu' e la scheda nuova chiede il login).

✔ Verifica: compare una seconda scheda che entra da sola, senza richiesta di login, arriva al menu («UTENTE · menu») e diventa l'attiva.

Due schede affiancate

Affianca alla scheda attiva (dal menu di una scheda che non e' quella attiva) divide lo schermo fra due sessioni: per esempio un'interrogazione a sinistra e un inserimento a destra. Il clic in una delle due la rende attiva (tastiera e finestre vanno a lei). Separa, dallo stesso menu, torna a una sola.

✔ Verifica: con «Affianca» due sessioni sono a video insieme, ognuna col suo menu e piu' stretta.

✔ Verifica: con «Separa» ne resta a video una sola.

Chiudere una scheda

Chiudi la scheda su una scheda connessa esce dalla sua sessione in modo ordinato e lo chiede prima, con una finestra dell'app e non con quella del browser.

✔ Verifica: «Chiudi la scheda» chiede «Chiudere la scheda?»; confermato, la scheda sparisce e resta la prima, col suo menu.

Una scheda nuova

Il + accanto alle schede apre una sessione nuova con il suo login (per entrare con un altro utente): la scheda nasce sulla pagina Connetti. Una scheda senza connessione si chiude subito, senza conferma, perche' non c'e' niente sul server da chiudere.

✔ Verifica: il «+» apre la scheda «Nuova sessione» con Connetti, e la prima resta connessa (pallino verde).

✔ Verifica: il menu della scheda nuova dice «Nessuna connessione aperta» e «Chiudi la scheda» la toglie subito.

JS2 SBH — avvio della sessione, login, schede, rientro e uscita

6. Una funzione aperta

Condizioni pagamento in interrogazione

Dal menu: modulo B20, cerca «Condizioni», Condizioni pagamento, tipo di lavoro Interrogazione, Avvia. Con una funzione aperta il client protegge il lavoro: uscire a meta' troncherebbe il programma COBOL (file e transazioni non chiusi), quindi si esce solo dal menu.

✔ Verifica: la griglia ha le righe e il cursore e' sul Codice pagamento.

✔ Verifica: la scheda dice utente e form (non piu' «menu») e la barra mostra form e maschera in input.

✔ Verifica: il pulsante di uscita e' spento.

La scheda con una funzione aperta

✔ Verifica: nel menu della scheda «Chiudi la scheda» e' spento, con «Prima chiudi la funzione e torna al menu».

JS2 SBH — avvio della sessione, login, schede, rientro e uscita

7. Il rientro dopo una ricarica

Dopo la ricarica della pagina

Ricaricare la pagina (F5), chiudere la scheda del browser e riaprire /sbh, o andare avanti e indietro, non perde la sessione: il gateway la tiene parcheggiata per qualche minuto, il browser rigioca quello che il server gli aveva mandato e si riaggancia. La funzione torna com'era, col campo in input. Per questo il browser non chiede piu' «Vuoi davvero uscire?»: non c'e' niente da perdere.

✔ Verifica: ricaricando, il browser non mostra nessun avviso.

✔ Verifica: la griglia torna con la stessa prima riga, il cursore sul Codice pagamento e nessuna attesa in corso.

✔ Verifica: dopo la ricarica c'e' una sola scheda (quella ripresa prende il posto della scheda vuota dell'avvio).

JS2 SBH — avvio della sessione, login, schede, rientro e uscita

8. Uscire dalla pagina con la sessione aperta

Uscire dalle sessioni?

Andare altrove nell'applicazione (qui: Tutti i moduli in alto a sinistra › un modulo) con una sessione aperta non la abbandona in silenzio: l'app chiede cosa farne.

La guida prova Resta: «Lascia in sospeso» terminerebbe il giro con una sessione parcheggiata sul server, che il passo successivo dovrebbe riprendere; il rientro stesso e' gia' provato al §7.

✔ Verifica: compare «Uscire dalle sessioni?» e avverte che c'e' una funzione aperta.

✔ Verifica: i pulsanti sono «Resta», «Lascia in sospeso» e «Forza l'uscita».

✔ Verifica: il testo dice che le sessioni in sospeso riprendono «entro 15 minuti» (il tempo di rientro del gateway, SBH_RESUME_SECONDS, di default 900 secondi).

✔ Verifica: con «Resta» la finestra si chiude, si resta su /sbh e la funzione e' ancora a video.

Duplica dopo il rientro

Tornati al menu col tasto Esci della funzione, l'uscita si riaccende. La sessione ripresa dopo la ricarica si puo' duplicare, ma con una differenza: le credenziali che servono a «Duplica» per entrare da sola stavano nella memoria della pagina, e la ricarica le ha cancellate (e' voluto: non si salvano nel browser). Il menu della scheda lo dice nel sottotitolo, «Nuova connessione: dopo una ricarica il login va rifatto».

✔ Verifica: di nuovo al menu, il pulsante di uscita e' attivo e la scheda dice «UTENTE · menu».

✔ Verifica: dopo il rientro «Duplica» e' attivo, con «dopo una ricarica il login va rifatto».

La scheda duplicata chiede il login

La scheda nuova si collega da sola e arriva alla richiesta di login del server. La guida non entra (non conosce le credenziali: stanno in config/.env.sbh) e chiude la scheda dal suo menu, con la conferma: l'uscita e' ordinata anche dalla richiesta di login (il client risponde Esci al server).

✔ Verifica: la seconda scheda mostra il login e dice «Accesso…», mentre la prima resta connessa.

✔ Verifica: «Chiudi la scheda» con la conferma la toglie e resta la prima, col suo menu.

JS2 SBH — avvio della sessione, login, schede, rientro e uscita

9. L'uscita ordinata

Chiudere la sessione?

Dal menu, il pulsante di uscita in basso a destra (o Opzioni › Esci dalla sessione) chiude la sessione in modo ordinato: il client dice al server che se ne va, il server chiude i suoi programmi e libera la connessione. La conferma e' una finestra dell'app.

✔ Verifica: l'uscita chiede «Chiudere la sessione?» con il pulsante «Chiudi la sessione».

Sessione chiusa

✔ Verifica: confermato, la barra dice «Chiuso» e torna la pagina Connetti.

✔ Verifica: accanto a «Chiuso» non ci sono piu' nodo e numero della connessione finita.

✔ Verifica: nel browser non resta nessuna sessione da riprendere (nessuna voce sbh-web.sessione.* nel localStorage).

JS2 SBH — avvio della sessione, login, schede, rientro e uscita

Introduzione

Come si apre una sessione del gestionale legacy dal client web, come si entra, come si lavora con piu' sessioni a schede, cosa succede se si ricarica la pagina e come si esce senza lasciare connessioni appese sul server. Percorso: http://localhost:4202/sbh › Connetti › Accedi; per la funzione di prova B20 › Condizioni pagamento › Interrogazione.

Rieseguire: cd frontend && npx playwright test --config=playwright.sbh.config.ts sbh-web-guida-avvio (con altre sessioni al lavoro, aggiungere --output=test-results/sbh-guida-avvio). 42 verifiche, 18 schermate. Non crea dati: la funzione di prova e' aperta in interrogazione.

Perche' uno spec Playwright e non un .cjs in e2e/guide/. Le altre guide girano con uno script node e2e/guide/<slug>-guide.cjs contro l'ERP sulla 4200. Questa parla con un server SIGEA legacy vero, attraverso il gateway SBH, e ha bisogno di utente e password: li carica frontend/playwright.sbh.config.ts da config/.env.sbh (ignorato da git, non si legge e non si copia altrove). Lo script e' quindi frontend/e2e/sbh-web-guida-avvio.spec.ts, che usa quella config, la cache dei menu di e2e/sbh-web-accesso.ts (SBH_STATO) e lo stesso schema degli altri spec sbh-web. Ogni ✔ Verifica qui sotto e' un expect dello spec, nello stesso ordine.

Prerequisiti: npm run sbh:leggero avviato (app sulla 4202, gateway sulla 5086), la VPN verso il server legacy. Viewport 1500x900. Lo spec chiude sempre la sessione in modo ordinato, anche se un passo fallisce: il server ha un numero massimo di connessioni e una sessione abbandonata resta occupata finche' il gateway non la chiude.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti


JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

1. Il pannello Opzioni

Con il modulo e la voce scelti nel menu (la funzione non e' ancora avviata), il pulsante con le tre righe in fondo a sinistra apre il pannello verso l'alto, dentro la barra: e' quello che nel client legacy stava nei menu della finestra. Le voci sono divise in tre gruppi: Sessione (uscire, archivio stampe, manuale, informazioni), Vista (menu, tutta la finestra, stampa della schermata, strumenti della griglia, tema, carattere, trace) e Impostazioni (tasti funzione). Una voce che in quel momento non ha senso resta a video ma spenta, e sotto il nome dice perche': cosi' non si cerca una funzione che "non c'e'".

A destra delle schede, con una funzione aperta, la barra dice che funzione sta girando: tipo di lavoro, Definitivo o Simulato (il simulato su fondo arancione), la stampante con cui e' partita (nome e tipo; segue il cambio chiesto dal programma con «Scegli la stampante») e il ruolo. Quando la barra non ha spazio (tante schede, finestra stretta, schermo diviso) diventano un pulsante compatto che apre verso l'alto un pannello con i dettagli. I tasti funzione non stanno piu' qui: sono nella barra dei comandi (§14). Form, maschera e campo li mostra F7 sul campo in input (la mini-guida del client legacy) o Maiusc + clic destro; il piede del pannello Opzioni lo ricorda.

Il pannello Opzioni dal menu

✔ Verifica: il pannello ha i tre gruppi Sessione, Vista, Impostazioni, in quest'ordine.

✔ Verifica: dal menu Archivio stampe e' spento e dice «Solo mentre la funzione aspetta un input».

✔ Verifica: dal menu Stampa la schermata e' spento e dice «Nessuna funzione a video».

✔ Verifica: dal menu Esci dalla sessione e' attivo (dentro una funzione no, vedi §6).

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

10. Un documento nel visualizzatore

Il visualizzatore mostra le stampe (PDF, HTML, testo impaginato in Courier a sei righe per pollice) e i file che il server manda. Per vederlo senza stampare niente, Griglia in XML mette l'XML della griglia delle condizioni fra i documenti, come l'export XML del client legacy: arriva una finestra a tutto schermo (per l'XML una pagina a tutta larghezza in carattere fisso; le stampe di testo restano fogli A4 e, se una riga e' piu' larga del foglio, il foglio scorre) con Stampa, Scarica, Apri in una nuova scheda e Affianca alle maschere.

La griglia in XML nel visualizzatore

✔ Verifica: il visualizzatore si intitola «20000DTB2-200 (XML)».

✔ Verifica: il documento contiene l'XML della griglia (<grid>).

✔ Verifica: l'XML e' una pagina a tutta larghezza (non un foglio A4) e le righe piu' lunghe della finestra si leggono scorrendo, non sono tagliate.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

11. Affiancato alle maschere

Affianca alle maschere sposta il documento nel pannello Documenti del §5: la funzione resta a sinistra e si continua a lavorare, la stampa a destra. Il pulsante Documenti porta il numero dei documenti ricevuti nella sessione.

Il documento affiancato alle maschere

✔ Verifica: il pannello a destra mostra lo stesso XML e il campo della funzione resta a video.

✔ Verifica: il pulsante Documenti porta il numero dei documenti ricevuti.

✔ Verifica: ricliccato Documenti, il pannello si chiude.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

12. Tasti funzione

Come la configurazione tasti del client legacy (SbhKeyConfDlg): quale tasto della tastiera fa Esci, Conferma, Guida e Cerca / Salto, fra F9, F10, F11, F12 ed Esc. Un tasto vale per un'azione sola: sceglierlo per un'altra le scambia. Qui il predefinito di Esci e' Esc; «Come il client legacy» rimette Esci su F11. La scelta resta nel browser e si vede subito nel tasto Esci della barra dei comandi (il tooltip dice il tasto) e nel sottotitolo della voce.

Tasti funzione

✔ Verifica: messo Esci su F11, il tasto Esci della barra dei comandi dice «Esci · F11».

✔ Verifica: il sottotitolo di «Tasti funzione» nel pannello dice «Esci F11».

✔ Verifica: rimesso Esci su Esc, il tasto dice di nuovo «Esci · Esc» e la preferenza salvata e' quella di prima.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

14. La barra dei comandi

La toolbar del client legacy sopra le maschere (TBR_FORM, SbhFormChildFrame.cpp:599): conferma, invio, esci; campo e pagina precedente/successiva; F1-F8; cerca (F9) e guida del campo; poi stampa, esporta, funzioni della griglia, manuale e informazioni. Ogni pulsante fa esattamente quello che fa il suo tasto e si accende solo se il campo in input lo ammette (nel legacy SbhFormRegion::UpdateCmd e ResolveCmd, SbhFormRegion.cpp:610-750); le funzioni del client si accendono come le loro voci nelle Opzioni. Il tooltip dice il nome e il tasto, con la rimappatura della §12 («Esci · Esc», o «Esci · F11»). Il clic non toglie il cursore al campo. I Maiusc+F e Rifiuta compaiono solo quando il campo li ammette; le etichette dei tasti sono fisse, come nel legacy (il COBOL non ne manda).

Script: npx playwright test --config=playwright.sbh.config.ts sbh-web-barra-comandi (frontend/e2e/sbh-web-barra-comandi.spec.ts), su BE0 › Tabella I V A in interrogazione.

Dove sta la sceglie l'utente dal menu ⋯ della barra, e resta nel browser (sbh-web.barra-comandi, per tutte le schede di sessione): fissa in alto (il predefinito), fissa in basso, mobile (una finestrella da trascinare per la maniglia a sinistra, anche con le frecce; doppio clic la rimette in alto a destra; la X la chiude), segue il cursore (compatta, solo i tasti accesi, sotto il campo in input o sopra se sotto non c'e' posto: si sposta con un'animazione breve quando cambia il campo, niente animazione con «riduci movimento» del sistema). Spenta, si riaccende da Opzioni › Vista › Barra dei comandi o con Alt+Maiusc+B, e torna com'era. Sta sopra le maschere e le NEW-FORM, dentro lo schermo della sessione.

La barra fissa in alto

✔ Verifica: fissa in alto, sopra le maschere; Esci e Invio accesi, il tooltip di Esci dice «Esci · Esc».

Il menu della barra

✔ Verifica: aperto il menu ⋯, il cursore resta nel campo in input e «Fissa in alto» e' spuntata.

La barra mobile, trascinata

✔ Verifica: mobile, trascinata in basso a sinistra si sposta col puntatore e la posizione si ricorda nel browser; trascinata oltre il bordo si ferma dentro lo schermo della sessione; il cursore resta nel campo.

La barra che segue il cursore

✔ Verifica: segue il cursore, compatta, accanto al campo in input senza coprirlo, solo tasti accesi.

✔ Verifica: Alt+Maiusc+B la spegne, la voce delle Opzioni dice «Spenta» e la riaccende com'era.

✔ Verifica: la X rossa della barra fa quello che fa Esc: la funzione si chiude e si torna al menu.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

2. Manuale in linea

Manuale in linea apre in una finestrella del browser accostata a destra (sempre la stessa, «sbh-manuale», che si riusa) la pagina del manuale della voce scelta nel menu, come la finestra del manuale del client legacy; senza una voce scelta apre la pagina iniziale. Se il browser blocca le finestre, si apre in una scheda. L'indirizzo lo costruisce manualUrl (sbh-web/src/session/utils/menu-file.util.ts): il modulo con la B che diventa E (B20 → E20), la versione se non e' 0000, la fase e le posizioni della voce nell'albero a due cifre, e il prodotto dal livello d'uso (SIGEA, eSIGEA, SIGEAdb).

La pagina del manuale di Condizioni pagamento

✔ Verifica: con la voce scelta, sotto il nome della voce c'e' «Della funzione scelta nel menu».

✔ Verifica: la scheda nuova si apre su https://gsdoc.genesyssoftware.eu/page-function/E20…/1?prodotto=….

Sul server di prova e' la pagina «1.1.1.1 - Tabelle Generali: 1. Condizioni di Pagamento».

✔ Verifica: scelta la voce, il pannello Opzioni si chiude da solo.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

3. Informazioni sulla sessione

Nel legacy era «Informazioni su»: chi e' collegato, a quale server, con quale connessione, catalogo, livello d'uso, documentale e versione del client. Serve soprattutto quando si chiede aiuto: Copia mette tutto negli appunti, una riga per voce.

Informazioni sulla sessione

✔ Verifica: ci sono le righe Utente, Server (nodo), Porta, Connessione n., Catalogo, Livello d'uso.

✔ Verifica: Utente non e' vuoto (non «—»).

✔ Verifica: Connessione n. e' un numero.

✔ Verifica: Client comincia con «sbh-web».

✔ Verifica: Chiudi chiude la finestra.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

4. Tema scuro

Tema scuro e' un interruttore: cambia il tema di tutta l'applicazione (la stessa preferenza della luna nella barra in alto dell'ERP), non solo delle maschere.

Tema scuro

✔ Verifica: acceso, la pagina passa al tema scuro (classe app-dark sulla pagina).

✔ Verifica: l'interruttore della voce e' acceso.

✔ Verifica: ricliccato, si torna al tema chiaro.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

5. Documenti: il pannello affiancato

Il pulsante Documenti della barra in basso apre a destra un pannello con le stampe e i file che il server manda durante la sessione, affiancato alle maschere: lo schermo si divide e il divisore si trascina (doppio clic lo rimette a meta'). Prima di qualunque stampa il pannello e' vuoto e lo dice.

Il pannello Documenti, ancora vuoto

✔ Verifica: il pannello dice «Le stampe della sessione compaiono qui.».

✔ Verifica: il pulsante Documenti resta premuto finche' il pannello e' aperto.

✔ Verifica: ricliccato, il pannello si chiude.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

6. Dentro la funzione: Stampa la schermata

Si sceglie Interrogazione e si avvia. Aperta la funzione il pannello cambia: si accendono le voci che lavorano sulla funzione a video (stampa, strumenti della griglia, archivio stampe) e si spegne Esci dalla sessione, perche' uscire con una funzione aperta la troncherebbe a meta' (il COBOL non chiude file e transazioni): prima si torna al menu con Esci.

Stampa la schermata e' l'hardcopy del client legacy: stampa la funzione com'e' a video, e solo quella. Da printScreen (sbh-web/src/session/components/sbh-session-page/sbh-session-page.component.ts): mette la classe sbh-print-target sul contenitore della funzione e sbh-printing sulla pagina, poi chiama la finestra di stampa del browser; le regole @media print di sbh-cornice.component.ts nascondono tutto il resto (barra in alto, menu, barra in basso, pannelli) e allargano la funzione alla pagina. Chiusa la finestra di stampa (afterprint) le due classi si tolgono. Stampante, copie e formato si scelgono nella finestra del browser: la stampa silenziosa su una stampante di Windows del legacy da un browser non si puo' fare. Lo script non apre la finestra di stampa (bloccherebbe il browser di prova): verifica che la voce ci sia e sia attiva.

Il pannello Opzioni dentro la funzione

✔ Verifica: dentro la funzione Stampa la schermata e' attiva e dice «La funzione a video, com'e'».

✔ Verifica: dentro la funzione Archivio stampe e' attivo.

✔ Verifica: dentro la funzione Esci dalla sessione e' spento.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

7. Trace del protocollo

Trace del protocollo apre a destra il pannello con ogni frame scambiato col server: ◀ quello che arriva, ▶ quello che parte, · gli eventi (sessione aperta, chiusa, macro non gestite). Serve a capire cosa il programma chiede e cosa il client risponde, senza il log del client legacy. Il livello, in alto a sinistra, dice quanto scrivere e si ricorda nel browser:

livello cosa scrive
0 niente: trace spento
1 solo gli eventi (sessione, errori, avvisi), nessun frame
2 anche una riga per frame: MCCB func=… subf=… optn=… retn=… name="…" dati=… sicb=… e i byte
3 anche il dump esadecimale di ogni frame: offset, 16 byte in esadecimale, gli stessi in testo

Il trace scrive solo da quando e' acceso: per vedere l'avvio della funzione si accende dal menu, prima di avviare. La casella Filtra tiene le righe che contengono il testo (una macro, il nome di una maschera) e il contatore dice quante sono su quante; Scarica salva un .txt con le righe filtrate (come il 000.txt del log legacy) col nome sbh-trace-AAAAMMGG-hhmmss.txt in ora locale; il cestino svuota. Le righe lunghe vanno a capo dentro il pannello; il dump esadecimale, che a capo non si leggerebbe, scorre in orizzontale dentro la sua riga.

Trace al livello 3, con il dump esadecimale dell'avvio

✔ Verifica: al livello 3 sotto le righe dei frame c'e' il dump esadecimale.

✔ Verifica: ci sono righe in arrivo (◀) e in partenza (▶).

✔ Verifica: nessuna riga esce a destra del pannello: le righe lunghe vanno a capo.

✔ Verifica: filtrando per il nome della griglia 20000DTB2-200 restano meno righe, tutte con quel nome, e il contatore dice «N / totale».

✔ Verifica: Scarica salva sbh-trace-AAAAMMGG-hhmmss.txt con la data di oggi e l'ora locale, e il file contiene solo le righe filtrate.

✔ Verifica: al livello 2, aprendo e chiudendo l'archivio stampe, compaiono righe func= senza dump.

✔ Verifica: al livello 1, la stessa apertura dell'archivio non scrive nessun frame.

✔ Verifica: al livello 0, svuotato, il pannello dice «Trace spento.».

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

8. Tutta la finestra

Dopo il login al legacy la shell tiene solo la barra in alto col logo; Tutta la finestra toglie anche quella e la sessione prende tutta la finestra del browser (non lo schermo intero: le schede e la barra degli indirizzi di Chrome restano). Vale per tutte le schede di sessione. Si torna indietro con la stessa voce o col pulsante che compare nella barra in basso.

Tutta la finestra

✔ Verifica: acceso, la barra in alto sparisce.

✔ Verifica: il pulsante «Tutta la finestra» della barra in basso resta premuto.

✔ Verifica: ricliccato quel pulsante, la barra in alto torna.

JS3 Client SBH — il pannello Opzioni, le stampe e gli strumenti

9. Archivio stampe

L'archivio stampe (lo storico delle stampe sul server, SbhSpmSearchDlg del legacy) si apre solo mentre la funzione aspetta un input: le richieste viaggiano "a parte" rispetto alla maschera in attesa, e il server risponde senza che il programma si muova; chiuso l'archivio, la funzione riprende da dove era, col cursore sul campo. All'apertura il server manda l'elenco delle stampanti d'uscita che hanno stampe nello storico; si cerca per stampante d'uscita, utente (quello del login) e date di creazione (oggi, di partenza). Sulla ricerca di oggi non c'era niente: lo script allarga Creati dal a un anno fa e trova due flussi del registro IVA.

Archivio stampe: due flussi dell'ultimo anno

✔ Verifica: la stampante d'uscita e' gia' scelta: l'elenco e' arrivato dal server.

✔ Verifica: senza un flusso scelto Anteprima, Ristampa, Proroga 30 gg ed Elimina sono spenti.

✔ Verifica: allargata la data, la ricerca trova flussi, con titolo, uscita e formato (Testo).

Un clic su un flusso lo sceglie e chiede al server i suoi documenti, che compaiono a destra con titolo, copie, ristampe, ultima stampa, email e identificativo. Con un flusso scelto si accendono i comandi in fondo: Anteprima (il flusso arriva nel visualizzatore del browser), Proroga 30 gg della conservazione ed Elimina (in due clic: il primo arma la conferma). Ristampa vuole anche la stampante del server, scelta nella tendina accanto (l'elenco arriva dal server). Le caselle a sinistra dei documenti scelgono quali documenti del flusso vedere in anteprima o ristampare; nessuna casella = tutto il flusso. La guida si ferma qui: anteprima, ristampa, proroga ed eliminazione agiscono sullo storico vero e non si provano.

Flusso scelto, documento spuntato, stampante del server scelta

✔ Verifica: cliccato un flusso, a destra c'e' «Documenti di (n)» con le righe dei documenti.

✔ Verifica: con il flusso scelto Anteprima, Proroga 30 gg ed Elimina sono attivi.

✔ Verifica: senza la stampante del server Ristampa resta spento.

✔ Verifica: la casella di un documento si spunta (un documento scelto).

✔ Verifica: l'elenco delle stampanti del server non e' vuoto, e sceltane una Ristampa si accende.

✔ Verifica: chiuso l'archivio, la funzione riprende col cursore sul codice pagamento.

JS4 Griglie e analisi nel client web del legacy SBH


JS4 Griglie e analisi nel client web del legacy SBH

1. La griglia: righe che arrivano dal COBOL

La griglia sotto la maschera non la disegna il client: le righe le crea il programma COBOL con INIT-MASK + PUT-SCREEN (maschera 20000DTB2-200), e il client le mostra con la griglia standard dell'ERP, RevoGrid. Le prime tre colonne (Cod., la matita, Descrizione) restano ferme quando si scorre a destra: sono le 24 rate (TC, GG dec, % Rata) a far scorrere la griglia.

La griglia di Condizioni pagamento

✔ Verifica: la griglia mostra le condizioni mandate dal COBOL (codice e descrizione in ogni riga).

✔ Verifica: le intestazioni sono i titoli della maschera (Cod., Descrizione, TC_1, % Rata 1).

JS4 Griglie e analisi nel client web del legacy SBH

10. Dove si salvano le scelte

Oggi tutto sta nel browser (localStorage), per postazione, come i file .cnf/.pvt del client legacy stavano sul PC:

Scelta Chiave Chi la scrive
larghezze trascinate, colonne nascoste, ordine delle colonne core-grid.colonne.<stateKey> la griglia comune (core/src/grid/grid.component.ts)
viste salvate di pivot e grafico core-grid.analisi.<stateKey> LocalAnalysisStore (core/src/grid/analysis/analysis-store.ts)
Configura la griglia (ordinamento, subtotali, funzioni) sbh-web.gridconf.<catalogo>.<utente>.<form>.<maschera> SbhSessionService.setGridConf (sbh-web)

Lo stateKey lo sceglie chi ospita la griglia; sbh-web usa sbh.<form>.<maschera>.<utente> (qui sbh.20000FTB2.20000DTB2-200.SYSTEM MANAGER). Una griglia senza stateKey non ricorda le colonne, e le sue viste finiscono sotto un'impronta dei campi (campi.<hash>): stessa tabella, stesse viste.

Le viste di pivot e grafico passano da un'interfaccia, GridAnalysisStore (list / save / remove), fornita col token GRID_ANALYSIS_STORE. Per portarle sul server, con le viste che seguono l'utente su ogni postazione e si possono condividere, basta fornire un'altra implementazione del token: la griglia e le due finestre non cambiano. Le scelte sulle colonne e la configurazione di sbh-web oggi non hanno un'interfaccia analoga.


JS4 Griglie e analisi nel client web del legacy SBH

2. Ordinare cliccando un'intestazione

Un clic ordina crescente, il secondo decrescente, il terzo toglie l'ordinamento e rimette l'ordine in cui il COBOL ha mandato le righe. L'ordinamento e' del client: il COBOL non ne sa niente, e le righe che rilegge con GET-GRID restano le sue.

La colonna ordinata si riconosce da un filetto di 2px col colore primario in fondo all'intestazione, con una freccina ▲/▼ all'estremita' dove c'e' spazio: a destra sulle colonne di testo, a sinistra su quelle allineate a destra (numeri, date), dove a destra c'e' il testo. Sta in fondo alla cella in posizione assoluta apposta: non occupa larghezza, quindi si vede anche sulle colonne «a filo» del contenuto, dove l'imbuto del filtro non ci sta piu' e si nasconde.

Una colonna allineata a destra

Cod. ordinata: il filetto a tutta larghezza, la freccina a sinistra

✔ Verifica: un clic su «Cod.» ordina i codici dal piu' piccolo.

✔ Verifica: su «Cod.», colonna numerica stretta (45px) allineata a destra, il filetto di 2px attraversa tutta l'intestazione e la freccina sta nella meta' di sinistra.

✔ Verifica: un secondo clic inverte: in cima il codice piu' grande.

Una colonna stretta allineata a sinistra

TC_1 ordinata: il filetto attraversa tutta l'intestazione

✔ Verifica: su «TC_1», larga 37px, il filetto attraversa tutta l'intestazione.

✔ Verifica: ordinando «TC_1» il filetto di «Cod.» sparisce: si ordina per una colonna alla volta.

✔ Verifica: su «Descrizione» il filetto e' largo quanto l'intestazione.

✔ Verifica: al terzo clic l'ordinamento si toglie e torna l'ordine del COBOL.

JS4 Griglie e analisi nel client web del legacy SBH

3. Filtri di colonna dal tasto destro sull'intestazione

Il tasto destro su un'intestazione apre il menu della colonna (dal 2026-10-02): «Filtra…» apre il filtro di quella colonna (lo stesso dell'imbuto che compare passandoci sopra); nello stesso menu «Nascondi la colonna», «Raggruppa per questa colonna» e «Totale sotto», che sono le scelte dell'Analisi Avanzata. Sulle intestazioni a icona o a casella che il COBOL gestisce col tasto destro vince il COBOL, e il menu non si apre. Il pannello dice su cosa agisce, «su tutte le righe»: qui la griglia ha tutte le righe in mano, non c'e' un server a cui chiedere. Le condizioni sono quelle di RevoGrid (Uguale, Diverso, Inizia con, Contiene, Non contiene, vuoto / non vuoto) e si possono sommare con «Aggiungi condizione».

Il filtro di Descrizione: Contiene BANC

✔ Verifica: tasto destro › «Filtra…» su «Descrizione» apre il filtro della colonna, sotto l'intestazione.

✔ Verifica: «Contiene BANC» lascia solo le condizioni con BANC nella descrizione.

La griglia filtrata

La griglia filtrata

✔ Verifica: l'intestazione filtrata cambia colore e tiene l'imbuto acceso.

✔ Verifica: «Azzera» rimette tutte le righe.

Una colonna stretta

Sotto i 62px (Valuta, 55px) l'imbuto coprirebbe il titolo: resta al suo posto ma invisibile, e il filtro si apre dal tasto destro.

Il filtro di Valuta, aperto dal tasto destro

✔ Verifica: su «Valuta», colonna stretta, l'imbuto non si vede nemmeno passandoci sopra.

✔ Verifica: il tasto destro su «Valuta» apre il filtro accanto alla colonna, subito sotto l'intestazione.

JS4 Griglie e analisi nel client web del legacy SBH

4. Il menu del tasto destro su una cella

Il tasto destro su una cella apre il menu della griglia: in testa le statistiche della selezione (quante celle, se sono numeri: somma, media, minimo e massimo; le stesse della barra di stato in fondo), poi Copia, Esporta, il sottomenu Analisi e gli Strumenti. Per selezionare piu' celle: clic sulla prima, Maiuscolo+clic sull'ultima.

Tre celle selezionate e il sottomenu Analisi

✔ Verifica: con una sola cella selezionata il menu dice «1 cella».

✔ Verifica: tre celle di «% Rata 1» selezionate: il menu dice «3 celle — NUMERI» e la somma e' la loro.

✔ Verifica: Copia › Per Excel mette negli appunti le tre celle, una per riga.

✔ Verifica: Esporta offre CSV, Excel e PDF.

✔ Verifica: la finestra «Esporta in CSV» scarica un file .csv.

✔ Verifica: il sottomenu Analisi ha Pivot, Grafico e Analisi avanzata.

JS4 Griglie e analisi nel client web del legacy SBH

5. Colonne visibili e larghezze ricordate

Strumenti › Colonne visibili accende e spegne le colonne; trascinando il bordo destro di un'intestazione si cambia la larghezza (una targhetta dice i pixel mentre si trascina, una riga tratteggiata dove finira' il bordo). Le scelte si ricordano nel browser per form, maschera e utente: dove, lo dice il § 10.

Strumenti › Colonne visibili

Le colonne senza titolo compaiono nell'elenco col loro tooltip o come «(azioni)»: qui la matita. L'elenco si apre verso l'alto e scorre; quando il menu e' vicino al bordo destro (oltre larghezza − 720px, i tre livelli menu › Strumenti › Colonne visibili) i sottomenu si aprono verso sinistra, come nella schermata, e restano tutti dentro la finestra.

✔ Verifica: il sottomenu «Colonne visibili» si apre verso l'alto, non esce sotto la finestra e scorre.

✔ Verifica: nessuna voce senza nome: la colonna della matita si chiama col suo tooltip o «(azioni)».

✔ Verifica: tolta la spunta a «DescPag» la colonna sparisce dalla griglia.

Le larghezze

Il bordo di Descrizione trascinato: la targhetta con i pixel

✔ Verifica: trascinando il bordo destro «Descrizione» si stringe di 80px.

✔ Verifica: colonne nascoste e larghezze stanno nel browser sotto core-grid.colonne.<form>.<maschera>.<utente>.

✔ Verifica: uscendo e rientrando nella funzione «DescPag» resta nascosta.

All'apertura il COBOL manda SET-GRID RESIZE-COL, cioe' «adatta le colonne al contenuto»: la griglia lo fa senza toccare le larghezze scelte a mano. Il pulsante «Adatta le colonne» degli Strumenti invece le dimentica apposta: e' il modo di dire «torna come prima».

✔ Verifica: rientrando, «Descrizione» resta stretta come l'ha lasciata il trascinamento, anche dopo l'adatta del COBOL.

✔ Verifica: rimessa la spunta, «DescPag» torna.

JS4 Griglie e analisi nel client web del legacy SBH

6. Opzioni › «Configura la griglia»: ordinamento e subtotali

E' la configurazione del client legacy (il suo .cnf): ordinamento fino a tre colonne, il subtotale a ogni cambio delle prime, le «Righe di totale» con una funzione per colonna (somma, media, conteggio, distinti, minimo, massimo). A differenza del clic sull'intestazione, questa passa per la griglia come la farebbe il COBOL con PUT-GRID AGGREGATE: le righe di totale non sono istanze e non tornano al COBOL.

Configura la griglia: TC_1 con subtotale, Cod. con Conteggio

I subtotali per tipo carta

✔ Verifica: ordinata per TC_1 con subtotale: a ogni cambio di TC_1 compare una riga di totale in grassetto su fondo grigio.

✔ Verifica: la riga di subtotale porta il conteggio dei codici del gruppo.

✔ Verifica: la riga di subtotale ha il fondo del totale su tutte le colonne della maschera, anche quella della matita. La colonna # (numero di riga della griglia comune) resta bianca: «Aperto».

✔ Verifica: la configurazione si ricorda nel browser (sbh-web.gridconf.<catalogo>.<utente>.<form>.<maschera>).

✔ Verifica: «Togli configurazione» torna all'ordine del COBOL, senza righe di totale, e dimentica la scelta.

JS4 Griglie e analisi nel client web del legacy SBH

7. Il pivot

Dal tasto destro › Analisi › Pivot (o Opzioni › «Pivot della griglia»). Lavora sulle righe a video, coi filtri di colonna applicati, senza la colonna delle azioni e senza righe di totale; i numeri e le date sono veri, non il testo formattato. A sinistra i campi (# numero, ≡ testo), da trascinare nelle quattro zone Righe, Colonne, Valori, Filtri; un clic su un campo lo mette nella zona piu' probabile.

Righe, colonne, valori

All'apertura propone una partenza: in Righe la colonna di testo con piu' valori diversi, in Valori la somma del numero piu' utile. Qui si costruisce «quante condizioni per tipo carta e decorrenza»: TC_1 in Righe, DecPag in Colonne, e sul chip del valore la funzione Conteggio.

TC_1 × DecPag, conteggio

✔ Verifica: il pivot parte da una proposta: righe = la colonna di testo piu' varia, valori = la somma di un numero.

✔ Verifica: trascinato TC_1 in Righe: una riga per ogni tipo carta (AB, BB, CN…).

✔ Verifica: trascinato DecPag in Colonne: una colonna per valore (0, 1, 2, 3) piu' il totale.

✔ Verifica: con «Conteggio» il totale generale e' il numero di righe analizzate.

✔ Verifica: «Mostra come: % del totale» porta il totale generale a 100.

Ordine, primi N, calore e barre

Nella barra dei comandi: A–Z / 123 ordina per etichetta o per valore, la freccia inverte, «Primi N» tiene i gruppi piu' grandi e mette il resto in «Altri». I numeri si leggono in tre modi: Calore (il fondo della cella piu' intenso dove il numero e' piu' grande, su una scala a radice perche' si vedano anche le differenze piccole), Barre (una barra da destra lunga quanto il valore rispetto al massimo della colonna), 123 (solo numeri).

Per valore, decrescente, primi 5, in modo Calore

✔ Verifica: ordinato per valore, decrescente, «Primi 5»: cinque tipi carta dal piu' usato, il resto in «Altri».

✔ Verifica: in modo «Calore» il fondo delle celle e' piu' intenso dove il numero e' piu' grande.

Lo stesso pivot in modo Barre

✔ Verifica: in modo «Barre» ogni cella ha una barra lunga quanto il valore rispetto al massimo.

Gruppi apribili

Con due campi in Righe il primo diventa un gruppo che si apre e si chiude (clic sull'etichetta, o i due pulsanti ⊕ ⊖ per tutti).

TC_1 › Descrizione, gruppi chiusi

✔ Verifica: con due campi in Righe (TC_1 › Descrizione) i tipi carta diventano gruppi apribili.

✔ Verifica: «Chiudi tutti i gruppi» lascia solo i tipi carta.

✔ Verifica: «Apri tutti i gruppi» rimette le descrizioni sotto ogni tipo carta.

Drill-down: le righe di una cella

Un clic su una cella apre sotto il pivot le righe della griglia che la compongono, con tutte le colonne: e' il modo di passare dal numero ai casi.

Il clic sul totale di RB: le 41 righe

✔ Verifica: un clic su una cella apre sotto le righe che la compongono, tante quante il conteggio.

Filtro dei valori

Un campo in Filtri non diventa ne' riga ne' colonna: serve a escludere dei valori. L'imbuto del chip apre l'elenco dei valori con «tutti» / «nessuno», e il chip conta quanti ne sono esclusi.

DataDecPag in Filtri, escluso il valore 1

✔ Verifica: nel filtro DataDecPag, tolto «1»: il chip conta un valore escluso e il totale scende.

Esportare e salvare la vista

I due pulsanti a destra esportano il pivot com'e' a video in Excel (.xlsx) e CSV. Le viste salvate (in basso a sinistra) ricordano righe, colonne, valori, filtri e opzioni; ☆ la salva come predefinita, che si apre da sola la volta dopo.

La vista «Guida griglie» salvata

✔ Verifica: i due pulsanti di export scaricano il pivot in .xlsx e in .csv.

✔ Verifica: salvata la vista «Guida griglie»: compare in «Viste salvate» e nel browser sotto core-grid.analisi.<form>.<maschera>.<utente>.

✔ Verifica: riaperto il pivot, la vista salvata rimette righe, colonne, valori e filtro.

JS4 Griglie e analisi nel client web del legacy SBH

8. Il grafico

Dal pivot col pulsante Grafico (prima riga = etichette dell'asse, prima colonna = serie, stessi valori), dal tasto destro › Analisi › Grafico o da Opzioni › «Grafico della griglia». Otto tipi (Colonne, Barre, Linee, Aree, Torta, Ciambella, Polare, Radar), una o piu' serie, impilato, primi N con «Altri». In testa i numeri chiave: Totale (di tutte le righe), Media e Massimo/Minimo calcolati sulle etichette a video, senza «Altri» (per questo la media dice «su N etichette»); il Massimo porta la sua quota del totale.

Il grafico aperto dal pivot

✔ Verifica: «Grafico» dal pivot apre il grafico con le etichette del pivot: una per tipo carta.

✔ Verifica: la serie arriva dal pivot anche se e' un campo numerico: la tendina «Serie» dice DecPag. Asse e serie offrono tutti i campi, anche i numerici.

✔ Verifica: il filtro del pivot passa al grafico: Totale 130 come nel pivot (DataDecPag = 1 escluso), e nella barra il bottone «1 esclusi ×».

✔ Verifica: i numeri chiave: Totale, Media, Massimo (con la sua quota), Minimo.

✔ Verifica: un clic su «esclusi ×» toglie il filtro: il Totale torna a tutte le righe (133).

Tipo, impilato, primi N

Barre orizzontali, impilate, primi 5 con Altri

✔ Verifica: i tipi si scelgono con un clic: «Barre» diventa quello attivo.

✔ Verifica: «Impilato» mette le serie una sull'altra.

✔ Verifica: «Primi 5» con «Altri» acceso: cinque etichette piu' una che raccoglie il resto.

Le righe di una barra, il PNG

Il clic su una barra: le righe che la compongono

✔ Verifica: un clic su una barra apre le righe che la compongono.

✔ Verifica: «PNG» scarica l'immagine del grafico.

Ciambella e viste del grafico

Ciambella, e la vista salvata del grafico

✔ Verifica: cambiando tipo le righe della barra di prima si chiudono (valgono per la barra cliccata, non per il grafico nuovo).

✔ Verifica: «Ciambella» toglie la scelta delle serie (una torta ha un solo cerchio di valori).

✔ Verifica: anche il grafico salva le sue viste, accanto a quelle del pivot.

✔ Verifica: la × accanto a una vista la cancella, anche dal browser.

JS4 Griglie e analisi nel client web del legacy SBH

9. Opzioni › «Griglia in XML»

L'export XML del client legacy: la griglia com'e' (tipi, titoli, una <row> per riga con tutti i campi, anche l'id interno), aperta nel visualizzatore dei documenti della sessione in una pagina a tutta larghezza (non un foglio di stampa), da dove si stampa, si scarica o si affianca alle maschere.

L'XML della griglia nel visualizzatore

✔ Verifica: «Griglia in XML» apre nel visualizzatore dei documenti l'XML della griglia, una <row> per riga.

✔ Verifica: l'XML sta in una pagina a tutta larghezza, non in un foglio A4: le righe lunghe scorrono con la pagina.

JS5 Il client web del legacy SBH — menu e maschere


JS5 Il client web del legacy SBH — menu e maschere

1. Il modulo

Il legacy ha un menu per modulo (B20 Amministrazione, B27 Ciclo Attivo, …). In testa al menu, a sinistra, c'e' la barra del modulo: icona, nome, codice e numero di funzioni. Il modulo si cambia in due modi, con gli stessi moduli e la stessa scelta.

La lista a tendina. Un clic sulla barra (ovunque, tranne sui quadratini) o sulla freccia accanto ai quadratini apre, subito sotto la barra e larga quanto il pannello, la lista dei moduli: una riga per modulo con la sua icona, il codice, il nome e il numero di funzioni. Il modulo corrente ha il segno a sinistra, i moduli senza funzioni sono attenuati; un modulo con piu' versioni e' una riga sola, con le funzioni di tutte le versioni. Si usa da tastiera:

Tasto Cosa fa
clic sulla barra, oppure ↓ / ↑ con la barra a fuoco apre la lista, col fuoco sul modulo corrente
↑ ↓ modulo precedente / successivo (la lista scorre per tenerlo in vista)
Home / Fine primo / ultimo modulo
una lettera o piu' lettere di seguito il primo modulo il cui codice o nome comincia cosi' (premuta di nuovo, il successivo)
INVIO (o Spazio), oppure clic sulla riga sceglie il modulo; la lista si chiude e il fuoco torna sulla barra
Esc chiude la lista e torna sulla barra, senza chiedere di uscire dalla sessione
Tab, o un clic fuori chiude la lista

La griglia. I quadratini a destra della barra aprono «Scegli il modulo»: una carta per modulo col numero di funzioni, e una ricerca per codice o descrizione. Si scrive B20 e resta una carta sola. Serve quando i moduli sono tanti e si cerca per parola.

Scegli il modulo, filtrato su B20

✔ Verifica: il dialog mostra una carta per ogni modulo del server (piu' di dieci).

✔ Verifica: scritto B20 nella ricerca restano solo le carte che lo contengono.

✔ Verifica: scelta la carta, in testa al menu c'e' «Amministrazione» con B20 e il numero di funzioni.

✔ Verifica: il piede del menu dice Menu B20 · vers. … · rel. …: e' la versione del file di menu scaricato dal server, quella da citare in una segnalazione.

JS5 Il client web del legacy SBH — menu e maschere

10. Uscire dalla funzione, Preferiti e Recenti nel benvenuto

Esc (o il tasto «Esc Esci» della barra) manda Esci al COBOL: ogni Esci fa risalire il programma di un passo, finche' si chiude e il server torna al menu (lo spec ne preme fino a sei). Cambiando modulo si arriva al benvenuto: utente, modulo, stampante predefinita e, sotto, i Preferiti e i Recenti, con l'icona del tipo di lavoro usato. I Recenti li scrive l'avvio di una voce; i Preferiti la stella.

Il benvenuto con la voce nei Preferiti e nei Recenti

✔ Verifica: dopo gli Esci il server e' di nuovo sul menu (pannello di avvio o benvenuto).

✔ Verifica: dal menu il pulsante Esci dalla sessione e' di nuovo acceso.

✔ Verifica: nel benvenuto di B10 la sezione Preferiti contiene B20 1.1.1.1 Condizioni Pagamento.

✔ Verifica: la sezione Recenti contiene la stessa voce.

JS5 Il client web del legacy SBH — menu e maschere

11. Riaprire un preferito e chiudere la sessione

Un clic su un preferito cambia modulo da solo e riapre il pannello di avvio della voce. Da li' la stella si toglie; l'Esci dalla sessione chiede conferma con una finestra del client, non del browser, perche' chiude la connessione col server.

Il preferito riaperto e la conferma di uscita

✔ Verifica: il clic sul preferito riapre il pannello di «Condizioni Pagamento»…

✔ Verifica: …tornando da solo al modulo Amministrazione (B20).

✔ Verifica: e' scelto «Interrogazione», il tipo di lavoro con cui la voce era stata messa nei Preferiti (la lente nella riga del benvenuto), non il primo tipo della voce.

✔ Verifica: cliccata di nuovo, la stella si spegne (vuota).

✔ Verifica: Esci dalla sessione apre «Chiudere la sessione?» con «La connessione col server SIGEA si chiude. Per rientrare servira' di nuovo il login.»

✔ Verifica: «Chiudi la sessione» porta lo stato a «Chiuso».

Il tipo ricordato vale solo se la voce lo ammette ancora: se nel frattempo il menu del server non lo abilita piu', il pannello torna al predefinito della voce.

JS5 Il client web del legacy SBH — menu e maschere

12. Quello che questa voce non mostra

Due cose richieste a questa guida non si vedono su Condizioni pagamento in interrogazione, e quindi qui non hanno una riga ✔: scriverla senza averla vista sarebbe una verifica finta.

JS5 Il client web del legacy SBH — menu e maschere

2. L'albero del menu e la ricerca

L'albero e' quello del client legacy: ogni voce ha il suo numero accanto (1.1, 1.10, 2.1…), perche' nel gestionale le funzioni si chiamano per numero al telefono. La casella «Cerca nel menu» accetta testo o numero: scritta la parola, l'albero mostra solo i rami che portano a una voce che la contiene, gia' aperti, con la parola evidenziata.

Il menu si usa tutto da tastiera, come l'albero del client legacy. Arrivati sul menu — anche tornando da una funzione — la voce dell'ultima funzione avviata e' gia' scelta, con i rami aperti fino a lei e il fuoco sopra: non serve cliccare. Poi:

Tasto Cosa fa
↑ ↓ voce sopra / sotto fra quelle visibili; su una funzione il pannello di avvio la mostra subito
→ apre il ramo; se e' gia' aperto va alla prima voce dentro
← chiude il ramo; su una voce interna torna al ramo che la contiene
Home Fine prima / ultima voce visibile
Invio su un ramo lo apre o lo chiude; su una funzione la avvia con le scelte del pannello (come il doppio clic)
Spazio sceglie la funzione e porta il fuoco sui tipi di lavoro del pannello
cifre vanno alla voce con quel numero (1 2 di seguito = voce 12), come nel legacy
* apre tutti i rami allo stesso livello

Le lettere restano del pannello di avvio (I M R C E S scelgono il tipo di lavoro), ESC e i tasti funzione restano del programma. Con una funzione aperta il menu e' in consultazione: ci si muove, ma Invio non avvia nulla.

Col mouse vale lo stesso del legacy (SbhMenuView.cpp:2208-2231): un clic su una funzione la sceglie e apre il pannello di avvio; il doppio clic la avvia subito con le scelte che il pannello ha in quel momento (tipo di lavoro proposto o gia' scelto, modalita', ruolo e stampante ricordati), senza passare da Avvia. Se la voce non puo' partire (nessun dispositivo compatibile) resta il pannello, che dice perche'. Il doppio clic su un ramo lo apre o lo chiude; in consultazione non avvia nulla.

✔ Verifica: doppio clic su «1.1.1.1 Condizioni Pagamento» e la funzione parte in Inserimento, Definitiva, sull'uscita predefinita, senza fermarsi sul pannello.

✔ Verifica: tornati al menu da una funzione, senza toccare il mouse, ↓ e ↑ muovono il fuoco a partire dalla voce appena usata.

✔ Verifica: Invio su una funzione la fa partire senza passare dal pulsante Avvia.

L'albero del modulo B20

✔ Verifica: accanto a ogni voce c'e' il suo numero.

✔ Verifica: sopra l'albero c'e' il titolo «Funzioni».

La ricerca «Condizioni»

✔ Verifica: scritto «Condizioni», il titolo diventa «Risultati».

✔ Verifica: la parola e' evidenziata in ogni voce trovata (almeno tre: Tabelle, Stampa, Export).

✔ Verifica: i rami sono aperti fino a «1 Condizioni Pagamento», senza dover cliccare i padri.

JS5 Il client web del legacy SBH — menu e maschere

3. Il pannello di avvio

Nel client legacy una voce si avvia con una finestrella di opzioni; qui la scelta della voce apre al centro il pannello di avvio, che mette in fila le tre decisioni da prendere prima che il server parta: il tipo di lavoro, la modalita', l'uscita. In alto il percorso della voce nel menu, in basso il riepilogo di quello che partira'. Invio o Avvia fanno partire la funzione.

Il pannello di avvio con Interrogazione scelta

✔ Verifica: il percorso in alto e' B20 › 1.1 Parametri base › 1.1.1 Tabelle Generali › 1.1.1.1 Condizioni Pagamento.

✔ Verifica: il titolo e' «Condizioni Pagamento», col numero 1.1.1.1 davanti.

✔ Verifica: i tipi di lavoro sono quattro (Inserimento, Modifica, Interrogazione, Cancellazione), ognuno con la sua lettera (I M R C): sono quelli che la voce abilita, non tutti e sei.

✔ Verifica: sotto «Interrogazione» il suggerimento e' «Consulta i dati», su una riga come le altre carte.

✔ Verifica: all'apertura e' scelto il primo, Inserimento: la voce non dichiara un tipo predefinito (nessuna etichetta «predefinito») e il client fa come il legacy, prende il primo abilitato.

✔ Verifica: in Modalita' non c'e' la scelta Definitiva/Simulata: la voce ammette solo la definitiva, e una scelta con una sola risposta non si mostra…

✔ Verifica: …al suo posto c'e' scritto «Solo definitiva: la funzione aggiorna gli archivi»: la voce lo dichiara nel menu (tipo elaborazione 0, come UpdateTipoElab in SbhMenuView.cpp:1059-1077), il client non lo deduce. Sulle voci che ammettono tutte e due le modalita' la scelta c'e', con la simulata proposta. (La schermata 04 e' di prima: mostra ancora i due pulsanti con «Simulata» spenta.)

✔ Verifica: in Uscita c'e' l'elenco dei dispositivi del server (DUMPR, HOLD, SYSPR, …) col protocollo a destra.

✔ Verifica: e' scelta la stampante predefinita della sessione (SYSPR), con l'etichetta «PREDEFINITA».

✔ Verifica: cliccato «Interrogazione», il riepilogo in basso dice «Interrogazione»…

✔ Verifica: …«Definitiva» e l'uscita (Testo su SYSPR).

Il ruolo (ALL, SYSADMN, SYSADMNA) compare solo quando l'utente ne ha piu' di uno; l'ultimo scelto si ricorda.

JS5 Il client web del legacy SBH — menu e maschere

4. La stella dei Preferiti e il libro del manuale

Accanto al titolo ci sono due icone. La stella mette la voce nei Preferiti: si ricordano nel browser e compaiono nel benvenuto (§10), anche per voci di altri moduli. Il libro apre il manuale in linea della funzione in una finestrella a parte accostata a destra, come la finestra del manuale del client legacy.

La stella accesa e il libro del manuale

✔ Verifica: cliccata la stella, e' piena e colorata (aria-pressed vero).

✔ Verifica: l'icona e' quella della stella piena, non il contorno.

✔ Verifica: il libro punta alla pagina della funzione, non alla home del sito: https://gsdoc.genesyssoftware.eu/page-function/E2001010101000000/1?prodotto=SIGEAdb (https: il sito rimanda li' anche chi chiede http). Si legge cosi': modulo E20 (la B iniziale diventa E), fase 01, poi due cifre per ogni livello del percorso 1.1.1.1 completate a dodici (010101010000), e il prodotto dal livello SIGEA che il server dichiara al login (5… = SIGEAdb). Lo spec controlla l'indirizzo senza aprire il sito.

JS5 Il client web del legacy SBH — menu e maschere

5. La maschera a video

Avvia: il server manda la maschera e il client la disegna come il legacy, a colonne e righe di caratteri. Il menu si ritira in un pulsante «Menu» nella barra in basso, per lasciare lo spazio alla maschera. Il campo in input — quello che il COBOL sta aspettando — ha il bordo colorato e il focus; gli altri sono grigi e non si possono toccare, perche' nel legacy si scrive solo dove il programma chiede. I tasti funzione validi per quel campo stanno nella barra dei comandi in alto (accesi quelli ammessi): cambiano a ogni campo, perche' li dichiara il COBOL campo per campo.

La barra in basso dice che funzione sta girando: il tipo di lavoro (con la sua icona), Definitivo o Simulato (il simulato su fondo arancione, per non scambiarlo), la stampante con cui la funzione e' partita (nome e tipo, per esempio PDF01 PDF; se il programma la cambia con la finestra «Scegli la stampante», la barra si aggiorna) e il ruolo, se c'e'. Sono le scelte fatte nel pannello di avvio: restano anche dopo una ricarica della pagina. Sul menu gli indicatori non ci sono: le scelte correnti le mostra il pannello di avvio. Se la barra e' stretta (tante schede, finestra piccola, schermo diviso) gli indicatori si raccolgono in un pulsante compatto (l'icona del tipo di lavoro, SIM se simulato): il clic apre verso l'alto un pannello con tutti i dettagli.

F7 sul campo in input mostra la mini-guida come il client legacy: form, maschera, campo, i tasti ammessi e il trigger del campo, con il codice della barra di stato di SBH (per esempio -N0702 BEA31: segno, numerico, cifre e decimali, poi le lettere dei tasti). Resta accesa e segue il campo mentre ci si sposta; F7 di nuovo la spegne. Non manda niente al server: nel legacy F7 non e' un tasto del COBOL. La stessa scheda, per qualunque item, si apre con Maiusc + clic destro.

La maschera di Condizioni pagamento

✔ Verifica: il campo «Codice pagamento» ha il focus appena la maschera arriva.

✔ Verifica: ha il bordo del campo in input…

✔ Verifica: …e gli altri campi (per esempio «Convalida») no.

✔ Verifica: la barra in basso dice la modalita' della funzione in corso (Definitivo o Simulato).

✔ Verifica: F7 sul campo apre la mini-guida con il form 20000FTB2…

✔ Verifica: …e i tasti del campo, fra cui Esc Esci.

✔ Verifica: F7 di nuovo la spegne.

✔ Verifica: sotto la testata la griglia delle condizioni e' piena (1 CONTANTI, 2 RIMESSA DIRETTA, …), con la matita di riga.

✔ Verifica: il menu e' ridotto al pulsante «Menu» nella barra.

✔ Verifica: il pulsante di spegnimento (Esci dalla sessione) e' spento: dentro una funzione non si esce, si troncherebbe il programma a meta'.

Esc in una maschera non chiude una finestra del browser: e' il tasto Esci del COBOL, e lo manda al server. Per questo i dialog del client (guida, ricerca) si chiudono con la X.

JS5 Il client web del legacy SBH — menu e maschere

6. F10 — la guida del campo

Un campo con la guida ha un piccolo angolo colorato in basso a destra. F10 apre la guida: titolo del campo, testo di help e, se ci sono, i valori ammessi da scegliere. Il testo arriva dai file di help che il client ha gia' scaricato, quindi aprire e chiudere la guida non manda niente al server.

La guida di «Codice pagamento»

✔ Verifica: il campo «Codice pagamento» ha l'angolo della guida.

✔ Verifica: F10 apre il dialog con il titolo «Codice pagamento».

✔ Verifica: il testo e' l'help del campo: «I codici a partire dal 99.900 sono riservati GENESYS…».

✔ Verifica: la X chiude la guida.

✔ Verifica: chiusa la guida senza scegliere, il cursore torna sul campo «Codice pagamento», come nel legacy: si riprende a scrivere senza cliccare.

✔ Verifica: il campo resta com'era, vuoto e ancora in input.

JS5 Il client web del legacy SBH — menu e maschere

7. F8 — la ricerca

F8 sul codice chiede al COBOL la sua ricerca: il server risponde con una FIND-GRID e il client la apre come finestra di ricerca. Il server manda le righe una pagina alla volta (qui dieci); la casella in alto filtra solo le righe gia' arrivate, perche' il filtro vero l'ha gia' fatto il COBOL col valore del campo.

Mentre carica

Finche' il server manda le righe la finestra e' aperta ma vuota, con lo spinner: si capisce che il tasto e' stato preso e che si sta aspettando il server, non il client. Per fotografarlo lo spec trattiene per un momento le risposte del server sul WebSocket (non le altera, le ritarda).

La finestra di ricerca mentre carica

✔ Verifica: al centro c'e' lo spinner con «Ricerca in corso…».

✔ Verifica: «Conferma selezione» e' spento finche' le righe non ci sono.

La prima pagina

La prima pagina della ricerca

✔ Verifica: arrivate le righe, in basso a sinistra c'e' «10 righe caricate».

✔ Verifica: «Altre righe» e' acceso: il server ha detto che ce ne sono altre.

✔ Verifica: in fondo alla griglia non c'e' scritto «fine elenco»: il conteggio lo da' solo il piede della finestra, perche' la griglia non sa quante pagine ha ancora il server.

Altre righe

«Altre righe» (o Pag. giu') chiede la pagina successiva. Le righe gia' caricate restano a video, ferme e sbiadite, con lo spinner sopra: non si perde il punto in cui si era.

Altre righe: la griglia ferma sotto lo spinner

✔ Verifica: sopra le righe ferme c'e' lo spinner con «Carico altre righe…».

✔ Verifica: arrivata la pagina, il conteggio dice «20 righe caricate»: la seconda pagina si accoda.

La scelta torna al COBOL

Dopo «Altre righe» la selezione va sulla prima riga nuova (103): una freccia giu' la porta sulla 104, Invio conferma. La scelta torna al COBOL come risposta alla ricerca, e il programma continua da solo: legge la condizione e porta il cursore al campo successivo.

La testata di 104 R.D. 45 GG

✔ Verifica: il codice scelto (104) e' nel campo «Codice pagamento».

✔ Verifica: il COBOL ha caricato la testata e il campo in input ora e' «Convalida».

✔ Verifica: accanto ai codici compaiono le descrizioni in blu («Dalla data della fattura», «Non attiva», «Normale»): il client le prende dalla guida del campo, senza chiederle al server.

✔ Verifica: la barra dei tasti e' cambiata in F4 F12 Conferma Esc Esci, quelli del nuovo campo.

JS5 Il client web del legacy SBH — menu e maschere

8. Opzioni › Carattere di maschere e griglie

Le maschere del legacy sono pensate per 80 colonne: su uno schermo grande possono essere piccole. Il pulsante con le tre righe in basso a sinistra apre le Opzioni; «Carattere di maschere e griglie» ha tre pulsanti, − A +. Il carattere scala tutta la maschera (campi, righe, testi) e la griglia, e si ricorda nel browser per le sessioni successive. «A» torna alla misura normale.

Carattere al 120%: la maschera e la griglia si allargano

✔ Verifica: all'apertura l'opzione dice «100%».

✔ Verifica: due clic su + e dice «120%».

✔ Verifica: il campo «Codice pagamento» e' piu' largo di prima.

✔ Verifica: anche le righe della griglia sono piu' alte.

✔ Verifica: «A» riporta il campo esattamente alla larghezza di partenza.

JS5 Il client web del legacy SBH — menu e maschere

9. Il menu in consultazione durante la funzione

Con una funzione aperta il menu non sparisce: il pulsante «Menu» nella barra lo riapre sopra la maschera, per guardare dove si e' o cercare la prossima voce. Non si puo' pero' avviare niente: il server sta eseguendo un programma e il legacy ne esegue uno per volta per sessione.

Il menu aperto sopra la funzione

✔ Verifica: in testa al menu c'e' l'avviso «Funzione in corso: menu in consultazione».

✔ Verifica: le voci sono spente (grigie, non avviabili).

✔ Verifica: un secondo clic su «Menu» lo richiude.