Compare commits

..

1 Commits

Author SHA1 Message Date
808c4e5b1f add cookies support 2025-07-03 18:44:33 +03:00
5 changed files with 66 additions and 66 deletions

View File

@ -80,7 +80,8 @@
data-classes="table table-hover" data-classes="table table-hover"
data-sortable="true" data-sortable="true"
data-sort-name="timestamp" data-sort-name="timestamp"
data-sort-order="desc"> data-sort-order="desc"
data-toggle="table">
<thead class="table-primary"> <thead class="table-primary">
<tr> <tr>
<th data-align="right" data-field="timestamp">date</th> <th data-align="right" data-field="timestamp">date</th>
@ -508,8 +509,6 @@
} }
ready(_ => { ready(_ => {
packageInfoEventsTable.bootstrapTable({});
packageInfoEventsUpdateChart = new Chart(packageInfoEventsUpdateChartCanvas, { packageInfoEventsUpdateChart = new Chart(packageInfoEventsUpdateChartCanvas, {
type: "line", type: "line",
data: {}, data: {},
@ -541,6 +540,16 @@
packageInfoAutoReloadTask = null; // not really required (?) but lets clear everything packageInfoAutoReloadTask = null; // not really required (?) but lets clear everything
}); });
restoreAutoReloadSettings(packageInfoAutoReloadButton, packageInfoAutoReloadInput); // set refresh interval
for (let refreshEnabled = Cookies.get(`ahriman-${packageInfoAutoReloadButton.id}-refresh-enabled`);
!!refreshEnabled;
refreshEnabled = undefined) {
packageInfoAutoReloadButton.checked = refreshEnabled === "true";
}
for (let refreshInterval = Cookies.get(`ahriman-${packageInfoAutoReloadButton.id}-refresh-interval`);
!!refreshInterval;
refreshInterval = undefined) {
toggleActiveElement(packageInfoAutoReloadInput, "interval", refreshInterval);
}
}); });
</script> </script>

View File

@ -315,7 +315,17 @@
onUncheckAll: onCheckFunction, onUncheckAll: onCheckFunction,
}); });
restoreAutoReloadSettings(tableAutoReloadButton, tableAutoReloadInput); // set refresh interval
for (let refreshEnabled = Cookies.get(`ahriman-${tableAutoReloadButton.id}-refresh-enabled`);
!!refreshEnabled;
refreshEnabled = undefined) {
tableAutoReloadButton.checked = refreshEnabled === "true";
}
for (let refreshInterval = Cookies.get(`ahriman-${tableAutoReloadButton.id}-refresh-interval`);
!!refreshInterval;
refreshInterval = undefined) {
toggleActiveElement(tableAutoReloadInput, "interval", refreshInterval);
}
selectRepository(); selectRepository();
{% if autorefresh_intervals %} {% if autorefresh_intervals %}

View File

@ -53,7 +53,8 @@ SigLevel = Database{% if has_repo_signed %}Required{% else %}Never{% endif %} Pa
data-show-search-clear-button="true" data-show-search-clear-button="true"
data-sortable="true" data-sortable="true"
data-sort-name="base" data-sort-name="base"
data-sort-order="asc"> data-sort-order="asc"
data-toggle="table">
<thead class="table-primary"> <thead class="table-primary">
<tr> <tr>
<th data-sortable="true" data-switchable="false" data-field="name" data-filter-control="input" data-filter-control-placeholder="(any package)">package</th> <th data-sortable="true" data-switchable="false" data-field="name" data-filter-control="input" data-filter-control-placeholder="(any package)">package</th>
@ -127,8 +128,7 @@ SigLevel = Database{% if has_repo_signed %}Required{% else %}Never{% endif %} Pa
} }
ready(_ => { ready(_ => {
table.bootstrapTable({ table.on("created-controls.bs.table", _ => {
onCreatedControls: _ => {
new easepick.create({ new easepick.create({
element: document.querySelector(".bootstrap-table-filter-control-timestamp"), element: document.querySelector(".bootstrap-table-filter-control-timestamp"),
css: [ css: [
@ -158,7 +158,6 @@ SigLevel = Database{% if has_repo_signed %}Required{% else %}Never{% endif %} Pa
}; };
}, },
}); });
},
}); });
}); });
</script> </script>

