Compare commits

..

2 Commits

Author SHA1 Message Date
808c4e5b1f add cookies support 2025-07-03 18:44:33 +03:00
6abe35ef8c fix: separate ua by spaces 2025-07-02 14:50:21 +03:00
5 changed files with 83 additions and 48 deletions

View File

@ -117,7 +117,6 @@
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"
data-toolbar="#toolbar"> data-toolbar="#toolbar">
<thead class="table-primary"> <thead class="table-primary">
<tr> <tr>

View File

@ -539,5 +539,17 @@
clearInterval(packageInfoAutoReloadTask); clearInterval(packageInfoAutoReloadTask);
packageInfoAutoReloadTask = null; // not really required (?) but lets clear everything packageInfoAutoReloadTask = null; // not really required (?) but lets clear everything
}); });
// 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

@ -250,6 +250,12 @@
} }
ready(_ => { ready(_ => {
const onCheckFunction = function () {
if (packageRemoveButton) {
packageRemoveButton.disabled = !getSelection().length;
}
};
document.querySelectorAll("#repositories a").forEach(element => { document.querySelectorAll("#repositories a").forEach(element => {
element.onclick = _ => { element.onclick = _ => {
repository = { repository = {
@ -264,49 +270,63 @@
}; };
}); });
table.on("check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table", _ => { table.bootstrapTable({
if (packageRemoveButton) { onCheck: onCheckFunction,
packageRemoveButton.disabled = !getSelection().length; onCheckAll: onCheckFunction,
} onClickRow: (data, row, cell) => {
}); if (0 === cell || "base" === cell) {
table.on("click-row.bs.table", (self, data, row, cell) => { const method = data[0] === true ? "uncheckBy" : "checkBy"; // fck javascript
if (0 === cell || "base" === cell) { table.bootstrapTable(method, {field: "id", values: [data.id]});
const method = data[0] === true ? "uncheckBy" : "checkBy"; // fck javascript } else showPackageInfo(data.id);
table.bootstrapTable(method, {field: "id", values: [data.id]}); },
} else showPackageInfo(data.id); onCreatedControls: _ => {
}); new easepick.create({
table.on("created-controls.bs.table", _ => { element: document.querySelector(".bootstrap-table-filter-control-timestamp"),
new easepick.create({ css: [
element: document.querySelector(".bootstrap-table-filter-control-timestamp"), "https://cdn.jsdelivr.net/npm/@easepick/bundle@1.2.1/dist/index.css",
css: [ ],
"https://cdn.jsdelivr.net/npm/@easepick/bundle@1.2.1/dist/index.css", grid: 2,
], calendars: 2,
grid: 2, autoApply: false,
calendars: 2, locale: {
autoApply: false, cancel: "Clear",
locale: { },
cancel: "Clear", RangePlugin: {
}, tooltip: false,
RangePlugin: { },
tooltip: false, plugins: [
}, "RangePlugin",
plugins: [ ],
"RangePlugin", setup: picker => {
], picker.on("select", _ => { table.bootstrapTable("triggerSearch"); });
setup: picker => { // replace "Cancel" behaviour to "Clear"
picker.on("select", _ => { table.bootstrapTable("triggerSearch"); }); picker.onClickCancelButton = element => {
// replace "Cancel" behaviour to "Clear" if (picker.isCancelButton(element)) {
picker.onClickCancelButton = element => { picker.clear();
if (picker.isCancelButton(element)) { picker.hide();
picker.clear(); table.bootstrapTable("triggerSearch");
picker.hide(); }
table.bootstrapTable("triggerSearch"); };
} },
}; });
}, },
}); onPageChange: (_, size) => { Cookies.set(`ahriman-${table.attr("id")}-page-size`, size); },
onUncheck: onCheckFunction,
onUncheckAll: onCheckFunction,
}); });
// 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 %}
toggleTableAutoReload(); toggleTableAutoReload();

View File

@ -150,10 +150,7 @@
if (interval) { if (interval) {
if (toggle.checked) { if (toggle.checked) {
// refresh UI // refresh UI
Array.from(intervalSelector.children).forEach(il => { toggleActiveElement(intervalSelector, "interval", interval);
Array.from(il.children).forEach(el => el.classList.remove("active"));
});
intervalSelector.querySelector(`a[data-interval="${interval}"]`)?.classList?.add("active");
// finally create timer task // finally create timer task
intervalId = setInterval(callback, interval); intervalId = setInterval(callback, interval);
} }
@ -166,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,8 +72,8 @@ class SyncHttpClient(LazyLogging):
""" """
session = requests.Session() session = requests.Session()
python_version = ".".join(map(str, sys.version_info[:3])) # just major.minor.patch python_version = ".".join(map(str, sys.version_info[:3])) # just major.minor.patch
session.headers["User-Agent"] = f"ahriman/{__version__}" \ session.headers["User-Agent"] = f"ahriman/{__version__} " \
f"{requests.utils.default_user_agent()}" \ f"{requests.utils.default_user_agent()} " \
f"python/{python_version}" f"python/{python_version}"
return session return session