diff --git a/groups-adlists.php b/groups-adlists.php index 94c26a7e..1fb04179 100644 --- a/groups-adlists.php +++ b/groups-adlists.php @@ -41,6 +41,7 @@
pihole -g or update your gravity list online after modifying your adlists.| Health status of this list: | ' + + statusText + + ' |
| This list was added to Pi-hole | ' + + utils.datetimeRelative(data.date_added) + + " (" + + utils.datetime(data.date_added, false) + + ') |
| Database entry was last modified | ' + + utils.datetimeRelative(data.date_modified) + + " (" + + utils.datetime(data.date_modified, false) + + ') |
| The list contents were last updated | ' + + (data.date_updated > 0 + ? utils.datetimeRelative(data.date_updated) + + " (" + + utils.datetime(data.date_updated) + + ")" + : "N/A") + + ' |
| Number of valid domains on this list: | ' + + (data.number !== null && numbers === true ? parseInt(data.number, 10) : "N/A") + + ' |
| Number of invalid domains on this list: | " + + "" + + (data.invalid_domains !== null && numbers === true + ? parseInt(data.invalid_domains, 10) + : "N/A") + + ' |
| Database ID of this list: | ' + + data.id + + " |
' +
- data.address +
- ""
- );
var disabled = data.enabled === 0;
- $("td:eq(1)", row).html(
+ var statusCode = 0,
+ statusIcon;
+ // If there is no status or the list is disabled, we keep
+ // status 0 (== unknown)
+ if (data.status !== null && disabled !== true) {
+ statusCode = parseInt(data.status, 10);
+ }
+
+ switch (statusCode) {
+ case 1:
+ statusIcon = "fa-check";
+ break;
+ case 2:
+ statusIcon = "fa-history";
+ break;
+ case 3:
+ statusIcon = "fa-exclamation-circle";
+ break;
+ case 4:
+ statusIcon = "fa-times";
+ break;
+ case 0:
+ default:
+ statusIcon = "fa-question-circle";
+ break;
+ }
+
+ // Append red exclamation-triangle when there are invalid lines on the list
+ var extra = "";
+ if (data.invalid_domains !== null && data.invalid_domains > 0) {
+ extra = "";
+ }
+
+ $("td:eq(0)", row).addClass("list-status-" + statusCode);
+ $("td:eq(0)", row).html(
+ "" + extra
+ );
+
+ if (data.address.startsWith("file://")) {
+ // Local files cannot be downloaded from a distant client so don't show
+ // a link to such a list here
+ $("td:eq(1)", row).html(
+ '' + data.address + ""
+ );
+ } else {
+ $("td:eq(1)", row).html(
+ '' +
+ data.address +
+ ""
+ );
+ }
+
+ $("td:eq(2)", row).html(
'"
);
var statusEl = $("#status_" + data.id, row);
@@ -86,13 +202,13 @@ function initTable() {
});
statusEl.on("change", editAdlist);
- $("td:eq(2)", row).html('');
+ $("td:eq(3)", row).html('');
var commentEl = $("#comment_" + data.id, row);
commentEl.val(utils.unescapeHtml(data.comment));
commentEl.on("change", editAdlist);
- $("td:eq(3)", row).empty();
- $("td:eq(3)", row).append(
+ $("td:eq(4)", row).empty();
+ $("td:eq(4)", row).append(
''
);
var selectEl = $("#multiselect_" + data.id, row);
@@ -162,7 +278,7 @@ function initTable() {
'">' +
'' +
"";
- $("td:eq(4)", row).html(button);
+ $("td:eq(5)", row).html(button);
},
dom:
"<'row'<'col-sm-4'l><'col-sm-8'f>>" +
@@ -204,6 +320,22 @@ function initTable() {
$("#resetButton").addClass("hidden");
});
+ // Add event listener for opening and closing details
+ $("#adlistsTable tbody").on("click", "td.details-control", function () {
+ var tr = $(this).closest("tr");
+ var row = table.row(tr);
+
+ if (row.child.isShown()) {
+ // This row is already open - close it
+ row.child.hide();
+ tr.removeClass("shown");
+ } else {
+ // Open this row
+ row.child(format(row.data())).show();
+ tr.addClass("shown");
+ }
+ });
+
// Disable autocorrect in the search box
var input = document.querySelector("input[type=search]");
if (input !== null) {
diff --git a/scripts/pi-hole/js/utils.js b/scripts/pi-hole/js/utils.js
index cdc4bead..73e38258 100644
--- a/scripts/pi-hole/js/utils.js
+++ b/scripts/pi-hole/js/utils.js
@@ -124,7 +124,11 @@ function showAlert(type, icon, title, message) {
function datetime(date, html) {
var format = html === false ? "Y-MM-DD HH:mm:ss z" : "Y-MM-DD [