1 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 * Server Status Processes
8 // object to store process list state information
11 // denotes whether auto refresh is on or off
13 // stores the GET request which refresh process list
15 // stores the timeout id returned by setTimeout
17 // the refresh interval in seconds
18 refreshInterval: null,
19 // the refresh URL (required to save last used option)
20 // i.e. full or sorting url
24 * Handles killing of a process
29 processList.setRefreshLabel();
30 if (processList.refreshUrl === null) {
31 processList.refreshUrl = 'server_status_processes.php' +
32 PMA_commonParams.get('common_query');
34 if (processList.refreshInterval === null) {
35 processList.refreshInterval = $('#id_refreshRate').val();
37 $('#id_refreshRate').val(processList.refreshInterval);
42 * Handles killing of a process
44 * @param object the event object
48 killProcessHandler: function(event) {
49 event.preventDefault();
50 var url = $(this).attr('href');
51 // Get row element of the process to be killed.
52 var $tr = $(this).closest('tr');
53 $.getJSON(url, function(data) {
54 // Check if process was killed or not.
55 if (data.hasOwnProperty('success') && data.success) {
56 // remove the row of killed process.
58 // As we just removed a row, reapply odd-even classes
59 // to keep table stripes consistent
60 var $tableProcessListTr = $('#tableprocesslist').find('> tbody > tr');
61 $tableProcessListTr.filter(':even').removeClass('odd').addClass('even');
62 $tableProcessListTr.filter(':odd').removeClass('even').addClass('odd');
63 // Show process killed message
64 PMA_ajaxShowMessage(data.message, false);
66 // Show process error message
67 PMA_ajaxShowMessage(data.error, false);
73 * Handles Auto Refreshing
75 * @param object the event object
79 refresh: function(event) {
80 // abort any previous pending requests
81 // this is necessary, it may go into
82 // multiple loops causing unnecessary
83 // requests even after leaving the page.
84 processList.abortRefresh();
85 // if auto refresh is enabled
86 if (processList.autoRefresh) {
87 var interval = parseInt(processList.refreshInterval, 10) * 1000;
88 var urlParams = processList.getUrlParams();
89 processList.refreshRequest = $.get(processList.refreshUrl,
92 if (data.hasOwnProperty('success') && data.success) {
93 $newTable = $(data.message);
94 $('#tableprocesslist').html($newTable.html());
95 PMA_highlightSQL($('#tableprocesslist'));
97 processList.refreshTimeout = setTimeout(
106 * Stop current request and clears timeout
110 abortRefresh: function() {
111 if (processList.refreshRequest !== null) {
112 processList.refreshRequest.abort();
113 processList.refreshRequest = null;
115 clearTimeout(processList.refreshTimeout);
119 * Set label of refresh button
120 * change between play & pause
124 setRefreshLabel: function() {
125 var img = 'play.png';
126 var label = PMA_messages.strStartRefresh;
127 if (processList.autoRefresh) {
129 label = PMA_messages.strStopRefresh;
130 processList.refresh();
132 $('a#toggleRefresh').html(PMA_getImage(img) + escapeHtml(label));
136 * Return the Url Parameters
137 * for autorefresh request,
138 * includes showExecuting if the filter is checked
140 * @return urlParams - url parameters with autoRefresh request
142 getUrlParams: function() {
143 var urlParams = { 'ajax_request': true, 'refresh': true };
144 if ($('#showExecuting').is(":checked")) {
145 urlParams['showExecuting'] = true;
152 AJAX.registerOnload('server_status_processes.js', function() {
155 // Bind event handler for kill_process
156 $('#tableprocesslist').on(
159 processList.killProcessHandler
161 // Bind event handler for toggling refresh of process list
162 $('a#toggleRefresh').on('click', function(event) {
163 event.preventDefault();
164 processList.autoRefresh = !processList.autoRefresh;
165 processList.setRefreshLabel();
167 // Bind event handler for change in refresh rate
168 $('#id_refreshRate').on('change', function(event) {
169 processList.refreshInterval = $(this).val();
170 processList.refresh();
172 // Bind event handler for table header links
173 $('#tableprocesslist').on('click', 'thead a', function() {
174 processList.refreshUrl = $(this).attr('href');
179 * Unbind all event handlers before tearing down a page
181 AJAX.registerTeardown('server_status_processes.js', function() {
182 $('#tableprocesslist').off('click', 'a.kill_process');
183 $('a#toggleRefresh').off('click');
184 $('#id_refreshRate').off('change');
185 $('#tableprocesslist').off('click', 'thead a');
186 // stop refreshing further
187 processList.abortRefresh();