Datenquellen

Custom-List-Funktionen (Lua)

Zusätzlich zum Definieren von Spalten und zum Abrufen von Daten kann eine CustomListBase auch aufrufbare Funktionen definieren, die direkt aus den Lua-Skripten des Peakboard Designers ausgeführt werden. Diese Funktionen ermöglichen Berechnungen, Transformationen oder Aktionen im laufenden Betrieb (z.B. das Senden von Daten an eine API oder das Durchführen von Berechnungen), die innerhalb einer Peakboard-Visualisierung ausgelöst werden.

Eine Funktion definieren

Funktionen werden innerhalb der Methode GetDefinitionOverride der CustomListBase-Klasse deklariert. Jede Funktion ist ein CustomListFunctionDefinition, das der Collection Functions der zurückgegebenen CustomListDefinition hinzugefügt wird. Eine Funktionsdefinition beschreibt ihren Namen (so wie er aus Lua aufgerufen wird), ihre Eingabeparameter und ihre Rückgabeparameter:

using Peakboard.ExtensionKit;

namespace CalcDemo;

[Serializable]
class CalcDemoCustomList : CustomListBase
{
    protected override CustomListDefinition GetDefinitionOverride()
    {
        return new CustomListDefinition
        {
            ID = "CalcDemoList",
            Name = "Calculation demo",
            PropertyInputPossible = false,
            Functions =
            {
                new CustomListFunctionDefinition()
                {
                    Name = "calc",
                    Description = "Performs basic arithmetic operations on two numbers.",
                    InputParameters = new CustomListFunctionInputParameterDefinitionCollection
                    {
                        new CustomListFunctionInputParameterDefinition
                        {
                            Name = "a",
                            Description = "The first numeric operand.",
                            Optional = false,
                            Type = CustomListFunctionParameterTypes.Number
                        },
                        new CustomListFunctionInputParameterDefinition
                        {
                            Name = "b",
                            Description = "The second numeric operand.",
                            Optional = false,
                            Type = CustomListFunctionParameterTypes.Number
                        },
                        new CustomListFunctionInputParameterDefinition
                        {
                            Name = "op",
                            Description = "Arithmetic operator (+, -, *, /).",
                            Optional = false,
                            Type = CustomListFunctionParameterTypes.String
                        }
                    },
                    ReturnParameters = new CustomListFunctionReturnParameterDefinitionCollection
                    {
                        new CustomListFunctionReturnParameterDefinition
                        {
                            Name = "result",
                            Description = "The result of the arithmetic operation.",
                            Type = CustomListFunctionParameterTypes.Number
                        }
                    }
                }
            }
        };
    }
}
Eigenschaft Typ Beschreibung
Name string Der aus Lua aufrufbare Name der Funktion.
Description string Tooltip / Beschreibung, die im Designer angezeigt wird.
InputParameters CustomListFunctionInputParameterDefinitionCollection Die von der Funktion akzeptierten Parameter.
ReturnParameters CustomListFunctionReturnParameterDefinitionCollection Einer oder mehrere Werte, die die Funktion zurückgibt.
Type CustomListFunctionParameterTypes Unterstützte Typen: Number, String, Boolean.
Optional bool Ob ein Eingabeparameter optional ist.

Eine Funktion ausführen

Wenn ein Lua-Skript innerhalb von Peakboard eine Funktion aufruft (z.B. Data.CalcDemoList:calc(10, 5, "+")), ruft das Framework ExecuteFunctionOverride in deiner CustomListBase-Klasse auf. Lies die Eingabeparameter aus der Collection context.Values (in der Reihenfolge, in der sie definiert wurden) und gib Ergebnisse über einen CustomListExecuteReturnContext zurück:

protected override CustomListExecuteReturnContext ExecuteFunctionOverride(CustomListData data, CustomListExecuteParameterContext context)
{
    // Zugriff auf die Parameter in derselben Reihenfolge, in der sie in GetDefinitionOverride() definiert wurden
    double varA = double.Parse(context.Values[0].StringValue); // erster Parameter: "a"
    double varB = double.Parse(context.Values[1].StringValue); // zweiter Parameter: "b"
    string op   = context.Values[2].StringValue;               // dritter Parameter: "op"

    var result = new CustomListExecuteReturnContext();

    switch (op)
    {
        case "+": result.Add(varA + varB); break;
        case "-": result.Add(varA - varB); break;
        case "*": result.Add(varA * varB); break;
        case "/": result.Add(varA / varB); break;
    }

    return result;
}

Wie die anderen Overrides muss ExecuteFunctionOverride protected sein, darf nicht async sein und sollte vollständig mit try/catch umschlossen werden (siehe Implementierungsregeln).

Wir lernen von dir!

Hat dir dieser artikel geholfen?

Lass dich erleuchten!

Du benötigst weitere unterstützung?

Peakboard Youtube icon Zum YouTube Kanal

Unsere zahlreichen Videos für Einsteiger und Fortgeschrittene erklären dir genau, wie du dein Dashboard gestaltest.

Peakboard Templates icon Zu den Peakboard Templates

Lade dir unsere Templates für die verschiedensten Anwendungsfälle kostenlos herunter.

Peakboard icon Zu www.peakboard.com

Auf unserer Website findest du alle wichtigen Infos zu Peakboard sowie verschiedene Anwendungsfälle und Success Stories.