Componenti

SpreadsheetVersioniPanel

Drawer dello storico versioni. Lista revisioni ordinate desc, dettagli autore/data, azione di ripristino.

Scopo

Drawer/pannello laterale che mostra lo storico versioni del foglio aperto e consente all'utente di ripristinare una versione precedente.

Aperto via toolbar (@openVersioni di SpreadsheetToolbar) e gestito da useSpreadsheetVersioni.

Props (interfaccia tipica)

PropTipoDescrizione
versioniFoglioVersioneSummary[]Lista versioni ordinate per numerorevisione desc
isLoadingbooleanCaricamento storico
isRipristinandobooleanRipristino in corso
revisioneCorrentenumber | nullRevisione attualmente caricata nell'editor (per highlight)

Eventi

EventoPayloadQuando
ripristinanumber (idversione)Click su "Ripristina questa versione"
closeChiusura drawer

Modello FoglioVersioneSummary

interface FoglioVersioneSummary {
  idversione: number
  idfolio: number
  numerorevisione: number       // monotono crescente
  idautore: number
  datacreazione: string         // ISO 8601
}

Nota: il summary non contiene lo snapshot (per evitare di scaricare JSONB potenzialmente enormi). Lo snapshot viene caricato solo al momento del ripristino tramite RPC ripristina_versione_foglio.

Comportamento ripristino

Click "Ripristina rev. 17"
  ├─ versioni.ripristina(idversione)
  │   └─ FogliPostgrestService.ripristinaVersione(idversione)
  │       └─ POST /rpc/ripristina_versione_foglio
  │           ├─ DB clona snapshot rev.17 come rev.18 (nuova versione corrente)
  │           └─ Ritorna nuovo idversione/numerorevisione
  ├─ versioni.load(idfolio) — refresh storico
  └─ Editor ricarica il foglio (parent: SpreadsheetEditor.handleRipristina)
      └─ Toast "Versione ripristinata"
Il ripristino non distrugge le versioni intermedie: la rev. 17 viene clonata come nuova rev. 18. Lo storico resta intatto e auditabile.

Layout suggerito

┌────────────────────────────────────┐
│ Storico versioni                ✕  │
├────────────────────────────────────┤
│                                    │
│  Rev. 17 · ATTUALE                 │
│  03/05/2026 14:32 · marco          │
│                                    │
│  Rev. 16                           │
│  03/05/2026 09:15 · giulia         │
│  [↩ Ripristina]                    │
│                                    │
│  Rev. 15                           │
│  02/05/2026 18:40 · marco          │
│  [↩ Ripristina]                    │
│                                    │
│  ... (max maxVersioni = 10)        │
└────────────────────────────────────┘

Configurazione maxVersioni

Il numero massimo di versioni mantenute è impostato in PzetaFogliDiCalcoloOptions.maxVersioni (default 10). Versioni più vecchie possono essere ruotate/eliminate dal DB tramite trigger lato server.

Stato vuoto

Se il foglio è appena stato creato e non ha ancora versioni, mostra messaggio "Nessuna versione disponibile. Salva il foglio per crearne una.".

Permessi

Anche con permessoEffettivo === 'lettura', il pannello mostra lo storico. Il pulsante "Ripristina" è però disabilitato (richiede 'scrittura' o 'proprietario').

Tipi correlati