images_import.htm 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <input type="text" class="cbi-input-text" name="isrc" placeholder="http://host/image.tar" id="isrc" />
  2. <input type="text" class="cbi-input-text" name="itag" placeholder="repository:tag" id="itag" />
  3. <div style="display: inline-block;">
  4. <input type="button"" class=" cbi-button cbi-button-add" id="btnimport" name="import" value="<%:Import%>" />
  5. <input type="file" id="file_import" style="visibility:hidden; position: absolute;top: 0px; left: 0px;" />
  6. </div>
  7. <script type="text/javascript">
  8. let btnImport = document.getElementById('btnimport')
  9. let valISrc = document.getElementById('isrc')
  10. let valITag = document.getElementById('itag')
  11. btnImport.onclick = function (e) {
  12. if (valISrc.value == "") {
  13. document.getElementById("file_import").click()
  14. return
  15. } else {
  16. let formData = new FormData()
  17. formData.append('src', valISrc.value)
  18. formData.append('tag', valITag.value)
  19. let xhr = new XMLHttpRequest()
  20. uci_confirm_docker()
  21. xhr.open("POST", "<%=luci.dispatcher.build_url('admin/docker/images_import')%>", true)
  22. xhr.onload = function () {
  23. location.reload()
  24. }
  25. xhr.send(formData)
  26. }
  27. }
  28. let fileimport = document.getElementById('file_import')
  29. fileimport.onchange = function (e) {
  30. let fileimport = document.getElementById('file_import')
  31. if (!fileimport.value) {
  32. return
  33. }
  34. let valITag = document.getElementById('itag')
  35. let fileName = fileimport.files[0].name
  36. let formData = new FormData()
  37. formData.append('upload-filename', fileName)
  38. formData.append('tag', valITag.value)
  39. formData.append('upload-archive', fileimport.files[0])
  40. let xhr = new XMLHttpRequest()
  41. uci_confirm_docker()
  42. xhr.open("POST", "<%=luci.dispatcher.build_url('admin/docker/images_import')%>", true)
  43. xhr.onload = function () {
  44. fileimport.value = ''
  45. location.reload()
  46. }
  47. xhr.send(formData)
  48. }
  49. let new_tag = function (image_id) {
  50. let new_tag = prompt("<%:New tag%>\n<%:Image%>" + "ID: " + image_id + "\n<%:Please input new tag%>:", "")
  51. if (new_tag) {
  52. (new XHR()).post("<%=luci.dispatcher.build_url('admin/docker/images_tag')%>",
  53. { id: image_id, tag: new_tag },
  54. function (r) {
  55. if (r.status == 201) {
  56. location.reload()
  57. }
  58. else {
  59. docker_status_message('warning', 'Image: untagging ' + tag + '...fail code:' + r.status + r.statusText);
  60. document.getElementById('docker_apply_overlay').addEventListener("click", (e)=>{
  61. docker_status_message()
  62. })
  63. }
  64. })
  65. }
  66. }
  67. let un_tag = function (tag) {
  68. if (tag.match("<none>")) return
  69. if (confirm("<%:Remove tag%>: " + tag + " ?")) {
  70. (new XHR()).post("<%=luci.dispatcher.build_url('admin/docker/images_untag')%>",
  71. { tag: tag },
  72. function (r) {
  73. if (r.status == 200) {
  74. location.reload()
  75. }
  76. else {
  77. docker_status_message('warning', 'Image: untagging ' + tag + '...fail code:' + r.status + r.statusText);
  78. document.getElementById('docker_apply_overlay').addEventListener("click", (e)=>{
  79. docker_status_message()
  80. })
  81. }
  82. })
  83. }
  84. }
  85. </script>