1){u.hide(t)}})}})});f.fn.qtip.interfaces=[];f.fn.qtip.log={error:function(){return this}};f.fn.qtip.constants={};f.fn.qtip.defaults={content:{prerender:false,text:false,url:false,data:null,title:{text:false,button:false}},position:{target:false,corner:{target:"bottomRight",tooltip:"topLeft"},adjust:{x:0,y:0,mouse:true,screen:false,scroll:true,resize:true},type:"absolute",container:false},show:{when:{target:false,event:"mouseover"},effect:{type:"fade",length:100},delay:140,solo:false,ready:false},hide:{when:{target:false,event:"mouseout"},effect:{type:"fade",length:100},delay:0,fixed:false},api:{beforeRender:function(){},onRender:function(){},beforePositionUpdate:function(){},onPositionUpdate:function(){},beforeShow:function(){},onShow:function(){},beforeHide:function(){},onHide:function(){},beforeContentUpdate:function(){},onContentUpdate:function(){},beforeContentLoad:function(){},onContentLoad:function(){},beforeTitleUpdate:function(){},onTitleUpdate:function(){},beforeDestroy:function(){},onDestroy:function(){},beforeFocus:function(){},onFocus:function(){}}};f.fn.qtip.styles={defaults:{background:"white",color:"#111",overflow:"hidden",textAlign:"left",width:{min:0,max:250},padding:"5px 9px",border:{width:1,radius:0,color:"#d3d3d3"},tip:{corner:false,color:false,size:{width:13,height:13},opacity:1},title:{background:"#e1e1e1",fontWeight:"bold",padding:"7px 12px"},button:{cursor:"pointer"},classes:{target:"",tip:"qtip-tip",title:"qtip-title",button:"qtip-button",content:"qtip-content",active:"qtip-active"}},cream:{border:{width:3,radius:0,color:"#F9E98E"},title:{background:"#F0DE7D",color:"#A27D35"},background:"#FBF7AA",color:"#A27D35",classes:{tooltip:"qtip-cream"}},light:{border:{width:3,radius:0,color:"#E2E2E2"},title:{background:"#f1f1f1",color:"#454545"},background:"white",color:"#454545",classes:{tooltip:"qtip-light"}},dark:{border:{width:3,radius:0,color:"#303030"},title:{background:"#404040",color:"#f3f3f3"},background:"#505050",color:"#f3f3f3",classes:{tooltip:"qtip-dark"}},red:{border:{width:3,radius:0,color:"#CE6F6F"},title:{background:"#f28279",color:"#9C2F2F"},background:"#F79992",color:"#9C2F2F",classes:{tooltip:"qtip-red"}},green:{border:{width:3,radius:0,color:"#A9DB66"},title:{background:"#b9db8c",color:"#58792E"},background:"#CDE6AC",color:"#58792E",classes:{tooltip:"qtip-green"}},blue:{border:{width:3,radius:0,color:"#ADD9ED"},title:{background:"#D0E9F5",color:"#5E99BD"},background:"#E5F6FE",color:"#4D9FBF",classes:{tooltip:"qtip-blue"}}}})(jQuery);
diff --git a/js/jquery/jquery.sortableTable.js b/js/jquery/jquery.sortableTable.js
index 8fa6eb66c3..2dd1ede1e2 100644
--- a/js/jquery/jquery.sortableTable.js
+++ b/js/jquery/jquery.sortableTable.js
@@ -10,21 +10,31 @@
*/
/* Options:
- $('table').sortableTable({
- ignoreRect: { top, left, width, height } - relative coordinates on each element. If the user clicks
- in this area, it is not seen as a drag&drop request. Useful for toolbars etc.
- events: {
- start: callback function when the user starts dragging
- drop: callback function after an element has been dropped
- }
- })
+
+$('table').sortableTable({
+ ignoreRect: { top, left, width, height } - relative coordinates on each element. If the user clicks
+ in this area, it is not seen as a drag&drop request. Useful for toolbars etc.
+ events: {
+ start: callback function when the user starts dragging
+ drop: callback function after an element has been dropped
+ }
+})
*/
/* Commands:
- $('table').sortableTable('init') - equivalent to $('table').sortableTable()
- $('table').sortableTable('refresh') - if the table has been changed, refresh correctly assigns all events again
- $('table').sortableTable('destroy') - removes all events from the table
+
+$('table').sortableTable('init') - equivalent to $('table').sortableTable()
+$('table').sortableTable('refresh') - if the table has been changed, refresh correctly assigns all events again
+$('table').sortableTable('destroy') - removes all events from the table
+
*/
+
+/* Setup:
+
+ Can be applied on any table, there is just one convention.
+ Each cell (| ) has to contain one and only one element (preferably div or span)
+ which is the actually draggable element.
+*/
(function($) {
jQuery.fn.sortableTable = function(method) {
diff --git a/js/messages.php b/js/messages.php
index 3d41b879ba..17d0fad6c6 100644
--- a/js/messages.php
+++ b/js/messages.php
@@ -137,9 +137,6 @@ $js_messages['strChartTitle'] = __('Chart Title');
$js_messages['strDifferential'] = __('Differential');
$js_messages['strDividedBy'] = __('Divided by %s:');
-$js_messages['strSelectedTimeRange'] = __('Selected time range:');
-$js_messages['strGroupInserts'] = __('Group together INSERTs into same table');
-$js_messages['strLogAnalyseInfo'] = __(' Choose from which log you want the statistics to be generated from. Results are grouped by query text.');
$js_messages['strFromSlowLog'] = __('From slow log');
$js_messages['strFromGeneralLog'] = __('From general log');
$js_messages['strAnalysingLogs'] = __('Analysing & loading logs. This may take a while.');
@@ -150,6 +147,15 @@ $js_messages['strLogDataLoaded'] = __('Log data loaded. Queries executed in this
$js_messages['strJumpToTable'] = __('Jump to Log table');
$js_messages['strNoDataFound'] = __('Log analysed, but not data found in this time span.');
+/* l10n: A collection of available filters */
+$js_messages['strFilters'] = __('Filters');
+/* l10n: Filter as in "Start Filtering" */
+$js_messages['strFilter'] = __('Filter');
+$js_messages['strFilterByWordRegexp'] = __('Filter queries by word/regexp:');
+$js_messages['strIgnoreWhereAndGroup'] = __('Group queries, ignoring variable data in WHERE statements');
+$js_messages['strSumRows'] = __('Sum of grouped rows:');
+$js_messages['strTotal'] = __('Total:');
+
/* For inline query editing */
$js_messages['strGo'] = __('Go');
$js_messages['strCancel'] = __('Cancel');
@@ -199,6 +205,7 @@ $js_messages['strSave'] = __('Save');
$js_messages['strHide'] = __('Hide');
$js_messages['strNoRowSelected'] = __('No rows selected');
$js_messages['strChangeTbl'] = __('Change');
+$js_messages['strQueryExecutionTime'] = __('Query execution time');
/* For tbl_select.js */
$js_messages['strHideSearchCriteria'] = __('Hide search criteria');
diff --git a/js/server_status.js b/js/server_status.js
index ed612045e1..d8f3788576 100644
--- a/js/server_status.js
+++ b/js/server_status.js
@@ -21,11 +21,11 @@ $(function() {
return /^[0-9]?[0-9,\.]*\s?(k|M|G|T|%)?$/.test(s);
},
format: function(s) {
- var num = jQuery.tablesorter.formatFloat(
+ var num = jQuery.tablesorter.formatFloat(
s.replace(PMA_messages['strThousandsSeperator'],'')
- .replace(PMA_messages['strDecimalSeperator'],'.')
+ .replace(PMA_messages['strDecimalSeperator'],'.')
);
-
+
var factor = 1;
switch (s.charAt(s.length - 1)) {
case '%': factor = -2; break;
@@ -35,37 +35,37 @@ $(function() {
case 'G': factor = 9; break;
case 'T': factor = 12; break;
}
-
+
return num * Math.pow(10,factor);
},
type: "numeric"
});
-
+
// Popup behaviour
$('a[rel="popupLink"]').click( function() {
var $link = $(this);
-
+
$('.' + $link.attr('href').substr(1))
.show()
.offset({ top: $link.offset().top + $link.height() + 5, left: $link.offset().left })
.addClass('openedPopup');
-
+
return false;
});
-
+
$(document).click( function(event) {
$('.openedPopup').each(function() {
var $cnt = $(this);
var pos = $(this).offset();
-
+
// Hide if the mouseclick is outside the popupcontent
if(event.pageX < pos.left || event.pageY < pos.top || event.pageX > pos.left + $cnt.outerWidth() || event.pageY > pos.top + $cnt.outerHeight())
$cnt.hide().removeClass('openedPopup');
});
});
});
-
+
$(function() {
// Filters for status variables
var textFilter=null;
@@ -74,19 +74,19 @@ $(function() {
var odd_row=false;
var text=''; // Holds filter text
var queryPieChart = null;
-
+
/* Chart configuration */
// Defines what the tabs are currently displaying (realtime or data)
var tabStatus = new Object();
// Holds the current chart instances for each tab
var tabChart = new Object();
-
-
+
+
/*** Table sort tooltip ***/
-
+
var $tableSortHint = $('' + 'Click to sort' + ' ');
$('body').append($tableSortHint);
-
+
$('table.sortable thead th').live('mouseover mouseout',function(e) {
if(e.type == 'mouseover') {
$tableSortHint
@@ -105,7 +105,7 @@ $(function() {
});
}
});
-
+
$(document).mousemove(function(e) {
if($tableSortHint.data('shown') == true)
$tableSortHint.css({
@@ -113,9 +113,9 @@ $(function() {
left: e.clientX + 15
})
});
-
-
- // Tell highcarts not to use UTC dates (global setting)
+
+
+ // Tell highcarts not to use UTC dates (global setting)
Highcharts.setOptions({
global: {
useUTC: false
@@ -125,7 +125,7 @@ $(function() {
$.ajaxSetup({
cache:false
});
-
+
// Add tabs
$('#serverStatusTabs').tabs({
// Tab persistence
@@ -133,19 +133,19 @@ $(function() {
// Fixes line break in the menu bar when the page overflows and scrollbar appears
show: function() { menuResize(); }
});
-
+
// Fixes wrong tab height with floated elements. See also http://bugs.jqueryui.com/ticket/5601
$(".ui-widget-content:not(.ui-tabs):not(.ui-helper-clearfix)").addClass("ui-helper-clearfix");
-
+
// Initialize each tab
- $('div.ui-tabs-panel').each(function() {
- initTab($(this),null);
+ $('div.ui-tabs-panel').each(function() {
+ initTab($(this),null);
tabStatus[$(this).attr('id')] = 'static';
});
-
+
// Display button links
$('div.buttonlinks').show();
-
+
// Handles refresh rate changing
$('.buttonlinks select').change(function() {
var chart=tabChart[$(this).parents('div.ui-tabs-panel').attr('id')];
@@ -154,27 +154,27 @@ $(function() {
clearTimeout(chart_activeTimeouts[chart.options.chart.renderTo]);
if(chart.options.realtime.postRequest)
chart.options.realtime.postRequest.abort();
-
+
chart.options.realtime.refreshRate = 1000*parseInt(this.value);
-
+
chart.xAxis[0].setExtremes(
new Date().getTime() - server_time_diff - chart.options.realtime.numMaxPoints * chart.options.realtime.refreshRate,
new Date().getTime() - server_time_diff,
true
);
-
+
chart_activeTimeouts[chart.options.chart.renderTo] = setTimeout(
- chart.options.realtime.timeoutCallBack,
+ chart.options.realtime.timeoutCallBack,
chart.options.realtime.refreshRate
);
});
-
+
// Ajax refresh of variables (always the first element in each tab)
- $('.buttonlinks a.tabRefresh').click(function() {
+ $('.buttonlinks a.tabRefresh').click(function() {
// ui-tabs-panel class is added by the jquery tabs feature
var tab=$(this).parents('div.ui-tabs-panel');
var that = this;
-
+
// Show ajax load icon
$(this).find('img').show();
@@ -182,21 +182,21 @@ $(function() {
$(that).find('img').hide();
initTab(tab,data);
});
-
+
tabStatus[tab.attr('id')]='data';
-
+
return false;
});
-
-
+
+
/** Realtime charting of variables **/
-
+
// Live traffic charting
$('.buttonlinks a.livetrafficLink').click(function() {
// ui-tabs-panel class is added by the jquery tabs feature
var $tab=$(this).parents('div.ui-tabs-panel');
var tabstat = tabStatus[$tab.attr('id')];
-
+
if(tabstat=='static' || tabstat=='liveconnections') {
var settings = {
series: [
@@ -210,35 +210,35 @@ $(function() {
if(lastVal==null) return;
chartObj.series[0].addPoint(
{ x: curVal.x, y: (curVal.y_sent - lastVal.y_sent) / 1024 },
- false,
+ false,
numLoadedPoints >= chartObj.options.realtime.numMaxPoints
);
chartObj.series[1].addPoint(
{ x: curVal.x, y: (curVal.y_received - lastVal.y_received) / 1024 },
- true,
+ true,
numLoadedPoints >= chartObj.options.realtime.numMaxPoints
- );
+ );
}
}
}
-
+
setupLiveChart($tab,this,settings);
- if(tabstat == 'liveconnections')
+ if(tabstat == 'liveconnections')
$tab.find('.buttonlinks a.liveconnectionsLink').html(PMA_messages['strLiveConnChart']);
tabStatus[$tab.attr('id')]='livetraffic';
} else {
$(this).html(PMA_messages['strLiveTrafficChart']);
setupLiveChart($tab,this,null);
}
-
+
return false;
});
-
+
// Live connection/process charting
$('.buttonlinks a.liveconnectionsLink').click(function() {
var $tab=$(this).parents('div.ui-tabs-panel');
var tabstat = tabStatus[$tab.attr('id')];
-
+
if(tabstat == 'static' || tabstat == 'livetraffic') {
var settings = {
series: [
@@ -252,35 +252,35 @@ $(function() {
if(lastVal==null) return;
chartObj.series[0].addPoint(
{ x: curVal.x, y: curVal.y_conn - lastVal.y_conn },
- false,
+ false,
numLoadedPoints >= chartObj.options.realtime.numMaxPoints
);
chartObj.series[1].addPoint(
{ x: curVal.x, y: curVal.y_proc },
- true,
+ true,
numLoadedPoints >= chartObj.options.realtime.numMaxPoints
- );
+ );
}
}
};
-
+
setupLiveChart($tab,this,settings);
- if(tabstat == 'livetraffic')
+ if(tabstat == 'livetraffic')
$tab.find('.buttonlinks a.livetrafficLink').html(PMA_messages['strLiveTrafficChart']);
tabStatus[$tab.attr('id')]='liveconnections';
} else {
$(this).html(PMA_messages['strLiveConnChart']);
setupLiveChart($tab,this,null);
}
-
+
return false;
});
// Live query statistics
$('.buttonlinks a.livequeriesLink').click(function() {
var $tab = $(this).parents('div.ui-tabs-panel');
- var settings = null;
-
+ var settings = null;
+
if(tabStatus[$tab.attr('id')] == 'static') {
settings = {
series: [ { name: PMA_messages['strChartIssuedQueries'], data: [] } ],
@@ -292,7 +292,7 @@ $(function() {
if(lastVal == null) return;
chartObj.series[0].addPoint(
{ x: curVal.x, y: curVal.y - lastVal.y, name: sortedQueriesPointInfo(curVal,lastVal) },
- true,
+ true,
numLoadedPoints >= chartObj.options.realtime.numMaxPoints
);
}
@@ -304,9 +304,9 @@ $(function() {
setupLiveChart($tab,this,settings);
tabStatus[$tab.attr('id')] = 'livequeries';
- return false;
+ return false;
});
-
+
function setupLiveChart($tab,link,settings) {
if(settings != null) {
// Loading a chart with existing chart => remove old chart first
@@ -320,7 +320,7 @@ $(function() {
if(! settings.chart) settings.chart = {};
settings.chart.renderTo = $tab.attr('id') + "_chart_cnt";
-
+
$tab.find('.tabInnerContent')
.hide()
.after('');
@@ -346,29 +346,29 @@ $(function() {
alertFilter = this.checked;
filterVariables();
});
-
+
$('#filterText').keyup(function(e) {
word = $(this).val().replace('_',' ');
-
+
if(word.length == 0) textFilter = null;
else textFilter = new RegExp("(^|_)" + word,'i');
-
+
text = word;
-
+
filterVariables();
});
-
+
$('#filterCategory').change(function() {
categoryFilter = $(this).val();
filterVariables();
});
-
+
/* Adjust DOM / Add handlers to the tabs */
function initTab(tab,data) {
switch(tab.attr('id')) {
case 'statustabs_traffic':
if(data != null) tab.find('.tabInnerContent').html(data);
- PMA_convertFootnotesToTooltips();
+ PMA_convertFootnotesToTooltips();
break;
case 'statustabs_queries':
if(data != null) {
@@ -381,7 +381,7 @@ $(function() {
$.each(jQuery.parseJSON($('#serverstatusquerieschart span').html()),function(key,value) {
cdata.push([key,parseInt(value)]);
});
-
+
queryPieChart = PMA_createChart({
chart: {
renderTo: 'serverstatusquerieschart'
@@ -406,15 +406,15 @@ $(function() {
}
}
}
- },
+ },
tooltip: {
- formatter: function() {
- return '' + this.point.name + ' ' + Highcharts.numberFormat(this.y, 2) + ' (' + Highcharts.numberFormat(this.percentage, 2) + ' %)';
+ formatter: function() {
+ return '' + this.point.name + ' ' + Highcharts.numberFormat(this.y, 2) + ' (' + Highcharts.numberFormat(this.percentage, 2) + ' %)';
}
}
});
break;
-
+
case 'statustabs_allvars':
if(data != null) {
tab.find('.tabInnerContent').html(data);
@@ -422,10 +422,10 @@ $(function() {
}
break;
}
-
- initTableSorter(tab.attr('id'));
+
+ initTableSorter(tab.attr('id'));
}
-
+
function initTableSorter(tabid) {
switch(tabid) {
case 'statustabs_queries':
@@ -437,12 +437,12 @@ $(function() {
2: { sorter: 'fancyNumber' }
}
});
-
+
$('#serverstatusqueriesdetails tr:first th')
.append(' ');
-
+
break;
-
+
case 'statustabs_allvars':
$('#serverstatusvariables').tablesorter({
sortList: [[0,0]],
@@ -451,21 +451,21 @@ $(function() {
1: { sorter: 'fancyNumber' }
}
});
-
+
$('#serverstatusvariables tr:first th')
.append(' ');
-
+
break;
}
}
-
+
/* Filters the status variables by name/category/alert in the variables tab */
function filterVariables() {
var useful_links = 0;
var section = text;
-
+
if(categoryFilter.length > 0) section = categoryFilter;
-
+
if(section.length > 1) {
$('#linkSuggestions span').each(function() {
if($(this).attr('class').indexOf('status_'+section) != -1) {
@@ -474,21 +474,21 @@ $(function() {
} else {
$(this).css('display','none');
}
-
-
+
+
});
}
-
- if(useful_links > 0)
+
+ if(useful_links > 0)
$('#linkSuggestions').css('display','');
else $('#linkSuggestions').css('display','none');
-
+
odd_row=false;
$('#serverstatusvariables th.name').each(function() {
if((textFilter == null || textFilter.exec($(this).text()))
&& (! alertFilter || $(this).next().find('span.attention').length>0)
&& (categoryFilter.length == 0 || $(this).parent().hasClass('s_'+categoryFilter))) {
- odd_row = ! odd_row;
+ odd_row = ! odd_row;
$(this).parent().css('display','');
if(odd_row) {
$(this).parent().addClass('odd');
@@ -502,7 +502,7 @@ $(function() {
}
});
}
-
+
// Provides a nicely formatted and sorted tooltip of each datapoint of the query statistics
function sortedQueriesPointInfo(queries, lastQueries){
var max, maxIdx, num=0;
@@ -510,7 +510,7 @@ $(function() {
var queryValues = new Array();
var sumOther=0;
var sumTotal=0;
-
+
// Separate keys and values, then sort them
$.each(queries.pointInfo, function(key,value) {
if(value-lastQueries.pointInfo[key] > 0) {
@@ -521,7 +521,7 @@ $(function() {
});
var numQueries = queryKeys.length;
var pointInfo = '' + PMA_messages['strTotal'] + ': ' + sumTotal + ' ';
-
+
while(queryKeys.length > 0) {
max = 0;
for(var i=0; i < queryKeys.length; i++) {
@@ -532,29 +532,29 @@ $(function() {
}
if(numQueries > 8 && num >= 6)
sumOther += queryValues[maxIdx];
- else pointInfo += queryKeys[maxIdx].substr(4).replace('_',' ') + ': ' + queryValues[maxIdx] + ' ';
-
+ else pointInfo += queryKeys[maxIdx].substr(4).replace('_',' ') + ': ' + queryValues[maxIdx] + ' ';
+
queryKeys.splice(maxIdx,1);
queryValues.splice(maxIdx,1);
num++;
}
-
- if(sumOther>0)
+
+ if(sumOther>0)
pointInfo += PMA_messages['strOther'] + ': ' + sumOther;
return pointInfo;
}
-
-
-
+
+
+
/**** Monitor charting implementation ****/
/* Saves the previous ajax response for differential values */
var oldChartData = null;
- // Holds about to created chart
+ // Holds about to created chart
var newChart = null;
var chartSpacing;
-
+
// Runtime parameter of the monitor
var runtime = {
// Holds all visible charts in the grid
@@ -562,7 +562,7 @@ $(function() {
// Current max points per chart (needed for auto calculation)
gridMaxPoints: 20,
// displayed time frame
- xmin: -1,
+ xmin: -1,
xmax: -1,
// Stores the timeout handler so it can be cleared
refreshTimeout: null,
@@ -574,22 +574,22 @@ $(function() {
redrawCharts: false,
// Object that contains a list of nodes that need to be retrieved from the server for chart updates
dataList: []
- }
-
+ };
+
var monitorSettings = null;
-
+
var defaultMonitorSettings = {
columns: 4,
chartSize: { width: 295, height: 250 },
// Max points in each chart. Settings it to 'auto' sets gridMaxPoints to (chartwidth - 40) / 12
- gridMaxPoints: 'auto',
+ gridMaxPoints: 'auto',
/* Refresh rate of all grid charts in ms */
gridRefresh: 5000
- }
-
+ };
+
// Allows drag and drop rearrange and print/edit icons on charts
var editMode = false;
-
+
var presetCharts = {
'cpu-WINNT': {
title: PMA_messages['strSystemCPUUsage'],
@@ -598,24 +598,27 @@ $(function() {
'memory-WINNT': {
title: PMA_messages['strSystemMemory'],
nodes: [
- { dataType: 'memory', name: 'MemTotal', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
- { dataType: 'memory', name: 'MemUsed', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
+ { dataType: 'memory', name: 'MemTotal', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
+ { dataType: 'memory', name: 'MemUsed', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
]
},
'swap-WINNT': {
title: PMA_messages['strSystemSwap'],
nodes: [
- { dataType: 'memory', name: 'SwapTotal', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
- { dataType: 'memory', name: 'SwapUsed', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
+ { dataType: 'memory', name: 'SwapTotal', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
+ { dataType: 'memory', name: 'SwapUsed', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
]
},
'cpu-Linux': {
title: PMA_messages['strSystemCPUUsage'],
nodes: [
- { dataType: 'cpu',
- name: PMA_messages['strAverageLoad'],
+ { dataType: 'cpu',
+ name: PMA_messages['strAverageLoad'],
unit: '%',
transformFn: function(cur, prev) {
+ console.log('cpu-linux chart, transformFn()');
+ console.log(cur);
+ console.log(prev);
if(prev == null) return undefined;
var diff_total = cur.busy + cur.idle - (prev.busy + prev.idle);
var diff_idle = cur.idle - prev.idle;
@@ -627,8 +630,8 @@ $(function() {
'memory-Linux': {
title: PMA_messages['strSystemMemory'],
nodes: [
- { dataType: 'memory', name: 'MemUsed', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
- { dataType: 'memory', name: 'Cached', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
+ { dataType: 'memory', name: 'MemUsed', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
+ { dataType: 'memory', name: 'Cached', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
{ dataType: 'memory', name: 'Buffers', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
{ dataType: 'memory', name: 'MemFree', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
],
@@ -647,9 +650,9 @@ $(function() {
'swap-Linux': {
title: PMA_messages['strSystemSwap'],
nodes: [
- { dataType: 'memory', name: 'SwapUsed', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
- { dataType: 'memory', name: 'SwapCached', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
- { dataType: 'memory', name: 'SwapFree', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
+ { dataType: 'memory', name: 'SwapUsed', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
+ { dataType: 'memory', name: 'SwapCached', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
+ { dataType: 'memory', name: 'SwapFree', valueDivisor: 1024, unit: PMA_messages['strMiB'] },
],
settings: {
chart: {
@@ -663,8 +666,8 @@ $(function() {
}
}
}
- }
-
+ };
+
// Default setting
defaultChartGrid = {
'c0': { title: PMA_messages['strQuestions'],
@@ -683,15 +686,15 @@ $(function() {
]
}
};
-
- // Server is localhost => We can add cpu/memory/swap
+
+ // Server is localhost => We can add cpu/memory/swap
if(server_db_isLocal) {
defaultChartGrid['c3'] = presetCharts['cpu-' + server_os];
defaultChartGrid['c4'] = presetCharts['memory-' + server_os];
defaultChartGrid['c5'] = presetCharts['swap-' + server_os];
}
-
- var gridbuttons = {
+
+ var gridbuttons = {
cogButton: {
//enabled: true,
symbol: 'url(' + pmaThemeImage + 's_cog.png)',
@@ -713,7 +716,7 @@ $(function() {
}]
}
};
-
+
Highcharts.setOptions({
lang: {
settings: PMA_messages['strSettings'],
@@ -721,20 +724,20 @@ $(function() {
editChart: PMA_messages['strEditChart']
}
});
-
+
$('a[href="#rearrangeCharts"], a[href="#endChartEditMode"]').click(function() {
editMode = !editMode;
if($(this).attr('href') == '#endChartEditMode') editMode = false;
-
+
// Icon graphics have zIndex 19,20 and 21. Let's just hope nothing else has the same zIndex
$('table#chartGrid div svg').find('*[zIndex=20], *[zIndex=21], *[zIndex=19]').toggle(editMode)
-
+
$('a[href="#endChartEditMode"]').toggle(editMode);
-
+
if(editMode) {
// Close the settings popup
$('#statustabs_charting .popupContent').hide().removeClass('openedPopup');
-
+
$("#chartGrid").sortableTable({
ignoreRect: {
top: 8,
@@ -748,13 +751,13 @@ $(function() {
},
// Drop event. The drag child element is moved into the drop element
// and vice versa. So the parameters are switched.
- drop: function(drag, drop, pos) {
+ drop: function(drag, drop, pos) {
var dragKey, dropKey, dropRender;
var dragRender = $(drag).children().first().attr('id');
-
+
if($(drop).children().length > 0)
dropRender = $(drop).children().first().attr('id');
-
+
// Find the charts in the array
$.each(runtime.charts, function(key, value) {
if(value.chart.options.chart.renderTo == dragRender)
@@ -762,7 +765,7 @@ $(function() {
if(dropRender && value.chart.options.chart.renderTo == dropRender)
dropKey = key;
});
-
+
// Case 1: drag and drop are charts -> Switch keys
if(dropKey) {
if(dragKey) {
@@ -777,14 +780,14 @@ $(function() {
var values = [];
var newChartList = {};
var c = 0;
-
+
$.each(runtime.charts, function(key, value) {
if(key != dropKey)
keys.push(key);
});
-
+
keys.sort();
-
+
// Rebuilds all ids, with the dragged chart correctly inserted
for(var i=0; i put at the end
if(insertBefore != -1)
newChartList['c' + (c++)] = runtime.charts[dropKey];
-
+
runtime.charts = newChartList;
}
-
+
saveMonitor();
}
}
}
});
-
+
} else {
$("#chartGrid").sortableTable('destroy');
saveMonitor(); // Save settings
}
-
+
return false;
});
-
+
// global settings
$('div#statustabs_charting div.popupContent select[name="chartColumns"]').change(function() {
monitorSettings.columns = parseInt(this.value);
-
+
var newSize = chartSize();
-
+
// Empty cells should keep their size so you can drop onto them
$('table#chartGrid tr td').css('width',newSize.width + 'px');
-
+
/* Reorder all charts that it fills all column cells */
var numColumns;
var $tr = $('table#chartGrid tr:first');
@@ -838,7 +841,7 @@ $(function() {
}
numColumns++;
});
-
+
// To little cells in one row => for each cell to little, move all cells backwards by 1
if($tr.next().length > 0) {
var cnt = monitorSettings.columns - $tr.find('td').length;
@@ -850,57 +853,57 @@ $(function() {
});
}
}
-
+
$tr = $tr.next();
row++;
}
-
+
/* Apply new chart size to all charts */
$.each(runtime.charts, function(key, value) {
value.chart.setSize(
newSize.width,
- newSize.height,
+ newSize.height,
false
);
});
-
+
if(monitorSettings.gridMaxPoints == 'auto')
runtime.gridMaxPoints = Math.round((newSize.width - 40) / 12);
-
+
runtime.xmin = new Date().getTime() - server_time_diff - runtime.gridMaxPoints * monitorSettings.gridRefresh;
runtime.xmax = new Date().getTime() - server_time_diff + monitorSettings.gridRefresh;
-
+
if(editMode)
$("#chartGrid").sortableTable('refresh');
-
+
saveMonitor(); // Save settings
});
-
+
$('div#statustabs_charting div.popupContent select[name="gridChartRefresh"]').change(function() {
monitorSettings.gridRefresh = parseInt(this.value) * 1000;
clearTimeout(runtime.refreshTimeout);
-
+
if(runtime.refreshRequest)
runtime.refreshRequest.abort();
-
+
runtime.xmin = new Date().getTime() - server_time_diff - runtime.gridMaxPoints * monitorSettings.gridRefresh;
runtime.xmax = new Date().getTime() - server_time_diff + monitorSettings.gridRefresh;
-
+
$.each(runtime.charts, function(key, value) {
value.chart.xAxis[0].setExtremes(runtime.xmin, runtime.xmax, false);
});
-
+
runtime.refreshTimeout = setTimeout(refreshChartGrid, monitorSettings.gridRefresh);
-
+
saveMonitor(); // Save settings
});
-
+
$('a[href="#addNewChart"]').click(function() {
var dlgButtons = { };
-
+
dlgButtons[PMA_messages['strAddChart']] = function() {
var type = $('input[name="chartType"]:checked').val();
-
+
if(type == 'cpu' || type == 'memory' || type=='swap')
newChart = presetCharts[type + '-' + server_os];
else {
@@ -909,36 +912,36 @@ $(function() {
return;
}
}
-
+
newChart.title = $('input[name="chartTitle"]').attr('value');
// Add a cloned object to the chart grid
addChart($.extend(true, {}, newChart));
-
+
newChart = null;
-
+
saveMonitor(); // Save settings
$(this).dialog("close");
}
-
+
dlgButtons[PMA_messages['strClose']] = function() {
newChart = null;
$('span#clearSeriesLink').hide();
$('#seriesPreview').html('');
$(this).dialog("close");
}
-
+
$('div#addChartDialog').dialog({
width:'auto',
height:'auto',
buttons: dlgButtons
});
-
+
$('div#addChartDialog #seriesPreview').html('' + PMA_messages['strNone'] + '');
-
+
return false;
});
-
+
$('a[href="#pauseCharts"]').click(function() {
runtime.redrawCharts = ! runtime.redrawCharts;
if(! runtime.redrawCharts)
@@ -952,109 +955,109 @@ $(function() {
}
return false;
});
-
+
$('a[href="#monitorInstructionsDialog"]').click(function() {
var $dialog = $('div#monitorInstructionsDialog');
-
+
$dialog.dialog({
width: 595,
height: 'auto'
}).find('img.ajaxIcon').show();
-
+
var loadLogVars = function(getvars) {
vars = { ajax_request: true, logging_vars: true };
if(getvars) $.extend(vars,getvars);
-
+
$.get('server_status.php?' + url_query, vars,
function(data) {
var logVars = $.parseJSON(data),
icon = 'ic_s_success', msg='', str='';
-
+
if(logVars['general_log'] == 'ON') {
- if(logVars['slow_query_log'] == 'ON')
+ if(logVars['slow_query_log'] == 'ON')
msg = PMA_messages['strBothLogOn'];
- else
+ else
msg = PMA_messages['strGenLogOn'];
}
-
+
if(msg.length == 0 && logVars['slow_query_log'] == 'ON') {
msg = PMA_messages['strSlowLogOn'];
}
-
+
if(msg.length == 0) {
icon = 'ic_s_error';
msg = PMA_messages['strBothLogOff'];
}
-
+
str = '' + PMA_messages['strCurrentSettings'] + '
';
str += '  ' + msg + ' ';
-
+
if(logVars['log_output'] != 'TABLE')
str += '  ' + PMA_messages['strLogOutNotTable'] + ' ';
- else
+ else
str += '  ' + PMA_messages['strLogOutIsTable'] + ' ';
-
+
if(logVars['slow_query_log'] == 'ON') {
if(logVars['long_query_time'] > 2)
str += '  '
+ $.sprintf(PMA_messages['strSmallerLongQueryTimeAdvice'], logVars['long_query_time'])
+ ' ';
-
+
if(logVars['long_query_time'] < 2)
str += '  '
+ $.sprintf(PMA_messages['strLongQueryTimeSet'], logVars['long_query_time'])
+ ' ';
}
-
+
str += ' ';
-
+
if(is_superuser) {
str += 'Change settings';
str += '';
-
+
$dialog.find('div.monitorUse').toggle(
logVars['log_output'] == 'TABLE' && (logVars['slow_query_log'] == 'ON' || logVars['general_log'] == 'ON')
);
-
+
$dialog.find('div.ajaxContent').html(str);
$dialog.find('img.ajaxIcon').hide();
$dialog.find('a.set').click(function() {
@@ -1065,13 +1068,13 @@ $(function() {
}
);
}
-
-
+
+
loadLogVars();
-
+
return false;
});
-
+
$('input[name="chartType"]').change(function() {
$('#chartVariableSettings').toggle(this.checked && this.value == 'variable');
var title = $('input[name="chartTitle"]').attr('value');
@@ -1079,21 +1082,21 @@ $(function() {
$('input[name="chartTitle"]').data('lastRadio',$(this).attr('id'));
$('input[name="chartTitle"]').attr('value',$('label[for="'+$(this).attr('id')+'"]').text());
}
-
+
});
-
+
$('input[name="useDivisor"]').change(function() {
$('span.divisorInput').toggle(this.checked);
});
$('input[name="useUnit"]').change(function() {
$('span.unitInput').toggle(this.checked);
});
-
+
$('select[name="varChartList"]').change(function () {
if(this.selectedIndex!=0)
$('#variableInput').attr('value',this.value);
});
-
+
$('a[href="#kibDivisor"]').click(function() {
$('input[name="valueDivisor"]').attr('value',1024);
$('input[name="valueUnit"]').attr('value',PMA_messages['strKiB']);
@@ -1101,7 +1104,7 @@ $(function() {
$('input[name="useUnit"]').prop('checked',true);
return false;
});
-
+
$('a[href="#mibDivisor"]').click(function() {
$('input[name="valueDivisor"]').attr('value',1024*1024);
$('input[name="valueUnit"]').attr('value',PMA_messages['strMiB']);
@@ -1109,48 +1112,48 @@ $(function() {
$('input[name="useUnit"]').prop('checked',true);
return false;
});
-
+
$('a[href="#submitClearSeries"]').click(function() {
$('#seriesPreview').html('' + PMA_messages['strNone'] + '');
newChart = null;
$('span#clearSeriesLink').hide();
});
-
+
$('a[href="#submitAddSeries"]').click(function() {
if($('input#variableInput').attr('value').length == 0) return false;
-
+
if(newChart == null) {
$('#seriesPreview').html('');
-
+
newChart = {
title: $('input[name="chartTitle"]').attr('value'),
nodes: []
}
}
-
+
var serie = {
dataType:'statusvar',
name: $('input#variableInput').attr('value'),
- display: $('input[name="differentialValue"]').attr('checked') ? 'differential' : '',
+ display: $('input[name="differentialValue"]').attr('checked') ? 'differential' : ''
};
-
+
if(serie.name == 'Processes') serie.dataType='proc';
-
- if($('input[name="useDivisor"]').attr('checked'))
+
+ if($('input[name="useDivisor"]').attr('checked'))
serie.valueDivisor = parseInt($('input[name="valueDivisor"]').attr('value'));
if($('input[name="useUnit"]').attr('checked'))
serie.unit = $('input[name="valueUnit"]').attr('value');
-
-
-
+
+
+
var str = serie.display == 'differential' ? ', ' + PMA_messages['strDifferential'] : '';
str += serie.valueDivisor ? (', ' + $.sprintf(PMA_messages['strDividedBy'], serie.valueDivisor)) : '';
-
+
$('#seriesPreview').append('- ' + serie.name + str + ' ');
-
+
newChart.nodes.push(serie);
-
+
$('input#variableInput').attr('value','');
$('input[name="differentialValue"]').attr('checked',true);
$('input[name="useDivisor"]').attr('checked',false);
@@ -1158,17 +1161,17 @@ $(function() {
$('input[name="useDivisor"]').trigger('change');
$('input[name="useUnit"]').trigger('change');
$('select[name="varChartList"]').get(0).selectedIndex=0;
-
+
$('span#clearSeriesLink').show();
return false;
});
-
+
$("input#variableInput").autocomplete({
source: variableNames
});
-
-
+
+
function initGrid() {
var settings;
var series;
@@ -1179,23 +1182,23 @@ $(function() {
runtime.charts = $.parseJSON(window.localStorage['monitorCharts']);
if(window.localStorage['monitorSettings'])
monitorSettings = $.parseJSON(window.localStorage['monitorSettings']);
-
+
$('a[href="#clearMonitorConfig"]').toggle(runtime.charts != null);
}
-
+
if(runtime.charts == null)
runtime.charts = defaultChartGrid;
if(monitorSettings == null)
monitorSettings = defaultMonitorSettings;
-
+
$('select[name="gridChartRefresh"]').attr('value',monitorSettings.gridRefresh / 1000);
$('select[name="chartColumns"]').attr('value',monitorSettings.columns);
-
+
if(monitorSettings.gridMaxPoints == 'auto')
runtime.gridMaxPoints = Math.round((monitorSettings.chartSize.width - 40) / 12);
- else
+ else
runtime.gridMaxPoints = monitorSettings.gridMaxPoints;
-
+
runtime.xmin = new Date().getTime() - server_time_diff - runtime.gridMaxPoints * monitorSettings.gridRefresh;
runtime.xmax = new Date().getTime() - server_time_diff + monitorSettings.gridRefresh;
@@ -1206,7 +1209,7 @@ $(function() {
height: $('table#chartGrid tr:nth-child(2) td:nth-child(2)').offset().top - $('table#chartGrid tr:nth-child(1) td:nth-child(1)').offset().top
}
$('table#chartGrid').html('');
-
+
/* Add all charts - in correct order */
var keys = [];
$.each(runtime.charts, function(key, value) {
@@ -1215,22 +1218,22 @@ $(function() {
keys.sort();
for(var i=0; i | ');
}
-
+
// Empty cells should keep their size so you can drop onto them
$('table#chartGrid tr td').css('width',chartSize().width + 'px');
-
+
buildRequiredDataList();
refreshChartGrid();
}
-
+
function chartSize() {
var wdt = $('div#logTable').innerWidth() / monitorSettings.columns - (monitorSettings.columns - 1) * chartSpacing.width;
return {
@@ -1238,12 +1241,12 @@ $(function() {
height: 0.75 * wdt
}
}
-
+
function addChart(chartObj, initialize) {
series = [];
for(var j=0; j' + PMA_messages['strSelectedTimeRange']
- + ' - '
- + ''
- + ''
- + ''
- + PMA_messages['strLogAnalyseInfo']
- );
-
- PMA_addDatepicker($('#logAnalyseDialog').find('input[name="dateStart"],input[name="dateEnd"]'), {
- showOn: 'focus',
- beforeShow: function() {
- // Fix wrong timepicker z-index, doesn't work without timeout
- setTimeout(function() {
- $('#ui-timepicker-div').css('z-index',$('#ui-datepicker-div').css('z-index'))
- },0);
- }
- });
-
+
+ $('#logAnalyseDialog input[name="dateStart"]')
+ .attr('value', Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', new Date(min)));
+ $('#logAnalyseDialog input[name="dateEnd"]')
+ .attr('value', Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', new Date(max)));
+
var dlgBtns = { };
-
+
dlgBtns[PMA_messages['strFromSlowLog']] = function() {
var dateStart = Date.parse($('#logAnalyseDialog input[name="dateStart"]').attr('value')) || min;
var dateEnd = Date.parse($('#logAnalyseDialog input[name="dateEnd"]').attr('value')) || max;
-
- loadLogStatistics(
- { src: 'slow', start: dateStart, end: dateEnd, groupInserts: $('input#groupInserts').attr('checked') }
- );
-
+
+ loadLogStatistics({
+ src: 'slow',
+ start: dateStart,
+ end: dateEnd,
+ removeVariables: $('input#removeVariables').prop('checked'),
+ limitTypes: $('input#limitTypes').prop('checked')
+ });
+
$('#logAnalyseDialog').find('dateStart,dateEnd').datepicker('destroy');
-
+
$(this).dialog("close");
}
-
+
dlgBtns[PMA_messages['strFromGeneralLog']] = function() {
var dateStart = Date.parse($('#logAnalyseDialog input[name="dateStart"]').attr('value')) || min;
var dateEnd = Date.parse($('#logAnalyseDialog input[name="dateEnd"]').attr('value')) || max;
-
- loadLogStatistics(
- { src: 'general', start: dateStart, end: dateEnd, groupInserts: $('input#groupInserts').attr('checked') }
- );
-
+
+ loadLogStatistics({
+ src: 'general',
+ start: dateStart,
+ end: dateEnd,
+ removeVariables: $('input#removeVariables').prop('checked'),
+ limitTypes: $('input#limitTypes').prop('checked')
+ });
+
$('#logAnalyseDialog').find('dateStart,dateEnd').datepicker('destroy');
-
+
$(this).dialog("close");
}
-
+
$('#logAnalyseDialog').dialog({
width: 'auto',
height: 'auto',
buttons: dlgBtns
});
-
+
return false;
}
}
@@ -1329,12 +1326,12 @@ $(function() {
tooltip: {
formatter: function() {
var s = ''+Highcharts.dateFormat('%H:%M:%S', this.x)+'';
-
+
$.each(this.points, function(i, point) {
s += '
'+ point.series.name +': '+
((parseInt(point.y) == point.y) ? point.y : Highcharts.numberFormat(this.y, 2)) + ' ' + (point.series.options.unit || '');
});
-
+
return s;
},
shared: true
@@ -1344,66 +1341,66 @@ $(function() {
},
series: series,
buttons: gridbuttons,
- title: { text: chartObj.title },
+ title: { text: chartObj.title }
};
-
+
if(chartObj.settings)
$.extend(true,settings,chartObj.settings);
-
+
if($('#'+settings.chart.renderTo).length==0) {
var numCharts = $('table#chartGrid .monitorChart').length;
-
+
if(numCharts == 0 || !( numCharts % monitorSettings.columns))
$('table#chartGrid').append('
');
-
+
$('table#chartGrid tr:last').append(' | ');
}
-
+
chartObj.chart = PMA_createChart(settings);
chartObj.numPoints = 0;
-
+
if(initialize != true) {
runtime.charts['c'+runtime.chartAI] = chartObj;
buildRequiredDataList();
}
-
+
// Edit,Print icon only in edit mode
$('table#chartGrid div svg').find('*[zIndex=20], *[zIndex=21], *[zIndex=19]').toggle(editMode)
-
+
runtime.chartAI++;
}
-
+
function removeChart(chartObj) {
var htmlnode = chartObj.options.chart.renderTo;
if(! htmlnode ) return;
-
-
+
+
$.each(runtime.charts, function(key, value) {
if(value.chart.options.chart.renderTo == htmlnode) {
delete runtime.charts[key];
return false;
}
});
-
+
buildRequiredDataList();
-
- // Using settimeout() because clicking the remove link fires an onclick event
+
+ // Using settimeout() because clicking the remove link fires an onclick event
// which throws an error when the chart is destroyed
setTimeout(function() {
chartObj.destroy();
$('li#' + htmlnode).remove();
},10);
-
+
saveMonitor(); // Save settings
}
-
+
function refreshChartGrid() {
/* Send to server */
runtime.refreshRequest = $.post('server_status.php?'+url_query, { ajax_request: true, chart_data: 1, type: 'chartgrid', requiredData: $.toJSON(runtime.dataList) },function(data) {
var chartData = $.parseJSON(data);
var value, i=0;
var diff;
-
+
/* Update values in each graph */
$.each(runtime.charts, function(orderKey, elem) {
var key = elem.chartID;
@@ -1416,18 +1413,18 @@ $(function() {
if(i==0 && j==0) {
if(oldChartData==null) diff = chartData.x - runtime.xmax;
else diff = parseInt(chartData.x - oldChartData.x);
-
+
runtime.xmin+= diff;
runtime.xmax+= diff;
}
-
+
elem.chart.xAxis[0].setExtremes(runtime.xmin, runtime.xmax, false);
-
+
if(elem.nodes[j].display == 'differential') {
if(oldChartData == null || oldChartData[key] == null) continue;
value -= oldChartData[key][j].y;
}
-
+
if(elem.nodes[j].valueDivisor)
value = value / elem.nodes[j].valueDivisor;
@@ -1437,28 +1434,28 @@ $(function() {
(oldChartData == null) ? null : oldChartData[key][j]
);
}
-
+
if(value != undefined)
elem.chart.series[j].addPoint(
{ x: chartData.x, y: value },
- false,
+ false,
elem.numPoints >= runtime.gridMaxPoints
);
}
-
+
i++;
-
+
runtime.charts[orderKey].numPoints++;
if(runtime.redrawCharts)
elem.chart.redraw();
});
-
+
oldChartData = chartData;
-
+
runtime.refreshTimeout = setTimeout(refreshChartGrid, monitorSettings.gridRefresh);
});
}
-
+
/* Build list of nodes that need to be retrieved */
function buildRequiredDataList() {
runtime.dataList = {};
@@ -1470,15 +1467,16 @@ $(function() {
chartID++;
});
}
-
+
function loadLogStatistics(opts) {
var tableStr = '';
var logRequest = null;
- var groupInsert = false;
-
- if(opts.groupInserts)
- groupInserts = true;
-
+
+ if(! opts.removeVariables)
+ opts.removeVariables = false;
+ if(! opts.limitTypes)
+ opts.limitTypes = false;
+
$('#loadingLogsDialog').html(PMA_messages['strAnalysingLogs'] + '
');
$('#loadingLogsDialog').dialog({
@@ -1486,195 +1484,409 @@ $(function() {
height: 'auto',
buttons: {
'Cancel request': function() {
- if(logRequest != null)
+ if(logRequest != null)
logRequest.abort();
-
- $(this).dialog("close");
+
+ $(this).dialog("close");
}
}
});
-
-
- var formatValue = function(name, value) {
- switch(name) {
- case 'user_host':
- return value.replace(/(\[.*?\])+/g,'');
- }
- return value;
- }
-
- logRequest = $.get('server_status.php?'+url_query,
- { ajax_request: true, log_data: 1, type: opts.src, time_start: Math.round(opts.start / 1000), time_end: Math.round(opts.end / 1000), groupInserts: groupInserts },
- function(data) {
- var data = $.parseJSON(data);
- var rows = data.rows;
- var cols = new Array();
-
- if(rows.length != 0) {
- tableStr = '';
-
- for(var i=0; i < rows.length; i++) {
- if(i == 0) {
- tableStr += '';
- $.each(rows[0],function(key, value) {
- cols.push(key);
- });
- tableStr += '| ' + cols.join(' | ') + ' |
';
- tableStr += '';
- }
-
- tableStr += '';
- for(var j=0; j < cols.length; j++)
- tableStr += '| ' + formatValue(cols[j], rows[i][cols[j]]) + ' | ';
- tableStr += '
';
- }
- tableStr += '';
- tableStr += '| Sum of grouped rows: '+ data.numRows +'Total: | ' + data.sum.TOTAL + ' |
';
- tableStr += '
';
-
- $('#logTable').html(tableStr);
-
- // Append a tooltip to the count column, if there exist one
- if($('#logTable th:last').html() == '#') {
- $('#logTable th:last').append('
');
-
- var qtipContent = PMA_messages['strCountColumnExplanation'];
- if(groupInserts) qtipContent += '' + PMA_messages['strMoreCountColumnExplanation'] + '
';
-
- $('img.qroupedQueryInfoIcon').qtip({
- content: qtipContent,
- position: {
- corner: {
- target: 'bottomMiddle',
- tooltip: 'topRight'
- }
-
- },
- hide: { delay: 1000 }
- })
- }
-
-
-
- $('div#logTable table').tablesorter({
- sortList: [[0,1]],
- widgets: ['zebra']
- });
-
- $('div#logTable table thead th')
- .append('
');
-
+ logRequest = $.get('server_status.php?'+url_query,
+ { ajax_request: true,
+ log_data: 1,
+ type: opts.src,
+ time_start: Math.round(opts.start / 1000),
+ time_end: Math.round(opts.end / 1000),
+ removeVariables: opts.removeVariables,
+ limitTypes: opts.limitTypes
+ },
+ function(data) {
+ var logData = $.parseJSON(data);
+
+ if(logData.rows.length != 0) {
+ runtime.logDataCols = buildLogTable(logData);
+
+ /* Show some stats in the dialog */
$('#loadingLogsDialog').html('' + PMA_messages['strLogDataLoaded'] + '
');
- $.each(data.sum, function(key, value) {
+ $.each(logData.sum, function(key, value) {
key = key.charAt(0).toUpperCase() + key.slice(1).toLowerCase();
if(key == 'Total') key = '' + key + '';
$('#loadingLogsDialog').append(key + ': ' + value + '
');
});
-
- if(data.numRows > 12) {
+
+ /* Add filter options if more than a bunch of rows there to filter */
+ if(logData.numRows > 12) {
$('div#logTable').prepend(
'