Merge pull request #3070 from enix-app/debugbar-route-link

Small Feature: debugbar link
This commit is contained in:
MGatner 2020-06-13 07:07:52 -04:00 committed by GitHub
commit 3c05f34558
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 71 additions and 2 deletions

View File

@ -44,7 +44,7 @@
{routes}
<tr>
<td>{method}</td>
<td>{route}</td>
<td data-debugbar-route="{method}">{route}</td>
<td>{handler}</td>
</tr>
{/routes}

View File

@ -593,3 +593,15 @@
.debug-bar-noverflow {
overflow: hidden; }
#debug-bar td[data-debugbar-route] form {
display: none; }
#debug-bar td[data-debugbar-route]:hover form {
display: block; }
#debug-bar td[data-debugbar-route]:hover > div {
display: none; }
#debug-bar td[data-debugbar-route] input[type=text] {
padding: 2px; }
#toolbarContainer.dark td[data-debugbar-route] input[type=text] {
background: #000;
color: #fff; }

View File

@ -20,6 +20,7 @@ var ciDebugBar = {
ciDebugBar.setToolbarPosition();
ciDebugBar.setToolbarTheme();
ciDebugBar.toggleViewsHints();
ciDebugBar.routerLink();
document.getElementById('debug-bar-link').addEventListener('click', ciDebugBar.toggleToolbar, true);
document.getElementById('debug-icon-link').addEventListener('click', ciDebugBar.toggleToolbar, true);
@ -545,7 +546,7 @@ var ciDebugBar = {
}
else
{
// In any other cases: if there is no cookie, or the cookie is set to
// In any other cases: if there is no cookie, or the cookie is set to
// "light", or the "prefers-color-scheme" is "light"...
ciDebugBar.createCookie('debug-bar-theme', 'dark', 365);
ciDebugBar.removeClass(ciDebugBar.toolbarContainer, 'light');
@ -600,5 +601,61 @@ var ciDebugBar = {
}
}
return null;
},
//--------------------------------------------------------------------
trimSlash: function(text) {
return text.replace(/^\/|\/$/g, '');
},
routerLink: function() {
var row, _location;
var rowGet = document.querySelectorAll('#debug-bar td[data-debugbar-route="GET"]');
var patt = /\((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*\)/;
for (var i = 0; i < rowGet.length; i++) {
row = rowGet[i];
if (!/\/\(.+?\)/.test(rowGet[i].innerText)) {
row.style = 'cursor: pointer;';
row.setAttribute('title', location.origin + '/' + ciDebugBar.trimSlash(row.innerText));
row.addEventListener('click', function(ev) {
_location = location.origin + '/' + ciDebugBar.trimSlash(ev.target.innerText);
var redirectWindow = window.open(_location, '_blank');
redirectWindow.location;
});
}
else {
row.innerHTML = '<div>' + row.innerText + '</div>'
+ '<form data-debugbar-route-tpl="' + ciDebugBar.trimSlash(row.innerText.replace(patt, '?')) + '">'
+ row.innerText.replace(patt, '<input type="text" placeholder="$1">')
+ '<input type="submit" value="Go" style="margin-left: 4px;">'
+ '</form>';
}
}
rowGet = document.querySelectorAll('#debug-bar td[data-debugbar-route="GET"] form');
for (var i = 0; i < rowGet.length; i++) {
row = rowGet[i];
row.addEventListener('submit', function(event) {
event.preventDefault()
var inputArray = [], t = 0;
var input = event.target.querySelectorAll('input[type=text]');
var tpl = event.target.getAttribute('data-debugbar-route-tpl');
for (var n = 0; n < input.length; n++) {
if (input[n].value.length > 0) inputArray.push(input[n].value);
}
if (inputArray.length > 0) {
_location = location.origin + '/' + tpl.replace(/\?/g, function() {return inputArray[t++]});
var redirectWindow = window.open(_location, '_blank');
redirectWindow.location;
}
})
}
}
};