Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Rssfeed geordnet anzeigen lassen

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    11
    1
    240

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.8k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    770

Rssfeed geordnet anzeigen lassen

Geplant Angeheftet Gesperrt Verschoben Visualisierung
31 Beiträge 2 Kommentatoren 153 Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • holly200289H holly200289
    code_text
    ```<!--
     available variables:
     widgetid      ->  id of the widget
     rss.articles  ->  all articles as array, details see Article Helper widget
     style         ->  all style settings for the widget
    
     all variables are read only
    -->
    
    <style>
        #<%- widgetid % > img {
            width: calc(<%- style.width || '230px' %> - 15px);
            height: auto;
        }
        #<%- widgetid % > img.rssfeed {
            width: auto;
            height: auto;
        }
    
        .container {
            overflow: hidden;
            height: 100%;
        }
        .content {
            position: relative;
            border: 1px solid #ccc;
            overflow: scroll;
            height: 90%;
        }
    
        .slide {
            position: absolute;
            display: none;
        }
    
        .slide.active {
            display: contents;
        }
    
        .controls {
            margin-top: 10px;
        }
    </style>
    
    <div class="container">
        <div class="content">
            <% rss.articles.forEach(function(item){ %>
            <div class="article slide">
                <p>
                    <small><%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm") %></small>
                </p>
                <h3><%- item.title %></h3>
                <p><%- item.description %></p>
                <div style="clear:both;"></div>
            </div>
            <% }); %>
        </div>
        <div class="controls">
            <button onclick="prevSlide()">Zurück</button>
            <button onclick="nextSlide()">Weiter</button>
        </div>
    </div>
    
    <script>
        currentSlide = 0;
        slides = document.querySelectorAll('.slide');
    
        function showSlide(index) {
            slides.forEach((slide, i) => {
                if (i === index) {
                    slide.classList.add('active');
                } else {
                    slide.classList.remove('active');
                }
            });
        }
    
        function prevSlide() {
            currentSlide = currentSlide > 0 ? currentSlide - 1 : slides.length - 1;
            showSlide(currentSlide);
        }
    
        function nextSlide() {
            currentSlide = currentSlide < slides.length - 1 ? currentSlide + 1 : 0;
            showSlide(currentSlide);
        }
        showSlide(currentSlide);
    </script>
    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    schrieb am zuletzt editiert von OliverIO
    #9

    @holly200289

    ja, hol es dir nochmal von github.
    da habe ich es soeben korrigiert.
    ansonsten kannst du den fehler daran erkennen

    die folgende zeile

        #<%- widgetid % > img.rssfeed {
    

    muss wie folgt sein

        #<%- widgetid %> img.rssfeed {
    

    zwischen dem % und der schließenden klammer > darf kein leerzeichen sein.
    das hat wie gedacht ein autoformatter von markdown in vscode verursacht.

    Meine Adapter und Widgets
    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
    Links im Profil

    1 Antwort Letzte Antwort
    0
    • holly200289H Offline
      holly200289H Offline
      holly200289
      schrieb am zuletzt editiert von
      #10

      Blättert das skript alleine weiter ?

      1 Antwort Letzte Antwort
      0
      • holly200289H Offline
        holly200289H Offline
        holly200289
        schrieb am zuletzt editiert von
        #11

        <style>
        #w_id_<%- widgetid %> { height: 100%; display: flex; flex-direction: column; overflow: hidden; }
        #w_id_<%- widgetid %> .content-area { flex: 1; border: 1px solid #444; position: relative; overflow: auto; padding: 10px; }
        #w_id_<%- widgetid %> .slide { display: none; }
        #w_id_<%- widgetid %> .slide.active { display: block; animation: vis-fade 0.5s ease-in; }
        #w_id_<%- widgetid %> .controls { display: flex; justify-content: space-between; align-items: center; background: #222; padding: 5px; color: #fff; }
        @keyframes vis-fade { from { opacity: 0; } to { opacity: 1; } }
        </style>

        <div id="w_id_<%- widgetid %>">
        <div class="content-area">
        <% if (rss && rss.articles && rss.articles.length > 0) { %>
        <% rss.articles.forEach(function(item, index){ %>
        <div class="article slide">
        <p><small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small></p>
        <h3><%- item.title %></h3>
        <div><%- item.description %></div>
        </div>
        <% }); %>
        <% } else { %>
        <p>Keine Feeds gefunden. Prüfe die Instanz-Einstellungen.</p>
        <% } %>
        </div>
        <div class="controls">
        <button onclick="window'go_<%- widgetid %>'">◀</button>
        <span class="pager"></span>
        <button onclick="window'go_<%- widgetid %>'">▶</button>
        </div>
        </div>

        <script>
        // Sofort ausführen, um Variablen zu isolieren
        (function() {
        const id = 'w_id_<%- widgetid %>';
        const speed = 5000; // 5 Sekunden
        let cur = 0;
        let timer;

            function refresh() {
                const el = document.getElementById(id);
                if (!el) return;
                const slides = el.querySelectorAll('.slide');
                const pager = el.querySelector('.pager');
                if (slides.length === 0) return;
                
                slides.forEach((s, i) => s.classList.toggle('active', i === cur));
                if (pager) pager.innerText = (cur + 1) + " / " + slides.length;
            }
        
            function start() {
                stop();
                timer = setInterval(() => window['go_<%- widgetid %>'](1), speed);
            }
        
            function stop() {
                if (timer) clearInterval(timer);
            }
        
            // Globaler Hook für Buttons
            window['go_<%- widgetid %>'] = function(n) {
                const slides = document.getElementById(id).querySelectorAll('.slide');
                cur = (cur + n + slides.length) % slides.length;
                refresh();
                start(); // Reset Timer
            };
        
            // Warte kurz, bis VIS das HTML gerendert hat
            setTimeout(() => {
                refresh();
                start();
            }, 500);
        })();
        

        </script>

        1 Antwort Letzte Antwort
        0
        • holly200289H Offline
          holly200289H Offline
          holly200289
          schrieb am zuletzt editiert von
          #12

          funkoniert leider nicht wenn man es in dem VIs modus versetzt

          OliverIOO 1 Antwort Letzte Antwort
          0
          • holly200289H holly200289

            funkoniert leider nicht wenn man es in dem VIs modus versetzt

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von
            #13

            @holly200289

            wo hast das her?

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            1 Antwort Letzte Antwort
            0
            • holly200289H Offline
              holly200289H Offline
              holly200289
              schrieb am zuletzt editiert von
              #14

              Warum fragst du ?

              1 Antwort Letzte Antwort
              0
              • holly200289H Offline
                holly200289H Offline
                holly200289
                schrieb am zuletzt editiert von
                #15

                Ich habe noch eine version die Funkoniert allerdings, die kannst du gerne haben.

                1 Antwort Letzte Antwort
                0
                • holly200289H Offline
                  holly200289H Offline
                  holly200289
                  schrieb am zuletzt editiert von
                  #16

                  ich teste das Script gerade

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • holly200289H holly200289

                    ich teste das Script gerade

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #17

                    @holly200289

                    @holly200289 sagte:

                    Warum fragst du ?

                    sowie du es eingefügt hast ist es schwer zum kopieren gewesen.
                    wenn du code einfügst musst du die immer in code tags setzen,
                    das ist der knopf über dem eingabefeld im forum mit </>
                    ansonsten wird die formatierung von code zerhauen
                    deswegen hat es jetzt länger gedauert

                    <style>
                    #w_id_<%- widgetid %> { 
                        height: 100%; display: flex; flex-direction: column; overflow: hidden; 
                    }
                    #w_id_<%- widgetid %> .content-area { 
                        flex: 1; border: 1px solid #444; position: relative; overflow: auto; padding: 10px;
                    }
                    #w_id_<%- widgetid %> .slide {
                        display: none;
                    }
                    #w_id_<%- widgetid %> .slide.active {
                        display: block; animation: vis-fade 0.5s ease-in;
                    }
                    #w_id_<%- widgetid %> .controls {
                        display: flex; justify-content: space-between; align-items: center; background: #222; padding: 5px; color: #fff;
                    }
                    @keyframes vis-fade {
                        from { 
                            opacity: 0; 
                        } to { 
                            opacity: 1; 
                        } 
                    }
                    </style>
                    
                    <div id="w_id_<%- widgetid %>">
                    <div class="content-area">
                    <% 
                    if (rss && rss.articles && rss.articles.length > 0) { 
                        rss.articles.forEach(function(item, index){ 
                    %>
                        <div class="article slide">
                            <p><small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small></p>
                            <h3><%- item.title %></h3>
                            <div><%- item.description %></div>
                        </div>
                    <%
                        }); 
                    } else { 
                    %>
                    <p>Keine Feeds gefunden. Prüfe die Instanz-Einstellungen.</p>
                    <% } %>
                    </div>
                    <div class="controls">
                        <button onclick="window'go_<%- widgetid %>'">◀</button>
                        <span class="pager"></span>
                        <button onclick="window'go_<%- widgetid %>'">▶</button>
                    </div>
                    </div>
                    
                    <script>
                    // Sofort ausführen, um Variablen zu isolieren
                    (function() {
                        debugger;
                    const id = 'w_id_<%- widgetid %>';
                    const speed = 5000; // 5 Sekunden
                    let cur = 0;
                    let timer;
                    
                        function refresh() {
                            const el = document.getElementById(id);
                            if (!el) return;
                            const slides = el.querySelectorAll('.slide');
                            const pager = el.querySelector('.pager');
                            if (slides.length === 0) return;
                            
                            slides.forEach((s, i) => s.classList.toggle('active', i === cur));
                            if (pager) pager.innerText = (cur + 1) + " / " + slides.length;
                        }
                     
                        function start() {
                            stop();
                            timer = setInterval(() => window['go_<%- widgetid %>'](1), speed);
                        }
                     
                        function stop() {
                            if (timer) clearInterval(timer);
                        }
                     
                        // Globaler Hook für Buttons
                        window['go_<%- widgetid %>'] = function(n) {
                            const slides = document.getElementById(id).querySelectorAll('.slide');
                            cur = (cur + n + slides.length) % slides.length;
                            refresh();
                            start(); // Reset Timer
                        };
                     
                        // Warte kurz, bis VIS das HTML gerendert hat
                        setTimeout(() => {
                            refresh();
                            start();
                        }, 500);
                    })();
                    </script>
                    
                    

                    ich muss mal ein Hinweis in der Doku noch hinzufügen.

                    Problem ist hier die komprimierte css Darstellung. Da fummelt dann das Binding von vis rein. der Mechanismuss sucht immer nach dem Muster { .... }
                    Daher muss json und css im Template die Klammern immer auf separate Zeilen stellen.

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    1 Antwort Letzte Antwort
                    0
                    • holly200289H Offline
                      holly200289H Offline
                      holly200289
                      schrieb am zuletzt editiert von
                      #18

                      ah okay, ich habe den Code generieren lassen von KI, möchtest du dir den neuen Code mal ansehen, bzw. mal drüber fliegen ob der so okay ist ?

                      OliverIOO 1 Antwort Letzte Antwort
                      0
                      • holly200289H Offline
                        holly200289H Offline
                        holly200289
                        schrieb am zuletzt editiert von
                        #19

                        Du hast da schon gute viel arbeit reingesteckt, und vorallen mit den vorlagen finde ich das super.

                        1 Antwort Letzte Antwort
                        0
                        • holly200289H holly200289

                          ah okay, ich habe den Code generieren lassen von KI, möchtest du dir den neuen Code mal ansehen, bzw. mal drüber fliegen ob der so okay ist ?

                          OliverIOO Offline
                          OliverIOO Offline
                          OliverIO
                          schrieb am zuletzt editiert von
                          #20

                          @holly200289 sagte:

                          den neuen Code mal ansehen

                          ja, aber bitte in code tags setzen

                          Meine Adapter und Widgets
                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                          Links im Profil

                          1 Antwort Letzte Antwort
                          0
                          • holly200289H Offline
                            holly200289H Offline
                            holly200289
                            schrieb am zuletzt editiert von
                            #21
                             <style>
                                #rss_container_<%- widgetid %> { 
                                    height: 100%; 
                                    width: 100%;
                                    display: flex; 
                                    flex-direction: column; 
                                }
                                #rss_container_<%- widgetid %> .slide { 
                                    display: none; 
                                    padding: 10px;
                                }
                                #rss_container_<%- widgetid %> .active { 
                                    display: block; 
                                    animation: fadeRss 0.5s;
                                }
                                @keyframes fadeRss { from { opacity: 0; } to { opacity: 1; } }
                            </style>
                            
                            <div id="rss_container_<%- widgetid %>">
                                <div class="rss_content" style="flex: 1; overflow: auto;">
                                    <% if (rss && rss.articles) { %>
                                        <% rss.articles.forEach(function(item, index){ %>
                                            <div class="slide <%- index === 0 ? 'active' : '' %>">
                                                <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                                                <h3 style="margin: 8px 0;"><%- item.title %></h3>
                                                <div><%- item.description %></div>
                                            </div>
                                        <% }); %>
                                    <% } %>
                                </div>
                            </div>
                            
                            <script>
                                (function() {
                                    // Wir suchen das Element direkt über die Widget-ID, die VIS übergibt
                                    var parentId = 'rss_container_<%- widgetid %>';
                                    var container = document.getElementById(parentId);
                                    if (!container) return;
                            
                                    var slides = container.getElementsByClassName('slide');
                                    var currentIndex = 0;
                                    var intervalTime = 10000; // 5 Sekunden
                            
                                    if (slides.length > 1) {
                                        setInterval(function() {
                                            // Aktuellen Slide ausblenden
                                            slides[currentIndex].classList.remove('active');
                                            
                                            // Index erhöhen
                                            currentIndex++;
                                            if (currentIndex >= slides.length) {
                                                currentIndex = 0;
                                            }
                                            
                                            // Nächsten Slide einblenden
                                            slides[currentIndex].classList.add('active');
                                        }, intervalTime);
                                    }
                                })();
                            </script>
                            1 Antwort Letzte Antwort
                            0
                            • holly200289H Offline
                              holly200289H Offline
                              holly200289
                              schrieb am zuletzt editiert von
                              #22

                              jetzt müsste es richtig sein

                              OliverIOO 1 Antwort Letzte Antwort
                              0
                              • holly200289H holly200289

                                jetzt müsste es richtig sein

                                OliverIOO Offline
                                OliverIOO Offline
                                OliverIO
                                schrieb am zuletzt editiert von
                                #23

                                @holly200289

                                ich teste hier mit dem tagesschau rss.
                                da ist ein bild drin, dessen größe korrigiert werden muss

                                 <style>
                                    #rss_container_<%- widgetid %> { 
                                        height: 100%; 
                                        width: 100%;
                                        display: flex; 
                                        flex-direction: column; 
                                    }
                                    #rss_container_<%- widgetid %> .slide { 
                                        display: none; 
                                        padding: 10px;
                                    }
                                    #rss_container_<%- widgetid %> .active { 
                                        display: block; 
                                        animation: fadeRss 0.5s;
                                    }
                                    #rss_container_<%- widgetid %> img {
                                        width: calc(<%- style.width %> - 15px);
                                        height: auto;
                                    }    
                                    @keyframes fadeRss { from { opacity: 0; } to { opacity: 1; } }
                                </style>
                                 
                                <div id="rss_container_<%- widgetid %>">
                                    <div class="rss_content" style="flex: 1; overflow: auto;">
                                        <% if (rss && rss.articles) { %>
                                            <% rss.articles.forEach(function(item, index){ %>
                                                <div class="slide <%- index === 0 ? 'active' : '' %>">
                                                    <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                                                    <h3 style="margin: 8px 0;"><%- item.title %></h3>
                                                    <div><%- item.description %></div>
                                                </div>
                                            <% }); %>
                                        <% } %>
                                    </div>
                                </div>
                                 
                                <script>
                                    (function() {
                                        // Wir suchen das Element direkt über die Widget-ID, die VIS übergibt
                                        var parentId = 'rss_container_<%- widgetid %>';
                                        var container = document.getElementById(parentId);
                                        if (!container) return;
                                 
                                        var slides = container.getElementsByClassName('slide');
                                        var currentIndex = 0;
                                        var intervalTime = 10000; // 5 Sekunden
                                 
                                        if (slides.length > 1) {
                                            setInterval(function() {
                                                // Aktuellen Slide ausblenden
                                                slides[currentIndex].classList.remove('active');
                                                
                                                // Index erhöhen
                                                currentIndex++;
                                                if (currentIndex >= slides.length) {
                                                    currentIndex = 0;
                                                }
                                                
                                                // Nächsten Slide einblenden
                                                slides[currentIndex].classList.add('active');
                                            }, intervalTime);
                                        }
                                    })();
                                </script>
                                
                                

                                Meine Adapter und Widgets
                                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                Links im Profil

                                OliverIOO 1 Antwort Letzte Antwort
                                0
                                • holly200289H Offline
                                  holly200289H Offline
                                  holly200289
                                  schrieb am zuletzt editiert von
                                  #24

                                  aber sonst ist der ist das Skript brauchbar oder ?

                                  1 Antwort Letzte Antwort
                                  0
                                  • OliverIOO OliverIO

                                    @holly200289

                                    ich teste hier mit dem tagesschau rss.
                                    da ist ein bild drin, dessen größe korrigiert werden muss

                                     <style>
                                        #rss_container_<%- widgetid %> { 
                                            height: 100%; 
                                            width: 100%;
                                            display: flex; 
                                            flex-direction: column; 
                                        }
                                        #rss_container_<%- widgetid %> .slide { 
                                            display: none; 
                                            padding: 10px;
                                        }
                                        #rss_container_<%- widgetid %> .active { 
                                            display: block; 
                                            animation: fadeRss 0.5s;
                                        }
                                        #rss_container_<%- widgetid %> img {
                                            width: calc(<%- style.width %> - 15px);
                                            height: auto;
                                        }    
                                        @keyframes fadeRss { from { opacity: 0; } to { opacity: 1; } }
                                    </style>
                                     
                                    <div id="rss_container_<%- widgetid %>">
                                        <div class="rss_content" style="flex: 1; overflow: auto;">
                                            <% if (rss && rss.articles) { %>
                                                <% rss.articles.forEach(function(item, index){ %>
                                                    <div class="slide <%- index === 0 ? 'active' : '' %>">
                                                        <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                                                        <h3 style="margin: 8px 0;"><%- item.title %></h3>
                                                        <div><%- item.description %></div>
                                                    </div>
                                                <% }); %>
                                            <% } %>
                                        </div>
                                    </div>
                                     
                                    <script>
                                        (function() {
                                            // Wir suchen das Element direkt über die Widget-ID, die VIS übergibt
                                            var parentId = 'rss_container_<%- widgetid %>';
                                            var container = document.getElementById(parentId);
                                            if (!container) return;
                                     
                                            var slides = container.getElementsByClassName('slide');
                                            var currentIndex = 0;
                                            var intervalTime = 10000; // 5 Sekunden
                                     
                                            if (slides.length > 1) {
                                                setInterval(function() {
                                                    // Aktuellen Slide ausblenden
                                                    slides[currentIndex].classList.remove('active');
                                                    
                                                    // Index erhöhen
                                                    currentIndex++;
                                                    if (currentIndex >= slides.length) {
                                                        currentIndex = 0;
                                                    }
                                                    
                                                    // Nächsten Slide einblenden
                                                    slides[currentIndex].classList.add('active');
                                                }, intervalTime);
                                            }
                                        })();
                                    </script>
                                    
                                    
                                    OliverIOO Offline
                                    OliverIOO Offline
                                    OliverIO
                                    schrieb am zuletzt editiert von OliverIO
                                    #25

                                    evtl noch eine anmerkung zum setInterval.

                                    Es ist besser, insbesondere hier, den setInterval Teil in eine eigene Funktion zu setzen
                                    Die Funktion ruft dann die eigene Funktion wieder mit setTimeout wieder auf.

                                    So wie es jetzt ist, wird es irgendwann zu Speicherprobleme führen.
                                    Jedesmal wenn der RSS Datenpunkt aktualisiert wird, wird der widgetinhalt ersetzt.
                                    Allerdings wird dadurch der alte setInterval Aufruf nicht entfernt. Mit dem Austausch kommt dann aber ein neuer setInterval dazu.

                                    Jetzt kannst du dir evtl vorstellen was passiert, wenn 10 mal der datenpunkt aktualisiert wurde. Dann versuchen 10 parallele setInterval Aufrufe geichzeitig den Artikel zu wechseln.

                                    Sag der KI, sie soll den Code mit setTimeout formulieren um evtl Speicherprobleme zu verhindern.

                                    Anonsten ist der Code OK
                                    Es fehlen nun die Knöpfe, so ist man auf den automatismus angewiesen, auch wenn der angezeigte Artikel gerade nicht interessiert
                                    Wenn du aber eine möglichst cleane Darstellung haben willst ist das OK

                                    Meine Adapter und Widgets
                                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                    Links im Profil

                                    1 Antwort Letzte Antwort
                                    0
                                    • holly200289H Offline
                                      holly200289H Offline
                                      holly200289
                                      schrieb am zuletzt editiert von
                                      #26

                                      Ich habe das jetzt nochmal mit setTimeout durch die KI überarbeiten lassen, schaue mal bitte drüber

                                      1 Antwort Letzte Antwort
                                      0
                                      • holly200289H Offline
                                        holly200289H Offline
                                        holly200289
                                        schrieb am zuletzt editiert von
                                        #27
                                        <style>
                                            #rss_wrapper_<%- widgetid %> { 
                                                height: 100%; 
                                                width: 100%;
                                                overflow: hidden;
                                            }
                                            #rss_wrapper_<%- widgetid %> .slide { 
                                                display: none; 
                                                padding: 10px;
                                            }
                                            #rss_wrapper_<%- widgetid %> .active { 
                                                display: block; 
                                                animation: fadeInRSS 0.6s ease-in-out;
                                            }
                                            @keyframes fadeInRSS { from { opacity: 0; } to { opacity: 1; } }
                                        </style>
                                        
                                        <div id="rss_wrapper_<%- widgetid %>">
                                            <% if (rss && rss.articles && rss.articles.length > 0) { %>
                                                <% rss.articles.forEach(function(item, index){ %>
                                                    <div class="slide <%- index === 0 ? 'active' : '' %>">
                                                        <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                                                        <h3 style="margin: 8px 0;"><%- item.title %></h3>
                                                        <div class="rss-desc"><%- item.description %></div>
                                                    </div>
                                                <% }); %>
                                            <% } else { %>
                                                <p>Lade Feeds...</p>
                                            <% } %>
                                        </div>
                                        
                                        <script>
                                            (function() {
                                                // Das setTimeout sorgt dafür, dass VIS Zeit zum Rendern hat
                                                setTimeout(function() {
                                                    var containerId = 'rss_wrapper_<%- widgetid %>';
                                                    var root = document.getElementById(containerId);
                                                    if (!root) return;
                                        
                                                    var slides = root.getElementsByClassName('slide');
                                                    var current = 0;
                                                    var pause = 5000; // 5 Sekunden pro Artikel
                                        
                                                    if (slides.length > 1) {
                                                        setInterval(function() {
                                                            // Alten Slide verstecken
                                                            slides[current].classList.remove('active');
                                                            
                                                            // Index weiterzählen
                                                            current = (current + 1) % slides.length;
                                                            
                                                            // Neuen Slide zeigen
                                                            slides[current].classList.add('active');
                                                        }, pause);
                                                    }
                                                }, 1500); // 1,5 Sekunden Verzögerung beim Start
                                            })();
                                        </script>
                                        OliverIOO 1 Antwort Letzte Antwort
                                        0
                                        • holly200289H holly200289
                                          <style>
                                              #rss_wrapper_<%- widgetid %> { 
                                                  height: 100%; 
                                                  width: 100%;
                                                  overflow: hidden;
                                              }
                                              #rss_wrapper_<%- widgetid %> .slide { 
                                                  display: none; 
                                                  padding: 10px;
                                              }
                                              #rss_wrapper_<%- widgetid %> .active { 
                                                  display: block; 
                                                  animation: fadeInRSS 0.6s ease-in-out;
                                              }
                                              @keyframes fadeInRSS { from { opacity: 0; } to { opacity: 1; } }
                                          </style>
                                          
                                          <div id="rss_wrapper_<%- widgetid %>">
                                              <% if (rss && rss.articles && rss.articles.length > 0) { %>
                                                  <% rss.articles.forEach(function(item, index){ %>
                                                      <div class="slide <%- index === 0 ? 'active' : '' %>">
                                                          <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                                                          <h3 style="margin: 8px 0;"><%- item.title %></h3>
                                                          <div class="rss-desc"><%- item.description %></div>
                                                      </div>
                                                  <% }); %>
                                              <% } else { %>
                                                  <p>Lade Feeds...</p>
                                              <% } %>
                                          </div>
                                          
                                          <script>
                                              (function() {
                                                  // Das setTimeout sorgt dafür, dass VIS Zeit zum Rendern hat
                                                  setTimeout(function() {
                                                      var containerId = 'rss_wrapper_<%- widgetid %>';
                                                      var root = document.getElementById(containerId);
                                                      if (!root) return;
                                          
                                                      var slides = root.getElementsByClassName('slide');
                                                      var current = 0;
                                                      var pause = 5000; // 5 Sekunden pro Artikel
                                          
                                                      if (slides.length > 1) {
                                                          setInterval(function() {
                                                              // Alten Slide verstecken
                                                              slides[current].classList.remove('active');
                                                              
                                                              // Index weiterzählen
                                                              current = (current + 1) % slides.length;
                                                              
                                                              // Neuen Slide zeigen
                                                              slides[current].classList.add('active');
                                                          }, pause);
                                                      }
                                                  }, 1500); // 1,5 Sekunden Verzögerung beim Start
                                              })();
                                          </script>
                                          OliverIOO Offline
                                          OliverIOO Offline
                                          OliverIO
                                          schrieb am zuletzt editiert von
                                          #28

                                          Leider nein.
                                          Das problematische setInterval ist noch drin

                                          <style>
                                              #rss_wrapper_<%- widgetid %> { 
                                                  height: 100%; 
                                                  width: 100%;
                                                  overflow: hidden;
                                              }
                                          
                                              #rss_wrapper_<%- widgetid %> .slide { 
                                                  display: none; 
                                                  padding: 10px;
                                              }
                                          
                                              #rss_wrapper_<%- widgetid %> .active { 
                                                  display: block; 
                                                  animation: fadeInRSS 0.6s ease-in-out;
                                              }
                                          
                                              @keyframes fadeInRSS {
                                                  from { opacity: 0; }
                                                  to { opacity: 1; }
                                              }
                                          </style>
                                          
                                          <div id="rss_wrapper_<%- widgetid %>">
                                              <% if (rss && rss.articles && rss.articles.length > 0) { %>
                                                  <% rss.articles.forEach(function(item, index){ %>
                                                      <div class="slide <%- index === 0 ? 'active' : '' %>">
                                                          <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                                                          <h3 style="margin: 8px 0;"><%- item.title %></h3>
                                                          <div class="rss-desc"><%- item.description %></div>
                                                      </div>
                                                  <% }); %>
                                              <% } else { %>
                                                  <p>Lade Feeds...</p>
                                              <% } %>
                                          </div>
                                          
                                          <script>
                                              (function() {
                                                  var containerId = 'rss_wrapper_<%- widgetid %>';
                                                  var timeoutKey = '__rssTimeout_' + containerId;
                                          
                                                  /*
                                                   * Falls das Template wegen geänderter RSS-Daten erneut gerendert wird,
                                                   * wird ein eventuell noch laufender Timeout dieses Widgets entfernt.
                                                   */
                                                  if (window[timeoutKey]) {
                                                      clearTimeout(window[timeoutKey]);
                                                      window[timeoutKey] = null;
                                                  }
                                          
                                                  function startSlider() {
                                                      var root = document.getElementById(containerId);
                                                      if (!root) return;
                                          
                                                      var slides = root.getElementsByClassName('slide');
                                                      var current = 0;
                                                      var pause = 5000;
                                          
                                                      if (slides.length <= 1) return;
                                          
                                                      function showNextSlide() {
                                                          /*
                                                           * Bei jedem Durchlauf erneut prüfen, ob der Container noch existiert.
                                                           * Falls VIS das Widget neu gerendert oder entfernt hat, endet die Kette.
                                                           */
                                                          root = document.getElementById(containerId);
                                                          if (!root) {
                                                              window[timeoutKey] = null;
                                                              return;
                                                          }
                                          
                                                          slides = root.getElementsByClassName('slide');
                                                          if (slides.length <= 1) {
                                                              window[timeoutKey] = null;
                                                              return;
                                                          }
                                          
                                                          if (current >= slides.length) {
                                                              current = 0;
                                                          }
                                          
                                                          slides[current].classList.remove('active');
                                          
                                                          current = (current + 1) % slides.length;
                                          
                                                          slides[current].classList.add('active');
                                          
                                                          window[timeoutKey] = setTimeout(showNextSlide, pause);
                                                      }
                                          
                                                      window[timeoutKey] = setTimeout(showNextSlide, pause);
                                                  }
                                          
                                                  /*
                                                   * Verzögerter Start, damit VIS Zeit zum Rendern hat.
                                                   * Auch dieser Start-Timeout wird beim erneuten Rendern oben abgeräumt.
                                                   */
                                                  window[timeoutKey] = setTimeout(startSlider, 1500);
                                              })();
                                          </script>
                                          

                                          Meine Adapter und Widgets
                                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                          Links im Profil

                                          1 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          357

                                          Online

                                          32.9k

                                          Benutzer

                                          83.0k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe