Externes Interface
Dieses Feature ist nur ab Library-Version VERSION_NEXT und bei Verwendung des MultiTableReact verfügbar.
Das Objekt externalInterface vom Type
MultiTableExternalInterface
ermöglicht es, den State des MultiTable innehalb von Callback-Funktionen zu
verändern.
Folgenden Callbacks wird das externalInterface übergeben:
- Jede Spalte:
change - Button-Spalte:
click - TableMonitor-Button:
click
Beispiel Invoice: Nur Positionen ohne genauen DB-Match anzeigen
Im Skript ou.spc.ptpINV.settings.monitorRMB gibt es einen Button, der eine
Eigenschaft an oder ausschaltet, um nur Positionen ohne genauen DB-Match
oder alle Positionen anzuzeigen. Dazu sind drei Bestandteile notwendig:
State-Variable
Zum einen eine Eigenschaft
monitorOptions.additionalParams.onlyShowUnmatchedPositions, die als
State-Variable fungiert.
const monitorOptions = {
(...)
additionalParams: {
(...)
onlyShowUnmatchedPositions: false
(...)
}
(..)
};
Das Objekt additionalParams ist dafür gedacht, alle möglichen zusätzlichen
Variablen zu beinhalten, die nicht direkt Teil der MultiTable-Optionen sind.
Zeilen-Filter
Des Weiteren wird eine Callback-Funktion monitorOptions.rowFilter definiert,
die abhängig von der State-Variable onlyShowUnmatchedPositions entweder alle
Positionen oder nur die Positionen ohne genauen DB-Match zurückgibt.
rowFilter: (options) => {
const additionalParams = options.table.additionalParams;
const { onlyShowUnmatchedPositions } = additionalParams;
const matchResult: string = options.row.itemMatchesDatabase;
return onlyShowUnmatchedPositions ? matchResult !== "FullMatch" : true;
},
Das Object options.table beinhaltet die gesamten MultiTable-Optionen.
Button mit Callback
Zuletzt wird der Button monitorOptions.buttons.toggleShowUnmatchedPositions
definiert:
toggleShowUnmatchedPositions: {
label: "de:Unvollständige Positionen anzeigen;en:Show unmatched positions",
icon: "mdi mdi-filter",
onlyShowIcon: true,
tooltip:
"de:Nur Positionen ohne vollst ändigen Datenbankabgleich anzeigen;en:Show only positions without complete database match",
click: ({ externalInterface }) => {
const additionalParams = externalInterface.options.additionalParams;
externalInterface.updateOptions({
additionalParams: {
...additionalParams,
onlyShowUnmatchedPositions: !additionalParams.onlyShowUnmatchedPositions,
},
});
},
},
Hier wird die Funktion externalInterface.updateOptions verwendet, um die
State-Variable onlyShowUnmatchedPositions zu toggeln. Dadurch wird die
Callback-Funktion rowFilter automatisch mit den neuen Optionen aufgerufen und
die Tabelle entsprechend gefiltert.
Best Practice: Wichtig ist hierbei, dass das Objekt additionalParams, das die State-Variable
beinhaltet, als neues Objekt übergeben werden muss (daher der Spread-Operator
...additionalParams), dass React die Änderung erkennt und die Komponente neu
rendert.