Update website
This commit is contained in:
parent
a0b0d3dae7
commit
ae7ef6ad45
3151 changed files with 566766 additions and 48 deletions
2290
admin/phpMyAdmin/js/dist/server/status/monitor.js
vendored
Normal file
2290
admin/phpMyAdmin/js/dist/server/status/monitor.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
198
admin/phpMyAdmin/js/dist/server/status/processes.js
vendored
Normal file
198
admin/phpMyAdmin/js/dist/server/status/processes.js
vendored
Normal file
|
@ -0,0 +1,198 @@
|
|||
"use strict";
|
||||
|
||||
/**
|
||||
* Server Status Processes
|
||||
*
|
||||
* @package PhpMyAdmin
|
||||
*/
|
||||
// object to store process list state information
|
||||
var processList = {
|
||||
// denotes whether auto refresh is on or off
|
||||
autoRefresh: false,
|
||||
// stores the GET request which refresh process list
|
||||
refreshRequest: null,
|
||||
// stores the timeout id returned by setTimeout
|
||||
refreshTimeout: null,
|
||||
// the refresh interval in seconds
|
||||
refreshInterval: null,
|
||||
// the refresh URL (required to save last used option)
|
||||
// i.e. full or sorting url
|
||||
refreshUrl: null,
|
||||
|
||||
/**
|
||||
* Handles killing of a process
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
init: function init() {
|
||||
processList.setRefreshLabel();
|
||||
|
||||
if (processList.refreshUrl === null) {
|
||||
processList.refreshUrl = 'index.php?route=/server/status/processes/refresh';
|
||||
}
|
||||
|
||||
if (processList.refreshInterval === null) {
|
||||
processList.refreshInterval = $('#id_refreshRate').val();
|
||||
} else {
|
||||
$('#id_refreshRate').val(processList.refreshInterval);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Handles killing of a process
|
||||
*
|
||||
* @param object the event object
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
killProcessHandler: function killProcessHandler(event) {
|
||||
event.preventDefault();
|
||||
var argSep = CommonParams.get('arg_separator');
|
||||
var params = $(this).getPostData();
|
||||
params += argSep + 'ajax_request=1' + argSep + 'server=' + CommonParams.get('server'); // Get row element of the process to be killed.
|
||||
|
||||
var $tr = $(this).closest('tr');
|
||||
$.post($(this).attr('href'), params, function (data) {
|
||||
// Check if process was killed or not.
|
||||
if (data.hasOwnProperty('success') && data.success) {
|
||||
// remove the row of killed process.
|
||||
$tr.remove(); // As we just removed a row, reapply odd-even classes
|
||||
// to keep table stripes consistent
|
||||
|
||||
var $tableProcessListTr = $('#tableprocesslist').find('> tbody > tr');
|
||||
$tableProcessListTr.each(function (index) {
|
||||
if (index >= 0 && index % 2 === 0) {
|
||||
$(this).removeClass('odd').addClass('even');
|
||||
} else if (index >= 0 && index % 2 !== 0) {
|
||||
$(this).removeClass('even').addClass('odd');
|
||||
}
|
||||
}); // Show process killed message
|
||||
|
||||
Functions.ajaxShowMessage(data.message, false);
|
||||
} else {
|
||||
// Show process error message
|
||||
Functions.ajaxShowMessage(data.error, false);
|
||||
}
|
||||
}, 'json');
|
||||
},
|
||||
|
||||
/**
|
||||
* Handles Auto Refreshing
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
refresh: function refresh() {
|
||||
// abort any previous pending requests
|
||||
// this is necessary, it may go into
|
||||
// multiple loops causing unnecessary
|
||||
// requests even after leaving the page.
|
||||
processList.abortRefresh(); // if auto refresh is enabled
|
||||
|
||||
if (processList.autoRefresh) {
|
||||
// Only fetch the table contents
|
||||
processList.refreshUrl = 'index.php?route=/server/status/processes/refresh';
|
||||
var interval = parseInt(processList.refreshInterval, 10) * 1000;
|
||||
var urlParams = processList.getUrlParams();
|
||||
processList.refreshRequest = $.post(processList.refreshUrl, urlParams, function (data) {
|
||||
if (data.hasOwnProperty('success') && data.success) {
|
||||
var $newTable = $(data.message);
|
||||
$('#tableprocesslist').html($newTable.html());
|
||||
Functions.highlightSql($('#tableprocesslist'));
|
||||
}
|
||||
|
||||
processList.refreshTimeout = setTimeout(processList.refresh, interval);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Stop current request and clears timeout
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
abortRefresh: function abortRefresh() {
|
||||
if (processList.refreshRequest !== null) {
|
||||
processList.refreshRequest.abort();
|
||||
processList.refreshRequest = null;
|
||||
}
|
||||
|
||||
clearTimeout(processList.refreshTimeout);
|
||||
},
|
||||
|
||||
/**
|
||||
* Set label of refresh button
|
||||
* change between play & pause
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
setRefreshLabel: function setRefreshLabel() {
|
||||
var img = 'play';
|
||||
var label = Messages.strStartRefresh;
|
||||
|
||||
if (processList.autoRefresh) {
|
||||
img = 'pause';
|
||||
label = Messages.strStopRefresh;
|
||||
processList.refresh();
|
||||
}
|
||||
|
||||
$('a#toggleRefresh').html(Functions.getImage(img) + Functions.escapeHtml(label));
|
||||
},
|
||||
|
||||
/**
|
||||
* Return the Url Parameters
|
||||
* for autorefresh request,
|
||||
* includes showExecuting if the filter is checked
|
||||
*
|
||||
* @return urlParams - url parameters with autoRefresh request
|
||||
*/
|
||||
getUrlParams: function getUrlParams() {
|
||||
var urlParams = {
|
||||
'server': CommonParams.get('server'),
|
||||
'ajax_request': true,
|
||||
'refresh': true,
|
||||
'full': $('input[name="full"]').val(),
|
||||
'order_by_field': $('input[name="order_by_field"]').val(),
|
||||
'column_name': $('input[name="column_name"]').val(),
|
||||
'sort_order': $('input[name="sort_order"]').val()
|
||||
};
|
||||
|
||||
if ($('#showExecuting').is(':checked')) {
|
||||
urlParams.showExecuting = true;
|
||||
return urlParams;
|
||||
}
|
||||
|
||||
return urlParams;
|
||||
}
|
||||
};
|
||||
AJAX.registerOnload('server/status/processes.js', function () {
|
||||
processList.init(); // Bind event handler for kill_process
|
||||
|
||||
$('#tableprocesslist').on('click', 'a.kill_process', processList.killProcessHandler); // Bind event handler for toggling refresh of process list
|
||||
|
||||
$('a#toggleRefresh').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
processList.autoRefresh = !processList.autoRefresh;
|
||||
processList.setRefreshLabel();
|
||||
}); // Bind event handler for change in refresh rate
|
||||
|
||||
$('#id_refreshRate').on('change', function () {
|
||||
processList.refreshInterval = $(this).val();
|
||||
processList.refresh();
|
||||
}); // Bind event handler for table header links
|
||||
|
||||
$('#tableprocesslist').on('click', 'thead a', function () {
|
||||
processList.refreshUrl = $(this).attr('href');
|
||||
});
|
||||
});
|
||||
/**
|
||||
* Unbind all event handlers before tearing down a page
|
||||
*/
|
||||
|
||||
AJAX.registerTeardown('server/status/processes.js', function () {
|
||||
$('#tableprocesslist').off('click', 'a.kill_process');
|
||||
$('a#toggleRefresh').off('click');
|
||||
$('#id_refreshRate').off('change');
|
||||
$('#tableprocesslist').off('click', 'thead a'); // stop refreshing further
|
||||
|
||||
processList.abortRefresh();
|
||||
});
|
42
admin/phpMyAdmin/js/dist/server/status/queries.js
vendored
Normal file
42
admin/phpMyAdmin/js/dist/server/status/queries.js
vendored
Normal file
|
@ -0,0 +1,42 @@
|
|||
"use strict";
|
||||
|
||||
/**
|
||||
* @fileoverview Javascript functions used in server status query page
|
||||
* @name Server Status Query
|
||||
*
|
||||
* @requires jQuery
|
||||
* @requires jQueryUI
|
||||
* @requires js/functions.js
|
||||
*/
|
||||
|
||||
/* global initTableSorter */
|
||||
// js/server/status/sorter.js
|
||||
|
||||
/**
|
||||
* Unbind all event handlers before tearing down a page
|
||||
*/
|
||||
AJAX.registerTeardown('server/status/queries.js', function () {
|
||||
if (document.getElementById('serverstatusquerieschart') !== null) {
|
||||
var queryPieChart = $('#serverstatusquerieschart').data('queryPieChart');
|
||||
|
||||
if (queryPieChart) {
|
||||
queryPieChart.destroy();
|
||||
}
|
||||
}
|
||||
});
|
||||
AJAX.registerOnload('server/status/queries.js', function () {
|
||||
// Build query statistics chart
|
||||
var cdata = [];
|
||||
|
||||
try {
|
||||
if (document.getElementById('serverstatusquerieschart') !== null) {
|
||||
$.each($('#serverstatusquerieschart').data('chart'), function (key, value) {
|
||||
cdata.push([key, parseInt(value, 10)]);
|
||||
});
|
||||
$('#serverstatusquerieschart').data('queryPieChart', Functions.createProfilingChart('serverstatusquerieschart', cdata));
|
||||
}
|
||||
} catch (exception) {// Could not load chart, no big deal...
|
||||
}
|
||||
|
||||
initTableSorter('statustabs_queries');
|
||||
});
|
78
admin/phpMyAdmin/js/dist/server/status/sorter.js
vendored
Normal file
78
admin/phpMyAdmin/js/dist/server/status/sorter.js
vendored
Normal file
|
@ -0,0 +1,78 @@
|
|||
"use strict";
|
||||
|
||||
// TODO: tablesorter shouldn't sort already sorted columns
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
function initTableSorter(tabid) {
|
||||
var $table;
|
||||
var opts;
|
||||
|
||||
switch (tabid) {
|
||||
case 'statustabs_queries':
|
||||
$table = $('#serverStatusQueriesDetails');
|
||||
opts = {
|
||||
sortList: [[3, 1]],
|
||||
headers: {
|
||||
1: {
|
||||
sorter: 'fancyNumber'
|
||||
},
|
||||
2: {
|
||||
sorter: 'fancyNumber'
|
||||
}
|
||||
}
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
$table.tablesorter(opts);
|
||||
$table.find('tr').first().find('th').append('<div class="sorticon"></div>');
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$.tablesorter.addParser({
|
||||
id: 'fancyNumber',
|
||||
is: function is(s) {
|
||||
return /^[0-9]?[0-9,\\.]*\s?(k|M|G|T|%)?$/.test(s);
|
||||
},
|
||||
format: function format(s) {
|
||||
var num = jQuery.tablesorter.formatFloat(s.replace(Messages.strThousandsSeparator, '').replace(Messages.strDecimalSeparator, '.'));
|
||||
var factor = 1;
|
||||
|
||||
switch (s.charAt(s.length - 1)) {
|
||||
case '%':
|
||||
factor = -2;
|
||||
break;
|
||||
// Todo: Complete this list (as well as in the regexp a few lines up)
|
||||
|
||||
case 'k':
|
||||
factor = 3;
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
factor = 6;
|
||||
break;
|
||||
|
||||
case 'G':
|
||||
factor = 9;
|
||||
break;
|
||||
|
||||
case 'T':
|
||||
factor = 12;
|
||||
break;
|
||||
}
|
||||
|
||||
return num * Math.pow(10, factor);
|
||||
},
|
||||
type: 'numeric'
|
||||
});
|
||||
$.tablesorter.addParser({
|
||||
id: 'withinSpanNumber',
|
||||
is: function is(s) {
|
||||
return /<span class="original"/.test(s);
|
||||
},
|
||||
format: function format(s, table, html) {
|
||||
var res = html.innerHTML.match(/<span(\s*style="display:none;"\s*)?\s*class="original">(.*)?<\/span>/);
|
||||
return res && res.length >= 3 ? res[2] : 0;
|
||||
},
|
||||
type: 'numeric'
|
||||
});
|
||||
});
|
98
admin/phpMyAdmin/js/dist/server/status/variables.js
vendored
Normal file
98
admin/phpMyAdmin/js/dist/server/status/variables.js
vendored
Normal file
|
@ -0,0 +1,98 @@
|
|||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @package PhpMyAdmin
|
||||
*/
|
||||
|
||||
/**
|
||||
* Unbind all event handlers before tearing down a page
|
||||
*/
|
||||
AJAX.registerTeardown('server/status/variables.js', function () {
|
||||
$('#filterAlert').off('change');
|
||||
$('#filterText').off('keyup');
|
||||
$('#filterCategory').off('change');
|
||||
$('#dontFormat').off('change');
|
||||
});
|
||||
AJAX.registerOnload('server/status/variables.js', function () {
|
||||
// Filters for status variables
|
||||
var textFilter = null;
|
||||
var alertFilter = $('#filterAlert').prop('checked');
|
||||
var categoryFilter = $('#filterCategory').find(':selected').val();
|
||||
var text = ''; // Holds filter text
|
||||
|
||||
/* 3 Filtering functions */
|
||||
|
||||
$('#filterAlert').on('change', function () {
|
||||
alertFilter = this.checked;
|
||||
filterVariables();
|
||||
});
|
||||
$('#filterCategory').on('change', function () {
|
||||
categoryFilter = $(this).val();
|
||||
filterVariables();
|
||||
});
|
||||
$('#dontFormat').on('change', function () {
|
||||
// Hiding the table while changing values speeds up the process a lot
|
||||
var serverStatusVariables = $('#serverStatusVariables');
|
||||
serverStatusVariables.hide();
|
||||
serverStatusVariables.find('td.value span.original').toggle(this.checked);
|
||||
serverStatusVariables.find('td.value span.formatted').toggle(!this.checked);
|
||||
serverStatusVariables.show();
|
||||
}).trigger('change');
|
||||
$('#filterText').on('keyup', function () {
|
||||
var word = $(this).val().replace(/_/g, ' ');
|
||||
|
||||
if (word.length === 0) {
|
||||
textFilter = null;
|
||||
} else {
|
||||
try {
|
||||
textFilter = new RegExp('(^| )' + word, 'i');
|
||||
$(this).removeClass('error');
|
||||
} catch (e) {
|
||||
if (e instanceof SyntaxError) {
|
||||
$(this).addClass('error');
|
||||
textFilter = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
text = word;
|
||||
filterVariables();
|
||||
}).trigger('keyup');
|
||||
/* Filters the status variables by name/category/alert in the variables tab */
|
||||
|
||||
function filterVariables() {
|
||||
var usefulLinks = 0;
|
||||
var section = text;
|
||||
|
||||
if (categoryFilter.length > 0) {
|
||||
section = categoryFilter;
|
||||
}
|
||||
|
||||
if (section.length > 1) {
|
||||
$('#linkSuggestions').find('span').each(function () {
|
||||
if ($(this).attr('class').indexOf('status_' + section) !== -1) {
|
||||
usefulLinks++;
|
||||
$(this).css('display', '');
|
||||
} else {
|
||||
$(this).css('display', 'none');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (usefulLinks > 0) {
|
||||
$('#linkSuggestions').css('display', '');
|
||||
} else {
|
||||
$('#linkSuggestions').css('display', 'none');
|
||||
}
|
||||
|
||||
$('#serverStatusVariables').find('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))) {
|
||||
$(this).parent().css('display', '');
|
||||
} else {
|
||||
$(this).parent().css('display', 'none');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue