Werte im Tree ausblenden ?

Ich möchte einen Tree nutzten ich habe aber noch nicht verstanden wie man im Parent Werte die vom Child benutzt werden nicht anzeigt bzw. ausblendet.


Wie bekomme ich die Auswahl beim Parent sowie Objekt existiert nicht weg? Das soll ja nur im untergeordneten Teil angezeigt werden.

Das ist der Ausschnitt des Trees


[
						'caption' => 'InstanceID',
						'name' => 'InstanceID',
						'label' => 'InstanceID',
						'width' => '350px',
						'save' => true,
						'edit' => [
							'type' => 'SelectInstance'
						]
					],
					[
						'caption' => 'use device',
						'name' => 'use_device',
						'label' => 'Enabled',
						'width' => '150px',
						'save' => true,
						'edit' => [
							'type' => 'CheckBox',
							'caption' => 'use device'
						]
					]

Hallo Fonzo,

wenn ich das in der Doku richtig lese, einfach ein Value angeben und evtl. einen leeren String hinterlegen?
Ich habe es selbst noch nicht versucht.

Edit: Ah zu spät gesehen, du meinst ja die InstanzID. Was passiert wenn du dort als InstanzID 0 einträgst?
In der Doku steht zumindest 0!

Grüße,
Kai

Dann sieht das so aus:
Tree2.png
Schon mal besser als die Fehlermeldung. Eigentlich hätte ich halt an der Stelle gerne gar nichst angezeigt, es soll da ja auch nichts ausgewählt werden im übergeordneten Element (Parent), das ist ja höchstens verwirrend für ein Benutzter wenn man so was anschaut, das aber nicht anklicken soll. Irgendwie scheint es ja aber nicht möglich zu sein überflüssige Infomationen bzw. Felder, die nicht genutzt werden sollen, nicht anzeigen zu lassen, oder habe ich da was übersehen?

So wie es in der Doku zu sehen ist, gibt es keine andere Möglichkeit, oder ich habe diese übersehen.

Grüße,
Kai

Dem Parent einfach kein Feld instanceID mitgeben. Und auch kein create beim Configurator.
Bei Liste wegbekommen wie eine Spalte keine Edit Werte hat, weiß garde ich nicht aus dem Kopf.

Sieht hier etwas komisch aus, weil die Spalte Name noch zu klein ist.
Michael

Wie meinst Du das konkret?

Wenn ich das so mache


$device_values[] = [
			'id' => 1,
			'system' => 'Homematic',
			'label' => 'Homematic'
		];

Wird mir der Fehler angezeit s.o. die Instanz existiert nicht und das Feld zum Anklicken wird dennoch angezeigt.

Wenn ich es so probiere


$device_values[] = [
			'id' => 1,
			'system' => 'Homematic',
			'label' => 'Homematic',
			'InstanceID' => 0,
			'device' => false
		];

Dann wird mit zumindest die Fehlermeldung nicht mehr angezeigt, es ist aber immer nach die Instanzauswahl und der Auswahl Haken sichtbar.

Mache ich da irgendwas falsch oder ist das zur Zeit einfach nicht auszublenden? Wenn das tatsächlich nicht geht, dann ist das gleich eine Featurerequest diese Dinge ausblenden zu können, denn das macht so aus meiner Sicht keinen Sinn Dinge anzuzeigen, die man gar nicht nutzten soll.

Ist in dem Fall ein Tree und kein Konfigurator, es soll nämlich keine Instanz angelegt werden, lediglich eine existente Instanz aus dem Objektbaum ausgelesen werden und dieser Instanz dann in der Liste Werte zugeordnet werden können.

Michael meint wahrscheinlich diesen Parameter wegzulassen:

        "edit": {
            "type": "SelectInstance"
        }

Und das nur bei dem einem Feld.

Grüße,
Kai

Aber wie soll ich das denn weglassen, das kann ich ja nur für die Spalte setzen und nicht bei einem einzelnen Wert, oder doch?

Nein, das meinte ich nicht.
Geht ja auch nicht, da es die Spalten betrifft.
Michael

Also meine ID 1 als Parent hat diese Werte als in Values.
Und damit habe ich keine Fehlermeldung:
{„name“:„SyLa“,„id“:1,„expanded“:true}
Michael

Habe ich auch bemerkt, man sollte nicht immer versuchen zwischendurch Fragen zu beantworten. :banghead:

Grüße,
Kai

Das kann ich nicht reproduzieren, wenn ich das so eingebe bekomme ich die Fehlermeldung Objekt # existiert nicht siehe Anfang vom Thread.
Tree4.png
Tritt das bei Dir bei einem Configurator oder Tree auf? ich nutzte ja einen Tree, vielleicht ist das Verhalten dort anderes und beim Configurator funktioniert es wie es soll.

