New widget-setup utility function, hideWhenNarrow.
[mkws-moved-to-github.git] / src / mkws-core.js
index 4a48c48..ba20a02 100644 (file)
@@ -330,33 +330,40 @@ mkws.pagerNext = function(tname) {
 
 
     function resizePage() {
-       var list = ["mkwsSwitch", "mkwsLang"];
-
-       var width = mkws.config.responsive_design_width;
-       var parent = $(".mkwsTermlists").parent();
-
-       if ($(window).width() <= width &&
-           parent.hasClass("mkwsTermlist-Container-wide")) {
-           log("changing from wide to narrow: " + $(window).width());
-           $(".mkwsTermlist-Container-wide").hide();
-           $(".mkwsTermlist-Container-narrow").show();
+       var list = ["Switch", "Lang"];
+
+       var threshhold = mkws.config.responsive_design_width;
+        var width = $(window).width();
+        var from, to, method;
+
+        if ((mkws.width === undefined || mkws.width > threshhold) &&
+                   width <= threshhold) {
+            from = "wide"; to = "narrow"; method = "hide";
+        } else if ((mkws.width === undefined || mkws.width <= threshhold) &&
+                   width > threshhold) {
+            from = "narrow"; to = "wide"; method = "show";
+        }
+        mkws.width = width;
+
+        if (from) {
+           log("changing from " + from + " to " + to + ": " + width);
            for (var tname in mkws.teams) {
-                mkws.teams[tname].queue("resize-narrow").publish();
-               $(".mkwsTermlists.mkwsTeam_" + tname).appendTo($(".mkwsTermlist-Container-narrow.mkwsTeam_" + tname));
+                var team = mkws.teams[tname];
+                team.visitWidgets(function (t, w) {
+                    var w1 = team.widget(t + "-Container-" + from);
+                    var w2 = team.widget(t + "-Container-" + to);
+                    if (w1) {
+                        $(w1.node).hide();
+                    }
+                    if (w2) {
+                        $(w2.node).show();
+                       $(w.node).appendTo($(w2.node));
+                    }
+                });
+                team.queue("resize" + to).publish();
                for(var i = 0; i < list.length; i++) {
-                   $("." + list[i] + ".mkwsTeam_" + tname).hide();
-               }
-           }
-       } else if ($(window).width() > width &&
-                  parent.hasClass("mkwsTermlist-Container-narrow")) {
-           log("changing from narrow to wide: " + $(window).width());
-           $(".mkwsTermlist-Container-wide").show();
-           $(".mkwsTermlist-Container-narrow").hide();
-           for (var tname in mkws.teams) {
-                mkws.teams[tname].queue("resize-wide").publish();
-               $(".mkwsTermlists.mkwsTeam_" + tname).appendTo($(".mkwsTermlist-Container-wide.mkwsTeam_" + tname));
-               for(var i = 0; i < list.length; i++) {
-                   $("." + list[i] + ".mkwsTeam_" + tname).show();
+                    var widget = team.widget(list[i]);
+                    if (widget) $(widget.node)[method]();
                }
            }
        }
@@ -424,7 +431,7 @@ mkws.pagerNext = function(tname) {
                 myTeam.addWidget(myWidget);
                 var newHTML = this.innerHTML;
                 if (newHTML !== oldHTML) {
-                    log("widget " + tname + ":" + type + " HTML changed from '" + oldHTML + "' to '" + newHTML + "': reparse!");
+                    log("widget " + tname + ":" + type + " HTML changed: reparsing");
                     makeWidgetsWithin(level+1, $(this));
                 }
             });
@@ -504,15 +511,15 @@ mkws.pagerNext = function(tname) {
        var now = $.now();
        log("Walking MKWS nodes took " + (now-then) + " ms");
 
-//        for (var tName in mkws.teams) {
-//            var myTeam = mkws.teams[tName]
-//            var types = myTeam.widgetTypes();
-//            log("TEAM '" + tName + "' = " + myTeam + " has widget types " + types);
-//            for (var i = 0; i < types.length; i++) {
-//                var type = types[i];
-//                log("  has widget of type '" + type + "': " + myTeam.widget(type));
-//            }
-//        }
+        /*
+        for (var tName in mkws.teams) {
+            var myTeam = mkws.teams[tName]
+            log("TEAM '" + tName + "' = " + myTeam + " ...");
+            myTeam.visitWidgets(function(t, w) {
+                log("  has widget of type '" + t + "': " + w);
+            });
+        }
+        */
 
        if (mkws.config.use_service_proxy) {
            authenticateSession(mkws.config.service_proxy_auth,