add hiding and a colspans to startup profile table

This commit is contained in:
AUTOMATIC 2023-06-01 10:01:42 +03:00
parent b3390a9840
commit a5e851028e
3 changed files with 81 additions and 12 deletions

View File

@ -3,11 +3,29 @@ function createRow(table, cellName, items) {
var tr = document.createElement('tr'); var tr = document.createElement('tr');
var res = []; var res = [];
items.forEach(function(x) { items.forEach(function(x, i) {
if (x === undefined) {
res.push(null);
return;
}
var td = document.createElement(cellName); var td = document.createElement(cellName);
td.textContent = x; td.textContent = x;
tr.appendChild(td); tr.appendChild(td);
res.push(td); res.push(td);
var colspan = 1;
for (var n = i + 1; n < items.length; n++) {
if (items[n] !== undefined) {
break;
}
colspan += 1;
}
if (colspan > 1) {
td.colSpan = colspan;
}
}); });
table.appendChild(tr); table.appendChild(tr);
@ -15,7 +33,7 @@ function createRow(table, cellName, items) {
return res; return res;
} }
function showProfile(path, cutoff = 0.0005) { function showProfile(path, cutoff = 0.05) {
requestGet(path, {}, function(data) { requestGet(path, {}, function(data) {
var table = document.createElement('table'); var table = document.createElement('table');
table.className = 'popup-table'; table.className = 'popup-table';
@ -38,7 +56,7 @@ function showProfile(path, cutoff = 0.0005) {
return !(a < b || b < a); return !(a < b || b < a);
} }
var addLevel = function(level, parent) { var addLevel = function(level, parent, hide) {
var matching = items.filter(function(x) { var matching = items.filter(function(x) {
return x.parts[level] && !x.parts[level + 1] && arraysEqual(x.parts.slice(0, level), parent); return x.parts[level] && !x.parts[level + 1] && arraysEqual(x.parts.slice(0, level), parent);
}); });
@ -47,12 +65,10 @@ function showProfile(path, cutoff = 0.0005) {
}); });
var othersTime = 0; var othersTime = 0;
var othersList = []; var othersList = [];
var othersRows = [];
var childrenRows = [];
sorted.forEach(function(x) { sorted.forEach(function(x) {
if (x.time < cutoff) { var visible = x.time >= cutoff && !hide;
othersTime += x.time;
othersList.push(x.parts[level]);
return;
}
var cells = []; var cells = [];
for (var i = 0; i < maxLength; i++) { for (var i = 0; i < maxLength; i++) {
@ -64,7 +80,32 @@ function showProfile(path, cutoff = 0.0005) {
cols[i].className = 'muted'; cols[i].className = 'muted';
} }
addLevel(level + 1, parent.concat([x.parts[level]])); var tr = cols[0].parentNode;
if (!visible) {
tr.classList.add("hidden");
}
if (x.time >= cutoff) {
childrenRows.push(tr);
} else {
othersTime += x.time;
othersList.push(x.parts[level]);
othersRows.push(tr);
}
var children = addLevel(level + 1, parent.concat([x.parts[level]]), true);
if (children.length > 0) {
var cell = cols[level];
var onclick = function() {
cell.classList.remove("link");
cell.removeEventListener("click", onclick);
children.forEach(function(x) {
x.classList.remove("hidden");
});
};
cell.classList.add("link");
cell.addEventListener("click", onclick);
}
}); });
if (othersTime > 0) { if (othersTime > 0) {
@ -73,14 +114,35 @@ function showProfile(path, cutoff = 0.0005) {
cells.push(parent[i]); cells.push(parent[i]);
} }
cells.push(othersTime.toFixed(3)); cells.push(othersTime.toFixed(3));
cells[level] = 'others';
var cols = createRow(table, 'td', cells); var cols = createRow(table, 'td', cells);
for (i = 0; i < level; i++) { for (i = 0; i < level; i++) {
cols[i].className = 'muted'; cols[i].className = 'muted';
} }
cols[level].textContent = 'others'; var cell = cols[level];
cols[level].title = othersList.join(", "); var tr = cell.parentNode;
var onclick = function() {
tr.classList.add("hidden");
cell.classList.remove("link");
cell.removeEventListener("click", onclick);
othersRows.forEach(function(x) {
x.classList.remove("hidden");
});
};
cell.title = othersList.join(", ");
cell.classList.add("link");
cell.addEventListener("click", onclick);
if (hide) {
tr.classList.add("hidden");
}
childrenRows.push(tr);
} }
return childrenRows;
}; };
addLevel(0, []); addLevel(0, []);

View File

@ -1,4 +1,5 @@
import inspect import inspect
import os
from collections import namedtuple from collections import namedtuple
from typing import Optional, Dict, Any from typing import Optional, Dict, Any
@ -123,7 +124,7 @@ def app_started_callback(demo: Optional[Blocks], app: FastAPI):
for c in callback_map['callbacks_app_started']: for c in callback_map['callbacks_app_started']:
try: try:
c.callback(demo, app) c.callback(demo, app)
timer.startup_timer.record(c.script) timer.startup_timer.record(os.path.basename(c.script))
except Exception: except Exception:
report_exception(c, 'app_started_callback') report_exception(c, 'app_started_callback')

View File

@ -420,6 +420,12 @@ table.popup-table .muted{
color: #aaa; color: #aaa;
} }
table.popup-table .link{
text-decoration: underline;
cursor: pointer;
font-weight: bold;
}
.ui-defaults-none{ .ui-defaults-none{
color: #aaa !important; color: #aaa !important;
} }