mirror of
				https://github.com/Jermolene/TiddlyWiki5
				synced 2025-11-04 01:23:01 +00:00 
			
		
		
		
	Optimise getStateQualifier()
Another fix for #1864, this time we’re caching state qualifiers as they are expensive to compute.
This commit is contained in:
		@@ -195,16 +195,23 @@ Widget.prototype.hasVariable = function(name,value) {
 | 
			
		||||
Construct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain
 | 
			
		||||
*/
 | 
			
		||||
Widget.prototype.getStateQualifier = function(name) {
 | 
			
		||||
	this.qualifiers = this.qualifiers || Object.create(null);
 | 
			
		||||
	name = name || "transclusion";
 | 
			
		||||
	var output = [],
 | 
			
		||||
		node = this;
 | 
			
		||||
	while(node && node.parentWidget) {
 | 
			
		||||
		if($tw.utils.hop(node.parentWidget.variables,name)) {
 | 
			
		||||
			output.push(node.getVariable(name));
 | 
			
		||||
	if(this.qualifiers[name]) {
 | 
			
		||||
		return this.qualifiers[name];
 | 
			
		||||
	} else {
 | 
			
		||||
		var output = [],
 | 
			
		||||
			node = this;
 | 
			
		||||
		while(node && node.parentWidget) {
 | 
			
		||||
			if($tw.utils.hop(node.parentWidget.variables,name)) {
 | 
			
		||||
				output.push(node.getVariable(name));
 | 
			
		||||
			}
 | 
			
		||||
			node = node.parentWidget;
 | 
			
		||||
		}
 | 
			
		||||
		node = node.parentWidget;
 | 
			
		||||
		var value = $tw.utils.hashString(output.join(""));
 | 
			
		||||
		this.qualifiers[name] = value;
 | 
			
		||||
		return value;
 | 
			
		||||
	}
 | 
			
		||||
	return $tw.utils.hashString(output.join(""));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user