/* global logConfigFileLocation, SockJS, Stomp */ var stompClient = null; function setConnected(connected) { var el = document.getElementById('websocketStatus'); el.style.visibility = connected ? 'visible' : 'hidden'; el.class = connected ? 'alert alert-info' : 'alert alert-danger'; if (!connected) { el.innerHTML = 'Disconnected!'; } else { el.innerHTML = 'Connected to CAS. Streaming and tailing logs based on [' + logConfigFileLocation + ']...'; } } function connect() { $('#logoutputarea').empty(); var socket = new SockJS(urls.reportsWebsocket); stompClient = Stomp.over(socket); stompClient.connect({}, function () { setConnected(true); stompClient.subscribe('/topic/logs', function (msg) { if (msg != null && msg.body != '') { showLogs(msg.body); } }); }); } function disconnect() { $('#logoutputarea').empty(); $('#logoutputarea').attr('readonly', 'readonly'); if (stompClient != null) { stompClient.disconnect(); } setConnected(false); } function showLogs(message) { if (message != '') { $('#logoutputarea').val($('#logoutputarea').val() + '\n' + message); $('#logoutputarea').scrollTop(document.getElementById('logoutputarea').scrollHeight); } } disconnect(); connect(); setInterval(function () { }, 100); /************* * ***************/ $('#myTabs a').click(function (e) { e.preventDefault(); $(this).tab('show'); }); var alertHandler = (function () { var alertContainer = $('#alert-container'); var create = function (message, state) { //console.log('create the alert'); alertContainer.html('
' + message + '
'); alertContainer.delay(2000).fadeOut('slow'); }; var destroy = function () { alertContainer.empty(); }; return { dismiss: function () { destroy(); }, show: function (msg, state) { create(msg, state); } }; })(); var loggingDashboard = (function () { var json = null; var logLevels = ['trace', 'debug', 'info', 'warn', 'error']; var getData = function () { $.getJSON(urls.getConfiguration, function (data) { json = data; loggerTable(); }); }; var getAuditData = function () { $.getJSON(urls.getAuditLog, function (data) { if ($(data).length > 0) { loggerTableAudit(data); } else { $('#auditLogTable').DataTable(); } }); }; var loggerTableAudit = function (jsonData) { var t = $('#auditLogTable').DataTable({ 'autoWidth': false, 'order': [[3, 'desc']], retrieve: true, columnDefs: [ {'width': '5%', 'targets': 0}, {'width': '100%', 'targets': 1}, { 'targets': 2, render: function (data) { var dd = data.toLowerCase(); if (dd.indexOf('created') != -1) { return '' + data; } if (dd.indexOf('validated') != -1) { return '' + data; } if (dd.indexOf('destroyed') != -1 || dd.indexOf('deleted') != -1) { return '' + data; } if (dd.indexOf('success') != -1) { return '' + data; } if (dd.indexOf('failed') != -1) { return '' + data; } return data; } } ] }); for (var i = 0; i < jsonData.length; i++) { var rec = jsonData[i]; t.row.add([ rec.principal, rec.resourceOperatedUpon, rec.actionPerformed, new Date(rec.whenActionWasPerformed), rec.clientIpAddress, rec.serverIpAddress ]).draw(false); } }; var loggerTable = function () { $('#loggersTable').DataTable({ 'autoWidth': false, 'order': [[1, 'desc']], data: json.loggers, 'drawCallback': function () { var api = this.api(); if (api.page.info().pages > 1) { $('#' + $.fn.dataTable.tables()[0].id + '_paginate')[0].style.display = 'block'; } else { $('#' + $.fn.dataTable.tables()[0].id + '_paginate')[0].style.display = 'none'; } }, 'initComplete': function (settings) { if (!settings.aoData || settings.aoData.length == 0) { $('#loadingMessage').addClass('d-none'); $('#errorLoadingData').removeClass('d-none'); } else { $('#loadingMessage').addClass('d-none'); $('#errorLoadingData').addClass('d-none'); $('#loggingDashboard .tabsContainer').removeClass('d-none'); } }, 'processing': true, columnDefs: [ { 'targets': 0, 'className': 'details-control', 'orderable': false, 'data': 'appenders', 'defaultContent': '', render: function (data) { if (data.length > 0) { return ''; } else { return ''; } } }, { targets: 1, data: 'name', className: 'col-xs-5' }, { targets: 2, data: 'additive', className: 'additive col-xs-2', render: function (data) { if (data) { return ''; } else { return ''; } } }, { targets: 3, data: 'state', className: 'col-xs-2' }, { targets: 4, data: 'level', className: 'col-xs-3', render: function (data, type, full, meta) { return toggleSwitch(data, type, full, meta); } } ] }); }; var toggleSwitch = function (data, type, full) { // Todo: Add additional colors for the other options //console.log('toggleSwitch data',data); //console.log('type',type); //console.log('full',full); //console.log('meta',meta); //console.log(logLevels); var btnColor; switch (data.toLowerCase()) { case 'error': btnColor = 'danger'; break; case 'info': btnColor = 'info'; break; case 'warn': btnColor = 'warning'; break; default: btnColor = 'default'; } var btnGroup = '