Ankündigung

Einklappen
Keine Ankündigung bisher.

Icon dynamisch ändern?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Icon dynamisch ändern?

    Hallo,
    ich möchte wiseen, ob folgendes Möglich ist:

    Ich möchte das Icon eines Items in Abhängigkeit von dem Wert eines anderen Items dynamisch zur Laufzeit ändern.

    Ähnlich der Funktionsweise wie mit valuecolor bzw labelcolor

    Code:
    Frame {
            Text item=Termin label="Abholung [%1$ta, %1$td.%1$tm.%1$tY]"
    labelcolor=[Item1==aschtonne="black",Item1==gelbetonne="orange",Item1==blauetonne="blue"]
    valuecolor=[Item2==aschtonne="black",Item2==gelbetonne="orange",Item2==blauetonne="blue"]
    }
    Der Code

    Code:
    icon=[Item1==aschtonne="icon1", Item2==blauetonne="icon2", Item2==gelbetonne="icon3"]
    funktioniert in der Standard UI leider nicht.

    Hat jemand so etwas schon umgesetzt, bzw ist das überhaupte möglich?

    Gruß
    Torsten

    #2
    Ich habe es über die Visibility gelöst, also mehrere Items / Frames angelegt, von denen immer nur einer je nach State angezeigt wird.

    Holger

    Kommentar


      #3
      Hallo Holger,
      Danke für deinen Tip.
      Die Idee ist auch nicht schlecht.
      Dann müsste ich die Visibility eines Items von dem Wert eines anderen Items abhängig machen.
      Kann ich mich denn in der Definition der Visibility auf ein anderes Item beziehen, wie bei valuecolor oder labelcolor?

      Gruß
      Torsten

      Kommentar


        #4
        Das hab ich so nicht getestet, ich hab nur das gleiche Item im Einsatz.
        Vielleicht kannst du es z.b. in Zahlen umsetzen und dann 0,1,2 für grau, blau, gelb usw. verwenden.
        Aber vielleicht haben andere bessere Ideen und es kommt noch ein Hinweis.

        Holger

        Edit: Hab es doch so im Einsatz, wenn der Switch für die Ambientebeleuchtung nicht im WLan erreichbar ist, wird der Text und das Sirenen-Icon angezeigt:
        Code:
        Switch      item=Licht_Ambiente1 label="Ambiente1"          visibility=[Network_Ambiente1==ON]  icon="light"
        Text          label="Ambiente1 offline"  visibility=[Network_Ambiente1!=ON]  icon="sirene"
        Das ganze geht auch für einen kompletten Frame.


        Zuletzt geändert von HolgerW; 28.03.2015, 13:06.

        Kommentar


          #5
          Ich habe das so gelöst, indem ich dem Icon im Namen den Wert des Items mitgegeben habe.

          Iconname:

          gelbe Tonne = tonne-<Itemwert>.png
          blaue Tonne = tonne-<Itemwert>.png
          Aschtonne = tonne-<Itemwert>.png

          Wenn also der Itemwert im Falle der blauen Tonne = blau wäre, dann würde die Sitemap tonne-blau.png anzeigen.

          Dem Item ordne ich dann <tonne> zu.

          Damit wird das Icon immer die .png zeigen, die dem Wert des Icons entspricht.

          Wenn du dann den Anzeigetext noch entsprechend der Tonne haben willst, dann mapst du ihn entsprechend des Wertes des Items, z.B.

          blau=Blaue Tonne
          gelb=Gelbe Tonne
          grau=Aschtone

          Zuletzt geändert von Jaccolino; 28.03.2015, 15:13.

          Kommentar


            #6
            Hallo Jaccolino,
            genau das funktioniert bei mir nicht.
            Wie ermittelst du denn den Itemwert?

            Gruß
            Torsten

            Kommentar


              #7
              Also mal von Anfang an:

              Du hast ein Item in dem das Datum steht - können wir vernachlässigen -
              Du hast ein Item in dem die Tonne steht - ich nehme an, das das ein Kalendereintrag ist, also ist das der Wert der im Kalender unter "NAME" ausgelesen wird

              Schreib mal bitte auf, was dort in den drei Tonnefällen drin steht und wie das Item bei dir heisst

              Kommentar


                #8
                Hallo Jaccolino,

                das mit dem Kalender stimmt.
                Ich lese insgesamt die folgenden drei Termine aus.
                Pro Termin habe ich zwei Items, ein Item mit dem Datum und eins Item mit dem Terminnamen.
                Das Item mit dem Namen heißt TerminName0 für den ersten Termin, TerminName1 für den zweiten und TerminName2 für den letzten Termin.
                Je nachdem in welcher Reihenfolge die Termine anstehen, steht in den Items BlaueTonne, GelbeTonne, Aschtonne.
                Die ImageDateien habe ich auch so benannt.
                Gruß
                Torsten

                Kommentar


                  #9
                  Verstehe ich dich richtig, dass du alle drei Termine gleichzeitig auf deiner Visu anzeigst, denn du hast ja offensichtlich für jede Tonne 2 Items (Datum und Tonne). Du fragst also die nächsten 3 Termine aus einem Müllkalender ab.

                  Du musst also allen drei Items - TerminName0, TerminName1 und TerminName2 - <tonne> zuordnen.

                  Wenn du dir sicher bist, dass der Text in den Items BlaueTonne, GelbeTonne, Aschtonne ist, dann also die Icons

                  tonne-BlaueTonne.png
                  tonne-GelbeTonne.png
                  tonne-Aschetonne.png

                  Wichtig ist wirklich, dass der Inhalt des Items genau so beim Iconname verwendet wird.

                  Zuletzt geändert von Jaccolino; 28.03.2015, 18:44.

                  Kommentar


                    #10
                    Ja, ich habe für jeden Termin 2 Items. TerminName1 + TerminDate1, TerminName2 + TerminDate2, TerminName3 + TerminDate3.
                    In der Visu werden nur die TerminDate... Items angezeigt.
                    Da sich die Reihenfolge ja ändert, sollen die Items so formatiert werden, dass ich daran die Art der Tonne erkennen kann.
                    Ich setze im Item TerminDate1 die Schriftfarbe in Abhängigkeit des Inhaltes von TerminName1. Wenn z.B der Wert von TerminName1==BlaueTonne, dann setze Schriftfarbe von Item TerminDate1 blau.
                    Bis hierhin funktioniert das prima.

                    Wo ich völlig auf dem Schlauch stehe ist die Syntax im Bereich icon= vom TerminDate-Item.
                    Wie kann ich von dort aus auf den Inhalt von TerminName1 verweisen?
                    Wenn ich bei TerminDate1 icon="BlaueTonne" eintrage, wird das entsprechende png angezeigt.
                    Da sich die Reihenfolge aber ändert, müsste im icon= mal blaute, mal die gelbe oder die Aschtonne als Icon angezeigt werden (je nach dem, was gerade im TerminName1 steht).

                    Oder anders herum gefragt, mit welcher Syntax kann ich den String in icon="blaueTonne" in einem Wert eines anderen Items ersetzen icon=TerminName1.Value?

                    Gruß
                    Torsten
                    Zuletzt geändert von TorstenR; 28.03.2015, 20:22.

                    Kommentar


                      #11
                      Ausgehend vom Date Item, wo ja nur ein Datum drinsteht, kannst du das Icon nicht bestimmen, wie auch. Dazu brauchst du ja einen Wert, der zu dem Datum das Ereignis ausgibt. Der befindet sich in dem Item TerminName. Das also kannst du benutzen um die Tonne als Bild in der richtigen Farbe anzeigen zu lassen, denn das Datum sagt ja nichts über die Farbe der Tonne aus. Dann müsstest du in einer rules jedem Datum eine Tonnenart zuordnen, aber das wäre ja sinnlos, denn du hast ja im TerminName die Tonnenart zu stehen.

                      Ich weiss nicht, ob man über eine rules ein icon zuordnen kann, aber wenn das so ist, dann müsstest du den Inhalt des items TerminName1 prüfen und wenn er zutrifft dann dem item TerminDate1 das entsprechende icon zuordnen.

                      Also so ungefähr:

                      wenn
                      TerminName1.state == Blaue Tonne
                      dann
                      TerminDate1 icon== blautonne.jpg

                      Vielleicht fragst du noch mal im Forum, ob man in einer rules ein icon zuordnen kann. Ich benutze seid einigen Tagen als Frontend Cometvisu, da kann ich die Ausgabe einfach auf ein icon mappen.

                      Das mit dem zuordnen <tonne> funktioniert offensichtlich bei Kalendereinträgen nicht, ich hab das gerade mal ausprobiert.
                      Zuletzt geändert von Jaccolino; 28.03.2015, 20:32.

                      Kommentar


                        #12
                        Du möchtest das Icon, welches zum Datum gehört ändern. Das geht so leider nicht. Das Icon kann nur abhängig vom Itemwert selbst geändert werden. Für das Item TerminNamex kannst Du aber mit <tonne> als Iconzuweisung in der .items oder mit icon=tonne in der .sitemap dafür sorgen, dass jeweils das Icon mit dem Namen tonne-Itemwert.png eingeblendet wird. Wenn Itemwert eine Zahl zwischen 0 und 100 ist, wird für die Zwischenwerte jeweils der kleinere Wert genommen, also bei icon=bild wird bild-0.png für Itemwert 0-9 gesetzt, bild-10.png für 10-19 usw. (Vorausgesetzt, es gibt eben bild-0.png, dann bild-10.png usw.)

                        Kommentar


                          #13
                          Hallo und vielen Dank für eure Hinweise.

                          Das das icon nur vom eigenem Itemwert abhängig gemacht werden kann, habe ich vermutet.
                          Deshalb bin ich mal in die Richtung von Holger's Tipp gegangen und konnte mein Ziel letztendlich damit erreichen.

                          Erklärung:

                          Die Eigenschaft visibility (wie auch valuecolor und labelcolor) kann ich von beliebigen Items abhängig machen.
                          Davon ausgehend habe ich jedes Item dreimal mit unterschiedlichem Wert in der .sitemap angelegt.
                          Code:
                                  Text item=TerminZeit0 label="Abholung [%1$ta, %1$td.%1$tm.%1$tY]"  visibility=[TerminName0==gelbetonne] icon="gelbetonne" labelcolor=["orange"] valuecolor=["orange"]
                                  Text item=TerminDate0 label="Abholung [%1$ta, %1$td.%1$tm.%1$tY]"  visibility=[TerminName0==blauetonne] icon="blauetonne" labelcolor=["blue"] valuecolor=["blue"]
                                  Text item=TerminDate0 label="Abholung [%1$ta, %1$td.%1$tm.%1$tY]"  visibility=[TerminName0==aschtonne] icon="aschtonne" labelcolor=["black"] valuecolor=["black"]
                          Das Item TerminDate wird in Abhängigkeit des Wertes von Item TerminName angezeigt und entsprechend mit Color und Icon formatiert.

                          Optisch sieht das Ganze dann so aus:
                          Unbenannt.JPG

                          Das hat noch den pos. Nebeneffekt, dass wenn ein Item undefiniert oder einen ungültigen Wert hat, es nicht angezeigt wird.

                          Also nochmal vielen Dank für die zahlreichen Hinweise.

                          Torsten

                          Kommentar


                            #14
                            Cool, super das du noch eine Lösung gefunden hast

                            Kommentar


                              #15
                              Sieht gut aus, nur die englische Angabe des Wochentages würde mich noch stören.
                              Holger

                              Kommentar

                              Lädt...
                              X