page1.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. let cpuChart = null;
  2. let memChart = null;
  3. let diskChart = null;
  4. let sysStatusTimer = null;
  5. let resizeHandler = null;
  6. function getSystemInfo(){
  7. fetch("/api/system/info")
  8. .then(r=>{
  9. if(!r.ok) throw new Error("HTTP "+r.status);
  10. return r.json();
  11. })
  12. .then(d=>{
  13. cpuChart.setOption({
  14. graphic:[{
  15. type:"text",
  16. left:"center",
  17. top:"75%",
  18. style:{
  19. text:`${d.cpu_cores||"--"}核 ${d.cpu_freq||"--"}MHz`,
  20. fill:"#aaa",
  21. fontSize:15
  22. }
  23. }],
  24. series:[{data:[{value:d.cpu_usage}]}]
  25. });
  26. memChart.setOption({
  27. graphic:[{
  28. type:"text",
  29. left:"center",
  30. top:"75%",
  31. style:{
  32. text:`${d.mem_used||"--"} / ${d.mem_total||"--"}`,
  33. fill:"#aaa",
  34. fontSize:15
  35. }
  36. }],
  37. series:[{data:[{value:d.mem_percent}]}]
  38. });
  39. diskChart.setOption({
  40. title:{
  41. text:`${d.disk_percent}%`,
  42. subtext:`${d.disk_used||"--"} / ${d.disk_total||"--"}`,
  43. left:"center",
  44. top:"38%",
  45. textStyle:{
  46. fontSize:38,
  47. fontWeight:"bold"
  48. },
  49. subtextStyle:{
  50. fontSize:15
  51. }
  52. },
  53. series:[{
  54. data:[
  55. {value:d.disk_percent,name:"已使用"},
  56. {value:100-d.disk_percent,name:"剩余"}
  57. ]
  58. }]
  59. });
  60. })
  61. .catch(e=>console.error("system info failed:",e));
  62. }
  63. function gaugeOption(){
  64. return {
  65. series:[{
  66. type:"gauge",
  67. radius:"95%",
  68. center:["50%","55%"],
  69. min:0,
  70. max:100,
  71. startAngle:210,
  72. endAngle:-30,
  73. axisLine:{
  74. lineStyle:{
  75. width:22
  76. }
  77. },
  78. progress:{
  79. show:true,
  80. width:22
  81. },
  82. pointer:{show:false},
  83. axisTick:{show:false},
  84. splitLine:{show:false},
  85. axisLabel:{show:false},
  86. detail:{
  87. fontSize:42,
  88. fontWeight:"bold",
  89. offsetCenter:[0,"0%"],
  90. formatter:"{value}%"
  91. },
  92. title:{show:false},
  93. data:[{value:0}]
  94. }]
  95. };
  96. }
  97. function getLoadInfo(){
  98. fetch("/api/system/loadAverage")
  99. .then(async r => {
  100. if (!r.ok) {
  101. throw new Error("HTTP " + r.status);
  102. }
  103. return r.json();
  104. })
  105. .then(data => {
  106. document.getElementById("load1m").textContent = data.load1m || "--";
  107. document.getElementById("load5m").textContent = data.load5m || "--";
  108. document.getElementById("load15m").textContent = data.load15m || "--";
  109. })
  110. .catch(e => {
  111. console.error("network status failed:", e);
  112. document.getElementById("load1m").textContent = "--";
  113. document.getElementById("load5m").textContent = "--";
  114. document.getElementById("load15m").textContent = "--";
  115. });
  116. }
  117. function getServiceInfo(){
  118. fetch("/api/system/serviceStatus")
  119. .then(r => {
  120. if (!r.ok) {
  121. throw new Error("HTTP " + r.status);
  122. }
  123. return r.json();
  124. })
  125. .then(data => {
  126. document.getElementById("var1").textContent = data.var1 || "--";
  127. document.getElementById("var2").textContent = data.var2 || "--";
  128. document.getElementById("var3").textContent = data.var3 || "--";
  129. document.getElementById("var4").textContent = data.var4 || "--";
  130. document.getElementById("var5").textContent = data.var5 || "--";
  131. document.getElementById("var6").textContent = data.var6 || "--";
  132. document.getElementById("var7").textContent = data.var7 || "--";
  133. document.getElementById("var8").textContent = data.var8 || "--";
  134. document.getElementById("var11").textContent = data.var11 || "--";
  135. document.getElementById("var22").textContent = data.var22 || "--";
  136. document.getElementById("var33").textContent = data.var33 || "--";
  137. document.getElementById("var44").textContent = data.var44 || "--";
  138. document.getElementById("var55").textContent = data.var55 || "--";
  139. document.getElementById("var66").textContent = data.var66 || "--";
  140. document.getElementById("var77").textContent = data.var77 || "--";
  141. document.getElementById("var88").textContent = data.var88 || "--";
  142. })
  143. .catch(e => {
  144. console.error("getAllServiceStatus status failed:", e);
  145. document.getElementById("var1").textContent = "--";
  146. document.getElementById("var2").textContent = "--";
  147. document.getElementById("var3").textContent = "--";
  148. document.getElementById("var4").textContent = "--";
  149. document.getElementById("var5").textContent = "--";
  150. document.getElementById("var6").textContent = "--";
  151. document.getElementById("var7").textContent = "--";
  152. document.getElementById("var8").textContent = "--";
  153. document.getElementById("var11").textContent = "--";
  154. document.getElementById("var22").textContent = "--";
  155. document.getElementById("var33").textContent = "--";
  156. document.getElementById("var44").textContent = "--";
  157. document.getElementById("var55").textContent = "--";
  158. document.getElementById("var66").textContent = "--";
  159. document.getElementById("var77").textContent = "--";
  160. document.getElementById("var88").textContent = "--";
  161. });
  162. }
  163. function startSysStatusRefresh(){
  164. if(sysStatusTimer) return;
  165. getSystemInfo();
  166. getLoadInfo();
  167. getServiceInfo();
  168. sysStatusTimer = setInterval(() => {
  169. getSystemInfo();
  170. getLoadInfo();
  171. getServiceInfo();
  172. }, 3000);
  173. }
  174. function stopSysStatusRefresh(){
  175. if(sysStatusTimer){
  176. clearInterval(sysStatusTimer);
  177. sysStatusTimer=null;
  178. }
  179. }
  180. function resizeSysCharts(){
  181. cpuChart?.resize();
  182. memChart?.resize();
  183. diskChart?.resize();
  184. }
  185. function initPage1(){
  186. cpuChart=echarts.init(document.getElementById("cpu-chart"));
  187. memChart=echarts.init(document.getElementById("mem-chart"));
  188. diskChart=echarts.init(document.getElementById("disk-chart"));
  189. cpuChart.setOption(gaugeOption());
  190. memChart.setOption(gaugeOption());
  191. diskChart.setOption({
  192. title:{
  193. text:"0%",
  194. subtext:"-- / --",
  195. left:"center",
  196. top:"38%",
  197. textStyle:{
  198. fontSize:38,
  199. fontWeight:"bold"
  200. },
  201. subtextStyle:{
  202. fontSize:15
  203. }
  204. },
  205. series:[{
  206. type:"pie",
  207. radius:["65%","85%"],
  208. label:{show:false},
  209. data:[
  210. {value:0,name:"已使用"},
  211. {value:100,name:"剩余"}
  212. ]
  213. }]
  214. });
  215. startSysStatusRefresh();
  216. resizeHandler = resizeSysCharts;
  217. window.addEventListener(
  218. "resize",
  219. resizeHandler
  220. );
  221. setTimeout(()=>{
  222. resizeSysCharts();
  223. },100);
  224. }
  225. function exitPage1(){
  226. stopSysStatusRefresh();
  227. if(resizeHandler){
  228. window.removeEventListener(
  229. "resize",
  230. resizeHandler
  231. );
  232. resizeHandler=null;
  233. }
  234. cpuChart?.dispose();
  235. memChart?.dispose();
  236. diskChart?.dispose();
  237. cpuChart=null;
  238. memChart=null;
  239. diskChart=null;
  240. }