Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. neue Visualisierung "webui" (alternative zu vis & vis-2)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    neue Visualisierung "webui" (alternative zu vis & vis-2)

    This topic has been deleted. Only users with topic management privileges can see it.
    • Smilie108
      Smilie108 @jogibear9988 last edited by

      @jogibear9988
      Wollte nur sagen das das mit dem input time jetz auch geht als value brauch eh an timestamp. was ich noch nicht zum laufen gebracht habe ist das ich als default value den aktuellen tag reinbekomme wenn ich den screen aufrufe. Bin aber am noch am testen.

      jogibear9988 1 Reply Last reply Reply Quote 0
      • jogibear9988
        jogibear9988 @Smilie108 last edited by

        @smilie108

        wenn du den value an ein objekt bindest, dann muss man entweder ein script beim öffen des screens ausführen (gibts noch keine möglichkeit, da geht gerade nur javascript, mach da aber sicher noch was), oder du machst es im backend und setzt dein objekt z.b. jeden tag auf den wert

        1 Reply Last reply Reply Quote 0
        • W
          Worlik last edited by

          Hmm, eine Datumsauswahl im Webbrower ist bei einem Unixtimestamp jetzt doch aber eigentlich ziemlich simpel. Das kann jedes Standard input-Feld mit dem type="date" oder type="dateTime". Ich hatte das nur kurz ausprobiert, brauchte das aber für meine Visualisierung eigentlich gar nicht. Soweit ich weiß ging das relativ problemlos.

          B 1 Reply Last reply Reply Quote 1
          • B
            Blockmove @jogibear9988 last edited by

            @jogibear9988 said in neue Visualisierung "webui" (alternative zu vis):

            @blockmove

            denk wenn du 2way an inputAsNumber bindest brauchst gar keine formel (ungetestet)

            Habs gerade getestet.
            Mit deiner Formel "new Date(__0).toISOString().split('.')[0]" gibt es Probleme mit der Uhrzeit. Geb ich ne 2 bei Stunde ein, kommt eine 1.
            Also wahrscheinlich ein Zeitzohnen-Thema.

            jogibear9988 1 Reply Last reply Reply Quote 0
            • B
              Blockmove @Worlik last edited by Blockmove

              Falscher Text

              1 Reply Last reply Reply Quote 0
              • jogibear9988
                jogibear9988 @Blockmove last edited by

                @blockmove

                ja, toIsoString gibt UTC zurück.

                versuchs mal mit : .toLocaleString("lt")
                https://stackoverflow.com/a/69462557/579623

                B 1 Reply Last reply Reply Quote 0
                • B
                  Blockmove @jogibear9988 last edited by

                  @jogibear9988 said in neue Visualisierung "webui" (alternative zu vis):

                  @blockmove

                  ja, toIsoString gibt UTC zurück.

                  versuchs mal mit : .toLocaleString("lt")
                  https://stackoverflow.com/a/69462557/579623

                  Tja, so einfach ist es nicht.
                  Ich hab das Inputfeld auf Typ datetime-local stehen.
                  Das Format finde ich auch ganz gut so.

                  Ein .toISOString erzeugt: 2023-01-01T00:00:00.028Z
                  Ein .toLocaleString erzeugt: 1.1.2023, 01:00:00

                  Mit dem Format von toLocaleString kommt nun das Inputfeld nicht klar.

                  1 Reply Last reply Reply Quote 0
                  • Smilie108
                    Smilie108 last edited by Smilie108

                    @Blockmove @jogibear9988
                    wenn ich

                    <input type="date" id="theDate" bind-prop:value-as-number='{"signal":"?dateselect","twoWay":true}' @focus="aktday" autofocus style="position:absolute;left:80px;top:7px;">
                    
                    

                    und dann

                    export function aktday(event: FocusEvent, eventRaisingElement: Element, shadowRoot: ShadowRoot, instance: HTMLElement) {
                       var date = new Date();
                    
                    var day = date.getDate();
                    var month = date.getMonth() + 1;
                    var year = date.getFullYear();
                    
                    if (month < 10) month = "0" + month;
                    if (day < 10) day = "0" + day;
                    
                    var today = year + "-" + month + "-" + day;       
                    document.getElementById("theDate").value = today;
                    }
                    

                    Im Javascript eingebe dachte ich es müsste gehen aber bekomme dann

                    Uncaught TypeError: jsObject is null
                        assignAllScripts http://192.168.1.91:8082/webui/dist/frontend/scripting/ScriptSystem.js:209
                    
                    bzw    else {
                                                e.addEventListener(evtName, (evt) => {
                                                    if (!jsObject[script])
                                                        console.warn('javascritp function named: ' + script + ' not found, maybe missing a "export" ?');
                                                    else
                                                        jsObject[script](evt, e, shadowRoot, instance);
                                                });
                                            }
                                        }
                                        catch (err) {
                                            console.warn('error assigning script', e, a);
                                        }
                    
                    

                    Beim Element habe ich auf autofocus dachte das würdee beim laden den focus auslösen oder nicht ?

                    Danke im voraus

                    den werte wenn ich in auswähle als ts bekomme ich auch in den iobrocker wollte nur das mit dem aktuellen tag noch lösen 😉

                    B 2 Replies Last reply Reply Quote 0
                    • B
                      Blockmove @Smilie108 last edited by

                      @Smilie108
                      Also zur Anzeige funktioniert dieses Binding bei mir:

                      new Date(__0).toISOString().split('T')[0];
                      

                      Wenn du die __0 weglässt, wird das aktuelle Datum genommen.

                      1 Reply Last reply Reply Quote 0
                      • W
                        Worlik last edited by

                        @jogibear9988 Kann man eigentlich irgendwie die absolute Positionierung komplett abschalten? Ich baue gerade eine Responsive Design für Handy, Tablet und PC und es wäre einfach absolut genial, wenn man nicht jedes mal position: absolute und das andere Gedöns rausschmeißen kann. Grundsätzlich packt er ja beim Drag-Drop alles korrekt in den DOM, aber fügt eben immer die Position hinzu. Ich vermute fast, ich sehe nur irgendeinen Schalter nicht. Oder geht das tatsächlich nicht?

                        jogibear9988 1 Reply Last reply Reply Quote 1
                        • B
                          Blockmove @Smilie108 last edited by

                          @jogibear9988

                          Hallo Jochen,
                          wollte auch gerade was mit Javascript testen und bekomme auch den Fehler

                          Uncaught SyntaxError: Identifier 'importMapWidgets' has already been declared (at importmap.js:1:1)
                          :8082/favicon.ico:1 
                                  
                                  
                                 Failed to load resource: the server responded with a status of 404 (Not Found)
                          IobrokerHandler.js:96 ioBroker handler ready.
                          :8082/dist/frontend/common/IobrokerHandler.js:1 
                                  
                                  
                                 Failed to load resource: the server responded with a status of 404 (Not Found)
                          es-module-shims.js:743 Uncaught (in promise) TypeError: 404 Not Found http://ctrl01.fritz.box:8082/dist/frontend/common/IobrokerHandler.js
                              at doFetch (es-module-shims.js:743:21)
                              at async fetchModule (es-module-shims.js:751:17)
                              at async es-module-shims.js:823:40
                              at async loadAll (es-module-shims.js:469:5)
                              at async topLevelLoad (es-module-shims.js:541:5)
                              at async checkHash (runtime.html:73:17)
                          ScriptSystem.js:184 error parsing javascript TypeError: Failed to resolve module specifier "/webui/dist/frontend/common/IobrokerHandler.js". Invalid relative url or base scheme isn't hierarchical.
                              at resolveIfNotPlainOrUrl (es-module-shims.js:130:15)
                              at resolve (es-module-shims.js:410:38)
                              at es-module-shims.js:848:32
                              at Array.map (<anonymous>)
                              at es-module-shims.js:844:45
                              at async loadAll (es-module-shims.js:469:5)
                              at async topLevelLoad (es-module-shims.js:541:5)
                              at async ScriptSystem.assignAllScripts (ScriptSystem.js:178:28)
                              at async HTMLElement.loadScreenData (ScreenViewer.js:88:30)
                          assignAllScripts @ ScriptSystem.js:184
                          

                          Kann es sein, dass der Pfad hier:

                          es-module-shims.js:743 Uncaught (in promise) TypeError: 404 Not Found http://ctrl01.fritz.box:8082/dist/frontend/common/IobrokerHandler.js
                          

                          nicht stimmt?

                          webui-Version: 0.22.7

                          VG
                          Dieter

                          jogibear9988 1 Reply Last reply Reply Quote 0
                          • jogibear9988
                            jogibear9988 @Blockmove last edited by

                            @blockmove

                            wie sieht der import im script oben aus?? so:

                            import { iobrokerHandler } from "/webui/dist/frontend/common/IobrokerHandler.js";
                            import { Runtime } from "/webui/dist/frontend/common/Runtime.js";
                            B 1 Reply Last reply Reply Quote 0
                            • B
                              Blockmove @jogibear9988 last edited by

                              @jogibear9988 said in neue Visualisierung "webui" (alternative zu vis):

                              @blockmove

                              wie sieht der import im script oben aus?? so:

                              import { iobrokerHandler } from "/webui/dist/frontend/common/IobrokerHandler.js";
                              import { Runtime } from "/webui/dist/frontend/common/Runtime.js";
                              

                              Ja

                              import { iobrokerHandler } from "/webui/dist/frontend/common/IobrokerHandler.js";
                              import { Runtime } from "/webui/dist/frontend/common/Runtime.js";
                              
                              /**
                              * buttonclick - 'click' event of <button>
                              * @param {PointerEvent} event
                              * @param {Element} eventRaisingElement
                              * @param {ShadowRoot} shadowRoot
                              * @param {HTMLElement} instance
                              */
                              export function buttonclick(event, eventRaisingElement, shadowRoot, instance) {
                                  alert("Test");
                              }
                              
                              jogibear9988 2 Replies Last reply Reply Quote 0
                              • jogibear9988
                                jogibear9988 @Worlik last edited by

                                @worlik

                                im moment nicht, ich brauche da noch eine wirkliche strategie, was soll dann beim ziehen passieren?

                                Im Moment ist es so: Parent ist display:grid, dann zieht man zwischen den grid zellen hin und her, parent ist display:flex, dann ändert man nur die dom reihenfolge, alles andere ist absolut.

                                Die abstraktion dafür ist hier: https://github.com/node-projects/web-component-designer/tree/master/packages/web-component-designer/src/elements/services/placementService (falls es jm. interessiert)
                                Da kann man sicher noch vieles verbessern, oder auch noch andere Placement modi einfügen

                                W 1 Reply Last reply Reply Quote 0
                                • jogibear9988
                                  jogibear9988 @Blockmove last edited by

                                  @blockmove

                                  ich prüfe es nacher. Bin gerade nicht am PC

                                  1 Reply Last reply Reply Quote 0
                                  • W
                                    Worlik @jogibear9988 last edited by Worlik

                                    @jogibear9988 Also mir würde es reichen, wenn man vielleicht eine Auswahlmöglichkeit hätte für die folgenden Varianten:

                                    • Inline = keinen Displaystyle und keine Positionierung einfügen
                                    • Absolute = Aktuelles Verhalten
                                    • Grid = display: grid
                                    • Flex = display: flex

                                    Könnte man als Einstellung für den Designer einfach aus einer Liste wählen. Man könnte das für neue Varianten dann einfach erweitern.

                                    Ich habe auch gut 20 kleinere Bugs bemerkt (z.B. geht das Stylesheettab und Javascript bei Escape einfach zu oder der Codeeditor zeigt in der Splitview aktuellen Code nicht an, wenn man Dinge per Drag'n'Drop in den Designer zieht). Müssen die Kleinigkeiten alle als einzelner Report auf Github?

                                    Habe aber nun alles in webui umgesetzt was ich vorher in vis hatte (plus einiges mehr). Vis hab ich schon gelöscht. 🙂

                                    B jogibear9988 2 Replies Last reply Reply Quote 0
                                    • B
                                      Blockmove @Worlik last edited by

                                      @worlik said in neue Visualisierung "webui" (alternative zu vis):

                                      @jogibear9988 Also mir würde es reichen, wenn man vielleicht eine Auswahlmöglichkeit hätte für die folgenden Varianten:

                                      • Inline = keinen Displaystyle und keine Positionierung einfügen
                                      • Absolute = Aktuelles Verhalten
                                      • Grid = display: grid
                                      • Flex = display: flex

                                      Könnte man als Einstellung für den Designer einfach aus einer Liste wählen. Man könnte das für neue Varianten dann einfach erweitern.

                                      Fände ich auch besser so.
                                      Das Weglöschen der styles geht zwar im Code schnell. Aber als Voreinstellung beim Anlegen neuer Elemente wäre es schon praktisch.

                                      W 1 Reply Last reply Reply Quote 1
                                      • W
                                        Worlik @Blockmove last edited by

                                        @blockmove @jogibear9988 Vielleicht könnte es auch noch eine Variante "Automatisch => Aktuelles Verhalten" geben. Die wäre dann Default. Wenn ich das richtig verstehe, wird die Variante aktuell anhand des Zielcontainers gewählt. Das funktioniert aber in der Praxis selten, weil der Zielcontainer dafür ein Padding braucht oder Größer sein muss. Bei einem Margin gilt immer der umgebende Container und es ist schwierig das Ziel zu treffen. So weiß man im Prinzip selten, was genau das System dann tut. Wäre es vielleicht möglich den DOM-Pfad bei der Drag-Operation irgendwo anzuzeigen, an welchem dann eingefügt wird? Bei einem Grid bekommt man zum Beispiel im Moment nur etwas eingefügt, wenn nicht alle columns gefüllt sind (weil dann noch Platz im Grid ist). Hat man ein 3er Grid und da sind 3 Sachen schon drin, müsste ja in der zweiten Zeile nun ein neuer Eintrag erzeugt werden, da man hier aber kein "Ziel" hat, lässt sich nichts einfügen. Verstehst du, wie ich das meine?

                                        jogibear9988 1 Reply Last reply Reply Quote 0
                                        • jogibear9988
                                          jogibear9988 @Worlik last edited by

                                          @worlik said in neue Visualisierung "webui" (alternative zu vis):

                                          @jogibear9988 Also mir würde es reichen, wenn man vielleicht eine Auswahlmöglichkeit hätte für die folgenden Varianten:

                                          • Inline = keinen Displaystyle und keine Positionierung einfügen
                                          • Absolute = Aktuelles Verhalten
                                          • Grid = display: grid
                                          • Flex = display: flex

                                          Könnte man als Einstellung für den Designer einfach aus einer Liste wählen. Man könnte das für neue Varianten dann einfach erweitern.

                                          Ich habe auch gut 20 kleinere Bugs bemerkt (z.B. geht das Stylesheettab und Javascript bei Escape einfach zu oder der Codeeditor zeigt in der Splitview aktuellen Code nicht an, wenn man Dinge per Drag'n'Drop in den Designer zieht). Müssen die Kleinigkeiten alle als einzelner Report auf Github?

                                          Habe aber nun alles in webui umgesetzt was ich vorher in vis hatte (plus einiges mehr). Vis hab ich schon gelöscht. 🙂

                                          Die Frage ist ja, Ich füge kein position absolute hinzu, wo soll das element laden wenn du es reinziehst? An welcher position?

                                          Irgendwo sollte die Bugs halt erfasst sein. Kannst in einem Ticket auch ne Liste mchen. Ich hoffe das irgendwann mehr Leute mitarbeiten, sonst wird die Liste einfach nur größer... 🙂

                                          W 1 Reply Last reply Reply Quote 0
                                          • jogibear9988
                                            jogibear9988 @Worlik last edited by

                                            @worlik said in neue Visualisierung "webui" (alternative zu vis):

                                            @blockmove @jogibear9988 Vielleicht könnte es auch noch eine Variante "Automatisch => Aktuelles Verhalten" geben. Die wäre dann Default. Wenn ich das richtig verstehe, wird die Variante aktuell anhand des Zielcontainers gewählt. Das funktioniert aber in der Praxis selten, weil der Zielcontainer dafür ein Padding braucht oder Größer sein muss. Bei einem Margin gilt immer der umgebende Container und es ist schwierig das Ziel zu treffen. So weiß man im Prinzip selten, was genau das System dann tut. Wäre es vielleicht möglich den DOM-Pfad bei der Drag-Operation irgendwo anzuzeigen, an welchem dann eingefügt wird? Bei einem Grid bekommt man zum Beispiel im Moment nur etwas eingefügt, wenn nicht alle columns gefüllt sind (weil dann noch Platz im Grid ist). Hat man ein 3er Grid und da sind 3 Sachen schon drin, müsste ja in der zweiten Zeile nun ein neuer Eintrag erzeugt werden, da man hier aber kein "Ziel" hat, lässt sich nichts einfügen. Verstehst du, wie ich das meine?

                                            Wenn dein grid vorher eine Größe hat, und auch schon Spalten und Zeilen fest gelegt sind, dann geht das mit dem DragDrop einfach, ansonsten haperts da noch.
                                            Ich weiß das der support dafür noch nicht so gut ist, aber das ist eben auch sehr viel arbeit, und da hab ich noch viel anderes was für mir höhere Prio hat.
                                            Ich hatte hierzu hier auch zig Designer verlinkt: https://github.com/node-projects/web-component-designer/issues/28 das man schauen kann was man wie lösen ode rbesser machen kann. Aber wie gesagt, das braucht alles Zeit und Manpower

                                            jogibear9988 created this issue in node-projects/web-component-designer

                                            open look at other designers for ideas #28

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            589
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            21
                                            1077
                                            292305
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo