Add player control-plane and dashboard updates

This commit is contained in:
2026-08-07 22:35:27 +01:00
parent a4f8a807ff
commit 2bd47fb96a
36 changed files with 5081 additions and 263 deletions
+23 -1
View File
@@ -1,4 +1,6 @@
(function () {
var minimumPaginationCardHeight = 20 * 16;
function rebindTableContainer(container) {
if (!container) {
return;
@@ -33,8 +35,18 @@
var cardRect = card.getBoundingClientRect();
var bottomInset = 16;
var availableHeight = Math.max(0, window.innerHeight - cardRect.top - bottomInset);
var contentHeight = Math.max(0, card.scrollHeight || 0);
var shouldApplyMinimum = contentHeight > minimumPaginationCardHeight;
var cardHeight = Math.max(minimumPaginationCardHeight, availableHeight);
if (shouldApplyMinimum) {
card.style.setProperty('--table-pagination-card-min-height', minimumPaginationCardHeight + 'px');
} else {
card.style.removeProperty('--table-pagination-card-min-height');
}
card.style.removeProperty('--table-pagination-card-height');
card.style.setProperty('--table-pagination-card-max-height', availableHeight + 'px');
card.style.setProperty('--table-pagination-card-max-height', cardHeight + 'px');
});
}
@@ -112,6 +124,7 @@
var currentUrl = new URL(window.location.href);
var pendingSearchTimer = null;
var requestSequence = 0;
var pendingSearchRequests = 0;
var container = input.closest('[data-table-search-container]') || input.closest('.card') || null;
input.value = String(currentUrl.searchParams.get(searchParam) || '').trim();
@@ -133,6 +146,10 @@
requestSequence += 1;
var sequenceId = requestSequence;
pendingSearchRequests += 1;
if (container) {
container.setAttribute('data-table-search-loading', 'true');
}
fetch(nextUrl.toString(), {
method: 'GET',
@@ -165,6 +182,11 @@
}
}).catch(function () {
window.location.assign(nextUrl.toString());
}).finally(function () {
pendingSearchRequests = Math.max(0, pendingSearchRequests - 1);
if (container && pendingSearchRequests === 0) {
container.removeAttribute('data-table-search-loading');
}
});
}