Composables
useFasiMetrics
Composable per metriche di avanzamento e stallo della pipeline.
Panoramica
useFasiMetrics carica le metriche aggregate dalla pipeline: avanzamento per stato e schede in stallo. È usato da KanbanFasiBoard per alimentare FaseProgressBar e FaseStalloIndicator.
Inizializzazione
import { useFasiMetrics } from '@pzeta/vue-kanban'
const metrics = useFasiMetrics(boardId)
Stato reattivo
| Proprietà | Tipo | Descrizione |
|---|---|---|
avanzamento | Ref<FaseAvanzamento[]> | Dati da v_fasi_avanzamento |
stalli | Ref<SchedaStallo[]> | Schede in stallo da v_stalli_pipeline |
loading | Ref<boolean> | Caricamento in corso |
Metodi
// Carica avanzamento: distribuzione stati per fase
await metrics.loadAvanzamento()
// GET /v_fasi_avanzamento?idboard=eq.{id} (schema fasi)
// Carica stalli: schede oltre il giornistallo della loro fase
await metrics.loadStalli()
// GET /v_stalli_pipeline?idboard=eq.{id} (schema fasi)
FaseAvanzamento
interface FaseAvanzamento {
idfase: number
codstatoscheda: CodStatoScheda
nschede: number
percentuale: number
}
v_fasi_avanzamento restituisce una riga per ogni combinazione fase×stato con schede presenti.
SchedaStallo
interface SchedaStallo {
idscheda: number
idfase: number
titolo: string
giorni_infase: number
giorni_oltre: number // giorni_infase - giornistallo della fase
giornistallo: number // limite configurato sulla fase
nome_fase: string
}
Utilizzo manuale
KanbanFasiBoard chiama loadAvanzamento e loadStalli al mount in parallelo con gli altri caricamenti. Per refresh su richiesta:
// Dopo un aggiornamento importante
await Promise.all([metrics.loadAvanzamento(), metrics.loadStalli()])
Calcolo max giorni stallo per fase
KanbanFasiBoard calcola il massimo giorni_oltre per fase tramite computed:
const maxGiorniOltrePerFase = computed(() => {
const map = new Map<number, number>()
for (const s of metrics.stalli.value) {
const current = map.get(s.idfase) ?? 0
if (s.giorni_oltre > current) map.set(s.idfase, s.giorni_oltre)
}
return map
})
Questo valore viene passato a FaseHeader come giorniOltreMassimo.