');
+
+ this.autosearch();
});
mkws.registerWidgetType('Ranking', function() {
- var tname = this.team.name();
- var that = this;
- var M = mkws.M;
-
- var s = '';
+
+ this.node.html(s);
+
+
+ function mkwsHtmlSort() {
+ var order = that.team.sortOrder();
+
+ that.log("making sort HTML, sortOrder = '" + order + "'");
+ var sort_html = '';
+ return sort_html;
+ }
- function mkwsHtmlSort() {
- var order = that.team.sortOrder();
+ function mkwsHtmlPerpage() {
+ var perpage = that.team.perpage();
- that.log("HTML sort, sortOrder = '" + order + "'");
- var sort_html = '';
- function mkwsHtmlPerpage() {
- var perpage = that.team.perpage();
-
- that.log("HTML perpage, perpage = " + perpage);
- var perpage_html = '';
-
- for(var i = 0; i < that.config.perpage_options.length; i++) {
- var key = that.config.perpage_options[i];
-
- perpage_html += '';
- }
- perpage_html += '';
-
- return perpage_html;
- }
+ return perpage_html;
+ }
});
mkws.registerWidgetType('Lang', function() {
- // dynamic URL or static page? /path/foo?query=test
- /* create locale language menu */
- if (!this.config.show_lang) return;
-
- var lang_default = "en";
- var lang = this.config.lang || lang_default;
- var list = [];
-
- /* display a list of configured languages, or all */
- var lang_options = this.config.lang_options || [];
- var toBeIncluded = {};
- for (var i = 0; i < lang_options.length; i++) {
- toBeIncluded[lang_options[i]] = true;
- }
-
- for (var k in mkws.locale_lang) {
- if (toBeIncluded[k] || lang_options.length == 0)
- list.push(k);
+ // dynamic URL or static page? /path/foo?query=test
+ /* create locale language menu */
+ if (!this.config.show_lang) return;
+
+ var lang_default = "en";
+ var lang = this.config.lang || lang_default;
+ var list = [];
+
+ /* display a list of configured languages, or all */
+ var lang_options = this.config.lang_options || [];
+ var toBeIncluded = {};
+ for (var i = 0; i < lang_options.length; i++) {
+ toBeIncluded[lang_options[i]] = true;
+ }
+
+ for (var k in mkws.locale_lang) {
+ if (toBeIncluded[k] || lang_options.length == 0)
+ list.push(k);
+ }
+
+ // add english link
+ if (lang_options.length == 0 || toBeIncluded[lang_default])
+ list.push(lang_default);
+
+ this.log("language menu: " + list.join(", "));
+
+ /* the HTML part */
+ var data = "";
+ for (var i = 0; i < list.length; i++) {
+ var l = list[i];
+ if (data)
+ data += ' | ';
+
+ if (lang == l) {
+ data += ' ' + l + ' ';
+ } else {
+ data += ' ' + l + ' '
}
+ }
- // add english link
- if (lang_options.length == 0 || toBeIncluded[lang_default])
- list.push(lang_default);
+ this.node.html(data);
+ this.hideWhenNarrow();
- this.log("Language menu for: " + list.join(", "));
- /* the HTML part */
- var data = "";
- for (var i = 0; i < list.length; i++) {
- var l = list[i];
- if (data)
- data += ' | ';
+ // set or re-set "lang" URL parameter
+ function lang_url(lang) {
+ var query = location.search;
+ // no query parameters? done
+ if (!query) {
+ return "?lang=" + lang;
+ }
- if (lang == l) {
- data += ' ' + l + ' ';
- } else {
- data += ' ' + l + ' '
- }
+ // parameter does not exist
+ if (!query.match(/[\?&]lang=/)) {
+ return query + "&lang=" + lang;
}
- $(this.node).html(data);
- widget.hideWhenNarrow(this);
+ // replace existing parameter
+ query = query.replace(/\?lang=([^]*)/, "?lang=" + lang);
+ query = query.replace(/\&lang=([^]*)/, "&lang=" + lang);
+ return query;
+ }
+});
- // set or re-set "lang" URL parameter
- function lang_url(lang) {
- var query = location.search;
- // no query parameters? done
- if (!query) {
- return "?lang=" + lang;
- }
+mkws.registerWidgetType('MOTD', function() {
+ var container = this.team.widget('MOTDContainer');
+ if (container) {
+ // Move the MOTD from the provided element down into the container
+ this.node.appendTo(container.node);
+ }
+});
- // parameter does not exist
- if (!query.match(/[\?&]lang=/)) {
- return query + "&lang=" + lang;
- }
- // replace existing parameter
- query = query.replace(/\?lang=([^]*)/, "?lang=" + lang);
- query = query.replace(/\&lang=([^]*)/, "&lang=" + lang);
- return query;
+// This widget has no functionality of its own, but its configuration
+// is copied up into its team, allowing it to affect other widgets in
+// the team.
+//
+mkws.registerWidgetType('Config', function() {
+ var c = this.config;
+ for (var name in c) {
+ if (c.hasOwnProperty(name)) {
+ this.team.config[name] = c[name];
+ this.log(this + " copied property " + name + "='" + c[name] + "' up to team");
}
+ }
});
-mkws.registerWidgetType('MOTD', function() {
- var container = this.team.widget('MOTDContainer');
- if (container) {
- // Move the MOTD from the provided element down into the container
- $(this.node).appendTo(container.node);
+mkws.registerWidgetType('Progress', function() {
+ var that = this;
+
+ this.node.hide();
+ this.team.queue("stat").subscribe(function(data) {
+ var s = '';
+ for (var i = 0; i < data.clients; i++) {
+ if (i == data.clients - data.activeclients) {
+ s += '';
+ s += '';
+ }
+ s += '█';
}
+ s += '';
+ that.node.html(s);
+ that.node.show();
+ });
});
@@ -423,10 +420,5 @@ mkws.registerWidgetType('MOTD', function() {
mkws.registerWidgetType('Query', function() {});
mkws.registerWidgetType('MOTDContainer', function() {});
mkws.registerWidgetType('Button', function() {});
-mkws.registerWidgetType('Popup', function() {});
-// Not sure whether the following should have functionality:
-// Select HTMLFormElement
-// *-Container-wide HTMLTableCellElement
-// *-Container-narrow HTMLDivElement
-// Bytarget HTMLDivElement
+