X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fmkws-core.js;h=0bfc174472329b0f097dc8040f87ae9daca12bed;hb=96ff13c77214b76cb54dbaa6b9fae081a856738f;hp=11a48894406c83006dd8af6188d8f68c75f54362;hpb=a664fefef9d331978c1e5c9b76e1c644133660da;p=mkws-moved-to-github.git diff --git a/src/mkws-core.js b/src/mkws-core.js index 11a4889..0bfc174 100644 --- a/src/mkws-core.js +++ b/src/mkws-core.js @@ -322,6 +322,24 @@ mkws.pagerNext = function(tname) { } } + + function makeWidgetsWithin(level, node) { + node.find('[class^="mkws"],[class*=" mkws"]').each(function() { + handleNodeWithTeam(this, function(tname, type) { + var oldHTML = this.innerHTML; + var myTeam = mkws.teams[tname]; + var myWidget = widget(j, myTeam, type, this); + myTeam.addWidget(myWidget); + var newHTML = this.innerHTML; + if (newHTML !== oldHTML) { + log("widget " + tname + ":" + type + " HTML changed from '" + oldHTML + "' to '" + newHTML + "': reparse!"); + makeWidgetsWithin(level+1, $(this)); + } + }); + }); + } + + $(document).ready(function() { var saved_config; if (typeof mkws_config === 'undefined') { @@ -388,17 +406,9 @@ mkws.pagerNext = function(tname) { } }); }); - // Second pass: make the individual widget objects. This has - // to be done separately, and after the team-creation, since - // that sometimes makes new widget nodes (e.g. creating - // mkwsTermlists inside mkwsResults. - $('[class^="mkws"],[class*=" mkws"]').each(function() { - handleNodeWithTeam(this, function(tname, type) { - var myTeam = mkws.teams[tname]; - var myWidget = widget(j, myTeam, type, this); - myTeam.addWidget(myWidget); - }); - }); + + makeWidgetsWithin(1, $(':root')); + var now = $.now(); log("Walking MKWS nodes took " + (now-then) + " ms");