Ankündigung

Einklappen
Keine Ankündigung bisher.

status.collapse value bei list-item

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

    status.collapse value bei list-item

    Servus

    Ich habe ein item vom Typ list. Wenn die Liste leer ist, hat das item den Wert '[]' (Eckige Klammer auf, eckige Klammer zu, ohne Hochkommas).
    In diesem Fall möchte ich mit status.collapse ein Widget verbergen.
    Kann status.collapse überhaupt mit values umgehen, die keine Zahl sind? Wenn ja, wie muss ich die eckigen Klammern eingeben, damit die als der Wert erkannt werden?

    So geht es jedenfalls nicht:

    Code:
    {{ status.collapse('Acknowledge_Button', 'ICO.Nachrichten', '[]', 'hide') }}
    Hätte mich aber auch gewundert. Mit escapen klappt es aber auch nicht:

    Code:
    {{ status.collapse('Acknowledge_Button', 'ICO.Nachrichten', '[]', 'hide') }}
    Anscheinend geht das gar nicht, oder gibt es noch einen Trick?
    Zuletzt geändert von wvhn; 24.06.2023, 12:08.

    #2
    Moin Martin,
    ich kann das gerade nicht testen, aber hast Du es mal eckigen Klammern ohne Anführungszeichen versucht?

    Wenn die Anzahl der möglichen Nachrichten begrenzt und die Inhalte fest definiert sind, dann kannst Du die Nachrichten in die Parameterliste schreiben und „show“ statt „hide“ verwenden.
    Code:
    {{ status.collapse('Acknowledge_Button', 'ICO.Nachrichten', ['Zustand Entengrütze erreicht', 'zu wenig Wasser in der Salzsäure'], 'show') }}


    Gruß
    Wolfram

    Kommentar


      #3
      Zitat von wvhn Beitrag anzeigen
      hast Du es mal eckigen Klammern ohne Anführungszeichen versucht?
      Jetzt ja, klappt auch nicht.

      Zitat von wvhn Beitrag anzeigen
      Wenn die Anzahl der möglichen Nachrichten begrenzt und die Inhalte fest definiert sind
      Leider nicht.

      Wenn das nicht geht, muss ich halt ein Hilfsitem erstellen und in der Logik, die dahinter steckt, mit Python nen Zahlenwert setzen. Da klappt z.B. so etwas.

      Code:
      if myDict == []:
          sh.ICO.Hilfsitem('0')
      else:
          sh.ICO.Hilfsitem('1')

      Kommentar


        #4
        So geht es bei mir im Test:
        Code:
        {{ status.collapse('Acknowledge_Button', 'ICO.Nachrichten', ['', '1'], 'hide') }}
        Ich würde das jetzt nicht gerade als Feature dokumentieren, aber als Workaround scheint es zu klappen.

        Gruß
        Wolfram

        Kommentar


          #5
          Krass!
          Ich kapiers zwar nicht, aber du hast recht, das geht. Die Logik dahinter würde mich mal interessieren

          Vielen Dank, erspart mir einiges Gebastel
          Zuletzt geändert von Sipple; 24.06.2023, 13:11.

          Kommentar


            #6
            Ich hab's erst auch nicht kapiert.

            Der item-Wert wird im Widget in einen String gewandelt. Ein leeres Array wird dort zum leeren String ('').
            Die Werteliste aus den Widget-Parametern wird auch erst zum String gewandelt und dann mit der Funktion explode() in die einzelnen Feldelemente zerlegt. Dabei wird ein leerer String zu einem leeren Array.

            Der Trick ist, ein Array zu übergeben, das einen leeren String enthält und einen beliebigen zweiten Wert zur Vervollständigung des Arrays. Dann wird der item-Wert '' im Array gefunden und die Bedingung für hide ist erfüllt.

            Die Wandlung des items in einen String ist gleichzeitig der Grund, aus dem status.collapse in der Regel nicht mit items vom Typ list funktioniert.

            Gruß
            Wolfram

            Kommentar

            Lädt...
            X