<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Menu&#x2F;Untermenu in Vis]]></title><description><![CDATA[<p dir="auto">Ich möchte in meiner Vis ein Menu mit Untermenus erstellen. Dazu soll durch Auswahl einer Zeile im Menu das entsprechende Untermenu in die Tabelle geladen werden</p>
<p dir="auto">Dazu habe ich bis jetzt aufgebaut:</p>
<ul>
<li>das Menu wird in einem Html Widget in einer darin integrierten Table dargestellt</li>
<li>der Html-Code für die Table wird über Binding von einem Datenpunkt ausgelesen</li>
<li>über Scripting im Vis (jQuery) werden die Werte der gewählten Reihe in einen Datenpunkt geschrieben</li>
<li>die Änderung dieses Datenpunktes triggered die Neuberechnung des Datenpunktes für die Tabelle</li>
</ul>
<p dir="auto">Damit erreiche ich den ersten Schritt, dass das Untermenü nun anzeigt wird. Allerdings funktionieren die jQuery- Trigger nach Änderung der Tabelle nicht. Erst wenn die Seite aktualisiert wird (z.B. mit F5) sind die Trigger wieder aktiv.</p>
<p dir="auto">Die vis Scripte habe ich im <a href="https://forum.iobroker.net/topic/48663/howto-skripte-im-vis-editor-mit-jquery">[HowTo] Skripte im VIS Editor mit jQuery</a> gefunden und entsprechend abgeändert.</p>
<pre><code>    function  waitForWidgets(callBack, counter = 0, debug = true) {
        if (counter &lt; 500) {
 
            setTimeout(function () {
                if (vis.widgets &amp;&amp; vis.widgets !== null &amp;&amp; Object.keys(vis.widgets).length &gt; 0) {
                    callBack();
                } else {
                    if (debug) console.log(`[waitForWidgets] wait for widgets`);
                    counter++
                    vis.binds.materialdesign.helper.waitForWidgets(callBack, counter, debug);
                }
            }, 1);
        } else {
            console.warn(`[waitForWidgets] stop waiting for vis widgets after ${counter} retries`);
            callBack();
        }
    }
    
    function setState(id, value) {
        this.vis.setValue(id, value);
    }
    
    waitForWidgets(function () {
      // Widgets sind vollstÃ¤ndig geladen, wir kÃ¶nnen irgendwas damit machen
    /*    $("tr").on("click", "[class*='title']", function(){
        alert('hier: '+ $(this).html());
    });*/
        $("tr.menuitem").click(function(){
                var browseKey = $('.browseKey',this).html();
                var headerTitle = $('.header',this).html();
                var newCommand = `{\"browseKey\": \"${browseKey}\", \"headerTitle\": \"${headerTitle}\"}`;
                console.log(newCommand);
                setState(testState,newCommand);
        });
        $("td.menu-title").hover(function(){
            $(this).toggleClass('inside');
        });
        $("td.album-title").hover(function(){
            $(this).toggleClass('inside');
        });
    }, 0, true); 

</code></pre>
<p dir="auto">Die Trigger in den Zeilen 28 bis 44 funktionieren, wie gesagt, nur einmal und nicht nach der Neuerstellung der Tabelle.</p>
<p dir="auto">Leider bin ich nicht so firm in jQuery, dass ich weiß, wie ich diese Trigger immer aktiv halten kann.</p>
<p dir="auto">Kann mir da jemand helfen?</p>
<p dir="auto">Vielen Dank im Voraus.</p>
]]></description><link>https://forum.iobroker.net/topic/85185/menu-untermenu-in-vis</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 06:59:20 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/85185.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Aug 2026 13:12:59 GMT</pubDate><ttl>60</ttl></channel></rss>