API
Clientskript Funktionen
Am Client existiert eine Funktion zum Laden des TableDialogs. Die Funktion ist Bestandteil der tableresultFactory.js .
showTableDialog
showTableDialog(options: TableDialogOptions)
| Parameter | Typ | Beschreibung |
|---|---|---|
| options | TableDialogOptions | Ein Objekt welches die Optionen des Dialogs enthält. Siehe Optionen |
documents.sdk.exitRegistry.registerFileFieldExitCallback("ouspDemo", "mappenFeld", function(documentsContext, options) {
showTableDialog({
title: "Beispieldatensätze",
rows: [{
id: "1",
name: "name1"
},
{
id: "2",
name: "name2"
},
{
id: "3",
name: "name3"
}
]
})
})
Portalskript Funktionen
constructor
new TableDialog(options: TableDialogOptions): TableDialog
| Parameter | Typ | Beschreibung |
|---|---|---|
| options | TableDialogOptions | Ein Objekt welches die Optionen zum Steuern des Dialogs enthält. Siehe Optionen |
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
const tableDialog = new TableDialog({
title: "Beispieldatensätze",
rows: [{
id: "1",
name: "name1"
},
{
id: "2",
name: "name2"
},
{
id: "3",
name: "name3"
}
]
})
context.returnValue = tableDialog.transfer();
Erweitertes Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
/**
* (Fortgeschritten) Übersteuerung der Eigenschaften und Daten zurück geben
*/
const tableDialog = new TableDialog({
filter: "test1234",
select: true,
sortBy: 1,
sortAscending: false,
emptyMessage: "Nope",
multiSelect: true,
multiSelectBehavior: "filter",
pageSizes: [5, 10],
currentPage: 2,
pageSize: 2,
rows: [{
id: "1",
name: "name1"
},
{
id: "2",
name: "name2"
},
{
id: "3",
name: "name3"
},
]
});
context.returnValue = tableDialog.transfer();
Statische Funktionen
from
TableDialog.from(rows: Object[]): TableDialog
Erstellt eine TableDialog Instanz anhand einem Array
| Parameter | Typ | Beschreibung |
|---|---|---|
| rows | Object[] | Die Einträge zum Anzeigen als Array |
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
const tableDialog = TableDialog.from([{
id: "1",
name: "name1"
},
{
id: "2",
name: "name2"
},
{
id: "3",
name: "name3"
}
]);
context.returnValue = tableDialog.transfer();
fromFileResultset
TableDialog.fromFileResultset(fileResultset: FileResultset, fields?: string[]): TableDialog
Erstellt eine TableDialog Instanz anhand eines FileResultsets.
| Parameter | Typ | Beschreibung |
|---|---|---|
| fileResultset | FileResultset | Eine documents FileResultset Instanz |
| fields | string[] | (Optional) Eine Auswahl der Mappenfelder welche angezeigt werden soll. |
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
const fileResultset = new FileResultset("ouspPostman_Documents")
const fields = ["mailSender", "mailDate"]
const tableDialog = TableDialog.fromFileResultset(fileResultset, fields);
context.returnValue = tableDialog.transfer();
fromHitResultset
TableDialog.fromHitResultset(hitResultset: HitResultset): TableDialog
Erstellt eine TableDialog Instanz anhand eines HitResultsets.
| Parameter | Typ | Beschreibung |
|---|---|---|
| hitResultset | HitResultset | Eine documents HitResultset Instanz |
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
const hitResultset = new HitResultset("ouspPostman_Documents")
const tableDialog = TableDialog.fromHitResultset(hitResultset);
context.returnValue = tableDialog.transfer();
fromDatabase
TableDialog.fromDatabase(database: Database, query: QueryBuilder): TableDialog
Erstellt eine TableDialog Instanz anhand einer Datenbank-Abfrage.
| Parameter | Typ | Beschreibung |
|---|---|---|
| database | Database | Eine OUSP Datenbank Instanz |
| query | QueryBuilder | Eine OUSP QueryBuilder Instanz mit der Abfrage |
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
const args = TableDialog.getParams()
const db = new DBConnection("odbc", "invoicecontroldb", "user", "pwd")
const database = new Database(db)
const query = QueryBuilder
.from("vendor")
.select(["vendorid", "vendorname1", "vendorstreet", "vendorzipcode", "vendorcity", "vendorcountrycode"])
.orderBy("vendorId")
.where("vendorid LIKE '" + args.searchValue + "%' OR vendorname1 LIKE '%" + args.searchValue + "%'")
query.top = 1000
const tableDialog = TableDialog.fromDatabase(database, query)
// Spaltendefinition mit Mapping
tableDialog.options.columns = {
vendorid: {
label: "Nr",
field: "vendorId"
},
vendorname1: {
label: "Name",
field: "vendorName"
},
vendorstreet: {
label: "Strasse",
field: "vendorStreet"
},
vendorzipcode: {
label: "PLZ",
field: "vendorZipCode"
},
vendorcity: {
label: "Ort",
field: "vendorCity"
},
vendorcountrycode: {
label: "Land",
field: ""
}
}
context.returnValue = tableDialog.transfer();
Ein Aufruf der close() Funktion der Datenbank muss nicht mehr ausgeführt werden.
fromLegacy
TableDialog.fromLegacy(config: TableResultDialogConfiguration, dbUser: string, dbPassword: string): TableDialog
Kompatiblität für altes TableResultDialog
| Parameter | Typ | Beschreibung |
|---|---|---|
| config | TableResultDialogConfiguration | TableResultDialog Konfiguration |
| dbUser | string | Datenbank-User |
| dbPassword | string | Datenbank-Passwort |
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
/**
* Daten anhand des alten User-Exits zurückgeben.
* Achtung es werden nur folgende Werte verwendet:
* - labels
* - fields
* - columns
* - db
* - table
* - where
* - orderBy
* - maxCountToDisplay
* - multiSelect
*/
// Initial Config
var config = {
// WICHTIG: Labels, Felder, Columns müssen in der gleichen Reihenfolge sein
// Je nach dem, welches Feld in der Tabelle nicht angezeigt/in der Mappe nicht gefüllt werden soll,
// muss dieses bei labels oder fields leer gelassen werden ("")
labels: ["Kundennummer", "Kundenname"], // Spalten in Html Tabelle
fields: ["Kundennummer", "Kundenname"], // Felder in Documents
columns: ["Kundennummer", "Kundenname"], // Spalten in DB
// SQL Abfrage
db: "easy",
table: "tblKunden",
where: "Kundennummer LIKE '%" + searchValue + "%'",
orderBy: "Kundenname ASC",
// Maximale Treffer die geladen werden, darüber
maxCountToDisplay: 400,
rowsPerPage: 10, // [optional] Default 10
title: "Kunde auswählen", // Titel des Fensters
width: 1200, // Breite des Dialogs
height: 800, // Höhe des Dialogs
// Zusätzliche Einstellungen
// Art der Auswahl beim UserExit. WICHTIG: Beim onSuccessCallback muss hier anders reagiert werden!
multiSelect: false, // [optional] Default false
emptyResult: { // [optional] Verhalten bei leerem Ergebnis
message: "", // Bei leerem Ergebnis, Meldung als Dialog anzeigen
hideTable: false, // Bestimmt ob die leere Tabelle angezeigt werden soll (message: "" erforderlich)
where: "" // Abweichende where-Bedingung falls das erste Ergebnis leer ist (message: "" erforderlich)
}
}
context.returnValue = TableDialog.fromLegacy(config, "dbUser", "dbPassword").transfer();
show
TableDialog.show(config: TableDialogOptions): string
Erstellt eine TableDialog Instanz und öffnet den Dialog.
| Parameter | Typ | Beschreibung |
|---|---|---|
| options | TableDialogOptions | Ein Objekt welches die Optionen zum Steuern des Dialogs enthält. Siehe Optionen |
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
context.returnValue = TableDialog.show({
title: "Test",
rows: [{
id: "1",
name: "name1"
},
{
id: "2",
name: "name2"
},
{
id: "3",
name: "name3"
},
]
});
getParams
TableDialog.getParams(): Object
Ließt die Parameter aus, welche vom Client aus geschickt wurden. Siehe auch params Option.
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
const args = TableDialog.getParams()
Instanz Funktionen
transfer
transfer(): string
Gibt die Daten an den vorhandenen TableDialog am Client zurück. Diese Funktion wird typischerweise in dem Portalskript verwendet, welches am Client unter script deklariert ist und dafür zuständig ist Daten zurück zugeben.
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
const fileResultset = new FileResultset("ptpInvoice", "vendorName ~ 'Firma'");
const fields = ["vendorId", "vendorName"];
const tableDialog = TableDialog.fromFileResultset(fileResultset, fields);
context.returnValue = tableDialog.transfer();
show
show(): string
Zeigt am Client einen neuen TableDialog an. Hierbei wird der returnType auf clientScript geändert.
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
const fileResultset = new FileResultset("ptpInvoice", "vendorName ~ 'Firma'")
const fields = ["vendorId", "vendorName"]
const tableDialog = TableDialog.fromFileResultset(fileResultset, fields)
context.returnValue = tableDialog.show();
Extensions
saveAsXlsx
saveAsXlsx(filePath: string): void
Speichert die TableDialog Instanz als Xlsx Datei an dem angegeben Pfad ab.
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
const tableDialog = new TableDialog({
title: "Beispieldatensätze",
rows: [{
id: "1",
name: "name1"
},
{
id: "2",
name: "name2"
},
{
id: "3",
name: "name3"
}
]
})
try {
tableDialog.saveAsXlsx("D:\\tmp\\gadget.xlsx")
context.returnValue = tableDialog.show();
} catch (error) {
context.errorMessage = error;
context.returnValue = false;
}
downloadAsXlsx
MultiTable.downloadAsXlsx(options: MultiTableXlsxExportOptions, filePath: string): string
Speichert die Excel Datei auf dem Dateisystem und startet den Download am Client.
Beispiel:
context.enableModules();
const { TableDialog } = require("ou.sp.gadget.TableDialog");
const tableDialog = new TableDialog({
title: "Beispieldatensätze",
rows: [{
id: "1",
name: "name1"
},
{
id: "2",
name: "name2"
},
{
id: "3",
name: "name3"
}
]
})
try {
context.returnValue = tableDialog.downloadAsXlsx(util.getTmpPath() + "multiTable.xlsx");
} catch (error) {
context.errorMessage = error;
context.returnValue = false;
}