diff --git a/assets/index.html b/assets/index.html
index 490a194..b8c6709 100644
--- a/assets/index.html
+++ b/assets/index.html
@@ -2,9 +2,9 @@
<html lang="en">
<head>
<meta charset=utf-8 http-equiv="Content-Language" content="en"/>
- <link rel="stylesheet" type="text/css" href="sai.css"/>
+ <link rel="stylesheet" type="text/css" href="sai.css?v=4"/>
<link rel="icon" href="sai-icon.svg" sizes="any" type="image/svg+xml"/>
- <script type='text/javascript' src='sai.js'></script>
+ <script type='text/javascript' src='sai.js?v=4'></script>
<script type='text/javascript' src='terminal-core.js'></script>
<script type='text/javascript' src='sai-terminal.js'></script>
<script type='text/javascript' src='lws-login.js'></script>
diff --git a/assets/sai.css b/assets/sai.css
index d27ac78..9ab8afe 100644
--- a/assets/sai.css
+++ b/assets/sai.css
@@ -1941,10 +1941,11 @@ div.ibuil.vm-builder {
flex: 0 0 auto;
}
-/* progress bar slot: sits inline on the same row, takes the remaining width */
+/* progress bar slot: fixed compact width, inline on the same row */
.sb-event-row .sb-event-bar {
- flex: 1 1 auto;
- min-width: 24px;
+ flex: 0 0 250px;
+ width: 250px;
+ max-width: 250px;
display: inline-flex;
align-items: center;
}
@@ -1953,7 +1954,8 @@ div.ibuil.vm-builder {
}
.sb-event-row .progress-bar {
- width: 100%;
+ width: 250px;
+ max-width: 250px;
height: 8px;
}
diff --git a/assets/sai.js b/assets/sai.js
index e29dca6..bf3c54b 100644
--- a/assets/sai.js
+++ b/assets/sai.js
@@ -1718,18 +1718,26 @@ function render_selected_event_tasks(o) {
var now_ut = Math.round((new Date().getTime() / 1000));
var s = "";
var e = o.e;
+
+ /*
+ * The header (title + admin restart-all / delete-event buttons) is
+ * always shown for the selected event, even when no task list is
+ * available yet (sidebar-scoped overview events arrive with t:[] and
+ * fetch their tasks on demand via selectEvent -> eventinfo).
+ */
+ s += "<div class=\"event-tasks-header\">";
+ var refName = e.ref.replace("refs/heads/", "").replace("refs/tags/", "");
+ s += "<span class=\"event-tasks-title\">" + san(e.repo_name) + " (" + san(refName) + ") - " + san(sai_event_hash_display(e.hash)) + "</span>";
+ /* admin-only restart-all / delete-event controls live here now */
+ if (!gitohashi_integ && auth_state === SaiAuthState.LOGGED_IN_GRANT_ADMIN) {
+ s += "<img class=\"rebuild\" alt=\"rebuild all\" src=\"/sai/rebuild.png\" " +
+ "id=\"rebuild-ev-" + san(e.uuid) + "\">";
+ s += "<img class=\"rebuild\" alt=\"delete event\" src=\"/sai/delete.png\" " +
+ "id=\"delete-ev-" + san(e.uuid) + "\">";
+ }
+ s += "</div>";
+
if (o.t && o.t.length) {
- s += "<div class=\"event-tasks-header\">";
- var refName = e.ref.replace("refs/heads/", "").replace("refs/tags/", "");
- s += "<span class=\"event-tasks-title\">" + san(e.repo_name) + " (" + san(refName) + ") - " + san(sai_event_hash_display(e.hash)) + "</span>";
- /* admin-only restart-all / delete-event controls live here now */
- if (!gitohashi_integ && auth_state === SaiAuthState.LOGGED_IN_GRANT_ADMIN) {
- s += "<img class=\"rebuild\" alt=\"rebuild all\" src=\"/sai/rebuild.png\" " +
- "id=\"rebuild-ev-" + san(e.uuid) + "\">";
- s += "<img class=\"rebuild\" alt=\"delete event\" src=\"/sai/delete.png\" " +
- "id=\"delete-ev-" + san(e.uuid) + "\">";
- }
- s += "</div>";
s += "<table class=\"tasks-table-display\"><tr><td class=\"tasks\" id=\"taskcont-" + san(e.uuid) + "\">";
var run_max = {}, run_list = {};
diff --git a/src/web/w-ws-browser.c b/src/web/w-ws-browser.c
index c42d293..52fe289 100644
--- a/src/web/w-ws-browser.c
+++ b/src/web/w-ws-browser.c
@@ -1377,6 +1377,10 @@ saiw_browser_queue_overview(struct vhd *vhd, struct pss *pss)
}
}
+ lwsl_notice("%s: DBG overview filt='%s' limit=%d offset=%u total=%u\n",
+ __func__, filt[0] ? filt : "(none)", n,
+ pss->overview_offset, total_events);
+
pss->wants_event_updates = 1;
if (lws_struct_sq3_deserialize(vhd->pdb, filt[0] ? filt : NULL,
"created ", lsm_schema_sq3_map_event,
@@ -1386,6 +1390,9 @@ saiw_browser_queue_overview(struct vhd *vhd, struct pss *pss)
return 0;
}
+ lwsl_notice("%s: DBG overview returned %u events\n",
+ __func__, (unsigned int)owner.count);
+
/*
* we get zero or more sai_event_t laid out in pss->query_ac,
* and listed in pss->query_owner