aboutsummaryrefslogtreecommitdiffstats
path: root/interface
diff options
context:
space:
mode:
authormoisseev <moiseev@mezonplus.ru>2020-08-08 20:59:27 +0300
committermoisseev <moiseev@mezonplus.ru>2020-08-08 20:59:27 +0300
commit1b34085ec52494c59b203908a4976d05aaa0f28f (patch)
treed968edb1a28c53c827b8a19a4a3024848f20ea2f /interface
parentcb776ef73e9043843480db683392cba4636feb51 (diff)
downloadrspamd-1b34085ec52494c59b203908a4976d05aaa0f28f.tar.gz
rspamd-1b34085ec52494c59b203908a4976d05aaa0f28f.zip
[WebUI] Add Bayesian statistics info
Diffstat (limited to 'interface')
-rw-r--r--interface/css/rspamd.css32
-rw-r--r--interface/index.html23
-rw-r--r--interface/js/app/stats.js31
3 files changed, 69 insertions, 17 deletions
diff --git a/interface/css/rspamd.css b/interface/css/rspamd.css
index a0852cfa9..6394e449c 100644
--- a/interface/css/rspamd.css
+++ b/interface/css/rspamd.css
@@ -288,6 +288,22 @@ table#symbolsTable input[type="number"] {
margin-right: 9px;
}
+.status-table td:last-child {
+ border-right: none;
+}
+.status-table tr:last-child td {
+ border-bottom: none;
+}
+.status-table thead th:last-child {
+ border-right: none;
+}
+.status-table tr:last-child td:first-child {
+ border-radius: 0 0 0 calc(.25rem - 1px);
+}
+.status-table tr:last-child td:last-child {
+ border-radius: 0 0 calc(.25rem - 1px) 0;
+}
+
/* RRD summary */
#summary-row {
padding-left: 80px;
@@ -486,22 +502,6 @@ table#symbolsTable input[type="number"] {
padding: 15px;
}
-#clusterTable td:last-child {
- border-right: none;
-}
-#clusterTable tr:last-child td {
- border-bottom: none;
-}
-#clusterTable thead th:last-child {
- border-right: none;
-}
-#clusterTable tr:last-child td:first-child {
- border-radius: 0 0 0 calc(.25rem - 1px);
-}
-#clusterTable tr:last-child td:last-child {
- border-radius: 0 0 calc(.25rem - 1px) 0;
-}
-
#modalDialog > .modal-dialog {
/* Center the modal vertically */
top: 50%;
diff --git a/interface/index.html b/interface/index.html
index 480fa79ad..71314e282 100644
--- a/interface/index.html
+++ b/interface/index.html
@@ -107,7 +107,7 @@
<span class="h6 font-weight-bolder my-2">Servers</span>
</div>
<div class="card-body p-0 table-responsive">
- <table class="table table-sm table-hover table-bordered text-nowrap mb-0" id="clusterTable">
+ <table class="table status-table table-sm table-hover table-bordered text-nowrap mb-0" id="clusterTable">
<thead class="text-secondary">
<tr>
<th></th>
@@ -124,6 +124,27 @@
</table>
</div>
</div>
+ <div class="card bg-light shadow my-3">
+ <div class="card-header text-secondary py-2">
+ <span class="icon mr-3"><i class="fas fa-dice"></i></span>
+ <span class="h6 font-weight-bolder my-2">Bayesian statistics</span>
+ </div>
+ <div class="card-body p-0 table-responsive">
+ <table class="table status-table table-sm table-bordered text-nowrap mb-0" id="bayesTable">
+ <thead class="text-secondary">
+ <tr>
+ <th>Server name</th>
+ <th>Symbol</th>
+ <th>Type</th>
+ <th>Learns</th>
+ <th>Users</th>
+ </tr>
+ </thead>
+ <tbody>
+ </tbody>
+ </table>
+ </div>
+ </div>
</div>
<div class="col-lg-6">
<div class="card bg-light shadow my-3">
diff --git a/interface/js/app/stats.js b/interface/js/app/stats.js
index 57e16261e..532aec922 100644
--- a/interface/js/app/stats.js
+++ b/interface/js/app/stats.js
@@ -142,6 +142,37 @@ define(["jquery", "d3pie"],
$('#selSrv [value="' + key + '"]').prop("disabled", true);
}
});
+
+ function addStatfiles(server, statfiles) {
+ $.each(statfiles, function (i, statfile) {
+ var cls = "";
+ switch (statfile.symbol) {
+ case "BAYES_SPAM":
+ cls = "symbol-positive";
+ break;
+ case "BAYES_HAM":
+ cls = "symbol-negative";
+ break;
+ default:
+ }
+ $("#bayesTable tbody").append("<tr>" +
+ (i === 0 ? '<td rowspan="' + statfiles.length + '">' + server + "</td>" : "") +
+ '<td class="' + cls + '">' + statfile.symbol + "</td>" +
+ '<td class="' + cls + '">' + statfile.type + "</td>" +
+ '<td class="' + cls + '">' + statfile.revision + "</td>" +
+ '<td class="' + cls + '">' + statfile.users + "</td></tr>");
+ });
+ }
+ $("#bayesTable tbody").empty();
+ if (checked_server === "All SERVERS") {
+ $.each(servers, function (server, val) {
+ if (server !== "All SERVERS") {
+ addStatfiles(server, val.data.statfiles);
+ }
+ });
+ } else {
+ addStatfiles(checked_server, data.statfiles);
+ }
}
function getChart(rspamd, pie, checked_server) {