/* 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('
' +
'';
return btnGroup;
};
/* Formatting function for row details - modify as you need */
var viewAppenders = function (data) {
return '
' +
'Appenders: | ' +
'' + JSON.stringify(data.appenders, null, 2) + ' | ' +
'
' +
'
';
};
var addEventHandlers = function () {
//console.log('addEventHAndlers()');
$(document).on('click', '#loggersTable .dropdown-menu a', function (e) {
//console.log('status change', this);
e.preventDefault();
var selText = $(this).text();
changeLogLevel(selText, this);
});
$(document).on('click', '#loggersTable tbody td.details-control span', function () {
var table = $('#loggersTable').DataTable();
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(viewAppenders(row.data()), 'info').show();
tr.addClass('shown');
}
});
};
var changeLogLevel = function (newLevel, el) {
/**
* POST - /cas/status/logging/updateLoggerLevel
* Allows you to change the log level for given LOGGER. Parameters are:
* loggerName, loggerLevel, additive (true/false)
*/
var table = $('#loggersTable').DataTable();
var data = table.row($(el).closest('tr')[0]).data();
if (newLevel != data.level) {
var cell = table.cell($(el).closest('td')[0]);
$.post(urls.updateLevel, {
loggerName: data.name,
loggerLevel: newLevel,
additive: data.additive
}, function () {
cell.data(newLevel).draw();
alertHandler.show('Successfully changed.', 'success');
}).fail(function () {
alertHandler.show('Error saving change. Please try again', 'danger');
});
}
};
// initialization *******
(function init() {
})();
return {
init: function () {
getData();
addEventHandlers();
getAuditData();
},
getJson: function () {
return json;
},
showLoggersTable: function () {
loggerTable();
}
};
})();
loggingDashboard.init();