<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wikihm.henrywauzivuff.xyz/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-YSWSSearch.js</id>
	<title>MediaWiki:Gadget-YSWSSearch.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wikihm.henrywauzivuff.xyz/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-YSWSSearch.js"/>
	<link rel="alternate" type="text/html" href="https://wikihm.henrywauzivuff.xyz/index.php?title=MediaWiki:Gadget-YSWSSearch.js&amp;action=history"/>
	<updated>2026-11-07T05:31:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wikihm.henrywauzivuff.xyz/index.php?title=MediaWiki:Gadget-YSWSSearch.js&amp;diff=320&amp;oldid=prev</id>
		<title>U0AHNB20WDD: Created page with &quot;(function () {     &#039;use strict&#039;;     function todayISO() {         var d = new Date();         return d.getFullYear() + &#039;-&#039; + String(d.getMonth() + 1).padStart(2, &#039;0&#039;) + &#039;-&#039; + String(d.getDate()).padStart(2, &#039;0&#039;);     }     function init(root) {         if (root.dataset.yswsInitialized === &#039;1&#039;) return;         var rows = Array.from(root.querySelectorAll(&#039;tr.ysws-program&#039;));         if (!rows.length) return;         root.dataset.yswsInitialized = &#039;1&#039;;         var controls...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wikihm.henrywauzivuff.xyz/index.php?title=MediaWiki:Gadget-YSWSSearch.js&amp;diff=320&amp;oldid=prev"/>
		<updated>2026-11-05T13:18:54Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;(function () {     &amp;#039;use strict&amp;#039;;     function todayISO() {         var d = new Date();         return d.getFullYear() + &amp;#039;-&amp;#039; + String(d.getMonth() + 1).padStart(2, &amp;#039;0&amp;#039;) + &amp;#039;-&amp;#039; + String(d.getDate()).padStart(2, &amp;#039;0&amp;#039;);     }     function init(root) {         if (root.dataset.yswsInitialized === &amp;#039;1&amp;#039;) return;         var rows = Array.from(root.querySelectorAll(&amp;#039;tr.ysws-program&amp;#039;));         if (!rows.length) return;         root.dataset.yswsInitialized = &amp;#039;1&amp;#039;;         var controls...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;(function () {&lt;br /&gt;
    &amp;#039;use strict&amp;#039;;&lt;br /&gt;
    function todayISO() {&lt;br /&gt;
        var d = new Date();&lt;br /&gt;
        return d.getFullYear() + &amp;#039;-&amp;#039; + String(d.getMonth() + 1).padStart(2, &amp;#039;0&amp;#039;) + &amp;#039;-&amp;#039; + String(d.getDate()).padStart(2, &amp;#039;0&amp;#039;);&lt;br /&gt;
    }&lt;br /&gt;
    function init(root) {&lt;br /&gt;
        if (root.dataset.yswsInitialized === &amp;#039;1&amp;#039;) return;&lt;br /&gt;
        var rows = Array.from(root.querySelectorAll(&amp;#039;tr.ysws-program&amp;#039;));&lt;br /&gt;
        if (!rows.length) return;&lt;br /&gt;
        root.dataset.yswsInitialized = &amp;#039;1&amp;#039;;&lt;br /&gt;
        var controls = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
        controls.className = &amp;#039;ysws-controls&amp;#039;;&lt;br /&gt;
        var label = document.createElement(&amp;#039;label&amp;#039;);&lt;br /&gt;
        label.textContent = &amp;#039;Search programs&amp;#039;;&lt;br /&gt;
        var input = document.createElement(&amp;#039;input&amp;#039;);&lt;br /&gt;
        input.type = &amp;#039;search&amp;#039;;&lt;br /&gt;
        input.className = &amp;#039;ysws-search&amp;#039;;&lt;br /&gt;
        input.placeholder = &amp;#039;Search name or description&amp;#039;;&lt;br /&gt;
        input.autocomplete = &amp;#039;off&amp;#039;;&lt;br /&gt;
        input.id = &amp;#039;ysws-search-&amp;#039; + Math.random().toString(36).slice(2);&lt;br /&gt;
        label.htmlFor = input.id;&lt;br /&gt;
        var results = document.createElement(&amp;#039;p&amp;#039;);&lt;br /&gt;
        results.className = &amp;#039;ysws-results&amp;#039;;&lt;br /&gt;
        results.setAttribute(&amp;#039;role&amp;#039;, &amp;#039;status&amp;#039;);&lt;br /&gt;
        results.setAttribute(&amp;#039;aria-live&amp;#039;, &amp;#039;polite&amp;#039;);&lt;br /&gt;
        controls.append(label, input, results);&lt;br /&gt;
        var tableWrap = root.querySelector(&amp;#039;.ysws-table-wrapper&amp;#039;);&lt;br /&gt;
        root.insertBefore(controls, tableWrap || root.firstChild);&lt;br /&gt;
        var empty = document.createElement(&amp;#039;p&amp;#039;);&lt;br /&gt;
        empty.className = &amp;#039;ysws-empty&amp;#039;;&lt;br /&gt;
        empty.textContent = &amp;#039;No programs match your search.&amp;#039;;&lt;br /&gt;
        empty.hidden = true;&lt;br /&gt;
        if (tableWrap) tableWrap.after(empty); else root.appendChild(empty);&lt;br /&gt;
        var today = todayISO();&lt;br /&gt;
        rows.forEach(function (row) {&lt;br /&gt;
            var start = row.dataset.start || &amp;#039;&amp;#039;;&lt;br /&gt;
            var end = row.dataset.end || &amp;#039;&amp;#039;;&lt;br /&gt;
            var status = &amp;#039;Unknown&amp;#039;;&lt;br /&gt;
            if (start &amp;amp;&amp;amp; start &amp;gt; today) status = &amp;#039;Upcoming&amp;#039;;&lt;br /&gt;
            else if (end &amp;amp;&amp;amp; end &amp;lt; today) status = &amp;#039;Ended&amp;#039;;&lt;br /&gt;
            else if (start &amp;amp;&amp;amp; end &amp;amp;&amp;amp; start &amp;lt;= today &amp;amp;&amp;amp; end &amp;gt;= today) status = &amp;#039;Ongoing&amp;#039;;&lt;br /&gt;
            var cell = row.querySelector(&amp;#039;.ysws-status&amp;#039;);&lt;br /&gt;
            if (cell) { cell.textContent = status; cell.setAttribute(&amp;#039;data-sort-value&amp;#039;, status); }&lt;br /&gt;
        });&lt;br /&gt;
        function update() {&lt;br /&gt;
            var q = input.value.trim().toLocaleLowerCase();&lt;br /&gt;
            var count = 0;&lt;br /&gt;
            rows.forEach(function (row) {&lt;br /&gt;
                var name = row.querySelector(&amp;#039;.ysws-name&amp;#039;);&lt;br /&gt;
                var desc = row.querySelector(&amp;#039;.ysws-description&amp;#039;);&lt;br /&gt;
                var haystack = ((name &amp;amp;&amp;amp; name.textContent) || &amp;#039;&amp;#039;) + &amp;#039; &amp;#039; + ((desc &amp;amp;&amp;amp; desc.textContent) || &amp;#039;&amp;#039;);&lt;br /&gt;
                var match = haystack.toLocaleLowerCase().includes(q);&lt;br /&gt;
                row.hidden = !match;&lt;br /&gt;
                if (match) count++;&lt;br /&gt;
            });&lt;br /&gt;
            results.textContent = count + &amp;#039; of &amp;#039; + rows.length + &amp;#039; programs shown&amp;#039;;&lt;br /&gt;
            empty.hidden = count !== 0;&lt;br /&gt;
        }&lt;br /&gt;
        input.addEventListener(&amp;#039;input&amp;#039;, update);&lt;br /&gt;
        update();&lt;br /&gt;
    }&lt;br /&gt;
    function initAll(node) {&lt;br /&gt;
        if (!node || !node.querySelectorAll) return;&lt;br /&gt;
        node.querySelectorAll(&amp;#039;.ysws-directory&amp;#039;).forEach(init);&lt;br /&gt;
        if (node.matches &amp;amp;&amp;amp; node.matches(&amp;#039;.ysws-directory&amp;#039;)) init(node);&lt;br /&gt;
    }&lt;br /&gt;
    mw.hook(&amp;#039;wikipage.content&amp;#039;).add(function ($content) { $content.each(function () { initAll(this); }); });&lt;br /&gt;
    if (document.readyState === &amp;#039;loading&amp;#039;) document.addEventListener(&amp;#039;DOMContentLoaded&amp;#039;, function () { initAll(document); });&lt;br /&gt;
    else initAll(document);&lt;br /&gt;
}());&lt;/div&gt;</summary>
		<author><name>U0AHNB20WDD</name></author>
	</entry>
</feed>