volumes.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { docker } from '../server.js';
  2. export const Volumes = async function(req, res) {
  3. let list = await docker.listVolumes({ all: true });
  4. let volumes = list.Volumes;
  5. let volume_list = `
  6. <thead>
  7. <tr>
  8. <th class="w-1"><input class="form-check-input m-0 align-middle" name="select" type="checkbox" aria-label="Select all" onclick="selectAll()"></th>
  9. <th><button class="table-sort" data-sort="sort-name">Name</button></th>
  10. <th><button class="table-sort" data-sort="sort-city">Mount point</button></th>
  11. <th><button class="table-sort" data-sort="sort-score">Status</button></th>
  12. <th><button class="table-sort" data-sort="sort-date">Created</button></th>
  13. <th><button class="table-sort" data-sort="sort-quantity">Size</button></th>
  14. <th><button class="table-sort" data-sort="sort-progress">Action</button></th>
  15. </tr>
  16. </thead>
  17. <tbody class="table-tbody">`
  18. for (let i = 0; i < volumes.length; i++) {
  19. let volume = volumes[i];
  20. let name = volume.Name;
  21. let mount = volume.Mountpoint;
  22. if (name.length > 40) {
  23. name = name.slice(0, 37) + '...';
  24. }
  25. if (mount.length > 70) {
  26. mount = mount.slice(0, 67) + '...';
  27. }
  28. // docker.df(volume.Mountpoint).then((data) => {
  29. // for (let key in data) {
  30. // console.log(data[key]);
  31. // }
  32. // });
  33. let details = `
  34. <tr>
  35. <td><input class="form-check-input m-0 align-middle" name="select" value="" type="checkbox" aria-label="Select"></td>
  36. <td class="sort-name">${name}</td>
  37. <td class="sort-city">${mount}</td>
  38. <td class="sort-score text-green">In use</td>
  39. <td class="sort-date" data-date="1628122643">${volume.CreatedAt}</td>
  40. <td class="sort-quantity">MB</td>
  41. <td class="text-end"><a class="btn" href="#">Details</a></td>
  42. </tr>`
  43. volume_list += details;
  44. }
  45. volume_list += `</tbody>`
  46. res.render("volumes", {
  47. name: req.session.user,
  48. role: req.session.role,
  49. avatar: req.session.avatar,
  50. volume_list: volume_list,
  51. volume_count: volumes.length
  52. });
  53. }