Translated using Weblate (Bulgarian)
[phpmyadmin.git] / js / server_status_processes.js
blob72b9bfbbf5c4102e64034d4b544f2aef955d117c
1 /* vim: set expandtab sw=4 ts=4 sts=4: */
2 /**
3  * Server Status Processes
4  *
5  * @package PhpMyAdmin
6  */
8 // object to store process list state information
9 var processList = {
11     // denotes whether auto refresh is on or off
12     autoRefresh: false,
13     // stores the GET request which refresh process list
14     refreshRequest: null,
15     // stores the timeout id returned by setTimeout
16     refreshTimeout: null,
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
21     refreshUrl: null,
23     /**
24      * Handles killing of a process
25      *
26      * @return void
27      */
28     init: function() {
29         processList.setRefreshLabel();
30         if (processList.refreshUrl === null) {
31             processList.refreshUrl = 'server_status_processes.php?' +
32                 PMA_commonParams.get('common_query');
33         }
34         if (processList.refreshInterval === null) {
35             processList.refreshInterval = $('#id_refreshRate').val();
36         } else {
37             $('#id_refreshRate').val(processList.refreshInterval);
38         }
39     },
41     /**
42      * Handles killing of a process
43      *
44      * @param object the event object
45      *
46      * @return void
47      */
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.
57                 $tr.remove();
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);
66             } else {
67                 // Show process error message
68                 PMA_ajaxShowMessage(data.error, false);
69             }
70         });
71     },
73     /**
74      * Handles Auto Refreshing
75      *
76      * @param object the event object
77      *
78      * @return void
79      */
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, {
90                 'ajax_request': true,
91                 'refresh': true
92             }, function(data) {
93                 if (data.hasOwnProperty('success') && data.success) {
94                     $newTable = $(data.message);
95                     $('#tableprocesslist').html($newTable.html());
96                 }
97                 processList.refreshTimeout = setTimeout(
98                     processList.refresh,
99                     interval
100                 );
101             });
102         }
103     },
105     /**
106      * Stop current request and clears timeout
107      *
108      * @return void
109      */
110     abortRefresh: function() {
111         if (processList.refreshRequest !== null) {
112             processList.refreshRequest.abort();
113             processList.refreshRequest = null;
114         }
115         clearTimeout(processList.refreshTimeout);
116     },
118     /**
119      * Set label of refresh button
120      * change between play & pause
121      *
122      * @return void
123      */
124     setRefreshLabel: function() {
125         var img = 'play.png';
126         var label = PMA_messages.strStartRefresh;
127         if (processList.autoRefresh) {
128             img = 'pause.png';
129             label = PMA_messages.strStopRefresh;
130             processList.refresh();
131         }
132         $('a#toggleRefresh').html(PMA_getImage(img) + escapeHtml(label));
133     }
136 AJAX.registerOnload('server_status_processes.js', function() {
138     processList.init();
139     // Bind event handler for kill_process
140     $('#tableprocesslist').on(
141         'click',
142         'a.kill_process',
143         processList.killProcessHandler
144     );
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();
150     });
151     // Bind event handler for change in refresh rate
152     $('#id_refreshRate').on('change', function(event) {
153         processList.refreshInterval = $(this).val();
154     });
155     // Bind event handler for table header links
156     $('#tableprocesslist').on('click', 'thead a', function() {
157         processList.refreshUrl = $(this).attr('href');
158     });
162  * Unbind all event handlers before tearing down a page
163  */
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();