View File

@ -120,19 +120,6 @@
} }
} }
function restoreAutoReloadSettings(toggle, intervalSelector) {
for (let refreshEnabled = Cookies.get(`ahriman-${toggle.id}-refresh-enabled`);
!!refreshEnabled;
refreshEnabled = undefined) {
toggle.checked = refreshEnabled === "true";
}
for (let refreshInterval = Cookies.get(`ahriman-${toggle.id}-refresh-interval`);
!!refreshInterval;
refreshInterval = undefined) {
toggleActiveElement(intervalSelector, "interval", refreshInterval);
}
}
function safe(string) { function safe(string) {
return String(string) return String(string)
.replace(/&/g, "&amp;") .replace(/&/g, "&amp;")
@ -152,18 +139,6 @@
return element; return element;
} }
function toggleActiveElement(selector, dataType, value) {
const targetElement = selector.querySelector(`a[data-${dataType}="${value}"]`);
if (targetElement?.classList?.contains("active")) {
return; // element is already active, skip processing
}
Array.from(selector.children).forEach(il => {
Array.from(il.children).forEach(el => el.classList.remove("active"));
});
targetElement?.classList?.add("active");
}
function toggleAutoReload(toggle, interval, intervalSelector, callback) { function toggleAutoReload(toggle, interval, intervalSelector, callback) {
if (interval) { if (interval) {
toggle.checked = true; // toggle reload toggle.checked = true; // toggle reload
@ -188,6 +163,13 @@
return intervalId; return intervalId;
} }
function toggleActiveElement(selector, dataType, value) {
Array.from(selector.children).forEach(il => {
Array.from(il.children).forEach(el => el.classList.remove("active"));
});
selector.querySelector(`a[data-${dataType}="${value}"]`)?.classList?.add("active");
}
Date.prototype.toISOStringShort = function() { Date.prototype.toISOStringShort = function() {
const pad = number => String(number).padStart(2, "0"); const pad = number => String(number).padStart(2, "0");
return `${this.getFullYear()}-${pad(this.getMonth() + 1)}-${pad(this.getDate())} ${pad(this.getHours())}:${pad(this.getMinutes())}:${pad(this.getSeconds())}`; return `${this.getFullYear()}-${pad(this.getMonth() + 1)}-${pad(this.getDate())} ${pad(this.getHours())}:${pad(this.getMinutes())}:${pad(this.getSeconds())}`;

View File

@ -72,7 +72,7 @@ def _create_socket(configuration: Configuration, application: Application) -> so
async def remove_socket(_: Application) -> None: async def remove_socket(_: Application) -> None:
unix_socket.unlink(missing_ok=True) unix_socket.unlink(missing_ok=True)
application.on_shutdown.append(remove_socket) # type: ignore[arg-type] application.on_shutdown.append(remove_socket)
return sock return sock
@ -142,8 +142,8 @@ def setup_server(configuration: Configuration, spawner: Spawn, repositories: lis
InitializeError: if no repositories set InitializeError: if no repositories set
""" """
application = Application(logger=logging.getLogger(__name__)) application = Application(logger=logging.getLogger(__name__))
application.on_shutdown.append(_on_shutdown) # type: ignore[arg-type] application.on_shutdown.append(_on_shutdown)
application.on_startup.append(_on_startup) # type: ignore[arg-type] application.on_startup.append(_on_startup)
application.middlewares.append(normalize_path_middleware(append_slash=False, remove_slash=True)) application.middlewares.append(normalize_path_middleware(append_slash=False, remove_slash=True))
application.middlewares.append(exception_handler(application.logger)) application.middlewares.append(exception_handler(application.logger))