t×tecexpressby TeKOcloud
ENv0.7.1
API & Datentypen / VUE

TxDataSource.

Beobachtbare Datenquelle mit Abfragezustand und asynchronem Laden. Schreiboperationen laden anschließend neu; der Eigentümer entsorgt die Instanz.

Standardkonfiguration: pageSize 20, pageIndex 0, paginate true; ArrayStore lokal, andere Stores entfernt. Der Vue-Arraykurzaufruf behält Paging bei; Dart TxDataSource.array verwendet paginate false. items startet leer; load() ist erforderlich, sofern kein gebundener Konsument initial lädt. Ungültiges Paging wird abgelehnt. Store und Schlüssel durch eine neue Instanz ersetzen. configure liefert Promise/Future der neu geladenen Liste. byKey liefert Promise/Future des Datensatzes oder undefined/null; insert/update liefern den geschriebenen Datensatz, remove keinen Wert. Vue push liefert die neue Liste, Dart push keinen Wert. cancel/dispose liefern keinen Wert. Lade-/Schreibfehler stehen zusätzlich in error. Bei Stores ohne optionale Operation wirft Vue Error, Dart UnsupportedError. Nach dispose schlägt load fehl.

ts
new TxDataSource<T>(config: TxDataSourceConfig<T> | T[]): TxDataSource<T>
MitgliedTyp / RückgabeVerhalten
storeTxStore<T>Datenbestand oder eigener Store-Vertrag.
keyTxSelector<T>Stabiler Schlüssel beziehungsweise Selector; nicht mit Widget-Key verwechseln.
itemsT[]Einträge; bei Datenbindung durch dataSource ersetzt.
groupsTxGroup<T>[] | undefinedGruppenhierarchie des Ergebnisses.
totalCountnumberGesamtanzahl gefilterter Datensätze vor Paging.
groupCountnumber | undefinedAnzahl oberster Gruppen vor Paging.
loadingbooleanZeigt den Ladezustand.
errorunknownLetzter Lade-/Schreibfehler.
loadedbooleanMindestens ein Ladevorgang war erfolgreich.
configTxDataSourceConfig<T>Konfiguration der Instanz.
containsKey(key: TxKey) => boolean | undefinedLiefert false für bekannte Löschungen, beim ArrayStore einen Wahrheitswert, sonst undefined/null.
subscribe(listener: () => void) => () => voidRegistriert einen Änderungslistener und liefert eine Abmeldefunktion.
pendingLoadPromise<T[]> | undefinedPromise des zuletzt gestarteten Ladevorgangs.
load() => Promise<T[]>Lädt mit den angegebenen Optionen; bei DataSource ohne Argumente mit aktuellem Abfragezustand. Fehler werden weitergegeben.
reload() => Promise<T[]>Lädt den aktuellen Abfragezustand erneut und liefert die sichtbaren Datensätze.
configure(changes: Partial<TxDataSourceConfig<T>>) => Promise<T[]>Ändert Abfrageoptionen und lädt neu. Suche, Filter und Seitengröße setzen die Seite zurück, sofern nicht ausdrücklich angegeben.
cancel() => voidSynchron auf true setzen, um die Aktion abzubrechen.
byKey(key: TxKey) => Promise<Awaited<T> | undefined>Liest einen Datensatz anhand seines Schlüssels; fehlende Schlüssel ergeben undefined (Vue) beziehungsweise null (Dart).
insert(item: T) => Promise<T>Fügt einen Datensatz mit eindeutigem Schlüssel ein und liefert ihn zurück.
update(key: TxKey, changes: Partial<T>) => Promise<T>Aktualisiert eine Meldung beziehungsweise einen Datensatz.
remove(key: TxKey) => Promise<void>Löscht den Datensatz beziehungsweise rekursiv den Datei-/Ordnerbestand.
push(changes: TxPush<T>[]) => Promise<T[]>Führt Store-Schreiboperationen nacheinander aus und lädt einmal neu; keine Transaktion, Teilerfolg bei Fehler möglich.
dispose() => voidBeendet Abfragen und Listener; danach die Instanz nicht mehr verwenden.
ts
import { TxDataSource } from '@tekocloud.de/tecexpress'
const source = new TxDataSource({ store: [{ id: 1, text: 'One' }], key: 'id', pageSize: 10 })
const unsubscribe = source.subscribe(() => console.log(source.loading, source.error))
await source.load()
await source.configure({ searchExpr: ['text'], searchValue: 'One' })
console.log(await source.byKey(1), source.containsKey(1))
await source.insert({ id: 2, text: 'Two' })
await source.update(2, { text: 'Updated' })
await source.push([{ type: 'update', key: 2, data: { text: 'Changed' } }])
await source.remove(2)
await source.reload()
source.cancel()
unsubscribe()
source.dispose()