Mercurial > hg > digilib-old
annotate client/digitallibrary/greyskin/debug.js @ 427:84aee0e6d64e
better alert
| author | hertzhaft |
|---|---|
| date | Thu, 22 Dec 2005 11:21:35 +0100 |
| parents | 68c26335e880 |
| children | b9b8e54ed3bb |
| rev | line source |
|---|---|
| 409 | 1 var Debug; |
| 2 var _now = {}; | |
| 3 | |
| 4 function newElement(tagname, content) { | |
| 5 // creates a new element, adding node or text content if given | |
| 6 var elem = document.createElement(tagname); | |
| 7 if (content) elem.appendChild(content.nodeType | |
| 8 ? content // content is a node | |
| 9 : document.createTextNode(content) // content is a string | |
| 10 ); | |
| 11 return elem; | |
| 12 } | |
| 13 | |
| 14 function appendNewElement(node, tagname, content) { | |
| 15 // appends a new element to "node", adding content if given | |
| 16 if (!node.appendChild) { | |
| 427 | 17 alert("Could not append '" + tagname + "' to " + typeof(node)); |
| 409 | 18 return null; |
| 19 } | |
| 20 return node.appendChild(newElement(tagname, content)); | |
| 21 } | |
| 22 | |
| 23 function getDebug() { | |
| 24 if (Debug == null) { | |
| 25 Debug = document.getElementById('debug'); | |
| 26 if (Debug == null) { | |
| 27 if (!document.body) return null; | |
| 28 // its still too early! | |
| 29 Debug = appendNewElement(document.body, 'div'); | |
| 30 Debug.setAttribute('id', 'debug'); | |
| 31 Debug.className = 'debug'; | |
| 32 Debug.innerhtml = '<p class="debug">Debug</p>'; | |
| 33 }; | |
| 34 }; | |
| 35 return Debug; | |
| 36 } | |
| 37 | |
| 38 function debug() { | |
| 39 var msg = ""; | |
| 40 for (var i = 0; i<arguments.length; i++) | |
| 41 msg += arguments[i] + " "; | |
| 42 var D = getDebug(); | |
| 43 if (!D) { | |
| 44 alert("Debug div not present!\n" + msg); | |
| 45 return null; | |
| 46 } | |
| 47 return appendNewElement(D, "p", msg); | |
| 48 } | |
| 49 | |
|
414
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
50 function debugProps(obj, msg) { |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
51 var D = getDebug(); |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
52 if (msg) appendNewElement(D, "h1", msg); |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
53 for (var item in obj) { |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
54 var typ = typeof(obj[item]); |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
55 if (typ != "function") appendNewElement(D, "p", |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
56 item |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
57 + " (" + typ + "): " |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
58 + obj[item] |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
59 ); |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
60 }; |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
61 } |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
62 |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
63 function debugObject(obj, msg) { |
|
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
64 if (msg) appendNewElement(D, "h1", msg); |
| 409 | 65 var D = getDebug(); |
| 66 var A = new Array(); | |
| 67 for (var i in obj) A[i] = typeof(obj[i]); | |
| 68 var T = appendNewElement(D, "table"); | |
| 69 for (var item in A) { | |
| 70 var TR = appendNewElement(T, "tr"); | |
|
414
68c26335e880
added debugProps() method for viewing an object's properties
hertzhaft
parents:
409
diff
changeset
|
71 appendNewElement(TR, "td", newElement("b", item)); |
| 409 | 72 appendNewElement(TR, "td", A[item]); |
| 73 if (A[item] == "function") | |
| 74 appendNewElement(TR, "td", A[item].toSource()); | |
| 75 }; | |
| 76 } | |
| 77 | |
| 78 function strObject(obj) { | |
| 79 var res = ""; | |
| 80 var A = new Array(); | |
| 81 for (var i in obj) A[i] = typeof(obj[i]); | |
| 82 for (var item in A) { | |
| 83 typ = A[item]; | |
| 84 res += item + " (" + typ + "): "; | |
| 85 if (typ != "function") res += obj[item]; | |
| 86 res += "\n"; | |
| 87 } | |
| 88 return res; | |
| 89 } | |
| 90 | |
| 91 function alertObject(obj) { | |
| 92 return alert(strObject(obj)); | |
| 93 } | |
| 94 | |
| 95 function startTime(s) { | |
| 96 _now[s] = new Date(); | |
| 97 } | |
| 98 | |
| 99 function elapsedTime(s) { | |
| 100 var diff = new Date(new Date - _now[s]); | |
| 101 debug(s + ": " + diff.getSeconds() + "." + diff.getMilliseconds() + " sec."); | |
| 102 } |
