diff --git a/web/skins/classic/css/base/views/log.css b/web/skins/classic/css/base/views/log.css
index de6e5eecd..918c1097c 100644
--- a/web/skins/classic/css/base/views/log.css
+++ b/web/skins/classic/css/base/views/log.css
@@ -1,19 +1,3 @@
-#logSummary {
- font-size:10px;
-}
-
-#logSummary tr {
- margin: 0;
- padding: 0;
-}
-
-#logSummary td {
- border: 1px solid #7f7fb2;
- padding: 0 6px;
- font-size: 10px;
- line-height: 15px;
-}
-
tr.log-fat td {
background-color:#ffcccc;
font-weight: bold;
@@ -32,20 +16,3 @@ tr.log-dbg td {
font-style: italic;
}
-#exportLog label {
- vertical-align: middle;
-}
-
-#exportLog input[type=radio] {
- margin-right: 4px;
- vertical-align: middle;
-}
-
-#exportError {
- display: none;
- color: #dc143c;
- margin-bottom: 8px;
-}
-
-#exportErrorText {
-}
diff --git a/web/skins/classic/css/base/views/newlog.css b/web/skins/classic/css/base/views/newlog.css
deleted file mode 100644
index 918c1097c..000000000
--- a/web/skins/classic/css/base/views/newlog.css
+++ /dev/null
@@ -1,18 +0,0 @@
-tr.log-fat td {
- background-color:#ffcccc;
- font-weight: bold;
-}
-
-tr.log-err td {
- background-color:#ffcccc;
-}
-
-tr.log-war td {
- background-color: #ffe4b5;
-}
-
-tr.log-dbg td {
- color: #666666;
- font-style: italic;
-}
-
diff --git a/web/skins/classic/views/js/log.js b/web/skins/classic/views/js/log.js
index 53f197eab..ddaabcfc8 100644
--- a/web/skins/classic/views/js/log.js
+++ b/web/skins/classic/views/js/log.js
@@ -1,356 +1,105 @@
-var logParms = 'view=request&request=log&task=query';
-var logReq = new Request.JSON( {url: thisUrl, method: 'post', timeout: AJAX_TIMEOUT, link: 'cancel', onSuccess: logResponse} );
-var logTimer = undefined;
-var logTable = undefined;
+var table = $j('#logTable');
-var logCodes = {
- '0': 'INF',
- '-1': 'WAR',
- '-2': 'ERR',
- '-3': 'FAT',
- '-4': 'PNC',
+/*
+This is the format of the json object sent by bootstrap-table
+
+var params =
+{
+"type":"get",
+"data":
+ {
+ "search":"some search text",
+ "sort":"DateTime",
+ "order":"asc",
+ "offset":0,
+ "limit":25
+ "filter":
+ {
+ "message":"some advanced search text"
+ "level":"some more advanced search text"
+ }
+ },
+"cache":true,
+"contentType":"application/json",
+"dataType":"json"
};
+*/
-var minSampleTime = 2000;
-var maxSampleTime = 16000;
-var minLogTime = 0;
-var maxLogTime = 0;
-var logCount = 0;
-var maxLogFetch = 100;
-var filter = {};
-var logTimeout = maxSampleTime;
-var firstLoad = true;
-var initialDisplayLimit = 200;
-var sortReversed = false;
-var filterFields = ['Component', 'ServerId', 'Pid', 'Level', 'File', 'Line'];
-var options = {};
-
-function escapeHtml(unsafe) {
- return unsafe
- .replace(/&/g, "&")
- .replace(//g, ">")
- .replace(/"/g, """)
- .replace(/'/g, "'");
+// Called by bootstrap-table to retrieve zm log data
+function ajaxRequest(params) {
+ $j.getJSON(thisUrl + '?view=request&request=newlog&task=query', params.data)
+ .done(function(data) {
+ //console.log('Ajax parameters: ' + JSON.stringify(params));
+ // rearrange the result into what bootstrap-table expects
+ params.success({total: data.total, totalNotFiltered: data.totalNotFiltered, rows: data.rows});
+ updateHeaderStats(data);
+ })
+ .fail(logAjaxFail);
}
-function buildFetchParms( parms ) {
- var fetchParms = logParms+'&limit='+maxLogFetch;
- if ( parms ) {
- fetchParms += '&'+parms;
- }
- Object.each(filter,
- function( value, key ) {
- fetchParms += '&filter['+key+']='+value;
- }
- );
- return fetchParms;
-}
+function updateHeaderStats(data) {
+ var pageNum = table.bootstrapTable('getOptions').pageNumber;
+ var pageSize = table.bootstrapTable('getOptions').pageSize;
+ var startRow = ( (pageNum - 1 ) * pageSize ) + 1;
+ var stopRow = pageNum * pageSize;
+ var newClass = (data.logstate == 'ok') ? 'text-success' : (data.logstate == 'alert' ? 'text-warning' : ((data.logstate == 'alarm' ? 'text-danger' : '')));
-function fetchNextLogs() {
- logReq.send( buildFetchParms( 'minTime='+maxLogTime ) );
-}
+ $j('#logState').text(data.logstate);
+ $j('#logState').removeClass('text-success');
+ $j('#logState').removeClass('text-warning');
+ $j('#logState').removeClass('text-danger');
+ $j('#logState').addClass(newClass);
-function fetchPrevLogs() {
- logReq.send( buildFetchParms( 'maxTime='+minLogTime ) );
-}
-
-function logResponse( respObj ) {
- if ( logTimer ) {
- logTimer = clearTimeout( logTimer );
- }
-
- if ( respObj.result == 'Ok' ) {
- if ( respObj.logs.length > 0 ) {
- logTimeout = minSampleTime;
- logCount += respObj.logs.length;
- try {
- respObj.logs.each(
- function( log ) {
- if ( ( !maxLogTime ) || ( log.TimeKey > maxLogTime ) ) {
- maxLogTime = log.TimeKey;
- }
- if ( ( !minLogTime ) || ( log.TimeKey < minLogTime ) ) {
- minLogTime = log.TimeKey;
- }
-
- var row = logTable.push([
- {content: log.DateTime, properties: {style: 'white-space: nowrap'}},
- log.Component, log.Server, log.Pid, log.Code,
- escapeHtml(log.Message),
- escapeHtml(log.File),
- log.Line
- ]);
-
- delete log.Message;
- row.tr.store( 'log', log );
- if ( log.Level <= -3 ) {
- row.tr.addClass( 'log-fat' );
- } else if ( log.Level <= -2 ) {
- row.tr.addClass( 'log-err' );
- } else if ( log.Level <= -1 ) {
- row.tr.addClass( 'log-war' );
- } else if ( log.Level > 0 ) {
- row.tr.addClass( 'log-dbg' );
- }
- if ( !firstLoad ) {
- var color = document.defaultView.getComputedStyle(row.tr, null).getPropertyValue('color');
- var colorParts = color.match(/^rgb.*\((\d+),\s*(\d+),\s*(\d+)/);
- rowOrigColor = '#' + parseInt(colorParts[1]).toString(16) + parseInt(colorParts[2]).toString(16) + parseInt(colorParts[3]).toString(16);
- //new Fx.Tween( row.tr, { duration: 10000, transition: Fx.Transitions.Sine } ).start( 'color', '#6495ED', rowOrigColor );
- }
- }
- );
- if ( typeof(respObj.options) == 'object' ) {
- $j.each( respObj.options,
- function( field ) {
- if ( options[field] ) {
- options[field] = Object.assign(options[field], respObj.options[field]);
- } else {
- options[field] = respObj.options[field];
- }
- }
- );
- }
- updateFilterSelectors();
- $('lastUpdate').set('text', respObj.updated);
- $('logState').set('text', respObj.state);
- $('logState').removeClass('ok');
- $('logState').removeClass('alert');
- $('logState').removeClass('alarm');
- $('logState').addClass(respObj.state);
- $('totalLogs').set('text', respObj.total);
- $('availLogs').set('text', respObj.available);
- $('displayLogs').set('text', logCount);
- if ( firstLoad ) {
- if ( logCount < displayLimit ) {
- fetchPrevLogs();
- }
- }
- logTable.reSort();
- } catch ( e ) {
- console.error( e );
- }
- logTimeout /= 2;
- if ( logTimeout < minSampleTime ) {
- logTimeout = minSampleTime;
- }
- } else {
- firstLoad = false;
- logTimeout *= 2;
- if ( logTimeout > maxSampleTime ) {
- logTimeout = maxSampleTime;
- }
- } // end logs.length > 0
- } // end if result == Ok
- logTimer = fetchNextLogs.delay( logTimeout );
-}
-
-function refreshLog() {
- options = {};
- $j('#logTable tbody').empty();
- firstLoad = true;
- maxLogTime = 0;
- minLogTime = 0;
- logCount = 0;
- logTimeout = maxSampleTime;
- displayLimit = initialDisplayLimit;
- fetchNextLogs();
-}
-
-function expandLog() {
- displayLimit += maxLogFetch;
- fetchPrevLogs();
-}
-
-function clearResponse() {
- refreshLog();
-}
-function clearError() {
-}
-function clearLog() {
- logReq.cancel();
-
- var clearParms = 'view=request&request=log&task=delete';
- var clearReq = new Request.JSON({url: thisUrl, method: 'post', timeout: AJAX_TIMEOUT, link: 'cancel', onSuccess: clearResponse});
- var tbody = $(logTable).getElement('tbody');
- var rows = tbody.getElements('tr');
- if ( rows && rows.length ) {
- var minTime = rows[0].getElement('td').get('text');
- clearParms += "&minTime="+encodeURIComponent(minTime);
- var maxTime = rows[rows.length-1].getElement('td').get('text');
- clearParms += "&maxTime="+encodeURIComponent(maxTime);
- }
- var form = $('logForm');
- clearReq.send(clearParms+"&"+form.toQueryString());
-}
-
-function filterLog() {
- filter = {};
- filterFields.each(
- function( field ) {
- var selector = $('filter['+field+']');
- if ( !selector ) {
- if ( window.console && window.console.log ) {
- window.console.log('No selector found for ' + field);
- }
- return;
- }
- var value = selector.get('value');
- if ( value ) {
- filter[field] = value;
- }
- }
- );
- refreshLog();
-}
-
-function resetLog() {
- filter = {};
- refreshLog();
-}
-
-var exportFormValidator = null;
-
-function exportLog() {
- getModal('log_export');
-
- if ( !exportFormValidator ) {
- exportFormValidator = new Form.Validator.Inline($('exportForm'), {
- useTitles: true,
- warningPrefix: '',
- errorPrefix: ''
- });
- } else {
- exportFormValidator.reset();
- }
-}
-
-function exportResponse( response ) {
- $('log_exportModal').unspin();
- if ( response.result == 'Ok' ) {
- window.location.replace( thisUrl+'?view=request&request=log&task=download&key='+response.key+'&format='+response.format );
- }
-}
-
-function exportFail( request ) {
- $('log_exportModal').unspin();
- $('exportErrorText').set('text', request.status+' / '+request.statusText);
- $('exportError').show();
- Error('Export request failed: '+request.status+' / '+request.statusText);
-}
-
-function exportRequest() {
- var form = $('exportForm');
- console.log(form);
- $('exportErrorText').set('text', '');
- $('exportError').hide();
- if ( form.validate() ) {
- var exportParms = "view=request&request=log&task=export";
- var exportReq = new Request.JSON({url: thisUrl, method: 'post', link: 'cancel', onSuccess: exportResponse, onFailure: exportFail});
- var selector = form.querySelectorAll('input[name=selector]:checked');
- if ( !selector.length ) {
- alert("Please select how to filter logs");
- return;
- }
- var selection = selector[0].get('value');
- if ( selection == 'filter' || selection == 'current' ) {
- $$('#filters select').each(
- function( select ) {
- exportParms += "&"+select.get('id')+"="+select.get('value');
- }
- );
- }
- if ( selection == 'current' ) {
- var tbody = $(logTable).getElement( 'tbody' );
- var rows = tbody.getElements( 'tr' );
- if ( rows ) {
- var minTime = rows[0].getElement('td').get('text');
- exportParms += "&minTime="+encodeURIComponent(minTime);
- var maxTime = rows[rows.length-1].getElement('td').get('text');
- exportParms += "&maxTime="+encodeURIComponent(maxTime);
- }
- }
- exportReq.send(exportParms+"&"+form.toQueryString());
- $('log_exportModal').spin();
- }
-}
-
-function updateFilterSelectors() {
- Object.each(options,
- function( values, key ) {
- var selector = $('filter['+key+']');
- if ( !selector ) {
- if ( window.console && window.console.log ) {
- window.console.log('No selector found for ' + key);
- }
- return;
- }
- selector.options.length = 1;
- if ( key == 'Level' ) {
- Object.each(values,
- function( value, label ) {
- selector.options[selector.options.length] = new Option(value, label);
- }
- );
- } else if ( key == 'ServerId' ) {
- Object.each(values,
- function( value, label ) {
- selector.options[selector.options.length] = new Option(value, label);
- }
- );
- } else {
- Object.each(values,
- function( value, label ) {
- selector.options[selector.options.length] = new Option(value, label);
- }
- );
- }
- if ( filter[key] ) {
- selector.set('value', filter[key]);
- }
- $j(selector).chosen('destroy');
- $j(selector).chosen();
- }
- );
+ $j('#totalLogs').text(data.total);
+ $j('#availLogs').text(data.totalNotFiltered);
+ $j('#lastUpdate').text(data.updated);
+ $j('#displayLogs').text(startRow + ' to ' + stopRow);
}
function initPage() {
- displayLimit = initialDisplayLimit;
- for ( var i = 1; i <= 9; i++ ) {
- logCodes[''+i] = 'DB'+i;
- }
- logTable = new HtmlTable( $('logTable'),
- {
- zebra: true,
- sortable: true,
- sortReverse: true
+ var backBtn = $j('#backBtn');
+
+ // Init the bootstrap-table with custom icons
+ table.bootstrapTable({icons: icons});
+
+ // Assign inf, err, fat, dbg color classes to the rows in the table
+ table.on('post-body.bs.table', function(data) {
+ var lvl_ndx = $j('#logTable tr th').filter(function() {
+ return $j(this).text().trim() == 'Level';
+ }).index();
+
+ $j('#logTable tr').each(function(ndx, row) {
+ var row = $j(row);
+ var level = row.find('td').eq(lvl_ndx).text().trim();
+
+ if (( level == 'FAT' ) || ( level == 'PNC' )) {
+ row.addClass('log-fat');
+ } else if ( level == 'ERR' ) {
+ row.addClass('log-err');
+ } else if ( level == 'WAR' ) {
+ row.addClass('log-war');
+ } else if ( level == 'DBG' ) {
+ row.addClass('log-dbg');
}
- );
- logTable.addEvent( 'sort', function( tbody, index ) {
- var header = tbody.getParent('table').getElement('thead');
- var columns = header.getElement('tr').getElements('th');
- var column = columns[index];
- sortReversed = column.hasClass('table-th-sort-rev');
- if ( logCount > displayLimit ) {
- var rows = tbody.getElements('tr');
- var startIndex;
- if ( sortReversed ) {
- startIndex = displayLimit;
- } else {
- startIndex = 0;
- }
- for ( var i = startIndex; logCount > displayLimit; i++ ) {
- rows[i].destroy();
- logCount--;
- }
- $('displayLogs').set('text', logCount);
- } // end if loCount > displayLimit
- }
- );
- new Asset.css('css/spinner.css');
- fetchNextLogs();
+ });
+ });
+
+ // Don't enable the back button if there is no previous zm page to go back to
+ backBtn.prop('disabled', !document.referrer.length);
+
+ // Manage the BACK button
+ document.getElementById("backBtn").addEventListener("click", function onBackClick(evt) {
+ evt.preventDefault();
+ window.history.back();
+ });
+
+ // Manage the REFRESH Button
+ document.getElementById("refreshBtn").addEventListener("click", function onRefreshClick(evt) {
+ evt.preventDefault();
+ window.location.reload(true);
+ });
}
-// Kick everything off
-window.addEventListener('DOMContentLoaded', initPage);
+$j(document).ready(function() {
+ initPage();
+});
diff --git a/web/skins/classic/views/js/newlog.js b/web/skins/classic/views/js/newlog.js
deleted file mode 100644
index ddaabcfc8..000000000
--- a/web/skins/classic/views/js/newlog.js
+++ /dev/null
@@ -1,105 +0,0 @@
-var table = $j('#logTable');
-
-/*
-This is the format of the json object sent by bootstrap-table
-
-var params =
-{
-"type":"get",
-"data":
- {
- "search":"some search text",
- "sort":"DateTime",
- "order":"asc",
- "offset":0,
- "limit":25
- "filter":
- {
- "message":"some advanced search text"
- "level":"some more advanced search text"
- }
- },
-"cache":true,
-"contentType":"application/json",
-"dataType":"json"
-};
-*/
-
-// Called by bootstrap-table to retrieve zm log data
-function ajaxRequest(params) {
- $j.getJSON(thisUrl + '?view=request&request=newlog&task=query', params.data)
- .done(function(data) {
- //console.log('Ajax parameters: ' + JSON.stringify(params));
- // rearrange the result into what bootstrap-table expects
- params.success({total: data.total, totalNotFiltered: data.totalNotFiltered, rows: data.rows});
- updateHeaderStats(data);
- })
- .fail(logAjaxFail);
-}
-
-function updateHeaderStats(data) {
- var pageNum = table.bootstrapTable('getOptions').pageNumber;
- var pageSize = table.bootstrapTable('getOptions').pageSize;
- var startRow = ( (pageNum - 1 ) * pageSize ) + 1;
- var stopRow = pageNum * pageSize;
- var newClass = (data.logstate == 'ok') ? 'text-success' : (data.logstate == 'alert' ? 'text-warning' : ((data.logstate == 'alarm' ? 'text-danger' : '')));
-
- $j('#logState').text(data.logstate);
- $j('#logState').removeClass('text-success');
- $j('#logState').removeClass('text-warning');
- $j('#logState').removeClass('text-danger');
- $j('#logState').addClass(newClass);
-
- $j('#totalLogs').text(data.total);
- $j('#availLogs').text(data.totalNotFiltered);
- $j('#lastUpdate').text(data.updated);
- $j('#displayLogs').text(startRow + ' to ' + stopRow);
-}
-
-function initPage() {
- var backBtn = $j('#backBtn');
-
- // Init the bootstrap-table with custom icons
- table.bootstrapTable({icons: icons});
-
- // Assign inf, err, fat, dbg color classes to the rows in the table
- table.on('post-body.bs.table', function(data) {
- var lvl_ndx = $j('#logTable tr th').filter(function() {
- return $j(this).text().trim() == 'Level';
- }).index();
-
- $j('#logTable tr').each(function(ndx, row) {
- var row = $j(row);
- var level = row.find('td').eq(lvl_ndx).text().trim();
-
- if (( level == 'FAT' ) || ( level == 'PNC' )) {
- row.addClass('log-fat');
- } else if ( level == 'ERR' ) {
- row.addClass('log-err');
- } else if ( level == 'WAR' ) {
- row.addClass('log-war');
- } else if ( level == 'DBG' ) {
- row.addClass('log-dbg');
- }
- });
- });
-
- // Don't enable the back button if there is no previous zm page to go back to
- backBtn.prop('disabled', !document.referrer.length);
-
- // Manage the BACK button
- document.getElementById("backBtn").addEventListener("click", function onBackClick(evt) {
- evt.preventDefault();
- window.history.back();
- });
-
- // Manage the REFRESH Button
- document.getElementById("refreshBtn").addEventListener("click", function onRefreshClick(evt) {
- evt.preventDefault();
- window.location.reload(true);
- });
-}
-
-$j(document).ready(function() {
- initPage();
-});
diff --git a/web/skins/classic/views/log.php b/web/skins/classic/views/log.php
index 8d2e9f293..d706365c3 100644
--- a/web/skins/classic/views/log.php
+++ b/web/skins/classic/views/log.php
@@ -23,77 +23,69 @@ if ( !canView('System') ) {
return;
}
-$focusWindow = true;
-
xhtmlHeaders(__FILE__, translate('SystemLog'));
?>
-
-
-
+
+
+
+ : -
+ : -
+ : -
+ : -
+ :
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+
+
+
+
+
+
diff --git a/web/skins/classic/views/newlog.php b/web/skins/classic/views/newlog.php
deleted file mode 100644
index d706365c3..000000000
--- a/web/skins/classic/views/newlog.php
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
-
-
-
- : -
- : -
- : -
- : -
- :
-
-
-
-
-
-
-
-
-
-
- |
- |
- |
- |
- |
- |
- |
- |
-
-
-
-
-
-
-
-
-
-