main.js 3.6 KB

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