logs.ui.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. window.initComponent = function (instanceID)
  2. {
  3. toggleLoading('#logs-panel', true);
  4. const $picker = $('[name=component]').zui('picker');
  5. $picker.$.clear();
  6. $.getJSON($.createLink('instance', 'ajaxGetComponents', 'id=' + instanceID), function (items)
  7. {
  8. toggleLoading('#logs-panel', false);
  9. $picker.render({items: items});
  10. if (typeof (items) !== 'undefined')
  11. {
  12. $picker.$.setValue(items[0]);
  13. }
  14. });
  15. };
  16. window.changeComponent = function (instanceID, noLogsTip)
  17. {
  18. toggleLoading('#logs-panel', true);
  19. const $picker = $('[name=pod]').zui('picker');
  20. $picker.$.clear();
  21. const target = $.createLink('instance', 'ajaxGetPods', 'id=' + instanceID);
  22. let formData = {};
  23. formData.component = $('[name=component]').val();
  24. $.post(target, formData, function(items)
  25. {
  26. items = JSON.parse(items);
  27. $picker.render({items: items});
  28. if (typeof (items) !== 'undefined')
  29. {
  30. $picker.$.setValue(items[0]);
  31. }
  32. toggleLoading('#logs-panel', false);
  33. showLogs(instanceID, noLogsTip);
  34. startAutoRefreshLogs(instanceID, noLogsTip);
  35. });
  36. };
  37. window.showLogs = function (instanceID, noLogsTip)
  38. {
  39. const headerHeight = document.getElementById('logs-header').offsetHeight;
  40. document.getElementById('logs-content').style.height = `calc(100vh - ${headerHeight}px - 16px)`;
  41. const target = $.createLink('instance', 'showlogs', 'id=' + instanceID);
  42. let formData = {};
  43. formData.component = $('[name=component]').val();
  44. formData.pod = $('[name=pod]').val();
  45. formData.previous = $('[name=previous]:checked').val() === 'on' ? 1 : 0;
  46. $.post(target, formData, function (resp)
  47. {
  48. resp = JSON.parse(resp);
  49. $('#logs-content').removeClass('dtable-empty-tip flex');
  50. if (resp.code !== 200 || resp.data.length === 0)
  51. {
  52. $('#logs-content').html(noLogsTip);
  53. $('#logs-content').addClass('dtable-empty-tip flex');
  54. return;
  55. }
  56. $('#logs-content').html(resp.data.map(item => item.timestamp + ' ' + item.content).join('\n'));
  57. $('#logs-content')[0].scrollTop = $('#logs-content')[0].scrollHeight;
  58. });
  59. };
  60. let logsTimer = null;
  61. window.startAutoRefreshLogs = function (instanceID, noLogsTip) {
  62. if(logsTimer) clearInterval(logsTimer);
  63. logsTimer = setInterval(function() {
  64. showLogs(instanceID, noLogsTip);
  65. }, 5000);
  66. }
  67. window.toggleAutoRefresh = function(instanceID, noLogsTip) {
  68. const $toggleBtn = $('#autoRefreshBtn');
  69. if(logsTimer) {
  70. clearInterval(logsTimer);
  71. logsTimer = null;
  72. } else {
  73. startAutoRefreshLogs(instanceID, noLogsTip);
  74. }
  75. }