Composables

useBoardMetadata

Composable di basso livello per i metadati di una board — board, stati/colonne, priorità, tag, campi dinamici. Usato internamente da useBoardService.

Panoramica

useBoardMetadata gestisce il caricamento dei metadati di una board: la board stessa, gli stati (colonne), priorità, tag e campi dinamici. Tutta l'I/O è delegata a un KanbanDataSource.

È usato internamente da useBoardService. Usalo direttamente quando vuoi accesso fine-grained ai metadati senza il CRUD delle schede (es. una toolbar di filtri che mostra priorità/tag).

Firma

function useBoardMetadata(
  boardIdOrCode: number | string,
  dataSource: KanbanDataSource<Board, BoardStato, unknown, BoardPriorita, BoardTag, BoardCampoRow>
): {
  board: Ref<Board | null>
  stati: Ref<BoardStato[]>
  priorita: Ref<BoardPriorita[]>
  tags: Ref<BoardTag[]>
  origini: Ref<BoardOrigine[]>
  visibilita: Ref<BoardVisibilita[]>
  campi: Ref<BoardCampoRow[]>
  loading: Ref<boolean>
  error: Ref<string | null>
  idboard: Ref<number | null>

  initializeBoard: () => Promise<void>
  loadStati: () => Promise<void>
  loadPriorita: () => Promise<void>
  loadTags: () => Promise<void>
  loadCampi: () => Promise<void>
}
Diversamente da useBoardService, questo composable richiede esplicitamente il dataSource come secondo argomento. Non ha defaults: non istanzia PostgRESTDataSource automaticamente.

Esempio: con datasource esplicito

import { useBoardMetadata, PostgRESTDataSource, usePostgRESTClient } from '@pzeta/vue-kanban'

const dataSource = new PostgRESTDataSource({ client: usePostgRESTClient() })
const meta = useBoardMetadata('TICKET', dataSource)

// Carica board (estrae idboard da codboard stringa)
await meta.initializeBoard()

// Carica solo ciò che serve
await Promise.all([meta.loadStati(), meta.loadPriorita()])

const colonne = meta.stati.value

Metodi

MetodoDescrizione
initializeBoard()Carica board e popola idboard (risolve codboard string → ID numerico)
loadStati()Carica stati (richiede idboard valorizzato)
loadPriorita()Carica priorita se il datasource implementa loadPriorities
loadTags()Carica tags se il datasource implementa loadTags
loadCampi()Carica campi se il datasource implementa loadFields

I metodi su capability opzionali (loadPriorities/loadTags/loadFields del datasource) escono silenziosamente se il metodo non è implementato sul datasource.

Stato reattivo

ProprietàTipoDescrizione
boardRef<Board | null>Metadati board corrente
statiRef<BoardStato[]>Stati / colonne
prioritaRef<BoardPriorita[]>Priorità disponibili
tagsRef<BoardTag[]>Tag
originiRef<BoardOrigine[]>Origini lookup (vuoto se non popolato)
visibilitaRef<BoardVisibilita[]>Visibilità lookup (vuoto se non popolato)
campiRef<BoardCampoRow[]>Campi dinamici
loadingRef<boolean>Caricamento
errorRef<string | null>Errore
idboardRef<number | null>ID numerico risolto (popolato da initializeBoard)

Note

  • Se cerchi una facade che combina metadati + CRUD schede + opzione dataSource con default PostgREST, usa useBoardService.
  • initializeBoard setta error.value = 'Board non trovata' quando il datasource ritorna null.
  • loadPriorita/loadTags/loadCampi non lanciano errore se i metodi corrispondenti non sono implementati sul datasource (capability check via if (dataSource.loadX)).