mirror of
				https://github.com/Jermolene/TiddlyWiki5
				synced 2025-10-30 23:23:02 +00:00 
			
		
		
		
	 d5f72cb282
			
		
	
	d5f72cb282
	
	
	
		
			
			* Add action-setmultiplefields and setmultiplevariables, and extend action-sendmessage * Add getfield operator * Remove getfield operator See discussion at https://github.com/Jermolene/TiddlyWiki5/pull/6130#issuecomment-949911439 * Add docs * Adjust whitespace * Add support for assigning multiple indexes to action-setmultiplefields
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*\
 | |
| 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;
 | |
| 
 | |
| })();
 | |
|         
 |