|
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