File Manager
Viewing File: FooTable.js
(function($, F){
/**
* Converts the supplied cssText string into JSON object.
* @param {string} cssText - The cssText to convert to a JSON object.
* @returns {object}
*/
F.css2json = function(cssText){
if (F.is.emptyString(cssText)) return {};
var json = {}, props = cssText.split(';'), pair, key, value;
for (var i = 0, i_len = props.length; i < i_len; i++){
if (F.is.emptyString(props[i])) continue;
pair = props[i].split(':');
if (F.is.emptyString(pair[0]) || F.is.emptyString(pair[1])) continue;
key = F.str.toCamelCase($.trim(pair[0]));
value = $.trim(pair[1]);
json[key] = value;
}
return json;
};
/**
* Attempts to retrieve a function pointer using the given name.
* @param {string} functionName - The name of the function to fetch a pointer to.
* @returns {(function|object|null)}
*/
F.getFnPointer = function(functionName){
if (F.is.emptyString(functionName)) return null;
var pointer = window,
parts = functionName.split('.');
F.arr.each(parts, function(part){
if (pointer[part]) pointer = pointer[part];
});
return F.is.fn(pointer) ? pointer : null;
};
/**
* Checks the value for function properties such as the {@link FooTable.Column#formatter} option which could also be specified using just the name
* and attempts to return the correct function pointer or null if none was found matching the value.
* @param {FooTable.Class} self - The class to use as the 'this' keyword within the context of the function.
* @param {(function|string)} value - The actual function or the name of the function for the property.
* @param {function} [def] - A default function to return if none is found.
* @returns {(function|null)}
*/
F.checkFnValue = function(self, value, def){
def = F.is.fn(def) ? def : null;
function wrap(t, fn, d){
if (!F.is.fn(fn)) return d;
return function(){
return fn.apply(t, arguments);
};
}
return F.is.fn(value) ? wrap(self, value, def) : (F.is.type(value, 'string') ? wrap(self, F.getFnPointer(value), def) : def);
};
})(jQuery, FooTable);