images.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { docker } from '../server.js';
  2. export const Images = async function(req, res) {
  3. let images = await docker.listImages({ all: true });
  4. let image_list = `
  5. <thead>
  6. <tr>
  7. <th class="w-1"><input class="form-check-input m-0 align-middle" name="select" type="checkbox" aria-label="Select all" onclick="selectAll()"></th>
  8. <th><button class="table-sort" data-sort="sort-name">Name</button></th>
  9. <th><button class="table-sort" data-sort="sort-city">ID</button></th>
  10. <th><button class="table-sort" data-sort="sort-type">Tag</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 < images.length; i++) {
  19. let date = new Date(images[i].Created * 1000);
  20. let created = date.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' });
  21. let size = images[i].Size / 1000 / 1000; // to match docker desktop
  22. size = size.toFixed(2);
  23. let details = `
  24. <tr>
  25. <td><input class="form-check-input m-0 align-middle" name="select" value="" type="checkbox" aria-label="Select"></td>
  26. <td class="sort-name">${images[i].RepoTags}</td>
  27. <td class="sort-city">${images[i].Id}</td>
  28. <td class="sort-type">Latest</td>
  29. <td class="sort-score text-green">In use</td>
  30. <td class="sort-date" data-date="1628122643">${created}</td>
  31. <td class="sort-quantity">${size} MB</td>
  32. <td class="text-end"><a class="btn" href="#">Details</a></td>
  33. </tr>`
  34. image_list += details;
  35. }
  36. image_list += `</tbody>`
  37. res.render("images", {
  38. name: req.session.user,
  39. role: req.session.role,
  40. avatar: req.session.avatar,
  41. image_list: image_list,
  42. image_count: images.length
  43. });
  44. }