Utils.js
Summary
No overview generated for 'Utils.js'
|
Method Summary
|
static void
|
debug(msg)
|
const KEYBOARD_BACKSPACE = 8;
const KEYBOARD_LEFT = 37;
const KEYBOARD_RIGHT = 39;
const KEYBOARD_UP = 38;
const KEYBOARD_DOWN = 40;
const KEYBOARD_RETURN = 13;
function TKUtils () {
};
TKUtils.t = function (tx, ty) {
return 'translate3d(' + tx + 'px, ' + ty + 'px, 0)';
};
TKUtils.px = function (value) {
return value + 'px';
};
TKUtils.copyPropertiesFromSourceToTarget = function (source, target) {
for (var property in source) {
target[property] = source[property];
}
};
TKUtils.objectIsFunction = function (object) {
return (typeof object == 'function');
};
TKUtils.objectIsUndefined = function (object) {
return (object === undefined);
};
TKUtils.objectIsString = function (object) {
return (typeof object == 'string' || object instanceof String);
};
TKUtils.objectIsArray = function (object) {
return (object instanceof Array);
};
TKUtils.objectHasMethod = function (object, methodNameAsString) {
return ( object !== null &&
!this.objectIsUndefined(object) &&
!this.objectIsUndefined(object[methodNameAsString]) &&
this.objectIsFunction(object[methodNameAsString])
);
};
TKUtils.setupDisplayNames = function (object, className) {
var class_name = className || object.name;
for (var i in object) {
if (object.__lookupGetter__(i)) {
continue;
}
var prop = object[i];
if (TKUtils.objectIsFunction(prop)) {
prop.displayName = TKUtils.createDisplayName(class_name, i);
}
}
for (var i in object.prototype) {
if (object.prototype.__lookupGetter__(i)) {
continue;
}
var prop = object.prototype[i];
if (TKUtils.objectIsFunction(prop)) {
prop.displayName = TKUtils.createDisplayName(class_name, i);
}
}
};
TKUtils.createDisplayName = function (className, methodName) {
return className + '.' + methodName + '()';
};
TKUtils.buildElement = function (elementData) {
if (!elementData || !elementData.type) {
return null;
}
var element = null;
switch (elementData.type) {
case "emptyDiv":
element = document.createElement("div");
break;
case "container":
element = document.createElement("div");
for (var i=0; i < elementData.children.length; i++) {
element.appendChild(TKUtils.buildElement(elementData.children[i]));
}
break;
case "image":
element = document.createElement("img");
element.src = elementData.src;
break;
case "text":
element = document.createElement("div");
var p = document.createElement("p");
p.innerText = elementData.text;
element.appendChild(p);
break;
default:
element = document.createElement(elementData.type);
element.innerHTML = elementData.content;
}
if (elementData.id) {
element.id = elementData.id;
}
if (elementData.className) {
element.className = elementData.className;
}
if (elementData.link){
var subElement = element;
element = document.createElement("a");
element.href = elementData.link;
element.target = "_blank";
element.appendChild(subElement);
}
return element;
};
TKUtils.createEvent = function (eventType, relatedTarget) {
var event = document.createEvent('Event');
event.initEvent(eventType, true, true);
event.relatedTarget = relatedTarget;
return event;
};
TKUtils.isNodeChildOfOtherNode = function (childNode, allegedParentNode) {
var node = childNode.parentNode;
while (node !== null) {
if (node === allegedParentNode) {
return true;
break;
}
node = node.parentNode;
}
return false;
};
TKUtils.setupDisplayNames(TKUtils, 'TKUtils');
const TKRectTopLeftCorner = 0;
const TKRectMiddleOfTopEdge = 1;
const TKRectTopRightCorner = 2;
const TKRectMiddleOfRightEdge = 3;
const TKRectBottomRightCorner = 4;
const TKRectMiddleOfBottomEdge = 5;
const TKRectBottomLeftCorner = 6;
const TKRectMiddleOfLeftEdge = 7;
const TKRectCenter = 8;
function TKRect (x, y, width, height) {
this.x = x || 0;
this.y = y || 0;
this.width = width || 0;
this.height = height || 0;
};
TKRect.prototype.pointAtPosition = function (index) {
var point;
if (index == TKRectTopLeftCorner) {
point = new TKPoint(this.x, this.y);
}
else if (index == TKRectMiddleOfTopEdge) {
point = new TKPoint(this.x + this.width / 2, this.y);
}
else if (index == TKRectTopRightCorner) {
point = new TKPoint(this.x + this.width, this.y);
}
else if (index == TKRectMiddleOfRightEdge) {
point = new TKPoint(this.x + this.width, this.y + this.height / 2);
}
else if (index == TKRectBottomRightCorner) {
point = new TKPoint(this.x + this.width, this.y + this.height);
}
else if (index == TKRectMiddleOfBottomEdge) {
point = new TKPoint(this.x + this.width / 2, this.y + this.height);
}
else if (index == TKRectBottomLeftCorner) {
point = new TKPoint(this.x, this.y + this.height);
}
else if (index == TKRectMiddleOfLeftEdge) {
point = new TKPoint(this.x, this.y + this.height / 2);
}
else if (index == TKRectCenter) {
point = new TKPoint(this.x + this.width / 2, this.y + this.height / 2);
}
return point;
};
TKRect.rectFromClientRect = function (rect) {
return new TKRect(rect.left, rect.top, rect.width, rect.height);
};
TKRect.rectFromUnionOfRects = function (rects) {
if (rects.length < 1) {
return new TKRect();
}
var union = rects[0];
var rect;
for (var i = 1; i < rects.length; i++) {
rect = rects[i];
union.x = Math.min(union.x, rect.x);
union.y = Math.min(union.y, rect.y);
union.width = Math.max(union.width, rect.x + rect.width);
union.height = Math.max(union.height, rect.y + rect.height);
}
return union;
};
function TKPoint (x, y) {
this.x = x || 0;
this.y = y || 0;
};
TKPoint.prototype.distanceToPoint = function (aPoint) {
return Math.sqrt(Math.pow(aPoint.x - this.x, 2) + Math.pow(aPoint.y - this.y, 2));
};
const TKFocusManagerFocusCSSClass = 'tk-focused';
var TKFocusManager = {
focusedElement: null
};
TKFocusManager.focusElement = function (element) {
if (element === this.focusedElement) {
return;
}
if (element._controller !== undefined && element._controller.highlightedElement) {
element = element._controller.highlightedElement;
}
if (this.focusedElement !== null) {
this.focusedElement.removeClassName(TKFocusManagerFocusCSSClass);
}
if (element !== null) {
this.focusedElement = element;
this.focusedElement.addClassName(TKFocusManagerFocusCSSClass);
}
};
var DEBUG = false;
function debug(msg) {
if (window.DEBUG !== undefined && window.DEBUG) {
console.log("DEBUG: " + msg);
}
};
Documentation generated by
JSDoc on Tue Sep 15 21:24:36 2009