reintroduced legacy Branches view: added /branches endpoint for listing origin branches and their latest builds (or unknown for never-built branches), updated UI with reload button and navigation, and enhanced API and tests
This commit is contained in:
@@ -66,7 +66,11 @@ a:hover { text-decoration: underline; }
|
||||
|
||||
/* view toggle nav + live indicator */
|
||||
.view-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 18px; }
|
||||
.view-row-actions { margin-left: auto; }
|
||||
.view-row-actions { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; }
|
||||
.reload-button { appearance: none; display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border: 1px solid var(--border); border-radius: 6px; background: var(--panel); color: var(--link); font: 18px/1 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; cursor: pointer; }
|
||||
.reload-button:hover { background: color-mix(in srgb, var(--link) 8%, transparent); }
|
||||
.reload-button.is-reloading { animation: reload-spin 0.6s ease-out; }
|
||||
@keyframes reload-spin { to { transform: rotate(360deg); } }
|
||||
.view-toggle { display: inline-flex; gap: 0; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; background: var(--panel); }
|
||||
.view-toggle a, .view-toggle span { display: inline-flex; min-width: 88px; justify-content: center; padding: 7px 12px; font-weight: 700; }
|
||||
.view-toggle span { background: var(--link); color: white; }
|
||||
|
||||
@@ -482,10 +482,30 @@ document.addEventListener("click", async (event) => {
|
||||
}
|
||||
});
|
||||
|
||||
// ---- reload button -------------------------------------------------------------
|
||||
|
||||
/** Refreshes via the page's poller; pages without one (e.g. artifact index) reload fully. */
|
||||
function initReloadButton() {
|
||||
const button = document.getElementById("reload-button");
|
||||
if (!button) {
|
||||
return;
|
||||
}
|
||||
button.addEventListener("animationend", () => button.classList.remove("is-reloading"));
|
||||
button.addEventListener("click", () => {
|
||||
button.classList.add("is-reloading");
|
||||
if (refreshNow) {
|
||||
refreshNow();
|
||||
} else {
|
||||
window.location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// ---- page wiring ---------------------------------------------------------------
|
||||
|
||||
initBuildsTable();
|
||||
initCurrentBuilds();
|
||||
initSystemTable();
|
||||
initReloadButton();
|
||||
setInterval(tickRunningDurations, 1000);
|
||||
tickRunningDurations();
|
||||
|
||||
Reference in New Issue
Block a user