Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

Hilfe bei eval mit mehreren Bedingungen

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

    Hilfe bei eval mit mehreren Bedingungen

    Hallo,

    ich möchte ein eval mit mehren Bedingungen realisieren.

    Das item1 soll
    - bei value bleiben, wenn item2 ==1 und item3==1
    - auf den Wert x gesetzt werden wenn, item2==1 und item3==0
    - auf den Wert y gesetz werden wenn item2 ==0

    Der eval_trigger läuft auf item2 und item3.

    Ohne das item3 sieht es so aus.

    eval = value if sh.rtr.wohnen.automatik() == 1 else 20
    eval_trigger = rtr.wohnen.automatik

    Hat jemand einen Tipp?
    DANKE

    #2
    Kann's grade nicht testen und komme nicht an mein items-File, aber sowas in der Art hier sollte klappen:

    Code:
    eval = 1 if (sh.item2()==1 && sh.item3()==1) else (1 if sh.item2() else 0)
    eval_trigger = item2 | item3
    Ich bin mal davon ausgegangen, dass alles boolsche Werte sind - bei num müsste die hintere Abfrage etwas feiner formuliert werden.

    /tom

    Kommentar


      #3
      Tom
      Danke für die schnelle Antwort!
      Es funktioniert, wenn man "&&" durch "and" ersestzt. Ansonsten kommt ein Syntax Fehler.
      DANKE

      Kommentar


        #4
        ... noch einen weitere Frage:
        Lässt es sich auch noch unterbringen, dass der zugewiesene Wert bei einer Bedingung "value" entspricht bis zu einem definierten Maximum?
        Bedeutet:
        Das item1 soll
        - bei value bleiben, wenn item2 ==1 und item3==1
        - bei value bleiben bis maximal Wert x, wenn item2==1 und item3==0
        - auf den Wert y gesetz werden wenn item2 ==0
        Zuletzt geändert von Sisamiwe; 05.01.2017, 17:38.

        Kommentar


          #5
          Dürfte ohne Hilfsitems wohl unübersichtlich werden. Schnell mal aus dem Kopf hingeschrieben (ungetestet):

          Code:
          [item1]
              type = num
              enforce_updates = false
              eval = self() if (sh.item2()==1 and sh.item3()==1) else (sh.item2_1() if sh.item2() else wert_y)
              eval_trigger = item2 | item3
          
          [item2]
              type = bool
          
              [item2_1]
                  type = num
                  eval = sh.item1() if (sh.item1()<wert_x) else wert_x
                  eval_trigger = item1 | item2
          
          [item3]
              type = bool


          So eine innere Stimme sagt mir, dass das unschön aussieht und vermutlich auch noch wesentlich leichter gehen sollte, aber komm grad nicht drauf ...

          /tom
          Zuletzt geändert von Tom Bombadil; 05.01.2017, 18:55.

          Kommentar

          Lädt...
          X