Sha256: c8942971811b721f0624ccf5c9c19d959f1b07cc1b4e467d33e173486f63a278

Contents?: true

Size: 1.81 KB

Versions: 8

Compression:

Stored size: 1.81 KB

Contents

rio.Parameters = Class.create({
	initialize: function(parameters, nonAjaxParameters) {
		this.parameters = parameters;
		this.nonAjaxParameters = nonAjaxParameters || {};
	},
	
	ajaxParameters: function() {
		var ajaxParameters = {};
		Object.keys(this.parameters).each(function(parameter) {
			var val = this.parameters[parameter];
			if (val && val.not) {
				// Do nothing.  Allow Object.toJSON to stringify it.
			} else if (val && val !== true && val.toString) {
				val = val.toString();
			}
			ajaxParameters[parameter.underscore()] = val;
		}.bind(this));
		return ajaxParameters;
	},
	
	// ======================================================
	// = THIS FUNCTION IS CALLED A MASSIVE AMOUNT OF TIMES. =
	// ======================================================
	/*
		BE CAREFUL about what you add to this function.  It has been heavily
		performance optimized.
	*/
	conditionFunction: function() {
		return (function(obj) {
			var evaluate = function(parameters) {
				for (var parameter in parameters) {
					var val = parameters[parameter];
					var objVal = obj["_" + parameter];

					if (val && val.not) {
						if (objVal == val.not) { return false; }
					} else {
						var paramIsAnId = val && val.cacheKey;
						var fieldIsAnId = objVal && objVal.cacheKey;
						if (fieldIsAnId || paramIsAnId) {
							if (fieldIsAnId && paramIsAnId) {
								if (objVal.cacheKey() != val.cacheKey()) { return false; }
							} else if (paramIsAnId) {
								if (objVal != val.value()) { return false; }
							} else {
								if (objVal.value() != val) { return false; }
							}
						} else {
							if (objVal != val) { return false; }
						}
					}
				}
				return true;
			};
			return evaluate(this.parameters) && evaluate(this.nonAjaxParameters);
		}.bind(this));
	}
});
rio.Parameters.toString = function() { return "Parameters"; };

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
riojs-0.0.7 public/javascripts/lib/parameters.js
riojs-0.0.6 public/javascripts/lib/parameters.js
riojs-0.0.5 public/javascripts/lib/parameters.js
riojs-0.0.4 public/javascripts/lib/parameters.js
riojs-0.0.3 public/javascripts/lib/parameters.js
riojs-0.0.2 public/javascripts/lib/parameters.js
riojs-0.0.1 public/javascripts/lib/parameters.js
riojs-0.0.0 public/javascripts/lib/parameters.js