loadValuesFromConfiguration funktioniert nicht wie erwartet

Ich habe eine Liste wo ich die Values bei GetConfigurationForm mit bereitstelle. Natürlich wird das das original Property beachtet und die Einstellungen des Users.
Entsprechend habe ich nun loadValuesFromConfiguration auf false gesetzt.
Das macht aber keinen Unterschied.
Die Konsole hängt dennoch Einträge an, welche ich gar nicht per Values ausliefere.
Michael

Ich habe das gerade mal bei mir ausprobiert und ein entsprechendes Testmodul gebastelt (SymconTest/ListLoadValuesFromConfigurationTest at master · symcon/SymconTest · GitHub). Das funktioniert auch korrekt. Hast du eine Idee was bei dir anders ist?

Ja habe ich.
Was passiert wenn du die Form über GetConfigurationForm ausgibst?
Michael

Den Inhalt der form.json:

{
    "elements": [
        {
            "type": "List",
            "name": "Targets",
            "caption": "Variables",
            "width": "auto",
            "add": true,
            "delete": true,
            "columns": [
                {
                    "caption": "Variable",
                    "name": "VariableID",
                    "add": 1,
                    "edit": {
                        "type": "SelectVariable"
                    },
                    "width": "auto"
                }
            ],
            "loadValuesFromConfiguration": false,
            "values": [
                {
                    "VariableID": 12345
                },
                {
                    "VariableID": 23456
                }
            ]
        },
        {
            "type": "Button",
            "caption": "Show current property",
            "onClick": "var_dump(IPS_GetProperty($id, 'Targets'));"
        }
    ]
}

Verrätst du mir worauf du hinaus möchtest?

Na der Unterschied ist, dass mein Modul die Form über GetConfigurationForm liefert.
Ich teste das heute Abend Mal gegen.
Michael

Ja, aber egal woher die Form kommt, darin sollten die Werte aus der Eigenschaft sowieso noch nicht enthalten sein, sofern du das nicht selbstständig machst. Sprich, der Effekt von loadValuesFromConfiguration kommt ja sowieso erst danach, wenn die Konsole die Form hat und die Eigenschaftswerte darein lädt bzw. in diesem Fall halt nicht.

Ja genau. Und mein values war leer und dennoch waren da Werte in der Liste.
Auf jeden Fall habe ich noch nicht sichtbare spalten in der Liste. Das ist auch ein Unterschied. Ich versuche das Mal einzugrenzen.
Michael

So, habe echt ewig gebraucht es nachzubauen.
Schon sehr geil… PR dazu in GitHub :slight_smile:

Der Fehler tritt nur auf wenn alle der folgenden Rahmenbedingungen erfüllt sind:

  • Die Liste liegt in einem ExpansionPanel
  • Dieses ExpansionPanel hat den Parameter onClick (Inhalt Wurscht)
  • Dieses ExpansionPanel ist beim laden geschlossen (default)
  • ‚values‘ der Liste ist vorhanden

Ergebnis:


3x 49533 kommt aus den Settings, weil Values hat 2x 12345

{
    "elements": [
        {
            "type": "ExpansionPanel",
            "name": "HostvariablesPanel",
            "caption": "Variables for Hosts",
            "onClick": "echo 'onClick muss da sein und ExpansionPanel muss zu sein';",
            "items": [
                {
                    "type": "List",
                    "name": "Targets",
                    "caption": "Variables",
                    "width": "auto",
                    "add": true,
                    "delete": true,
                    "columns": [
                        {
                            "caption": "Variable",
                            "name": "VariableID",
                            "add": 1,
                            "edit": {
                                "type": "SelectVariable"
                            },
                            "width": "auto"
                        }
                    ],
                    "loadValuesFromConfiguration": false,
                    "values": [
                        {
                            "VariableID": 12345
                        },
                        {
                            "VariableID": 12345
                        }
                    ]
                }
            ]
        },
        {
            "type": "Button",
            "caption": "Show current property",
            "onClick": "var_dump(IPS_GetProperty($id, 'Targets'));"
        }
    ]
}```
Michael

Ah, dann wird das wahrscheinlich beim nachträglichen Laden der Liste kommen. Ich schaue mir das mal an. Besten Dank fürs Reproduzieren!

So, das hat ein bisschen länger gedauert als geplant, aber ich habs behoben. Eine spannende Konstellation:
Da es ein onClick gibt, wird für das Skript der aktuelle Wert der Liste ausgelesen. Da loadValuesFromConfiguration hier noch nicht korrekt initialisiert war, wurde es nicht betrachtet und der Wert auf Basis der Eigenschaft zusammengesetzt. Weiter wurde gleichzeitig der Wert der Liste bearbeitet, da dieser nicht korrekt isoliert wurde. Fix ist unterwegs!

Sehr geil :sweat_smile:
Das sind doch Fehler die so richtig ‚Spaß‘ machen.
Danke für fixen.