Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. Javascript in HTML Widget hat View "unbrauchbar" gemacht

    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

    Javascript in HTML Widget hat View "unbrauchbar" gemacht

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      lysy23 last edited by lysy23

      Hallo,

      ich wollte mit einem Script die Kalenderwochen anzeigen lassen. Dabei habe ich ein HTML Widget erstellt und dort den script kopiert. Wenn ich jetzt auf View "HOME" klicke kommt nur eine weise Seite mit ne Zahle 31 ( 31 Kalenderwoche).
      Das Problem ist, ich kann jetzt auf mein View "HOME" nicht zugreifen bzw. editieren. Wie bekomme ich den Script wieder gelöscht?

      Script Kalenderwoche :

      <script>
      var date = new Date();
      
      // Get thursday
      // In JavaScript the Sunday has value 0 as return value of getDay() function.
      // So we have to order them first ascending from Monday to Sunday
      // Monday: ((1+6) % 7) = 0
      // Tuesday ((2+6) % 7) = 1
      // Wednesday: ((3+6) % 7) = 2
      // Thursday: ((4+6) % 7) = 3
      // Friday: ((5+6) % 7) = 4
      // Saturday: ((6+6) % 7) = 5
      // Sunday: ((0+6) % 7) = 6
      // (3 - result) is necessary to get the Thursday of the current week.
      // If we want to have Tuesday it would be (1-result)
      var currentThursday = new Date(date.getTime() +(3-((date.getDay()+6) % 7)) * 86400000);
      
      // At the beginnig or end of a year the thursday could be in another year.
      var yearOfThursday = currentThursday.getFullYear();
      
      // Get first Thursday of the year
      var firstThursday = new Date(new Date(yearOfThursday,0,4).getTime() +(3-((new Date(yearOfThursday,0,4).getDay()+6) % 7)) * 86400000);
      
      // +1 we start with week number 1
      // +0.5 an easy and dirty way to round result (in combinationen with Math.floor)
      var weekNumber = Math.floor(1 + 0.5 + (currentThursday.getTime() - firstThursday.getTime()) / 86400000/7);
      
      document.write(weekNumber);
      </script> 
      

      io1.JPG
      io2.JPG

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @lysy23 last edited by

        @lysy23
        Kein guter Befehl für vis
        Lese auf folgender Seite insbesondere den ersten Kasten.
        https://developer.mozilla.org/de/docs/Web/API/Document/write#:~:text=Document.-,write(),Stream%2C der zuvor mittels document.
        Damit leerst du den kompletten browserinhalt und schreibst das rein was in weekNumber steht.

        Zum Testen ist der Befehl console.debug(weekNumber);
        besser.
        Zur Ausgabe von dynamischen Inhalten aus einem html Widget heraus, muss man ein paar Dinge beachten, da vis die Elemente dynamisch aufbaut. Besser ist

        <div id=„Meinelement“>
        <\div>
        <script>
        // hier dein Script von oben ohne das document.write
        
        var el = document.getElementById(„Meinelement“);
        el. innerHTML(weekNumber);
        <\script>
        

        Kann noch Fehler enthalten da am Tablet direkt getippt
        Auch die Anführungsstriche bitte noch korrigieren

        L 1 Reply Last reply Reply Quote 0
        • L
          lysy23 @OliverIO last edited by lysy23

          @oliverio sorry aber ich habe keine Ahnung was ich da machen soll.😥

          OliverIO 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @lysy23 last edited by OliverIO

            @lysy23
            dann frage ich mich allerdings, was du mit dem ersten skript bezwecken wolltest?

            wenn du lernen willst, dann kann ich dir ein paar links raussuchen, bei dem du nachschlagen kannst, was das alles überhaupt bedeutet.

            Ansonsten empfehle ich dir erst einmal die iobroker Standardmittel, bei denen man ebenfalls rechnen kann.

            mit dem html-widget benötigst du kenntnisse in html, javascript und ggfs noch css

            alternativ kannst du das skript auch in iobroker im javascript adapter eintragen und am ende das ergebnis in einen datenpunkt schreiben.
            den datenpunkt kannst du dann über eines der vielen widgets dir in vis anzeigen lassen

            L 1 Reply Last reply Reply Quote 0
            • L
              lysy23 @OliverIO last edited by

              @oliverio said in Javascript in HTML Widget hat View "unbrauchbar" gemacht:

              @lysy23
              dann frage ich mich allerdings, was du mit dem ersten skript bezwecken wolltest?

              Ich wollte mir die Kalenderwoche anzeigen lassen, wusste nicht dass ich das ganze zerstöre.

              Muss ich ja eine neue View erstellen. 1 Woche Arbeit ist pfutsch.🤦
              Danke dir für deine Antwort.

              OliverIO 1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @lysy23 last edited by

                @lysy23

                ne nicht ganz, man kann das noch retten.

                1. nehme dir das letze backup von iobroker oder fertige ein neues aktuelles an.
                2. mache davon eine sicherungskopie
                3. öffne das backup mit einem archivprogramm das tar versteht
                4. gehe darin in den ordner backup/files/vis.0/
                  hier sind alle deine views gespeichert
                5. gehe in den ordner mit der view, die das fehlerhafte widget enthält
                  wenn du auf diese view verzichten kannst, dann lösche den ganzen ordner mit der view
                6. wenn du nicht verzichten kannst, dann geht es weiter
                7. im ordner gib es eine datei vis-views.json, öffne diese in einem editor, am besten notepad++
                8. suche in dieser datei nach dem text "document.write"
                9. entferne diesen, aber nur diesen
                10. alles wieder schliießen, speichern
                11. am ende das backup wieder in iobroker einspielen
                L 1 Reply Last reply Reply Quote 0
                • L
                  lysy23 @OliverIO last edited by

                  @oliverio Danke für deine Hilfe. 👍
                  Ich habe das aber ein bisschen anders gelöst da ich das Backup nicht einspielen konnte. Beim einspielen bekam ich immer eine Fehlermeldung.

                  Ich bin auf iobroker gegangen, dann auf "Dateien" und dort habe ich die Datei vis-views.json gefunden. Die habe ich gelöscht und modifizierte ohne den "killer script" 🙄 hochgeladen.
                  Danach hat VIS eine Fehlermeldung ausgespuckt. Die vis-views.json mit dem Script wieder aufgesetzt aber ohne "<script>" und "</script>". Jetzt funktioniert wieder alles.

                  BananaJoe 1 Reply Last reply Reply Quote 0
                  • BananaJoe
                    BananaJoe Most Active @lysy23 last edited by

                    @lysy23 sagte in Javascript in HTML Widget hat View "unbrauchbar" gemacht:

                    vis-views.json

                    Alternativ hättest du die VIS-Instanz auch deaktivieren können, unter Linux mit einem Editor die vis-views.json bearbeiten können und dort das Skript herauslöschen/bearbeiten/auskomentieren können.

                    Dann den VIS-Adapter wieder starten.

                    Ist mir auch schon mal passiert bei den Experimenten wie ich die VIS Instanz heraus bekomme ...

                    OliverIO 1 Reply Last reply Reply Quote 0
                    • OliverIO
                      OliverIO @BananaJoe last edited by

                      @bananajoe
                      ich glaube das hat er gemacht

                      BananaJoe 1 Reply Last reply Reply Quote 0
                      • BananaJoe
                        BananaJoe Most Active @OliverIO last edited by

                        @oliverio im Prinzip schon ... aber etwas spooky mit Austausch im Live-Betrieb

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        765
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        3
                        10
                        464
                        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