]> source.dussan.org Git - rspamd.git/commitdiff
[WebUI] Add support for errors ring in WebUI
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 14 Nov 2016 16:53:33 +0000 (16:53 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 14 Nov 2016 16:53:33 +0000 (16:53 +0000)
interface/index.html
interface/js/rspamd.js

index 502e5791c6caff1d6b3a64d0390d3f4515e34420..1db58c87ca99d8eafb612c85dc94dcf0c6983a12 100644 (file)
                                                </table>
                                        </div>
                                </div>
+                               <div class="widget-box">
+                                       <div class="widget-title">
+                                               <div class="buttons pull-right">
+                                                       <button class="btn btn-info btn-sm" id="updateErrors">
+                                                               <i class="glyphicon glyphicon-refresh"></i> Update
+                                                       </button>
+                                               </div>
+                                               <span class="icon"><i class="glyphicon glyphicon-eye-open"></i></span>
+                                               <h5>Errors</h5>
+                                       </div>
+                                       <div class="widget-content nopadding">
+                                               <table class="table table-log table-hover" id="errorsLog">
+                                                       <thead>
+                                                               <th title="Time">Time</th>
+                                                               <th title="Worker">Worker</th>
+                                                               <th title="PID">PID</th>
+                                                               <th title="Module">Module</th>
+                                                               <th title="ID">ID</th>
+                                                               <th title="Message">Message</th>
+                                                       </thead>
+                                               </table>
+                                       </div>
+                               </div>
 
                        </div>
 
index 271a0b79745599dd4b7a12fbe5b1254c56a06c64..57d70a39f8edc6a35b31b96290cb68b0a75edff6 100644 (file)
@@ -28,6 +28,7 @@
         //$.cookie.json = true;
         var pie;
         var history;
+        var errors;
         var graph;
         var symbols;
         var read_only = false;
@@ -62,6 +63,9 @@
             if (history) {
                 history.destroy();
             }
+            if (errors) {
+                errors.destroy();
+            }
             if (symbols) {
                 symbols.destroy();
                 symbols = null;
             $('#listMaps').empty();
             $('#modalBody').empty();
             $('#historyLog tbody').remove();
+            $('#errorsLog tbody').remove();
             $('#symbolsTable tbody').remove();
             password = '';
         }
             });
         }
 
+        function getErrors() {
+
+            if (errors) {
+                errors.destroy();
+                $('#errorsLog').children('tbody').remove();
+            }
+
+            var items = [];
+            $.ajax({
+                dataType: 'json',
+                url: 'errors',
+                jsonp: false,
+                beforeSend: function (xhr) {
+                    xhr.setRequestHeader('Password', getPassword());
+                },
+                error: function () {
+                    alertMessage('alert-error', 'Cannot receive errors');
+                },
+                success: function (data) {
+                    $.each(data, function (i, item) {
+
+                        items.push(
+                            '<tr><td data-order="' + item.ts + '">' + new Date(item.ts * 1000) + '</td>' +
+                            '<td data-order="' + item.type + '">' + item.type + '</td>' +
+                            '<td data-order="' + item.pid + '">' + item.pid + '</td>' +
+                            '<td data-order="' + item.module + '">' + item.module + '</td>' +
+                            '<td data-order="' + item.id + '">' + item.id + '</td>' +
+                            '<td data-order="' + item.message + '"><div class="cell-overflow" tabindex="1" title="' + item.message + '">' + item.message + '</div></td></tr>'
+                        );
+                    });
+                    $('<tbody/>', {
+                        html: items.join('')
+                    }).insertAfter('#errorsLog thead');
+                    errors = $('#errorsLog').DataTable({
+                        "paging": true,
+                        "orderMulti": false,
+                        "order": [
+                            [0, "desc"],
+                        ],
+                        "info": false,
+                        "columns": [
+                            {"width": "15%", "searchable": true, "orderable": true, "type": "num"},
+                            {"width": "5%", "searchable": true, "orderable": true},
+                            {"width": "5%", "searchable": true, "orderable": true},
+                            {"width": "3%", "searchable": true, "orderable": true},
+                            {"width": "3%", "searchable": true, "orderable": true},
+                            {"width": "65%", "searchable": true, "orderable": true},
+                        ],
+                    });
+                    errors.columns.adjust().draw();
+                }
+            });
+        }
+
         function decimalStep(number) {
             var digits = ((+number).toFixed(20)).replace(/^-?\d*\.?|0+$/g, '').length;
             if (digits == 0 || digits > 4) {
                 },
                 success: function (data) {
                     getHistory();
+                    getErrors();
                 },
                 error: function (data) {
                     alertMessage('alert-modal alert-error', data.statusText);
         $('#updateHistory').on('click', function () {
             getHistory();
         });
+        $('#updateErrors').on('click', function () {
+            getErrors();
+        });
 
         $('#updateSymbols').on('click', function () {
             getSymbols();
         });
         $('#history_nav').bind('click', function () {
             getHistory();
+            getErrors();
         });
         $('#symbols_nav').bind('click', function () {
             getSymbols();