diff --git a/api_db.php b/api_db.php index b5dec941..511f55d0 100644 --- a/api_db.php +++ b/api_db.php @@ -384,7 +384,10 @@ if (isset($_GET['getGraphData']) && $auth) if (isset($_GET['status'])) { - $results = $db->query('SELECT COUNT(*) FROM message;'); + $extra = ";"; + if(isset($_GET["ignore"]) && $_GET["ignore"] === 'DNSMASQ_WARN') + $extra = "WHERE type != 'DNSMASQ_WARN';"; + $results = $db->query('SELECT COUNT(*) FROM message '.$extra); if(!is_bool($results)) $result = array('message_count' => $results->fetchArray()[0]); @@ -396,8 +399,12 @@ if (isset($_GET['status'])) if(isset($_GET["messages"]) && $auth) { + $extra = ";"; + if(isset($_GET["ignore"]) && $_GET["ignore"] === 'DNSMASQ_WARN') + $extra = "WHERE type != 'DNSMASQ_WARN';"; + $messages = array(); - $results = $db->query('SELECT * FROM message'); + $results = $db->query('SELECT * FROM message '.$extra); while($results !== false && $res = $results->fetchArray(SQLITE3_ASSOC)) { diff --git a/scripts/pi-hole/js/messages.js b/scripts/pi-hole/js/messages.js index 0a889467..a13de4fa 100644 --- a/scripts/pi-hole/js/messages.js +++ b/scripts/pi-hole/js/messages.js @@ -132,9 +132,12 @@ function renderMessage(data, type, row) { } $(function () { + var ignoreNonfatal = localStorage + ? localStorage.getItem("hideNonfatalDnsmasqWarnings_chkbox") === "true" + : false; table = $("#messagesTable").DataTable({ ajax: { - url: "api_db.php?messages", + url: "api_db.php?messages" + (ignoreNonfatal ? "&ignore=DNSMASQ_WARN" : ""), data: { token: token }, type: "POST", dataSrc: "messages", diff --git a/scripts/pi-hole/js/settings.js b/scripts/pi-hole/js/settings.js index 274d6adc..e89bf860 100644 --- a/scripts/pi-hole/js/settings.js +++ b/scripts/pi-hole/js/settings.js @@ -5,7 +5,7 @@ * This file is copyright under the latest version of the EUPL. * Please see LICENSE file for your rights under this license. */ -/* global utils:false */ +/* global utils:false, checkMessages:false */ var token = $("#token").text(); $(function () { @@ -446,3 +446,26 @@ $('button[id="removedynamic"]').on("click", function () { }, }); }); + +// Non-fatal dnsmasq warnings toggle +$(function () { + var nonfatalwarnigns = $("#hideNonfatalDnsmasqWarnings"); + var chkboxData = localStorage ? localStorage.getItem("hideNonfatalDnsmasqWarnings_chkbox") : null; + + if (chkboxData !== null) { + // Restore checkbox state + nonfatalwarnigns.prop("checked", chkboxData === "true"); + } else { + // Initialize checkbox + nonfatalwarnigns.prop("checked", false); + if (localStorage) { + localStorage.setItem("hideNonfatalDnsmasqWarnings_chkbox", false); + } + } + + nonfatalwarnigns.click(function () { + localStorage.setItem("hideNonfatalDnsmasqWarnings_chkbox", nonfatalwarnigns.prop("checked")); + // Call check messages to make new setting effective + checkMessages(); + }); +}); diff --git a/scripts/pi-hole/js/utils.js b/scripts/pi-hole/js/utils.js index cf1b6968..d8f33b96 100644 --- a/scripts/pi-hole/js/utils.js +++ b/scripts/pi-hole/js/utils.js @@ -361,7 +361,10 @@ function colorBar(percentage, total, cssClass) { } function checkMessages() { - $.getJSON("api_db.php?status", function (data) { + var ignoreNonfatal = localStorage + ? localStorage.getItem("hideNonfatalDnsmasqWarnings_chkbox") === "true" + : false; + $.getJSON("api_db.php?status" + (ignoreNonfatal ? "&ignore=DNSMASQ_WARN" : ""), function (data) { if ("message_count" in data && data.message_count > 0) { var title = data.message_count > 1 diff --git a/settings.php b/settings.php index 0d011a75..5f7ba3b5 100644 --- a/settings.php +++ b/settings.php @@ -1159,7 +1159,7 @@ if (isset($_GET['tab']) && in_array($_GET['tab'], array("sysadmin", "dns", "piho