@@ -37,17 +37,14 @@ public function getTab() {
37
37
<path d="M320.83,140.434l-1.759-0.627l-6.87-16.399l0.745-1.685c20.812-47.201,19.377-48.609,15.925-52.031L301.11,42.61 c-1.135-1.126-3.128-1.918-4.846-1.918c-1.562,0-6.293,0-47.294,18.57L247.326,60l-16.916-6.812l-0.679-1.684 C210.45,3.762,208.475,3.762,203.677,3.762h-39.205c-4.78,0-6.957,0-24.836,47.825l-0.673,1.741l-16.828,6.86l-1.609-0.669 C92.774,47.819,76.57,41.886,72.346,41.886c-1.714,0-3.714,0.769-4.854,1.892l-27.787,27.16 c-3.525,3.477-4.987,4.933,16.915,51.149l0.805,1.714l-6.881,16.381l-1.684,0.651C0,159.715,0,161.556,0,166.474v38.418 c0,4.931,0,6.979,48.957,24.524l1.75,0.618l6.882,16.333l-0.739,1.669c-20.812,47.223-19.492,48.501-15.949,52.025L68.62,327.18 c1.162,1.117,3.173,1.915,4.888,1.915c1.552,0,6.272,0,47.3-18.561l1.643-0.769l16.927,6.846l0.658,1.693 c19.293,47.726,21.275,47.726,26.076,47.726h39.217c4.924,0,6.966,0,24.859-47.857l0.667-1.742l16.855-6.814l1.604,0.654 c27.729,11.733,43.925,17.654,48.122,17.654c1.699,0,3.717-0.745,4.876-1.893l27.832-27.219 c3.501-3.495,4.96-4.924-16.981-51.096l-0.816-1.734l6.869-16.31l1.64-0.643c48.938-18.981,48.938-20.831,48.938-25.755v-38.395 C369.793,159.95,369.793,157.914,320.83,140.434z M184.896,247.203c-35.038,0-63.542-27.959-63.542-62.3 c0-34.342,28.505-62.264,63.542-62.264c35.023,0,63.522,27.928,63.522,62.264C248.419,219.238,219.92,247.203,184.896,247.203z" fill=" ' .($ this ->wire ('input ' )->cookie ->tracyGuestDumps ? \TracyDebugger::COLOR_WARN : \TracyDebugger::COLOR_NORMAL ).'"/>
38
38
</svg> ' ;
39
39
40
-
41
40
return '
42
41
<span title="Panel Selector">
43
42
' . $ this ->icon . (\TracyDebugger::getDataValue ('showPanelLabels ' ) ? ' Panel Selector ' : '' ) . '
44
43
</span>
45
44
' ;
46
45
}
47
46
48
-
49
47
protected function isOnce ($ name , $ defaultPanels ) {
50
-
51
48
$ masterPanels = empty (\TracyDebugger::$ stickyPanels ) ? $ defaultPanels : \TracyDebugger::$ stickyPanels ;
52
49
53
50
if (empty (\TracyDebugger::$ oncePanels )) {
@@ -64,6 +61,65 @@ protected function isOnce($name, $defaultPanels) {
64
61
}
65
62
}
66
63
64
+ private function renderPanelCell ($ panel , $ defaultPanels , $ showPanels , $ onceIcon ) {
65
+ if (!$ panel ) {
66
+ return '<td></td> ' ;
67
+ }
68
+
69
+ $ name = $ panel ['name ' ];
70
+ $ label = $ panel ['label ' ];
71
+ $ seconds = isset (\TracyDebugger::$ panelGenerationTime [$ name ]['time ' ]) ? \TracyDebugger::$ panelGenerationTime [$ name ]['time ' ] : '' ;
72
+ $ size = isset (\TracyDebugger::$ panelGenerationTime [$ name ]['size ' ]) ? \TracyDebugger::human_filesize (\TracyDebugger::$ panelGenerationTime [$ name ]['size ' ]) : '' ;
73
+
74
+ $ out = '<td style="vertical-align: top; padding: 4px 10px; white-space: nowrap;"> ' ;
75
+
76
+ // Use flexbox container for the entire cell content
77
+ $ out .= '<div style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> ' ;
78
+
79
+ // Left side: label with controls
80
+ $ out .= '<label style="display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0;"> ' ;
81
+
82
+ // once icon or spacer
83
+ $ out .= $ this ->isOnce ($ name , $ defaultPanels ) ? $ onceIcon : '<span style="display:inline-block; width:15px;"></span> ' ;
84
+
85
+ // settings link or spaces
86
+ if (!empty (\TracyDebugger::$ externalPanels ) || !array_key_exists ($ name , \TracyDebugger::$ externalPanels )) {
87
+ if (array_key_exists ($ name , $ this ->panelSettingsLinks )) {
88
+ $ out .= \TracyDebugger::generatePanelSettingsLink ($ this ->panelSettingsLinks [$ name ]);
89
+ }
90
+ else {
91
+ $ out .= str_repeat (' ' , 6 );
92
+ }
93
+ $ out .= '<span style="font-size:16px; font-weight:600;">
94
+ <a title="Panel Info" href="https://adrianbj.github.io/TracyDebugger/#/debug-bar?id= ' . str_replace (' ' , '- ' , strtolower ($ label )) . '" target="_blank">ℹ</a>
95
+ </span> ' ;
96
+ }
97
+ else {
98
+ $ out .= str_repeat (' ' , 9 );
99
+ }
100
+
101
+ // checkbox input
102
+ $ out .= '<input type="checkbox" name="selectedPanels[]" ' .
103
+ ($ name == 'panelSelector ' || in_array ($ name , \TracyDebugger::getDataValue ('nonToggleablePanels ' )) ? 'disabled="disabled" ' : '' ) .
104
+ ' value=" ' . $ name . '" ' . (in_array ($ name , $ showPanels ) ? 'checked="checked" ' : '' ) . ' /> ' ;
105
+
106
+ // label text + asterisk if default
107
+ $ out .= '<span style="white-space: nowrap;"> ' . $ label . (in_array ($ name , $ defaultPanels ) ? ' <strong>*</strong> ' : '' ) . '</span> ' ;
108
+
109
+ $ out .= '</label> ' ;
110
+
111
+ // Right side: timing and size info (only if exists)
112
+ if ($ seconds ) {
113
+ $ out .= '<span style="color: #999; font-size: 11px; white-space: nowrap; margin-left: 8px; flex-shrink: 0;"> ' . \TracyDebugger::formatTime ($ seconds );
114
+ if ($ size ) $ out .= ', ' . $ size ;
115
+ $ out .= '</span> ' ;
116
+ }
117
+
118
+ $ out .= '</div> ' ; // Close flexbox container
119
+ $ out .= '</td> ' ;
120
+
121
+ return $ out ;
122
+ }
67
123
68
124
public function getPanel () {
69
125
@@ -152,64 +208,65 @@ function getCookie(name) {
152
208
<div class="tracy-inner">
153
209
<fieldset>
154
210
<legend>*Panels with asterisk are on by default</legend><br /> ' ;
155
- $ defaultPanels = $ this ->wire ('page ' )->template == "admin " ? \TracyDebugger::getDataValue ('backendPanels ' ) : \TracyDebugger::getDataValue ('frontendPanels ' );
156
- $ showPanels = \TracyDebugger::$ showPanels ;
157
- $ out .= '<label><input type="checkbox" onchange="toggleAllTracyPanels(this)" ' . (count ($ showPanels ) == count (\TracyDebugger::$ allPanels ) ? 'checked="checked" ' : '' ) . ' /> Toggle All</label><br /> ' ;
158
- $ out .= '<div style="-webkit-column-count: 2; -moz-column-count: 2; column-count: 2; -webkit-column-gap: 40px; -moz-column-gap: 40px; column-gap: 40px;"> ' ;
159
- foreach (\TracyDebugger::$ allPanels as $ name => $ label ) {
160
-
161
- if (in_array ($ name , \TracyDebugger::$ restrictedUserDisabledPanels )) continue ;
162
- if (in_array ($ name , \TracyDebugger::$ superUserOnlyPanels ) && !\TracyDebugger::$ allowedSuperuser && !\TracyDebugger::$ validLocalUser && !\TracyDebugger::$ validSwitchedUser ) continue ;
163
- // special additional check for adminer
164
- if ($ name == 'adminer ' && !\TracyDebugger::$ allowedSuperuser ) continue ;
165
- if ($ name == 'userSwitcher ' ) {
166
- if (\TracyDebugger::getDataValue ('userSwitchSession ' ) != '' ) $ userSwitchSession = \TracyDebugger::getDataValue ('userSwitchSession ' );
167
- if (!\TracyDebugger::$ allowedSuperuser && (!$ this ->wire ('session ' )->tracyUserSwitcherId || (isset ($ userSwitchSession [$ this ->wire ('session ' )->tracyUserSwitcherId ]) && $ userSwitchSession [$ this ->wire ('session ' )->tracyUserSwitcherId ] <= time ()))) continue ;
168
- }
169
211
170
- $ seconds = isset (\TracyDebugger::$ panelGenerationTime [$ name ]['time ' ]) ? \TracyDebugger::$ panelGenerationTime [$ name ]['time ' ] : '' ;
171
- $ size = isset (\TracyDebugger::$ panelGenerationTime [$ name ]['size ' ]) ? \TracyDebugger::human_filesize (\TracyDebugger::$ panelGenerationTime [$ name ]['size ' ]) : '' ;
172
- $ out .= '
173
- <label style=" ' .($ this ->wire ('page ' )->template == 'admin ' && in_array ($ name , \TracyDebugger::$ hideInAdmin ) ? ' visibility:hidden;position: absolute; left: -999em; ' : '' ).'"> ' .
174
- ($ this ->isOnce ($ name , $ defaultPanels ) ? $ onceIcon .' ' : '<span style="display:inline-block;width:18px"> </span> ' );
175
- if (!empty (\TracyDebugger::$ externalPanels ) || !array_key_exists ($ name , \TracyDebugger::$ externalPanels )) {
176
- if (array_key_exists ($ name , $ this ->panelSettingsLinks )) {
177
- $ out .= \TracyDebugger::generatePanelSettingsLink ($ this ->panelSettingsLinks [$ name ]);
178
- }
179
- else {
180
- $ out .= ' ' ;
181
- }
182
- $ out .= '<span style="font-size:16px; font-weight:600"><a title="Panel Info" href="https://adrianbj.github.io/TracyDebugger/#/debug-bar?id= ' .str_replace (' ' , '- ' , strtolower ($ label )).'" target="_blank">ℹ</a></span> ' ;
183
- }
184
- else {
185
- $ out .= ' ' ;
186
- }
187
- $ out .= ' <input type="checkbox" name="selectedPanels[]" ' . ($ name == 'panelSelector ' || in_array ($ name , \TracyDebugger::getDataValue ('nonToggleablePanels ' )) ? 'disabled="disabled" ' : '' ) . ' value=" ' .$ name .'" ' . (in_array ($ name , $ showPanels ) ? 'checked="checked" ' : '' ) . ' /> '
188
- . $ label . (in_array ($ name , $ defaultPanels ) ? ' <strong>*</strong> ' : '' ) . ($ seconds ? '<span style="color:#999999; font-size:11px; float:right; margin-left:20px"> ' . \TracyDebugger::formatTime ($ seconds ) . ($ size ? ', ' .$ size : '' ) . '</span> ' : '' ) . '
189
- </label> ' ;
190
- }
191
- $ out .= '
192
- </div>
193
- <br />
194
- <span style="float:left">
195
- <input type="submit" onclick="changeTracyPanels( \'Once \')" value="Once" />
196
- <input type="submit" onclick="changeTracyPanels( \'Sticky \')" value="Sticky" />
197
- <input type="submit" onclick="resetTracyPanels()" value="Reset" />
198
- </span>
199
- <span style="float:right"> ' ;
200
- $ out .= '<input type="submit" style=" ' .($ this ->wire ('input ' )->cookie ->tracyGuestDumps ? 'color: ' .\TracyDebugger::COLOR_WARN : '' ).'" onclick="toggleGuestDumps()" value=" ' . ($ this ->wire ('input ' )->cookie ->tracyGuestDumps ? 'Disable ' : 'Enable ' ) .' Guest Dumps" /> ' ;
201
- if (!\TracyDebugger::getDataValue ('strictMode ' )) {
202
- $ out .= '<input type="submit" onclick="toggleStrictMode()" value=" ' . ($ this ->wire ('input ' )->cookie ->tracyStrictMode ? 'Disable ' : 'Enable ' ) .' Strict Mode" /> ' ;
203
- }
204
- if (\TracyDebugger::getDataValue ('panelSelectorTracyTogglerButton ' )) {
205
- $ out .= '<input type="submit" onclick="disableTracy()" value="Disable Tracy" /> ' ;
206
- }
207
- $ out .= '
208
- </span>
212
+ $ defaultPanels = $ this ->wire ('page ' )->template == "admin " ? \TracyDebugger::getDataValue ('backendPanels ' ) : \TracyDebugger::getDataValue ('frontendPanels ' );
213
+ $ showPanels = \TracyDebugger::$ showPanels ;
214
+
215
+ $ out .= '<label><input type="checkbox" onchange="toggleAllTracyPanels(this)" ' .
216
+ (count ($ showPanels ) == count (\TracyDebugger::$ allPanels ) ? 'checked="checked" ' : '' ) . ' /> Toggle All</label><br /> ' ;
217
+
218
+ $ out .= '<table style="border-collapse: collapse; width: max-content; min-width: 100%;"> ' ;
219
+
220
+ // split panels into two roughly equal halves
221
+ $ panels = [];
222
+ foreach (\TracyDebugger::$ allPanels as $ name => $ label ) {
223
+
224
+ if (in_array ($ name , \TracyDebugger::$ restrictedUserDisabledPanels )) continue ;
225
+ if (in_array ($ name , \TracyDebugger::$ superUserOnlyPanels ) && !\TracyDebugger::$ allowedSuperuser && !\TracyDebugger::$ validLocalUser && !\TracyDebugger::$ validSwitchedUser ) continue ;
226
+ if ($ name == 'adminer ' && !\TracyDebugger::$ allowedSuperuser ) continue ;
227
+ if ($ name == 'userSwitcher ' ) {
228
+ if (\TracyDebugger::getDataValue ('userSwitchSession ' ) != '' ) $ userSwitchSession = \TracyDebugger::getDataValue ('userSwitchSession ' );
229
+ if (!\TracyDebugger::$ allowedSuperuser && (!$ this ->wire ('session ' )->tracyUserSwitcherId || (isset ($ userSwitchSession [$ this ->wire ('session ' )->tracyUserSwitcherId ]) && $ userSwitchSession [$ this ->wire ('session ' )->tracyUserSwitcherId ] <= time ()))) continue ;
230
+ }
231
+ $ panels [] = ['name ' => $ name , 'label ' => $ label ];
232
+ }
233
+
234
+ $ half = ceil (count ($ panels )/2 );
235
+ $ leftPanels = array_slice ($ panels , 0 , $ half );
236
+ $ rightPanels = array_slice ($ panels , $ half );
237
+
238
+ $ maxRows = max (count ($ leftPanels ), count ($ rightPanels ));
239
+
240
+ for ($ i =0 ; $ i < $ maxRows ; $ i ++) {
241
+ $ out .= '<tr> ' ;
242
+ $ out .= $ this ->renderPanelCell (isset ($ leftPanels [$ i ]) ? $ leftPanels [$ i ] : null , $ defaultPanels , $ showPanels , $ onceIcon );
243
+ $ out .= $ this ->renderPanelCell (isset ($ rightPanels [$ i ]) ? $ rightPanels [$ i ] : null , $ defaultPanels , $ showPanels , $ onceIcon );
244
+ $ out .= '</tr> ' ;
245
+ }
246
+
247
+ $ out .= '</table> ' ;
248
+
249
+ $ out .= '
250
+ <br />
251
+ <span style="float:left">
252
+ <input type="submit" onclick="changeTracyPanels( \'Once \')" value="Once" />
253
+ <input type="submit" onclick="changeTracyPanels( \'Sticky \')" value="Sticky" />
254
+ <input type="submit" onclick="resetTracyPanels()" value="Reset" />
255
+ </span>
256
+ <span style="float:right"> ' ;
257
+ $ out .= '<input type="submit" style=" ' . ($ this ->wire ('input ' )->cookie ->tracyGuestDumps ? 'color: ' . \TracyDebugger::COLOR_WARN : '' ) . '" onclick="toggleGuestDumps()" value=" ' . ($ this ->wire ('input ' )->cookie ->tracyGuestDumps ? 'Disable ' : 'Enable ' ) . ' Guest Dumps" /> ' ;
258
+ if (!\TracyDebugger::getDataValue ('strictMode ' )) {
259
+ $ out .= '<input type="submit" onclick="toggleStrictMode()" value=" ' . ($ this ->wire ('input ' )->cookie ->tracyStrictMode ? 'Disable ' : 'Enable ' ) . ' Strict Mode" /> ' ;
260
+ }
261
+ if (\TracyDebugger::getDataValue ('panelSelectorTracyTogglerButton ' )) {
262
+ $ out .= '<input type="submit" onclick="disableTracy()" value="Disable Tracy" /> ' ;
263
+ }
264
+ $ out .= '
265
+ </span>
209
266
210
267
</fieldset> ' ;
211
268
212
- $ out .= \TracyDebugger::generatePanelFooter ('panelSelector ' , \Tracy \Debugger::timer ('panelSelector ' ), strlen ($ out ), 'panelSelectorPanel ' );
269
+ $ out .= \TracyDebugger::generatePanelFooter ('panelSelector ' , \Tracy \Debugger::timer ('panelSelector ' ), strlen ($ out ), 'panelSelectorPanel ' );
213
270
214
271
$ out .= '
215
272
</div> ' ;
0 commit comments