disks.html 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <div id="disk-list">
  2. <div class="ts-box ts-content disk-info">
  3. <div class="ts-grid mobile:is-stacked">
  4. <div class="column is-fluid">
  5. <div class="ts-item">
  6. <div class="ts-header">DiskName</div>
  7. <span>Size</span>
  8. <span>Status</span>
  9. </div>
  10. </div>
  11. <div class="column is-6-wide">
  12. <div class="ts-wrap is-middle-aligned">
  13. <div class="ts-gauge is-small is-circular">
  14. <div class="bar" style="--value: 38">
  15. <div class="text">38%</div>
  16. </div>
  17. </div>
  18. <div>
  19. <div class="ts-text is-bold">空間</div>
  20. 19.12 GB / 50 GB
  21. </div>
  22. </div>
  23. </div>
  24. </div>
  25. </div>
  26. </div>
  27. <script>
  28. function humanFileSize(size) {
  29. var i = size == 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024));
  30. return +((size / Math.pow(1024, i)).toFixed(1)) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i];
  31. }
  32. function loadDiskInfo(){
  33. $.get("./api/info/list", function(data){
  34. if (data) {
  35. var disks = data;
  36. var diskList = $("#disk-list");
  37. diskList.empty();
  38. for (var i = 0; i < disks.length; i++) {
  39. var disk = disks[i];
  40. $(diskList).append(`<div class="ts-box ts-content has-top-spaced-small disk-info">
  41. <div class="ts-grid mobile:is-stacked">
  42. <div class="column is-fluid">
  43. <div class="ts-item">
  44. <div class="ts-header">${disk.model}</div>
  45. <div class="ts-text is-description has-top-spaced-small">
  46. ${disk.identifier}
  47. </div>
  48. <span>/dev/${disk.name} (含 ${disk.partitions.length} 個分割區)</span>
  49. </div>
  50. </div>
  51. <div class="column is-6-wide">
  52. <div class="ts-wrap is-middle-aligned">
  53. <div class="ts-gauge is-small is-circular">
  54. <div class="bar" style="--value: ${parseInt(disk.used / disk.size * 100)}">
  55. <div class="text">${parseInt(disk.used / disk.size * 100)}%</div>
  56. </div>
  57. </div>
  58. <div>
  59. <div class="ts-text is-bold">已使用空間</div>
  60. ${humanFileSize(disk.used)} / ${humanFileSize(disk.size)}
  61. </div>
  62. </div>
  63. </div>
  64. </div>
  65. </div>`);
  66. }
  67. } else {
  68. console.error("Failed to load disk info: " + data.message);
  69. }
  70. });
  71. }
  72. loadDiskInfo();
  73. </script>