Ja, bei mir ist es das Configurator Element.
Sollte es bei dir auch sein, wenn ich schon die Checkbox sehe; konfigurierst du hier etwas, was in IPS über das Vorhandensein von Instanzen abgebildet wird.
Und deine Values sind ja wohl Instanzen, warum gibt es sonst das Feld instanceID?
Michael

Ich will aber in dem Fall keine Instanzen anlegen, diese existieren ja schon in IP-Symcon. Ich möchte lediglich in der Liste (Tree) pro bereits existenter Instanz in IP-Symcon festlegen können ob diese von einem externen System angesprochen werden kann oder nicht, dafür ist der Haken.

Das Feld Instance ID verweist auf die bereits in IP-Symcon existente Instanz. Die Values sind Werte die aus der existenten Instanz abgeleitet werden aber noch individuell anpassbar sind.

Das einzige was ist also brauche ist eine Liste die mir bereits bestehende Instanzen aus IP-Symcon anzeigt und hinter jeder Instanz ein Auswahlfeld ob diese benutzt werden soll oder nicht. Dabei ist eben das Auswahlfeld jeweils bei der übergeordneten Ebene nicht gewünscht, ebenso das Auswahlfeld für die Instanz nicht, da der Ebene ja keine Instanz zugeordnet ist.

Vielleicht kann sich da ja mal IP-Symcon zu äußern. Wenn das im Configurator funktioniert, dann sollte es doch auch so anpassbar sein, dass das im Tree auch funktioniert.

Und wozu brauchst du jetzt den Parent?
Willst du den ganzen Objektbaum da reinkopieren?
Einfach eine Liste und der User kann dort Einträge hinzufügen oder löschen.
Und warum dann Instanzen?
Wenn etwas von Extern zu IPS angesprochen werden soll, dann ja eher wohl Variablen.
Also so, wie es das Alexa und Google Modul machen.

Michael

Naja das es übersichtlicher wird, es gibt ja noch andere Systeme außer Homematic, z.B. KNX, LCN usw.

Nicht ganz, erst mal nur ausgewählte Geräte.

Ich will aber ungern das man da Stunden an der Konfiguration verbringt, wenn ein Gerät definiert ist dann weis man ja auch was für Befehle es unterstützt und dementsprechend auch was für Befehle genutzt werden können. Versuch mal bei Deinem Onkyo jeder Variable in so einer Liste eine Funktion zuzuweisen, da wird man ja kirre. Es muss doch reichen wenn man sagt man besitzt einen Onkyo oder ein anderes Gerät und fertig.

Das halte ich persönlich auch für Alexa Murks, aber darüber kann man sicher ausgiebig diskutieren. Ziel sollte es doch sein, dass der Nutzer sagt es möchte Gerät X steuern und fertig. Wie das zu steuern ist, sollte IP-Symcon wissen und das dann auch machen. Das ein Nutzer bei einer Lampe sagen muss welche Variable was schaltet oder bei einem Entertainment Gerät für jede Varibale angeben muss was diese macht, ist weder komfortabel von der Einrichtung noch benutzterfreundlich. Auch hier habe ich persönlich immer dafür plädiert das eine Instanz auszuwählen ist, den Rest soll doch bitte IP-Symcon erledigen.

Dann wird die Liste auch so oder so riesig und unübersichtlich. Eventuell eine Liste pro Typ und diese in Expansion-Panels.
Und viel Spaß dabei jedes Modul welches von der Community erstellt wird, mit dort einzubinden.
Anstatt sich auf die vorhandene Abstraktionseben (Variablen) zu stützen.
Allein schon die ganzen unterschiedlichen Werte und Funktionen der IPS eigenen Module wie KNX, Homematic, ZWave usw…
Wenn du dann speziell nur Modul A oder Modul B unterstützt, kommt bestimmt ein User mit einem Community-Modul X um die Ecke.
Damit hast du dir eine endlose Baustelle geschaffen.
Michael

Die Idee ist super, das werde ich mal so machen. Wäre dennoch gut IP-Symcon würde hier am Tree noch was nachbessern.

Wenn ich auf hinzufügen gehe wie schaffe ich das eigentlich bei einem Tree das dies unter einen bestimmten Parent gehängt wird? Angenommen ich hätte eine übergeordente Instanz mit ein paar Standard Anweisung, jetzt soll es aber möglich sein bei Bedarf eben noch einzelne Variablen der Instanz (Parent) zuzuordnen. Dazu müsste der Übersichtlichtkeit halber die zugewiesenen Variablen unterhalb des Parent im Tree angezeigt werden.