/*\ title: $:/core/modules/widgets/setmultiplevariables.js type: application/javascript module-type: widget Widget to set multiple variables at once from a list of names and a list of values \*/ (function(){ /*jslint node: true, browser: true */ /*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; var SetMultipleVariablesWidget = function(parseTreeNode,options) { this.initialise(parseTreeNode,options); }; /* Inherit from the base widget class */ SetMultipleVariablesWidget.prototype = new Widget(); /* Render this widget into the DOM */ SetMultipleVariablesWidget.prototype.render = function(parent,nextSibling) { this.parentDomNode = parent; this.computeAttributes(); this.execute(); this.renderChildren(parent,nextSibling); }; /* Compute the internal state of the widget */ SetMultipleVariablesWidget.prototype.execute = function() { // Setup our variables this.setVariables(); // Construct the child widgets this.makeChildWidgets(); }; SetMultipleVariablesWidget.prototype.setVariables = function() { // Set the variables var self = this, filterNames = this.getAttribute("$names",""), filterValues = this.getAttribute("$values",""); this.variableNames = []; this.variableValues = []; if(filterNames && filterValues) { this.variableNames = this.wiki.filterTiddlers(filterNames,this); this.variableValues = this.wiki.filterTiddlers(filterValues,this); $tw.utils.each(this.variableNames,function(varname,index) { self.setVariable(varname,self.variableValues[index]); }); } }; /* Refresh the widget by ensuring our attributes are up to date */ SetMultipleVariablesWidget.prototype.refresh = function(changedTiddlers) { var filterNames = this.getAttribute("$names",""), filterValues = this.getAttribute("$values",""), variableNames = this.wiki.filterTiddlers(filterNames,this), variableValues = this.wiki.filterTiddlers(filterValues,this); if(!$tw.utils.isArrayEqual(this.variableNames,variableNames) || !$tw.utils.isArrayEqual(this.variableValues,variableValues)) { this.refreshSelf(); return true; } return this.refreshChildren(changedTiddlers); }; exports["setmultiplevariables"] = SetMultipleVariablesWidget; })();