{% extends "base.html" %} {% block head_title %}Home{% endblock %} {% block site_title %}Utils{% endblock %} {% block content %}
_.has (replacement for Object.prototype.hasOwnProperty):
var obj = {'property': true, 'hasOwnProperty': function() { return true }};
dumpVar(_.has(obj, 'property')); // has property
dumpVar(_.has(obj, 'notExisting')); // not existing property
dumpVar(obj.hasOwnProperty('notExisting')); // wrong
_.isEqual
var a = {'prop': 'x'};
var b = {'prop': 'y'};
var aCopy = {'prop': 'x'};
dumpVar(_.isEqual(a, b)); // not equal
dumpVar(_.isEqual(a, aCopy)); // equal
_.deepCopy
var a = {'prop': {}};
var b = _.deepCopy(a);
dumpVar(a === b); // a is not same object as b
dumpVar(a.prop === b.prop); // properties are not same
_.lightCopy
var a = {'prop': {}};
var b = _.lightCopy(a);
dumpVar(a === b); // a is not same object as b
dumpVar(a.prop === b.prop); // properties are same
_.checkFeatures
dumpVar(_.checkFeatures(['ajax'])); dumpVar(_.checkFeatures(['history_push'])); dumpVar(_.checkFeatures(['touch']));
_.setCookie('time', new Date().getTime()); // session cookie
// _.setCookie('time', new Date().getTime(), 7); - expires in 7 days
dumpVar(_.getCookie('time'));
_.forEach
var a = [1, 2, 3];
_.forEach(a, function(element, idx) { dumpVar(element); });
_.forEachDict
var a = {key: 'value'};
.forEachDict(a, function(key, value) { dumpVar(key + '=' + value); });
_.dictToPairs
var a = {key: 'value'};
dumpVar(_.dictToPairs(a));
_.map
var a = [1, 2, 3, 4];
dumpVar(_.map(a, function(x) { return x*x; }));
_.some
var a = [1, 2, 3, 4];
_.some(a, function(x) { dumpVar(x); return x == 2; /* break on 2 */ });
_.every
var a = [1, 2, 3, 4];
_.every(a, function(x) { dumpVar(x); return x != 2; /* break on 2 */ });
_.filter
var a = ['', 'test', '', 'test2'];
dumpVar(_.filter(a, function(x) { return x.length; /* not empty strings */ }));
_.keys
var dct = { key: 'value', key2: 'value'};
dumpVar(_.keys(dct));
_.bindEvent, _.triggerEvent, _.unbindEvent
var onCustomEvent = function(event) {
dumpVar(event.memo);
}
var element = document.createElement('DIV');
_.bindEvent(element, "custom", onCustomEvent);
_.triggerEvent(element, "custom", "Custom event triggered");
_.unbindEvent(element, onCustomEvent);
_.onLoad, _.triggerLoad, _.unbindOnLoad
var onLoad = function(event) {
dumpVar(event.memo.tagName); // event.memo == loaded element
};
_.onLoad(onLoad);
var dynamicElement = document.createElement('DIV');
document.body.appendChild(dynamicElement);
_.triggerLoad(dynamicElement); // call for dynamic created element
_.unbindOnLoad(onLoad);
_.escapeHTML
dumpVar(_.escapeHTML('&<>"\''));
_.hasClass, _.addClass, _.removeClass, _.toggleClass
var element = document.createElement('DIV');
_.addClass(element, 'klass');
dumpVar(_.hasClass(element, 'klass'));
_.removeClass(element, 'klass');
dumpVar(_.hasClass(element, 'klass'));
_.toggleClass(element, 'klass');
dumpVar(_.hasClass(element, 'klass'));
_.id
var element = document.createElement('ARTICLE');
element.setAttribute('id', 'test');
document.body.appendChild(element);
dumpVar(_.id('test').tagName);
document.body.removeChild(element);
dumpVar(_.id('test'));
_.cls
var a1 = document.createElement('ARTICLE');
var a2 = document.createElement('NAV');
_.addClass(a1, 'testclass');
_.addClass(a2, 'testclass');
document.body.appendChild(a1);
document.body.appendChild(a2);
_.forEach(_.cls(document.body, 'testclass'), function(element) {
dumpVar(element.tagName);
});
_.forEach(_.cls('testclass'), function(element) { // parent not required
dumpVar(element.tagName);
});
document.body.removeChild(a1);
document.body.removeChild(a2);
_.tag
dumpVar(_.tag(document.body, 'PRE').length);
dumpVar(_.tag('PRE').length); // parent not required
_.isNode, _.isElement, _.isParentOf
var node = document.createTextNode('...');
var element = document.createElement('DIV');
dumpVar(_.isNode(node));
dumpVar(_.isNode(element));
dumpVar(_.isElement(node));
dumpVar(_.isElement(element));
_.isParentOf, _.findParent, _.findParentByCls
var parent = document.createElement('DIV');
parent.className = 'parent';
var child = document.createElement('DIV');
child.className = 'child';
parent.appendChild(child);
dumpVar(_.isParentOf(child, parent));
dumpVar(_.findParent(child, function(element) { return _.hasClass(element, 'parent'); }).className);
dumpVar(_.findParentByCls(child, 'parent').className);
_.elem
var element = _.elem('A', {'href': '#', 'class': 'link'}, 'Link text');
dumpVar(element.innerHTML);
_.insertAfter
var parent = _.elem('UL');
var i1 = _.elem('LI', undefined, "Text");
var i2 = _.elem('LI', undefined, "Text2");
parent.appendChild(i1);
parent.appendChild(i2);
var between = _.elem('LI', undefined, "Between");
_.insertAfter(between, i1);
dumpVar(parent.childNodes[1].innerHTML);
_.getData, _.setData
var element = _.elem('DIV', {'data-variable-name': 'text'});
dumpVar(_.getData(element, 'variableName'));
_.setData(element, 'variableName', 'new text');
dumpVar(_.getData(element, 'variableName'));
_.serializeForm
var formElement = _.id('example_form');
dumpVar(_.serializeForm(formElement, {raw: true}));
_.getUrlParameterByName
var url = "http://example.tld/?parameter=value";
dumpVar(_.getUrlParameterByName('parameter', url));
_.encodeURLParameters
var parameters = {parameter: 'value', 'special#': 'special#value',};
dumpVar(_.encodeURLParameters(parameters));
var parameters = [['multi', 1], ['multi', 2], ['multi', 3]];
dumpVar(_.encodeURLParameters(parameters));
_.addURLParameters
var parameters = {q: 'search string'};
dumpVar(_.addURLParameters('http://google.com/', parameters));
{% endblock %}