Mercurial > hg > de.mpg.mpiwg.itgroup.digilib.core
diff src/de/mpg/mpiwg/itgroup/digilib/icons/greyskin/debug.js @ 1:83c58ea33792
first release (continued)
author | dwinter |
---|---|
date | Mon, 03 Jan 2011 09:11:25 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpg/mpiwg/itgroup/digilib/icons/greyskin/debug.js Mon Jan 03 09:11:25 2011 +0100 @@ -0,0 +1,111 @@ +var Debug = null; +var _now = {}; + +function element(name, content) { + var E = document.createElement(name); + if (content) { + if (content.nodeType) // it's a node + E.appendChild(content) + else // it's text + E.appendChild(document.createTextNode(content)) + }; + return E; + } + +function appendElement(node, name, content) { + if (node == null || ! node.appendChild) + return node; + return node.appendChild(element(name,content)); + } + +function getDebug() { + if (Debug == null) { + Debug = document.getElementById('debug'); + if (Debug == null) { + Debug = appendElement(document.body, 'div'); + Debug.setAttribute('class', 'debug'); + Debug.setAttribute('id', 'debug'); + Debug.innerhtml = '<h3>Debug</h3>'; + }; + }; + return Debug; + } + +function debug() { + var D = getDebug(); + // return alertObject(D); + var msg = ""; + for (var i = 0; i<arguments.length; i++) msg += arguments[i] + " "; + return appendElement(D, "p", msg); + } + +function debugObject(obj, exclude) { + if (exclude == null) + exclude = ''; + var noConst = exclude.indexOf('const') > -1; + var A = new Array(); + for (var prop in obj) A.push(prop); + A.sort(); + var D = getDebug(); + var T = appendElement(D, "table"); + for (var i = 0; i < A.length; i++) { + var key = A[i]; + var value = obj[key]; + var type = typeof(value); + // exclude specified types + if (exclude.indexOf(type) > -1) + continue; + // exclude uppercase-only properties (= constants) + if (noConst && key.search(/^[A-Z0-9_]+$/) > -1) + continue; + var TR = appendElement(T, "tr"); + appendElement(TR, "td", element("b", key)); + appendElement(TR, "td", type); + appendElement(TR, "td", value + ""); + if (type == "function") + appendElement(TR, "td", value.toSource()); + }; + } + +function strObject(obj) { + var res = ""; + var A = new Array(); + try { + for (var i in obj) A[i] = typeof(obj[i]); + } + catch(e) { typ = "unknown" }; + var count = 0; + for (var item in A) { + count++; + typ = A[item]; + res += item + " (" + typ + "): "; + if (typ != "function") res += obj[item]; + res += "\t"; + if (count % 4 == 0) + res += "\n"; + } + return res; + } + +function alertObject(obj) { + return alert(strObject(obj)); + } + +function alertHTML(obj) { + if (obj) + return alert(obj.tagName + ".innerHTML:\n" + obj.innerHTML); + } + +function serialize(xmlobject) { + return (new XMLSerializer()).serializeToString(xmlobject); + } + +function startTime(s) { + _now[s] = new Date(); + } + +function elapsedTime(s) { + var diff = new Date(new Date - _now[s]); + debug(s + ": " + diff.getSeconds() + "." + diff.getMilliseconds() + " sec."); + } +