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 processList.refreshRequest = $.get(processList.refreshUrl, {
93 if (data.hasOwnProperty('success') && data.success) {
94 $newTable = $(data.message);
95 $('#tableprocesslist').html($newTable.html());
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 AJAX.registerOnload('server_status_processes.js', function() {
139 // Bind event handler for kill_process
140 $('#tableprocesslist').on(
143 processList.killProcessHandler
145 // Bind event handler for toggling refresh of process list
146 $('a#toggleRefresh').on('click', function(event) {
147 event.preventDefault();
148 processList.autoRefresh = !processList.autoRefresh;
149 processList.setRefreshLabel();
151 // Bind event handler for change in refresh rate
152 $('#id_refreshRate').on('change', function(event) {
153 processList.refreshInterval = $(this).val();
155 // Bind event handler for table header links
156 $('#tableprocesslist').on('click', 'thead a', function() {
157 processList.refreshUrl = $(this).attr('href');
162 * Unbind all event handlers before tearing down a page
164 AJAX.registerTeardown('server_status_processes.js', function() {
165 $('#tableprocesslist').off('click', 'a.kill_process');
166 $('a#toggleRefresh').off('click');
167 $('#id_refreshRate').off('change');
168 $('#tableprocesslist').off('click', 'thead a');
169 // stop refreshing further
170 processList.abortRefresh();