{% extends "base.html" %} {% block head_title %}Home{% endblock %} {% block site_title %}Utils{% endblock %} {% block content %}

Misc

_.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']));

Cookies

_.setCookie('time', new Date().getTime()); // session cookie
// _.setCookie('time', new Date().getTime(), 7); - expires in 7 days
dumpVar(_.getCookie('time'));

Iteration

_.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));

Events

_.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);

DOM

_.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);

Data

_.getData, _.setData

var element = _.elem('DIV', {'data-variable-name': 'text'});

dumpVar(_.getData(element, 'variableName'));
_.setData(element, 'variableName', 'new text');
dumpVar(_.getData(element, 'variableName'));

Forms

_.serializeForm

var formElement = _.id('example_form');
dumpVar(_.serializeForm(formElement, {raw: true}));

URLS

_.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 %}