Editierbare Liste

Moin,

auf die Gefahr hin, mir hier einen Rüffel abzuholen, muss ich doch mal fragen wie das geht, und ob das überhaupt geht.

Siehe Bild.

Ich habe eine Sensoren Liste die ich durch das Modul mit Leben fülle.

Frage 1:

Wenn ich die Liste in den „elements“ Bereich schiebe, kann ich keine Zeilen hinzufügen. Er zeigt nur den Header an, und das wars. Ist das normal? Der Code ist so ziemlich der Selbe, außer mit entsprechendem anderen Key in das json Array hinein. Wenn der Header kommt, sollte doch eigentlich auch der Inhalt kommen.

Frage 2:

Wenn ich die Liste im „actions“ Bereich erzeugt, funktioniert alles wie gewünscht. (Befindet sich aber sicherlich nicht im richtigen Bereich) Ich möchte nun über den MediaSelector ein Bild für den gefundenen Sensor auswählen. Wenn ich eins ausgewählt habe, wird der Bereich grau und ich kann nur noch übernehmen drücken.
Wenn ich das tue kommt, fehlendes Eigenschaft onSensoren nicht gefunden. Wie müsste ich denn nun vorgehen, um die Daten einzusammeln?

Wie steht es um ein Refresh der ConfigurationForm?

Auch ich erhalte Fehler.

Wenn ich ein SelectXXX im Action Abschnitt anlege wird der Werte nicht an das Script im Button onClich=" code… " angezeigt.

Auch ein Formular refresh wäre im Abschnitt ‚Actions‘ sehr wünschenswert.

  1. Wie willst du denn die Elemente hinzufügen? Über den Hinzufügen Button? Oder über den Values Bereich? (Über den Values bereich muss es gehen, da es im ListBasic Beispiel ja auch geht: SymconTest/module.php at master · paresy/SymconTest · GitHub)

  2. Im Actions bereich wäre es richtig, wenn du nichts von den Einträgen in der Liste speichern willst. Ich glaube du willst aber speichern oder? Trotzdem sollte keine Fehlermeldung kommen, sondern der Wert im OnClick verfügbar sein.

  3. Refresh kommt frühstens zur 4.3.

paresy

Ich will die Elemente über GetConfigurationForm in die Liste ziehen. Also über die Values.
Inzwischen habe ich das nochmal umgebaut, und die Liste direkt unter die erste gezogen.

Ich mach das ähnlich wie in deinem Beispiel… nur das ich halt n anderen Index habe, weil es ja schon die zweite Liste ist.

Das ist dein Beispiel

$data->elements[0]->values

ich mache

$data->elements[1]->values

Wenn ich meinen Index auf 0 setze, fügt er die Zeilen in die obere Tabelle (natürlich passe ich vorher die Keys an)

Bei 1 kommt gar nichts. Obwohl das JSON valid ist, und auch im Viewer auch alles richtig aussieht. :confused:

Ist zwischen beiden kein anderes Element mehr ?
Weil der Index beschreibt ja nicht direkt die Listen, sondern alle Elemente in der Form.
Du kannst das ganze JSON einfach zusätzlich in den Debug werfen, dann sieht man häufig wo der Fehler ist.
Michael

Alles schon gemacht. Und nein… da ist nix mehr dazwischen.

Würde es helfen, mal das JSON für das Formular hier zu posten, welches ich per return dann zurückgebe?

Kommando zurück. Ich hab den Fehler nun endlich gefunden.
Ich hab vergessen die Liste vorher mit RegisterPropertyString anzumelden. :banghead:

Cool! Um den einen Fehler kümmere ich mich trotzdem noch :slight_smile: Netter Fund an den ich bisher gar nicht gedacht hatte!

paresy

@Paresy: Meinste es wäre vllt. möglich eine json validator mit einzubauen? Ein Komma zu viel, und schon wird zwar die Instanz angezeigt, aber man bekommt Fehler wenn man die mit GetConfigurationForm verändern will. Eine Meldung ala „json invalid“ und vllt. der bösen Zeile wäre was tolles. :smiley:

Und meinste es wäre möglich den SelectFile Typ noch etwas aufzubohren, so dass nicht das File als Base64 abgespeichert wird, sondern nur der Pfad? Wenn ich eine Grafik für das Webfront aussuchen will, liegt dies unter Umständen eh schon im /user Ordner. So brauch man nicht doppelt Speicherplatz verbraten, und mit der Anzeige wie groß ein File ist, kann man so aus der Ferne eh nix anfangen. Ein Pfad wäre da schon gefühlt informativer?!

Oder wollt ihr eh davon weg - wegen der Sicherheit?

Und wegen meines fehlenden RegisterProperty - sehe ich das richtig, dass man eh alle Elemente aus der Form registern muss? Dann könnte das ja fast automatisch erledigt werden - oder ne Meldung kommen, wenn man eins nicht hinzugefügt hat. Da ich an zwei Stellen etwas pflegen muss, habe ich mich gestern echt tot gesucht. :smiley:

  1. Deine Idee funktioniert leider nur „lokal“. Wenn du z.B. eine SymBox oder RPi hast, dann liegen die Dateien ja immer Remote… Deswegen laden wir gleich die Daten hoch, sobald du diese auswählst. Wenn du Medien auswählen willst, würde ich den User bitten diese als „Medien“ Objekt hinzuzufügen und dann verknüpfst du dies nur noch. Du hast auf jeden Fall Recht, dass man nicht unendlich Bilder hinzufügen sollte, da ansonsten die settings.json sehr groß wird.

  2. Dort könnte ich mal eine bessere Validierung einbauen, sodass die Konsole direkt meckert, wenn du etwas nutzt das nicht vorhanden ist. Automatisch geht dies an dieser Stelle leider nicht.

paresy

Fix für das Problem kommt zur 4.3. Zusätzlich stürzt die Konsole auch nicht ab, wenn mehr Values als Spalten definiert sind (Edge Case: Es sind Values definiert, obwohl keine Spalten angegeben wurden)

paresy