Merge pull request #431 from xmujay/0609_monitor
[phpmyadmin/aamir.git] / js / server_status_advisor.js
blob2aba1fb15de45f3adca28a0c5fe3cd8b653a34ef
1 /* vim: set expandtab sw=4 ts=4 sts=4: */
2 /**
3  * Server Status Advisor
4  *
5  * @package PhpMyAdmin
6  */
8 /**
9  * Unbind all event handlers before tearing down a page
10  */
11 AJAX.registerTeardown('server_status_advisor.js', function () {
12     $('a[href="#openAdvisorInstructions"]').unbind('click');
13     $('#statustabs_advisor').html('');
14     $('#advisorDialog').remove();
15     $('#instructionsDialog').remove();
16 });
18 AJAX.registerOnload('server_status_advisor.js', function () {
19     /**** Server config advisor ****/
20     var $dialog = $('<div />').attr('id', 'advisorDialog');
21     var $instructionsDialog = $('<div />')
22         .attr('id', 'instructionsDialog')
23         .html($('#advisorInstructionsDialog').html());
25     $('a[href="#openAdvisorInstructions"]').click(function () {
26         var dlgBtns = {};
27         dlgBtns[PMA_messages.strClose] = function () {
28             $(this).dialog('close');
29         };
30         $instructionsDialog.dialog({
31             title: PMA_messages.strAdvisorSystem,
32             width: 700,
33             buttons: dlgBtns
34         });
35     });
37     var $cnt = $('#statustabs_advisor');
38     var $tbody, $tr, str, even = true;
40     data = $.parseJSON($('#advisorData').text());
41     $cnt.html('');
43     if (data.parse.errors.length > 0) {
44         $cnt.append('<b>Rules file not well formed, following errors were found:</b><br />- ');
45         $cnt.append(data.parse.errors.join('<br/>- '));
46         $cnt.append('<p></p>');
47     }
49     if (data.run.errors.length > 0) {
50         $cnt.append('<b>Errors occured while executing rule expressions:</b><br />- ');
51         $cnt.append(data.run.errors.join('<br/>- '));
52         $cnt.append('<p></p>');
53     }
55     if (data.run.fired.length > 0) {
56         $cnt.append('<p><b>' + PMA_messages.strPerformanceIssues + '</b></p>');
57         $cnt.append('<table class="data" id="rulesFired" border="0"><thead><tr>' +
58                     '<th>' + PMA_messages.strIssuse + '</th><th>' + PMA_messages.strRecommendation +
59                     '</th></tr></thead><tbody></tbody></table>');
60         $tbody = $cnt.find('table#rulesFired');
62         var rc_stripped;
64         $.each(data.run.fired, function (key, value) {
65             // recommendation may contain links, don't show those in overview table (clicking on them redirects the user)
66             rc_stripped = $.trim($('<div>').html(value.recommendation).text());
67             $tbody.append($tr = $('<tr class="linkElem noclick ' + (even ? 'even' : 'odd') + '"><td>' +
68                                     value.issue + '</td><td>' + rc_stripped + ' </td></tr>'));
69             even = !even;
70             $tr.data('rule', value);
72             $tr.click(function () {
73                 var rule = $(this).data('rule');
74                 $dialog
75                 .dialog({title: PMA_messages.strRuleDetails})
76                 .html(
77                     '<p><b>' + PMA_messages.strIssuse + ':</b><br />' + rule.issue + '</p>' +
78                     '<p><b>' + PMA_messages.strRecommendation + ':</b><br />' + rule.recommendation + '</p>' +
79                     '<p><b>' + PMA_messages.strJustification + ':</b><br />' + rule.justification + '</p>' +
80                     '<p><b>' + PMA_messages.strFormula + ':</b><br />' + rule.formula + '</p>' +
81                     '<p><b>' + PMA_messages.strTest + ':</b><br />' + rule.test + '</p>'
82                 );
84                 var dlgBtns = {};
85                 dlgBtns[PMA_messages.strClose] = function () {
86                     $(this).dialog('close');
87                 };
89                 $dialog.dialog({ width: 600, buttons: dlgBtns });
90             });
91         });
92     }
93 });