From: Wolfram Schneider Date: Mon, 12 May 2014 13:23:30 +0000 (+0000) Subject: Merge remote branch 'origin/master' into wosch X-Git-Tag: 1.0.0~621^2~8 X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=commitdiff_plain;h=db2c897212597cb73357dd8def2922a9285bdacf;hp=58260adb329a4e81a789b0076a1d005da0e94d58;p=mkws-moved-to-github.git Merge remote branch 'origin/master' into wosch --- diff --git a/doc/mkws-developer.txt b/doc/mkws-developer.txt index 7561587..693df63 100644 --- a/doc/mkws-developer.txt +++ b/doc/mkws-developer.txt @@ -71,10 +71,11 @@ that you want to specialise from -- in this case, "Records" -- using the promotion function that's been registered for that type. Once this has been done, the specialisations can be introduced. In -this case, it's a very matter of changing the "maxrecs" configuration -setting to 1 unless it's already been given an explicit value. (That -would occur if the HTML used an element like
, though it's not obvious why anyone would do that.) +this case, it's a very simple matter of changing the "maxrecs" +configuration setting to 1 unless it's already been given an explicit +value. (That would occur if the HTML used an element like
, though it's not obvious why anyone +would do that.) WIDGET PROPERTIES AND METHODS diff --git a/examples/htdocs/jasmine-local-popup.html b/examples/htdocs/jasmine-local-popup.html index a848122..02f1863 100644 --- a/examples/htdocs/jasmine-local-popup.html +++ b/examples/htdocs/jasmine-local-popup.html @@ -36,6 +36,10 @@ + + diff --git a/examples/htdocs/jasmine-popup.html b/examples/htdocs/jasmine-popup.html index 05deaaa..c7667a7 100644 --- a/examples/htdocs/jasmine-popup.html +++ b/examples/htdocs/jasmine-popup.html @@ -36,6 +36,10 @@ + + diff --git a/src/mkws-core.js b/src/mkws-core.js index 69bd47d..6eb53bd 100644 --- a/src/mkws-core.js +++ b/src/mkws-core.js @@ -428,8 +428,34 @@ mkws.pagerNext = function(tname) { } + function selectorForAllWidgets() { + if (mkws.config.scan_all_nodes) { + // This is the old version, which works by telling jQuery to + // find every node that has a class beginning with "mkws". In + // theory it should be slower than the class-based selector; but + // instrumentation suprisnigly shows this is consistently + // faster. It also has the advantage that any widgets of + // non-registered types are logged as warnings rather than + // silently ignored. + return '[class^="mkws"],[class*=" mkws"]'; + } else { + // This is the new version, which works by looking up the + // specific classes of all registered widget types. Because all + // it requires jQuery to do is some hash lookups in pre-built + // tables, it should be very fast; but it silently ignores + // widgets of unregistered types. + var s = ""; + for (var type in mkws.widgetType2function) { + if (s) s += ','; + s += '.mkws' + type; + } + return s; + } + } + + function makeWidgetsWithin(level, node) { - node.find('[class^="mkws"],[class*=" mkws"]').each(function() { + node.find(selectorForAllWidgets()).each(function() { handleNodeWithTeam(this, function(tname, type) { var myTeam = mkws.teams[tname]; if (!myTeam) {