1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-06-16 10:29:54 +00:00

Merge pull request #2160 from matabele/patch-2

Changed the name of the 'list' attribute to 'field' for the $action-listops widget
This commit is contained in:
Jeremy Ruston 2016-01-05 13:06:48 +00:00
commit 2cd812c15f

View File

@ -3,87 +3,90 @@ title: $:/core/modules/widgets/action-listops.js
type: application/javascript
module-type: widget
Action widget to apply list operations to any tiddler field (defaults to the 'tags' field of the current tiddler)
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("$list", "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) {
//try this
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;
})();