Ankündigung

Einklappen
Keine Ankündigung bisher.

Assistent?

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

    #76
    Hallo,

    ich habe mal das "closeBracket"-Feature von CodeMirror aktiviert und den CSS-Teil korrigiert. Es werden nun beim Öffnen von Klammern "( - [ - {" und beim
    öffnen von Quotes (' + ") auch gleich die schließenden Klammern bzw. Quotes gesetzt. Zusammen mit dem feature matchBrackets macht das aus meiner Sicht Sinn.
    Einfach mal testen, raus ist es schnell wieder :-)

    Gruss Andre

    Kommentar


      #77
      closeBracket finde ich angenehm, das dürfte in allen Fällen helfen. Bei den Hochkommas bin ich mir unsicher. Macht man manuelle Hochkommas im Item Attribut, hat man am Ende zwei Hochkommas, da das Item schon so kommt. Hier müsste zumindest beim Einsetzen dieser Werte gecheckt werden, ob schon Hochkommas gesetzt sind oder nicht.
      Dann denke ich, wäre es auch sehr hilfreich.

      Kommentar


        #78
        Hallo,

        ich hatte ja geschrieben, dass der WC nicht mit dem Quad-Design funktioniert.
        Das kann ich nicht mehr bestätigen. Es funktioniert jetzt.

        Edit: Ich habe jetzt auch die aktuellste Version getestet. Echt super!
        Toll, dass die Icons auch gezeigt werden!

        Gruß,
        Hendrik
        Zuletzt geändert von henfri; 03.05.2020, 10:47.

        Kommentar


          #79
          Hallo,

          einen hab ich noch

          für die Parameter mit folgenden Namen

          "type", "mode", "style", "colormodel", "orientation", "valueType"

          wird nun ebenfalls ein Eintrag im Autocomplete Dict erzeugt. Das funktioniert bei allen Widgets die Parameter mit diesen Namen haben und
          in der Parameterbeschreibung die Werte in der Beschreibung in Single-Quotes stehen ('micro', 'midi', ...)

          Sobald man einen Parameter mit dem entsprechenden Namen
          erreicht hat wird der Hintergrund des aktuellen dicts "lila" und der Suchbegriff wird angezeigt. z.B. : "type@basic.select"
          Man kann nun mittels CTRL+Space das Dict öffnen oder eben anfangen zu tippen (mid....)


          Viel Spass beim erneuten testen.

          widget_constructor.jpg

          Viele Grüsse

          Andre
          Zuletzt geändert von AndreK; 03.05.2020, 15:13.

          Kommentar


            #80
            Sehr, sehr cool! Von so einem Assi habe ich immer geträumt, hätte aber nicht gedacht, dass das in der Form überhaupt machbar ist.

            Das Hantieren mit den Anführungszeichen ist noch etwas hakelig. Ich habe in einem fertigen widget nochmal ein item geändert und dabei hat der widget constructor ein zweites Paar Anführungszeichen gesetzt. Das führte natürlich zum TWIG-Error. Danach reagierte das Rendering nicht mehr und erforderte ein Neuladen des widget constructors.

            Ich würde dann gerne noch etwas aufräumen:
            • CodeMirror zu den anderen externen Paketen in das /vendor Verzeichnis
            • masteritem.json am besten in das Verzeichnis der eigenerstellte Seiten (/pages/<myPages>/). Dann bleiben die zum SV-Paket gehörenden Verzeichnisse frei von anwenderbezogenen Inhalten. Außerdem kann man so mehrere Installationen bearbeiten.
            Generell sollten wir nochmal prüfen, wie stark die vielen in der root.html zusätzlich geladenen Scripte die Performance des Pi beanspruchen. Denkbar wäre, dass man die nur während der Konfiguration lädt und später im Produktivbetrieb ignoriert. Da dasselbe auch für die quad widgets gilt, können wir das im Lauf der Arbeiten für das nächste große Release diskutieren.

            Gruß
            Wolfram

            Edit: die construct.html sollte möglichst auch in /pages/<myPages>/ landen. Oder im tmp-Verzeichnis.

            Edit 2: wenn Du in der widget_constructor.php die include.php importierst:
            Code:
            require_once '../../lib/includes.php';
            dann kannst Du das individuelle pages-Verzeichnis wie folgt ansprechen:
            Code:
            $myFile = file_get_contents(const_path.'pages/'.config_pages.'/masteritem.json');
            Habe das bei mir entsprechend umgebaut und es funzt weiterhin.
            Zuletzt geändert von wvhn; 04.05.2020, 18:06.

            Kommentar


              #81
              Hallo Wolfram,


              Zitat von wvhn Beitrag anzeigen
              Code:

              require_once '../../lib/includes.php';
              dann kannst Du das individuelle pages-Verzeichnis wie folgt ansprechen: Code:

              $myFile = file_get_contents(const_path.'pages/'.config_pages.'/masteritem.json');
              Danke für den Tipp hab ich so umgesetzt und damit auch gleich folgendes :

              Zitat von wvhn Beitrag anzeigen
              die construct.html sollte möglichst auch in /pages/<myPages>/ landen. Oder im tmp-Verzeichnis.
              ist geändert.

              Zitat von wvhn Beitrag anzeigen
              CodeMirror zu den anderen externen Paketen in das /vendor Verzeichnis
              ist auch vollzogen.

              Zitat von wvhn Beitrag anzeigen
              Das führte natürlich zum TWIG-Error. Danach reagierte das Rendering nicht mehr und erforderte ein Neuladen des widget constructors.
              Das ist so, da der JS-Teil dann nicht geladen wird. Abhilfe würde hier noch ein Neuladen der Seite unter Umgehung des Caches schaffen
              (STRG+F5 bzw. STRG+SHFT+R) - ich bau aber noch eine Checkbox ein damit ein neues Fenster geöffnet werden kann.

              Gruss Andre

              Kommentar


                #82
                Wollt ihr das nicht mal in develop pullen? Dafür ist dev doch da...?

                Kommentar


                  #83
                  ja, mach ich demnächst. Der PR ist ja schon dort. Ich will nur vor dem Mergen die ca. 50 Commits mit kleineren Fixes und Features nochmal zu einem minor Release v2.9.2 machen. Danach gibt es größere Änderungen, neben dem Widget Constructor u.a. auch das update von Twig, das bei mir schon zu 95% läuft. Dann ist die dev Version definitiv erstmal nicht für den Produktiveinsatz geeignet, was viele Anwender heute noch ignorieren. Den Widget Constructor werde ich deshalb zusätzlich auf smartvisu-newstuff zum Download zur Verfügung stellen (freundliche Genehmigung des Autors vorausgesetzt ).
                  Zuletzt geändert von wvhn; 05.05.2020, 14:26.

                  Kommentar


                    #84
                    Hab ich da was falsch gemacht oder ist beim letzten Commit was schiefgelaufen..?
                    Screenshot 2020-05-05 at 21.17.05.png
                    Angehängte Dateien

                    Kommentar


                      #85
                      Ich würde auf den Cache tippen

                      Items loaded => red => nicht gut :-(

                      Sieht komisch aus - keine Erklärung - wvhn hat den letzen Stand auch getestet - keine Reklamation ?

                      Gruss Andre

                      Kommentar


                        #86
                        Der letzte Stand von gestern hat super funktioniert. Auch die aufgeräumte Struktur mit den oben angesprochenen Änderungen läuft. Habe noch herausgefunden, dass nach dem Rendern grundsätzlich immer ein page-reload der gerenderten Seite gemacht werden muss (ctrl + F5).

                        Das ist auch ein tolles Tool zum Experimentieren mit neuen / geänderten widgets.
                        Zuletzt geändert von wvhn; 05.05.2020, 22:35.

                        Kommentar


                          #87
                          Okay, ich hab das Problem gefunden:
                          - ein eigenes Widget von mir hatte den Header mit package, author, etc. nicht. Da dies vermutlich bei einigen selbstgestrickten Widgets der Fall ist, wäre cool, man könnte hier einen Alert schmeißen, damit man's ausbessert.
                          - Zusätzlich zum Widget habe ich im dropins/widgets bzw. pages/../widgets eine weitere HTML Datei, die als Dokumentation fungiert. Unter "custom widgets" werden diese Dateien dann auch geladen. Hier wäre für den WC gut, er würde nur nach "macros" suchen und alles andere ignorieren. Macht er scheinbar nicht.

                          Kommentar


                            #88
                            Hallo Onkelandy und alle anderen die Testen,

                            das Problem aus Post #87 konnte ich fixen. Die Ursache lag darin, dass die Funktion "twig_docu" auch die Hilfe-HTML-Files im Ordner /dropins/widgets liest.
                            Es werden nun alle Einträge ohne Parameter gefiltert. Sollte es solche Einträge geben wird im Preview-Frame eine Meldung ausgegeben.

                            Der neue Stand ist per PR im develop gestellt und vorab über meinen Git-Account zu bekommen.

                            Folgende Features wurden eingebaut :

                            - umschalten des AutoComplete-Dicts mit/ohne autoclose von single Quotes und Umschalten des Autocomplete Dicts
                            - neue Checkbox um immer wieder eine neues Preview-Fenster öffnen zu können
                            - Das "fertige" Widget wird nun inklusive Klammern "{{"+"}}" beim Preview in die Zwischenablage kopiert und kann von dort direkt in die Ziel-HTML-Datei eingefügt werden
                            - Filter nach Item-Data-Type, exemplarisch für Tests bei allen basic-Widgets (keine Garantie auf Vollständigkeit und absolute Korrektheit, das gilt es noch zu vervollständigen/korrigieren)
                            - Hinweis im Preview Frame wenn Widgets ohne Parameter im Widget-Constructor ankommen.

                            Im speziellen die Funktionen der Tasten (umschalten von Autocomplete-dicts) ist in der Readme beschrieben.

                            Um die Filter-Funktion nach Datentyp nutzen zu können wird für smarthomeNG folgendes Script benötigt :

                            Code:
                            #!/usr/bin/env python3
                            # create_master_item.py
                            import json
                            from lib.item import Items
                            items = Items.get_instance()
                            items_sorted = sorted(items.return_items(), key=lambda k: str.lower(k['_path']), reverse=False)
                            item_list = []
                            for item in items_sorted:
                                item_list.append(item._path + "|" + item._type )
                            f = open("/var/www/html/smartvisu/pages/[B]<YOUR_FOLDER>[/B]/masteritem.json", "w")
                            f.write(json.dumps(item_list))
                            f.close()
                            Viele Grüsse

                            Andre
                            Zuletzt geändert von AndreK; 15.05.2020, 22:34. Grund: Pfad für masteritem.json geändert

                            Kommentar


                              #89
                              Wow, das war viel Arbeit.
                              Vielen Dank!

                              Kommentar


                                #90
                                Ja. Sehr, sehr cool. Zum Testen kann man sich die aktuelle Version aus dem develop ziehen. Aber Achtung: dort sind schon größere Änderungen gemacht worden und die Version ist definitiv nicht für den Produktiveinsatz geeignet.

                                Folgende Idee noch:
                                Wenn man das Python-Skript fest in smarthomeNG als Logik übernimmt und das Zielverzeichnis über ein item setzt, kann man dann diese Logik im Config-Menü mit einem basic.trigger aufrufen? Dann wäre die Bereitstellung der items genial einfach.

                                Gruß
                                Wolfram

                                Kommentar

                                Lädt...
                                X