|
8 | 8 | } |
9 | 9 | }); |
10 | 10 | }, |
| 11 | + show: function(element) { |
| 12 | + element.style.display = 'block'; |
| 13 | + }, |
| 14 | + hide: function(element) { |
| 15 | + element.style.display = 'none'; |
| 16 | + }, |
| 17 | + toggle: function(element, value) { |
| 18 | + if (value) { |
| 19 | + $$.show(element); |
| 20 | + } else { |
| 21 | + $$.hide(element); |
| 22 | + } |
| 23 | + }, |
| 24 | + visible: function(element) { |
| 25 | + style = getComputedStyle(element); |
| 26 | + return style.display !== 'none'; |
| 27 | + }, |
| 28 | + executeScripts: function(root) { |
| 29 | + root.querySelectorAll('script').forEach(function(e) { |
| 30 | + var clone = document.createElement('script'); |
| 31 | + clone.src = e.src; |
| 32 | + root.appendChild(clone); |
| 33 | + }); |
| 34 | + }, |
11 | 35 | }; |
12 | 36 |
|
13 | 37 | var onKeyDown = function(event) { |
|
24 | 48 | isReady: false, |
25 | 49 | init: function() { |
26 | 50 | var djDebug = document.querySelector('#djDebug'); |
27 | | - djDebug.classList.remove('djdt-hidden'); |
| 51 | + $$.show(djDebug); |
28 | 52 | $$.on(djDebug.querySelector('#djDebugPanelList'), 'click', 'li a', function(event) { |
29 | 53 | event.preventDefault(); |
30 | 54 | if (!this.className) { |
31 | 55 | return; |
32 | 56 | } |
33 | | - var current = $('#djDebug #' + this.className); |
34 | | - if (current.is(':visible')) { |
| 57 | + var current = djDebug.querySelector('#' + this.className); |
| 58 | + if ($$.visible(current)) { |
35 | 59 | djdt.hide_panels(); |
36 | 60 | } else { |
37 | 61 | djdt.hide_panels(); |
38 | 62 |
|
39 | | - current.show(); |
40 | | - $(this).parent().addClass('djdt-active'); |
| 63 | + $$.show(current); |
| 64 | + this.parentElement.classList.add('djdt-active'); |
41 | 65 |
|
42 | | - var inner = current.find('.djDebugPanelContent .djdt-scroll'), |
43 | | - store_id = $('#djDebug').data('store-id'); |
44 | | - if (store_id && inner.children().length === 0) { |
| 66 | + var inner = current.querySelector('.djDebugPanelContent .djdt-scroll'), |
| 67 | + store_id = djDebug.getAttribute('data-store-id'); |
| 68 | + if (store_id && inner.children.length === 0) { |
45 | 69 | var ajax_data = { |
46 | 70 | data: { |
47 | 71 | store_id: store_id, |
48 | 72 | panel_id: this.className |
49 | 73 | }, |
50 | 74 | type: 'GET', |
51 | | - url: $('#djDebug').data('render-panel-url') |
| 75 | + url: djDebug.getAttribute('data-render-panel-url') |
52 | 76 | }; |
53 | 77 | $.ajax(ajax_data).done(function(data){ |
54 | | - inner.prev().remove(); // Remove AJAX loader |
55 | | - inner.html(data); |
| 78 | + inner.previousElementSibling.remove(); // Remove AJAX loader |
| 79 | + inner.innerHTML = body; |
| 80 | + $$.executeScripts(inner); |
56 | 81 | }).fail(function(xhr){ |
57 | | - var message = '<div class="djDebugPanelTitle"><a class="djDebugClose djDebugBack" href=""></a><h3>'+xhr.status+': '+xhr.statusText+'</h3></div>'; |
58 | | - $('#djDebugWindow').html(message).show(); |
| 82 | + var win = document.querySelector('#djDebugWindow'); |
| 83 | + win.innerHTML = '<div class="djDebugPanelTitle"><a class="djDebugClose djDebugBack" href=""></a><h3>'+xhr.status+': '+xhr.statusText+'</h3></div>'; |
| 84 | + $$.show(win); |
59 | 85 | }); |
60 | 86 | } |
61 | 87 | } |
|
65 | 91 | djdt.hide_one_level(); |
66 | 92 | }); |
67 | 93 | $$.on(djDebug, 'click', '.djDebugPanelButton input[type=checkbox]', function() { |
68 | | - djdt.cookie.set($(this).attr('data-cookie'), $(this).prop('checked') ? 'on' : 'off', { |
| 94 | + djdt.cookie.set(this.getAttribute('data-cookie'), this.checked ? 'on' : 'off', { |
69 | 95 | path: '/', |
70 | 96 | expires: 10 |
71 | 97 | }); |
|
75 | 101 | $$.on(djDebug, 'click', '.remoteCall', function(event) { |
76 | 102 | event.preventDefault(); |
77 | 103 |
|
78 | | - var self = $(this); |
79 | | - var name = self[0].tagName.toLowerCase(); |
| 104 | + var name = this.tagName.toLowerCase(); |
80 | 105 | var ajax_data = {}; |
81 | 106 |
|
82 | 107 | if (name == 'button') { |
83 | | - var form = self.parents('form:eq(0)'); |
84 | | - ajax_data.url = self.attr('formaction'); |
| 108 | + var form = this.closest('form'); |
| 109 | + ajax_data.url = this.getAttribute('formaction'); |
85 | 110 |
|
86 | | - if (form.length) { |
87 | | - ajax_data.data = form.serialize(); |
88 | | - ajax_data.type = form.attr('method') || 'POST'; |
| 111 | + if (form) { |
| 112 | + ajax_data.data = $(form).serialize(); |
| 113 | + ajax_data.method = form.getAttribute('method') || 'POST'; |
89 | 114 | } |
90 | 115 | } |
91 | 116 |
|
92 | 117 | if (name == 'a') { |
93 | | - ajax_data.url = self.attr('href'); |
| 118 | + ajax_data.url = this.getAttribute('href'); |
94 | 119 | } |
95 | 120 |
|
96 | 121 | $.ajax(ajax_data).done(function(data){ |
97 | | - $('#djDebugWindow').html(data).show(); |
| 122 | + var win = djDebug.querySelector('#djDebugWindow'); |
| 123 | + win.innerHTML = body; |
| 124 | + $$.executeScripts(win); |
98 | 125 | }).fail(function(xhr){ |
99 | | - var message = '<div class="djDebugPanelTitle"><a class="djDebugClose djDebugBack" href=""></a><h3>'+xhr.status+': '+xhr.statusText+'</h3></div>'; |
100 | | - $('#djDebugWindow').html(message).show(); |
| 126 | + var win = document.querySelector('#djDebugWindow'); |
| 127 | + win.innerHTML = '<div class="djDebugPanelTitle"><a class="djDebugClose djDebugBack" href=""></a><h3>'+xhr.status+': '+xhr.statusText+'</h3></div>'; |
| 128 | + $$.show(win); |
101 | 129 | }); |
102 | 130 | }); |
103 | 131 |
|
104 | 132 | // Used by the cache, profiling and SQL panels |
105 | 133 | $$.on(djDebug, 'click', 'a.djToggleSwitch', function(event) { |
106 | 134 | event.preventDefault(); |
107 | | - var btn = $(this); |
108 | | - var id = btn.attr('data-toggle-id'); |
109 | | - var open_me = btn.text() == btn.attr('data-toggle-open'); |
| 135 | + var self = this; |
| 136 | + var id = this.getAttribute('data-toggle-id'); |
| 137 | + var open_me = this.textContent == this.getAttribute('data-toggle-open'); |
110 | 138 | if (id === '' || !id) { |
111 | 139 | return; |
112 | 140 | } |
113 | | - var name = btn.attr('data-toggle-name'); |
114 | | - btn.parents('.djDebugPanelContent').find('#' + name + '_' + id).find('.djDebugCollapsed').toggle(open_me); |
115 | | - btn.parents('.djDebugPanelContent').find('#' + name + '_' + id).find('.djDebugUncollapsed').toggle(!open_me); |
116 | | - $(this).parents('.djDebugPanelContent').find('.djToggleDetails_' + id).each(function(){ |
117 | | - var $this = $(this); |
| 141 | + var name = this.getAttribute('data-toggle-name'); |
| 142 | + var container = this.closest('.djDebugPanelContent').querySelector('#' + name + '_' + id); |
| 143 | + container.querySelectorAll('.djDebugCollapsed').forEach(function(e) { |
| 144 | + $$.toggle(e, open_me); |
| 145 | + }); |
| 146 | + container.querySelectorAll('.djDebugUncollapsed').forEach(function(e) { |
| 147 | + $$.toggle(e, !open_me); |
| 148 | + }); |
| 149 | + this.closest('.djDebugPanelContent').querySelectorAll('.djToggleDetails_' + id).forEach(function(e) { |
118 | 150 | if (open_me) { |
119 | | - $this.addClass('djSelected'); |
120 | | - $this.removeClass('djUnselected'); |
121 | | - btn.text(btn.attr('data-toggle-close')); |
122 | | - $this.find('.djToggleSwitch').text(btn.text()); |
| 151 | + e.classList.add('djSelected'); |
| 152 | + e.classList.remove('djUnselected'); |
| 153 | + self.textContent = self.getAttribute('data-toggle-close'); |
| 154 | + e.querySelector('.djToggleSwitch').textContent = self.textContent; |
123 | 155 | } else { |
124 | | - $this.removeClass('djSelected'); |
125 | | - $this.addClass('djUnselected'); |
126 | | - btn.text(btn.attr('data-toggle-open')); |
127 | | - $this.find('.djToggleSwitch').text(btn.text()); |
| 156 | + e.classList.remove('djSelected'); |
| 157 | + e.classList.add('djUnselected'); |
| 158 | + self.textContent = self.getAttribute('data-toggle-open'); |
| 159 | + e.querySelector('.djToggleSwitch').textContent = self.textContent; |
128 | 160 | } |
129 | 161 | }); |
130 | 162 | }); |
|
180 | 212 | if (djdt.cookie.get('djdt') == 'hide') { |
181 | 213 | djdt.hide_toolbar(false); |
182 | 214 | } else { |
183 | | - djdt.show_toolbar(false); |
| 215 | + djdt.show_toolbar(); |
184 | 216 | } |
185 | 217 | djdt.isReady = true; |
186 | | - $.each(djdt.events.ready, function(_, callback){ |
| 218 | + djdt.events.ready.forEach(function(callback) { |
187 | 219 | callback(djdt); |
188 | 220 | }); |
189 | 221 | }, |
190 | 222 | hide_panels: function() { |
191 | | - $('#djDebugWindow').hide(); |
192 | | - $('.djdt-panelContent').hide(); |
193 | | - $('#djDebugToolbar li').removeClass('djdt-active'); |
| 223 | + $$.hide(djDebug.querySelector('#djDebugWindow')); |
| 224 | + djDebug.querySelectorAll('.djdt-panelContent').forEach(function(e) { |
| 225 | + $$.hide(e); |
| 226 | + }); |
| 227 | + djDebug.querySelectorAll('#djDebugToolbar li').forEach(function(e) { |
| 228 | + e.classList.remove('djdt-active'); |
| 229 | + }); |
194 | 230 | }, |
195 | 231 | hide_toolbar: function(setCookie) { |
196 | 232 | djdt.hide_panels(); |
197 | | - $('#djDebugToolbar').hide('fast'); |
| 233 | + $$.hide(djDebug.querySelector('#djDebugToolbar')); |
198 | 234 |
|
199 | 235 | var handle = document.querySelector('#djDebugToolbarHandle'); |
200 | | - $(handle).show(); |
| 236 | + $$.show(handle); |
201 | 237 | // set handle position |
202 | 238 | var handleTop = djdt.cookie.get('djdttop'); |
203 | 239 | if (handleTop) { |
204 | 240 | handleTop = Math.min(handleTop, window.innerHeight - handle.offsetHeight); |
205 | 241 | handle.style.top = handleTop + 'px'; |
206 | 242 | } |
207 | 243 |
|
208 | | - // Unbind keydown |
209 | 244 | document.removeEventListener('keydown', onKeyDown); |
210 | 245 |
|
211 | 246 | if (setCookie) { |
|
215 | 250 | }); |
216 | 251 | } |
217 | 252 | }, |
218 | | - hide_one_level: function() { |
219 | | - if ($('#djDebugWindow').is(':visible')) { |
220 | | - $('#djDebugWindow').hide(); |
221 | | - } else if ($('.djdt-panelContent').is(':visible')) { |
| 253 | + hide_one_level: function(skipDebugWindow) { |
| 254 | + if ($$.visible(djDebug.querySelector('#djDebugWindow'))) { |
| 255 | + $$.hide(djDebug.querySelector('#djDebugWindow')); |
| 256 | + } else if (djDebug.querySelector('#djDebugToolbar li.djdt-active')) { |
222 | 257 | djdt.hide_panels(); |
223 | 258 | } else { |
224 | 259 | djdt.hide_toolbar(true); |
225 | 260 | } |
226 | 261 | }, |
227 | | - show_toolbar: function(animate) { |
228 | | - // Set up keybindings |
| 262 | + show_toolbar: function() { |
229 | 263 | document.addEventListener('keydown', onKeyDown); |
230 | | - $('#djDebugToolbarHandle').hide(); |
231 | | - if (animate) { |
232 | | - $('#djDebugToolbar').show('fast'); |
233 | | - } else { |
234 | | - $('#djDebugToolbar').show(); |
235 | | - } |
| 264 | + $$.hide(djDebug.querySelector('#djDebugToolbarHandle')); |
| 265 | + $$.show(djDebug.querySelector('#djDebugToolbar')); |
236 | 266 | djdt.cookie.set('djdt', 'show', { |
237 | 267 | path: '/', |
238 | 268 | expires: 10 |
|
292 | 322 | cookie: djdt.cookie, |
293 | 323 | applyStyle: djdt.applyStyle |
294 | 324 | }); |
295 | | - $(document).ready(djdt.init); |
| 325 | + document.addEventListener('DOMContentLoaded', djdt.init); |
296 | 326 | })(djdt.jQuery, djdt); |
0 commit comments