forked from magento/magento2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdebug.js
137 lines (119 loc) · 3.7 KB
/
debug.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
var debugWindow = null;
function debug(text, reverse) {
if (debugWindow == null)
return;
time = "-"; //new Date();
if (reverse) {
$('debug').innerHTML = time + " " + text + "<br>"+ $('debug').innerHTML;
debugWindow.getContent().scrollTop=0;
}
else {
$('debug').innerHTML += time + " " + text + "<br>";
debugWindow.getContent().scrollTop=10000; // Far away
}
}
function hideDebug() {
if (debugWindow) {
debugWindow.destroy();
debugWindow = null;
}
}
function showDebug(bShow) {
if (debugWindow == null) {
debugWindow = new Window('debug_window', {className: 'dialog',width:250, height:100, right:4, bottom:42, zIndex:1000, opacity:1, showEffect: Element.show, resizable: true, title: "Debug"})
debugWindow.getContent().innerHTML = "<style>#debug_window .dialog_content {background:#000;}</style> <div id='debug'></div>";
date=new Date;
date.setMonth(date.getMonth()+3);
//debugWindow.setCookie(null, date);
}
if( typeof bShow == 'undefined' || bShow)debugWindow.show()
}
function clearDebug() {
if (debugWindow == null)
return;
$('debug').innerHTML = "";
}
/**
* document.createElement convenience wrapper
*
* The data parameter is an object that must have the "tag" key, containing
* a string with the tagname of the element to create. It can optionally have
* a "children" key which can be: a string, "data" object, or an array of "data"
* objects to append to this element as children. Any other key is taken as an
* attribute to be applied to this tag.
*
* Available under an MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* @param {Object} data The data representing the element to create
* @return {Element} The element created.
*/
function $E(data) {
var el;
if ('string'==typeof data) {
el=document.createTextNode(data);
} else {
//create the element
el=document.createElement(data.tag);
delete(data.tag);
//append the children
if ('undefined'!=typeof data.children) {
if ('string'==typeof data.children ||'undefined'==typeof data.children.length) {
//strings and single elements
el.appendChild($E(data.children));
} else {
//arrays of elements
for (var i=0, child=null; 'undefined'!=typeof (child=data.children[i]); i++) {
el.appendChild($E(child));
}
}
delete(data.children);
}
//any other data is attributes
for (attr in data) {
el[attr]=data[attr];
}
}
return el;
}
// FROM Nick Hemsley
var Debug = {
inspectOutput: function (container, within) {
within = within || debugWindow.getContent()
if (debugWindow == null)
return;
within.appendChild(container)
},
inspect: function(object) {
var cont = $E({tag: "div", className: "inspector"})
Debug.inspectObj(object, cont)
debugWindow.getContent().appendChild(cont)
},
inspectObj: function (object, container) {
for (prop in object) {
Debug.inspectOutput(Debug.inspectable(object, prop), container)
}
},
inspectable: function(object, prop) {
cont = $E({tag: 'div', className: 'inspectable', children: [prop + " value: " + object[prop] ]})
cont.toInspect = object[prop]
Event.observe(cont, 'click', Debug.inspectClicked, false)
return cont
},
inspectClicked: function(e) {
Debug.inspectContained(Event.element(e))
Event.stop(e)
},
inspectContained: function(container) {
if (container.opened) {
container.parentNode.removeChild(container.opened)
delete(container.opened)
} else {
sibling = container.parentNode.insertBefore($E({tag: "div", className: "child"}), container.nextSibling)
if (container.toInspect)
Debug.inspectObj(container.toInspect, sibling)
container.opened = sibling
}
}
}
var inspect = Debug.inspect;