Moin Moin,
ich habe ein Problem mit einer onChange Funktion im Konfigurationsformular.
Hier ein Auszug des Form-Arrays
{
"elements": [
{
"type" : "RowLayout",
"items" : [
{
"type": "List",
"name": "panelPageValuesArray",
"caption": "Wertzuweisung",
"rowCount": 5,
"add": true,
"delete": true,
"columns": [
{
"caption": "Seite",
"name": "panelPage",
"width": "50px",
"visible": true,
"add" : "0",
"edit" : {
"type": "Select",
"width" : "200px",
"options" : [
] ,
"onChange" : "DBNSP_LoadPageColumns($id,$panelPage);"
}
},
{
"caption": "Variablenverknüpfung",
"name": "panelPageValues",
"width": "350px",
"visible": true,
"add": "",
"edit": {
"type": "List",
"enabled": true,
"visible": true,
"rowCount": 4,
"add": true,
"delete": true,
"columns": [
{
"caption": "Variable",
"name": "objectId",
"width": "300px",
"add": 0,
"edit": {
"type": "SelectObject",
"options" : [
]
}
},
{
"caption": "Trenner",
"name": "split",
"width": "120px",
"add": "",
"edit": {
"type": "ValidationTextBox"
}
},
{
"caption": "formatiert",
"name": "formatted",
"width": "120px",
"add": false,
"edit": {
"type": "CheckBox"
}
},
{
"caption": "Ergebnisspalte",
"name": "resultField",
"width": "300px",
"add": 0,
"edit": {
"type": "NumberSpinner",
"options" : [
]
}
}
]
}
}
]
},
{
"type": "List",
"name": "panelActionValuesArray",
"caption": "Aktionszuweisung",
"rowCount": 5,
"add": true,
"delete": true,
"columns": [
{
"caption": "Seite/ Object",
"name": "panelPage",
"width": "50px",
"visible": true,
"add" : "0",
"edit" : {
"type": "NumberSpinner",
"width" : "200px",
"minimum": 0,
"maximum": 60000
}
},
{
"caption": "Variablenverknüpfung",
"name": "panelActionValues",
"width": "350px",
"visible": true,
"add": "",
"edit": {
"type": "List",
"enabled": true,
"visible": true,
"rowCount": 4,
"add": true,
"delete": true,
"columns": [
{
"caption": "result",
"name": "result",
"width": "300px",
"add": 0,
"edit": {
"type": "ValidationTextBox"
}
},
{
"caption": "Aktion",
"name": "action",
"width": "120px",
"add": "RequestAction",
"edit": {
"type": "Select",
"options" : [
{"caption" : "RequestAction", "value" : 0},
{"caption" : "start script", "value" : 1},
{"caption" : "call Page", "value" : 2}
]
}
},
{
"caption": "Seite / Object",
"name": "id",
"width": "300px",
"add": 0,
"edit": {
"type": "NumberSpinner"
}
},
{
"caption": "toggle",
"name": "toggle",
"width": "120px",
"add": false,
"edit": {
"type": "CheckBox",
"onChange" : "DBNSP_PanelActionToggle($id);"
}
},
{
"caption": "maxstep",
"name": "maxstep",
"width": "300px",
"add": 0,
"edit": {
"type": "NumberSpinner"
}
},
{
"caption": "value",
"name": "value",
"width": "300px",
"add": 0,
"edit": {
"type": "ValidationTextBox"
}
}
]
}
}
]
}
]
},
In einer geschachtelten Liste habe ich einen „onChange“ : „DBNSP_PanelActionToggle($id);“ definiert
Wenn der Wert der Checkbox geändert wird bekomme ich eine Exception angezeigt:
Fatal error: Uncaught Exception: Instance does not implement this function in /var/lib/symcon/scripts/__generated.inc.php:3234
Stack trace:
#0 /-(9): DBNSP_PanelActionToggle(0)
#1 {main}
thrown in /var/lib/symcon/scripts/__generated.inc.php on line 3234
in /var/lib/symcon/scripts/__generated.inc.php ist die Funktion korrekt eingetragen.
function DBNSP_PanelActionToggle($InstanceID)
{
if(IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{60160581-6E5D-B2F6-9DD7-C8EAC0C7B878}") {
require_once('/var/lib/symcon/modules/nspanel-by-boni/NSPanelConfig/module.php');
$result = (new NSPanelConfig($InstanceID))->PanelActionToggle();
}
else {
throw new Exception("Instance does not implement this function");
}
return $result;
}
Ich vermute, hier wird $id nicht korrekt an die Funktion übertragen.
Definiere ich im Formular die Instanz-ID anstatt der Variablen $id, funktioniert alles prima.
"onChange" : "DBNSP_PanelActionToggle(57890);"
Liegt es am Konfigurationsformular, oder habe ich mein Formular falsch gebaut?
Grüße aus dem kalten Münsterland.
Detlev.