main.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. socket.on('connect', () => {
  2. console.log('connected');
  3. //clear localStorage (because of code in old versions)
  4. localStorage.clear();
  5. });
  6. // Server metrics
  7. const cpuText = document.getElementById('cpu-text');
  8. const cpuBar = document.getElementById('cpu-bar');
  9. const ramText = document.getElementById('ram-text');
  10. const ramBar = document.getElementById('ram-bar');
  11. const netText = document.getElementById('net-text');
  12. const netBar = document.getElementById('net-bar');
  13. const diskText = document.getElementById('disk-text');
  14. const diskBar = document.getElementById('disk-bar');
  15. // Container cards
  16. const dockerCards = document.getElementById('cards');
  17. // Container logs
  18. const logViewer = document.getElementById('logView');
  19. // Server metrics
  20. socket.on('metrics', (data) => {
  21. let [cpu, ram, tx, rx, disk] = data;
  22. cpuText.innerHTML = `<span>CPU ${cpu} %</span>`;
  23. if (cpu < 7 ) { cpu = 7; }
  24. cpuBar.innerHTML = `<span style="width: ${cpu}%"><span></span></span>`;
  25. ramText.innerHTML = `<span>RAM ${ram} %</span>`;
  26. if (ram < 7 ) { ram = 7; }
  27. ramBar.innerHTML = `<span style="width: ${ram}%"><span></span></span>`;
  28. tx = Math.round(tx / 1024 / 1024);
  29. rx = Math.round(rx / 1024 / 1024);
  30. netText.innerHTML = `<span>Down: ${rx}MB</span><span> Up: ${tx}MB</span>`;
  31. netBar.innerHTML = `<span style="width: 50%"><span></span></span>`;
  32. diskText.innerHTML = `<span>DISK ${disk} %</span>`;
  33. if (disk < 7 ) { disk = 7; }
  34. diskBar.innerHTML = `<span style="width: ${disk}%"><span></span></span>`;
  35. });
  36. // Container cards
  37. socket.on('containers', (data) => {
  38. let deleteMeElements = document.querySelectorAll('.deleteme');
  39. deleteMeElements.forEach((element) => {
  40. element.parentNode.removeChild(element);
  41. });
  42. dockerCards.insertAdjacentHTML("afterend", data);
  43. });
  44. function drawCharts(name, cpuArray, ramArray) {
  45. let element = document.querySelector(`${name}`);
  46. let chart = new ApexCharts(element, {
  47. chart: {
  48. type: "line",
  49. height: 40.0,
  50. sparkline: {
  51. enabled: true
  52. },
  53. animations: {
  54. enabled: false
  55. }
  56. },
  57. fill: {
  58. opacity: 1
  59. },
  60. stroke: {
  61. width: [2, 1],
  62. dashArray: [0, 3],
  63. lineCap: "round",
  64. curve: "smooth"
  65. },
  66. series: [{
  67. name: "CPU",
  68. data: cpuArray
  69. }, {
  70. name: "RAM",
  71. data: ramArray
  72. }],
  73. tooltip: {
  74. enabled: false
  75. },
  76. grid: {
  77. strokeDashArray: 4
  78. },
  79. xaxis: {
  80. labels: {
  81. padding: 0
  82. },
  83. tooltip: {
  84. enabled: false
  85. }
  86. },
  87. yaxis: {
  88. labels: {
  89. padding: 4
  90. }
  91. },
  92. colors: [tabler.getColor("primary"), tabler.getColor("gray-600")],
  93. legend: {
  94. show: false
  95. }
  96. })
  97. chart.render();
  98. }
  99. // Buttons functions
  100. function clicked(button) {
  101. socket.emit('clicked', {name: button.name, id: button.id, value: button.value});
  102. }
  103. socket.on('containerStats', (data) => {
  104. let containerStats = data;
  105. for (const [name, statsArray] of Object.entries(containerStats)) {
  106. let cpuArray = statsArray.cpuArray;
  107. let ramArray = statsArray.ramArray;
  108. let chart = document.getElementById(`${name}_chart`);
  109. if (chart) {
  110. chart.innerHTML = '';
  111. drawCharts(`#${name}_chart`, cpuArray, ramArray);
  112. } else {
  113. console.log(`Chart element with id ${name}_chart not found in the DOM`);
  114. }
  115. }
  116. });
  117. socket.on('logs', (data) => {
  118. logViewer.innerHTML = `<pre>${data}</pre>`;
  119. });