server_status_advisor.js 3.5 KB

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