diff --git a/core/modules/widgets/action-listops.js b/core/modules/widgets/action-listops.js index de866619f..a6b0d4f62 100644 --- a/core/modules/widgets/action-listops.js +++ b/core/modules/widgets/action-listops.js @@ -6,86 +6,87 @@ module-type: widget Action widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler) \*/ -(function () { +(function() { - /*jslint node: true, browser: true */ - /*global $tw: false */ - "use strict"; +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; +var Widget = require("$:/core/modules/widgets/widget.js").widget; +var ActionListopsWidget = function(parseTreeNode, options) { + this.initialise(parseTreeNode, options); +}; +/** + * Inherit from the base widget class + */ +ActionListopsWidget.prototype = new Widget(); +/** + * Render this widget into the DOM + */ +ActionListopsWidget.prototype.render = function(parent, nextSibling) { + this.computeAttributes(); + this.execute(); +}; +/** + * Compute the internal state of the widget + */ +ActionListopsWidget.prototype.execute = function() { + // Get our parameters + this.target = this.getAttribute("$tiddler", this.getVariable( + "currentTiddler")); + this.filter = this.getAttribute("$filter"); + this.subfilter = this.getAttribute("$subfilter"); + this.listField = this.getAttribute("$field", "list"); + this.listIndex = this.getAttribute("$index"); + this.filtertags = this.getAttribute("$tags"); +}; +/** + * Refresh the widget by ensuring our attributes are up to date + */ +ActionListopsWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(changedAttributes.$tiddler || changedAttributes.$filter || + changedAttributes.$subfilter || changedAttributes.$field || + changedAttributes.$index || changedAttributes.$tags) { + this.refreshSelf(); + return true; + } + return this.refreshChildren(changedTiddlers); +}; +/** + * Invoke the action associated with this widget + */ +ActionListopsWidget.prototype.invokeAction = function(triggeringWidget, + event) { + //Apply the specified filters to the lists + var field = this.listField, + index, + type = "!!", + list = this.listField; + if(this.listIndex) { + field = undefined; + index = this.listIndex; + type = "##"; + list = this.listIndex; + } + if(this.filter) { + this.wiki.setText(this.target, field, index, $tw.utils.stringifyList( + this.wiki + .filterTiddlers(this.filter, this))); + } + if(this.subfilter) { + var subfilter = "[list[" + this.target + type + list + "]] " + this.subfilter; + this.wiki.setText(this.target, field, index, $tw.utils.stringifyList( + this.wiki + .filterTiddlers(subfilter, this))); + } + if(this.filtertags) { + var tagfilter = "[list[" + this.target + "!!tags]] " + this.filtertags; + this.wiki.setText(this.target, "tags", undefined, $tw.utils.stringifyList( + this.wiki.filterTiddlers(tagfilter, this))); + } + return true; // Action was invoked +}; - var Widget = require("$:/core/modules/widgets/widget.js") - .widget; - - var ActionListopsWidget = function (parseTreeNode, options) { - this.initialise(parseTreeNode, options); - }; - - /* - Inherit from the base widget class - */ - ActionListopsWidget.prototype = new Widget(); - - /* - Render this widget into the DOM - */ - ActionListopsWidget.prototype.render = function (parent, nextSibling) { - this.computeAttributes(); - this.execute(); - }; - - /* - Compute the internal state of the widget - */ - ActionListopsWidget.prototype.execute = function () { - // Get our parameters - this.target = this.getAttribute("$tiddler", this.getVariable("currentTiddler")); - this.filter = this.getAttribute("$filter"); - this.subfilter = this.getAttribute("$subfilter"); - this.listField = this.getAttribute("$field", "list"); - this.listIndex = this.getAttribute("$index"); - this.filtertags = this.getAttribute("$tags"); - }; - - /* - Refresh the widget by ensuring our attributes are up to date - */ - ActionListopsWidget.prototype.refresh = function (changedTiddlers) { - var changedAttributes = this.computeAttributes(); - if (changedAttributes.$tiddler || changedAttributes.$filter || changedAttributes.$subfilter || changedAttributes.$list || changedAttributes.$index || changedAttributes.$tags) { - this.refreshSelf(); - return true; - } - return this.refreshChildren(changedTiddlers); - }; - - /* - Invoke the action associated with this widget - */ - ActionListopsWidget.prototype.invokeAction = function (triggeringWidget, event) { - //Apply the specified filters to the lists - var field = this.listField, - index = undefined, - type = "!!", - list = this.listField; - if (this.listIndex) { - field = undefined; - index = this.listIndex; - type = "##"; - list = this.listIndex; - } - if (this.filter) { - this.wiki.setText(this.target, field, index, $tw.utils.stringifyList(this.wiki.filterTiddlers(this.filter, this))); - } - if (this.subfilter) { - var subfilter = "[list[" + this.target + type + list + "]] " + this.subfilter; - this.wiki.setText(this.target, field, index, $tw.utils.stringifyList(this.wiki.filterTiddlers(subfilter, this))); - } - if (this.filtertags) { - var tagfilter = "[list[" + this.target + "!!tags]] " + this.filtertags; - this.wiki.setText(this.target, "tags", undefined, $tw.utils.stringifyList(this.wiki.filterTiddlers(tagfilter, this))); - } - return true; // Action was invoked - }; - - exports["action-listops"] = ActionListopsWidget; +exports["action-listops"] = ActionListopsWidget; })();