diskspace.html 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <html>
  2. <head>
  3. <title>Disk Space</title>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0 user-scalable=no">
  6. <link rel="stylesheet" href="../../../script/semantic/semantic.min.css">
  7. <script type="text/javascript" src="../../../script/jquery.min.js"></script>
  8. <script type="text/javascript" src="../../../script/semantic/semantic.min.js"></script>
  9. <style>
  10. #diskInfo{
  11. padding-left:22px;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <button class="ui small button" onclick="toggleTmpfs();">Toggle tmpfs</button>
  17. <div id="diskInfo" class="ui feed">
  18. </div>
  19. <script>
  20. initDiskInfo();
  21. function initDiskInfo(){
  22. $("#diskInfo").html("");
  23. $.get("../../system/disk/space/list",function(data){
  24. if (data.error !== undefined){
  25. alert(data.error);
  26. }else{
  27. for (var i = 0; i < data.length; i++){
  28. var thisDev = data[i];
  29. var usedPercentage = parseInt(thisDev.Used / thisDev.Volume * 100);
  30. var color = "blue";
  31. if (usedPercentage >= 90){
  32. color = "red";
  33. }
  34. if (thisDev.Used == 0 && thisDev.Volume == 0){
  35. color = "black";
  36. console.log("Oops");
  37. usedPercentage = 100;
  38. }
  39. var tmpfs = "";
  40. var style = "";
  41. if (thisDev.Device == "tmpfs"){
  42. tmpfs = "tmpfs";
  43. style = "display:none;";
  44. }
  45. $("#diskInfo").append(`<div class="event ${tmpfs}" style="${style}">
  46. <div class="label">
  47. <img src="../disk/space/img/disk.svg">
  48. </div>
  49. <div class="content">
  50. <div class="summary">
  51. ${thisDev.MountPoint}
  52. <div class="date">
  53. (${thisDev.Device})
  54. </div>
  55. </div>
  56. <div class="extra text" style="width:100% !important;">
  57. <div class="ui small ${color} active progress">
  58. <div class="bar" style="width:${usedPercentage}%;"></div>
  59. <div class="label">Remaining: ${bytesToSize(thisDev.Available)} / ${bytesToSize(thisDev.Volume)}</div>
  60. </div>
  61. <p style="margin-top:-20px;">Used Space: ${thisDev.UsedPercentage}</p>
  62. </div>
  63. </div>
  64. </div>`);
  65. }
  66. }
  67. })
  68. }
  69. function bytesToSize(bytes) {
  70. var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
  71. if (bytes == 0) return '0 Byte';
  72. var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
  73. return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];
  74. }
  75. function toggleTmpfs(){
  76. $(".tmpfs").slideToggle();
  77. }
  78. </script>
  79. </body>
  80. </html>