Ankündigung

Einklappen
Keine Ankündigung bisher.

Template Checker Findings

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

    Template Checker Findings

    Hallo,

    ich möchte meine Page mal auf Vordermann bringen und habe daher mal den integrierten Template Checker bemüht. Viele Fehler konnte ich bereinigen, einige nicht.
    Diese würde ich gern hier mal vorstellen und um Hilfe / Erklärung bitten.
    • Image Missing
    Ich habe mit einige Widgets gebaut, in denen basic.stateswitch oder basic.symbol stecken. Diese privaten Widgets liegen im Verzeichnis /pages/meinePage/widgets. In den Widgets habe ich auch einen Platzhalter für das zu verwendende Image angelegt. Dies wird nun als Fehler gemeldet. Hier ein Beispiel
    Code:
    /**
    * Fritzbox Device
    *
    * @param unique id for this widget
    * @param a gad/item Name des Devices
    * @param a gad/item Item des Device
    * @param a gad/item Icon des Device
    * @param a gad/item Item Connection Type
    * @param a gad/item Item IP
    * @param a gad/item Item Host
    *
    */
    {% macro device(id, gad_name, gad_item, gad_icon, gad_con, gad_ip, gad_host) %}
    {% import "basic.html" as basic %}
    {% set uid = uid(page, id) %}
    <div>
    {{ basic.symbol(id~'sym', gad_item, gad_name, gad_icon, 1, '','icon1' ) }}
    {{ basic.symbol(id~'sym0', gad_item, gad_name, gad_icon, 0, '','icon0' ) }}
    via {{ basic.print(id~'val1', gad_con) }}
    mit {{ basic.print(id~'val2', gad_ip) }}
    als {{ basic.print(id~'val3', gad_host) }}
    </div>
    
    {% endmacro %}
    Was mache ich falsch oder ist das ein Fehler im Template Checker?
    • Type of Item is not valid
    Bei der Verwendung von basic.print tritt dieser Fehler bei der Verwendung des Datentyps "foo" auf. Im Item selbst ein datetime-objekt hinterlegt.
    Das widget:
    Code:
    {{ basic.print('', 'env.location.sunrise', 'time') }}
    Der Iteminhalt im Datentyp "foo":
    Code:
    2021-07-02 05:12:46.219989+02:00
    Die Anzeige in der Visu ist korrekt.

    Bei der Verwendung von basic.symbol tritt diese Fehlermeldung bei der Verwendung des Datentyps "str" auf.
    Das Widget:
    Code:
    {{ basic.symbol('', 'wetter.darksky.currently.precipType', ['regen','schnee','graupel'], ['weather_rain.svg','weather_snow.svg','weather_sleet.svg'], ['rain','snow','sleet']) }}
    Der Iteminhalt im Datentyp "str":
    Code:
    rain
    Die Anzeige in der Visu ist korrekt.

    Bei der Verwendung von basic.select tritt diese Fehlermeldung bei der Verwendung des Datentyps "bool"
    Das Widget:
    Code:
    {{ basic.select('', 'heizung.heizkreis_a1m1.konfiguration.steuerungstyp', '', [0,1], '', ['Vitotronic', 'shNG Logik']) }}
    Die Anzeige in der Visu ist korrekt.
    Danke für Eure Hinweise!

    #2
    Der Templatechecker deckt vieles ab, aber eben nicht alles:
    • Image missing: im Aufruf von basic.symbol kann er nicht erkennen, dass das item gad_icon ein Bild beinhaltet. Das ist eben nicht eindeutig. Der TC prüft jedes Widget immer nur einzeln anhand des jeweiligen „Docstrings“, in diesem Fall
      Code:
      	@param {image[?]=control_on_off}
      . Zulässig sind hier die üblichen Bild-Typen und die dynamischen icons. Mir war auch nicht bewusst, dass die Übergabe eines Bildes per item überhaupt funktioniert.
      Ich würde empfehlen, auch die eigenen Widgets mit Docstrings zu versehen. Näheres dazu steht in der readme.md im Verzeichnis des TC.
    • item type foo: hier bin ich mit Msinn dran, dass die env-items in shNG eindeutige Typen bekommen, in diesem Fall „timedate“.
    • str ist als typ in basic.symbol bisher nicht vorgesehen, funktioniert aber wohl in vielen Fällen. Ich habe mich noch nicht damit beschäftigt, wie Strings korrekt miteinander verglichen werden, so dass die Schwellwerte immer zu 100% richtig verarbeitet werden. Ich sehe str hier als Sonderfall und habe diesen Typ bewusst noch nicht als zulässig in basic.symbol aufgenommen.
    • im select vom Typ bool habe ich bisher noch keinen Sinn gesehen. Für mich wäre das ein Schalter. Wenn das gewünscht wird, kann ich das natürlich ändern.
    Generell macht IMHO die Prüfung der item-Typen nur Sinn, wenn die Prüfung auch scharf genug eingestellt ist. Wenn alle Sonderfälle zugelassen sind, differenziert die Prüfung für die weniger erfahrenen Anwender nicht ausreichend.

    Gruß
    Wolfram
    Zuletzt geändert von wvhn; 02.07.2021, 07:41.

    Kommentar


      #3
      Hallo Wolfram,
      danke für Deine Rückmeldung.

      Zitat von wvhn Beitrag anzeigen
      item type foo: hier bin ich mit Msinn dran, dass die env-items in shNG eindeutige Typen bekommen, in diesem Fall „timedate“.
      Das wäre prima.

      Zitat von wvhn Beitrag anzeigen
      str ist als typ in basic.symbol bisher nicht vorgesehen, funktioniert aber wohl in vielen Fällen. Ich habe mich noch nicht damit beschäftigt, wie Strings korrekt miteinander verglichen werden, so dass die Schwellwerte immer zu 100% richtig verarbeitet werden. Ich sehe str hier als Sonderfall und habe diesen Typ bewusst noch nicht als zulässig in basic.symbol aufgenommen.
      Für mich passt das so. Danke.

      Zitat von wvhn Beitrag anzeigen
      im select vom Typ bool habe ich bisher noch keinen Sinn gesehen. Für mich wäre das ein Schalter. Wenn das gewünscht wird, kann ich das natürlich ändern.
      MIr gefällt die Menuauswahl mit dem DropDown. Deshalb verwende ich es mit "bool".

      Michael

      Kommentar


        #4
        Die Erweiterung der zulässigen item-Typen in basic.select um den Typ bool ist bei mir schon umgesetzt und wird mit den nächsten Änderungen ins develop gepusht. .

        Bei basic.symbol habe ich mich jetzt endgültig dagegen entschieden, den item-Typ String in die Liste der zulässigen Typen aufzunehmen. Zwar arbeiten einige Funktionen des Widgets auch mit Strings, aber einige Formeln verlangen numerische Werte. Da die zulässigen Werte ja "nur" den Templatechecker steuern, die Funktion des Widgets aber nicht eingeschränkt wird, stelle ich die Prüfung lieber scharf ein und nehme in Kauf, dass die erfahrenen Anwender falsche Warnungen bekommen, wenn sie mit undokumentierten Features arbeiten.

        Gruß
        Wolfram

        Kommentar

        Lädt...
        X