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 $('#tableprocesslist > tbody > tr').filter(':even')
61 .removeClass('odd').addClass('even');
62 $('#tableprocesslist > tbody > tr').filter(':odd')
63 .removeClass('even').addClass('odd');
64 // Show process killed message
65 PMA_ajaxShowMessage(data.message, false);
67 // Show process error message
68 PMA_ajaxShowMessage(data.error, false);
74 * Handles Auto Refreshing
76 * @param object the event object
80 refresh: function(event) {
81 // abort any previous pending requests
82 // this is necessary, it may go into
83 // multiple loops causing unnecessary
84 // requests even after leaving the page.
85 processList.abortRefresh();
86 // if auto refresh is enabled
87 if (processList.autoRefresh) {
88 var interval = parseInt(processList.refreshInterval, 10) * 1000;
89 var urlParams = processList.getUrlParams();
90 processList.refreshRequest = $.get(processList.refreshUrl,
93 if (data.hasOwnProperty('success') && data.success) {
94 $newTable = $(data.message);
95 $('#tableprocesslist').html($newTable.html());
96 PMA_highlightSQL($('#tableprocesslist'));
98 processList.refreshTimeout = setTimeout(
107 * Stop current request and clears timeout
111 abortRefresh: function() {
112 if (processList.refreshRequest !== null) {
113 processList.refreshRequest.abort();
114 processList.refreshRequest = null;
116 clearTimeout(processList.refreshTimeout);
120 * Set label of refresh button
121 * change between play & pause
125 setRefreshLabel: function() {
126 var img = 'play.png';
127 var label = PMA_messages.strStartRefresh;
128 if (processList.autoRefresh) {
130 label = PMA_messages.strStopRefresh;
131 processList.refresh();
133 $('a#toggleRefresh').html(PMA_getImage(img) + escapeHtml(label));
137 * Return the Url Parameters
138 * for autorefresh request,
139 * includes showExecuting if the filter is checked
141 * @return urlParams - url parameters with autoRefresh request
143 getUrlParams: function() {
144 var urlParams = { 'ajax_request': true, 'refresh': true };
145 if ($('#showExecuting').is(":checked")) {
146 urlParams['showExecuting'] = true;
153 AJAX.registerOnload('server_status_processes.js', function() {
156 // Bind event handler for kill_process
157 $('#tableprocesslist').on(
160 processList.killProcessHandler
162 // Bind event handler for toggling refresh of process list
163 $('a#toggleRefresh').on('click', function(event) {
164 event.preventDefault();
165 processList.autoRefresh = !processList.autoRefresh;
166 processList.setRefreshLabel();
168 // Bind event handler for change in refresh rate
169 $('#id_refreshRate').on('change', function(event) {
170 processList.refreshInterval = $(this).val();
171 processList.refresh();
173 // Bind event handler for table header links
174 $('#tableprocesslist').on('click', 'thead a', function() {
175 processList.refreshUrl = $(this).attr('href');
180 * Unbind all event handlers before tearing down a page
182 AJAX.registerTeardown('server_status_processes.js', function() {
183 $('#tableprocesslist').off('click', 'a.kill_process');
184 $('a#toggleRefresh').off('click');
185 $('#id_refreshRate').off('change');
186 $('#tableprocesslist').off('click', 'thead a');
187 // stop refreshing further
188 processList.abortRefresh();