You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.tmpl 6.5 kB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. {{template "base/head" .}}
  2. <div class="repository release dataset-list view">
  3. {{template "repo/header" .}}
  4. <div class="ui container">
  5. <div class="ui three column stackable grid">
  6. <div class="column">
  7. <h2>{{.i18n.Tr "repo.cloudbrain"}}</h2>
  8. </div>
  9. <div class="column">
  10. </div>
  11. <div class="column right aligned">
  12. {{if .Permission.CanWrite $.UnitTypeCloudBrain}}
  13. <a class="ui green button" href="{{.RepoLink}}/cloudbrain/create">{{.i18n.Tr "repo.cloudbrain.new"}}</a>
  14. {{end}}
  15. </div>
  16. </div>
  17. <div class="ui divider"></div>
  18. <div class="ui grid">
  19. <div class="row">
  20. <div class="ui sixteen wide column">
  21. <div class="ui sixteen wide column">
  22. <div class="ui two column stackable grid">
  23. <div class="column">
  24. </div>
  25. <div class="column right aligned">
  26. <div class="ui right dropdown type jump item">
  27. <span class="text">
  28. {{.i18n.Tr "repo.issues.filter_sort"}}<i class="dropdown icon"></i>
  29. </span>
  30. </div>
  31. </div>
  32. </div>
  33. </div>
  34. <div class="dataset list">
  35. {{range .Tasks}}
  36. <div class="ui grid item">
  37. <div class="row">
  38. <div class="five wide column">
  39. <a class="title" href="{{$.Link}}/{{.JobID}}">
  40. <span class="fitted">{{svg "octicon-tasklist" 16}}</span>
  41. <span class="fitted">{{.JobName}}</span>
  42. </a>
  43. </div>
  44. <div class="three wide column job-status" id="{{.JobID}}" data-repopath="{{$.RepoRelPath}}" data-jobid="{{.JobID}}">
  45. {{.Status}}
  46. </div>
  47. <div class="three wide column">
  48. <span class="ui text center">{{svg "octicon-flame" 16}} {{TimeSinceUnix .CreatedUnix $.Lang}}</span>
  49. </div>
  50. <div class="one wide column">
  51. <span class="ui text center clipboard">
  52. <a class="title" href="{{$.Link}}/{{.JobID}}">
  53. <span class="fitted">查看</span>
  54. </a>
  55. </span>
  56. </div>
  57. <div class="one wide column">
  58. <span class="ui text center clipboard">
  59. <a class="title" href="{{if not .CanDebug}}javascript:void(0){{else}}{{$.Link}}/{{.JobID}}/debug{{end}}" style="{{if not .CanDebug}}color:#CCCCCC{{end}}">
  60. <span class="fitted">调试</span>
  61. </a>
  62. </span>
  63. </div>
  64. <div class="one wide column">
  65. <span class="ui text center clipboard">
  66. <form id="stopForm-{{.JobID}}" action="{{if ne .Status "RUNNING"}}javascript:void(0){{else}}{{$.Link}}/{{.JobID}}/stop{{end}}" method="post">
  67. {{$.CsrfTokenHtml}}
  68. <a class="fitted" onclick="document.getElementById('stopForm-{{.JobID}}').submit();" style="{{if ne .Status "RUNNING"}}color:#CCCCCC{{end}}; font-size:16px; font-weight:bold">停止</a>
  69. </form>
  70. </span>
  71. </div>
  72. <!-- 打开弹窗按钮 -->
  73. <a class="imageBtn" style="{{if not .CanDebug}}color:#CCCCCC;cursor:pointer;pointer-events:none;{{end}}; font-size:16px; font-weight:bold" value="{{.CanDebug}}">提交镜像</a>
  74. <!-- 弹窗 -->
  75. <div id="imageModal" class="modal">
  76. <!-- 弹窗内容 -->
  77. <div class="modal-content">
  78. <span class="close">&times;</span>
  79. <form id="commitImageForm" action="{{$.Link}}/{{.JobID}}/commit_image" method="post">
  80. {{$.CsrfTokenHtml}}
  81. <p>提交任务镜像</p>
  82. <div class="ui divider"></div>
  83. <div class="inline required field dis">
  84. <label>镜像标签:</label>
  85. <input name="tag" id="image_tag" tabindex="3" autofocus required maxlength="255" style="width:75%">
  86. </div>
  87. <div class="inline required field" style="position:relative;height:180px;">
  88. <div style="height:20px;width:75px;">
  89. <label>镜像描述:</label>
  90. </div>
  91. <div style="position:absolute;left:75px;top:0;width:75%">
  92. <textarea name="description" rows="10" style="width:100%"></textarea>
  93. </div>
  94. </div>
  95. <div class="ui divider"></div>
  96. <div class="inline field">
  97. <label></label>
  98. <button class="ui green button">
  99. {{$.i18n.Tr "repo.cloudbrain.commit_image"}}
  100. </button>
  101. </div>
  102. </form>
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. {{end}}
  108. {{template "base/paginate" .}}
  109. </div>
  110. </div>
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. {{template "base/footer" .}}
  116. <script>
  117. $( document ).ready(function() {
  118. $( ".job-status" ).each(( index, job ) => {
  119. const jobID = job.dataset.jobid;
  120. const repoPath = job.dataset.repopath;
  121. if (job.textContent.trim() == 'STOPPED') {
  122. return
  123. }
  124. $.get( `/api/v1/repos/${repoPath}/cloudbrain/${jobID}`, ( data ) => {
  125. const jobID = data.JobID
  126. const status = data.JobStatus
  127. $('#'+ jobID).text(status)
  128. // console.log(data)
  129. }).fail(function(err) {
  130. console.log( err );
  131. });
  132. });
  133. });
  134. // 获取弹窗
  135. var modal = document.getElementById('imageModal');
  136. // 打开弹窗的按钮对象
  137. var btns = document.getElementsByClassName("imageBtn");
  138. // 获取 <span> 元素,用于关闭弹窗
  139. var spans = document.getElementsByClassName('close');
  140. // 点击按钮打开弹窗
  141. for(i=0;i<btns.length;i++){
  142. btns[i].onclick = function() {
  143. modal.style.display = "block";
  144. }
  145. }
  146. // 点击 <span> (x), 关闭弹窗
  147. for(i=0;i<spans.length;i++){
  148. spans[i].onclick = function() {
  149. modal.style.display = "none";
  150. }
  151. }
  152. // 在用户点击其他地方时,关闭弹窗
  153. window.onclick = function(event) {
  154. if (event.target == modal) {
  155. modal.style.display = "none";
  156. }
  157. }
  158. </script>
  159. <style>
  160. /* 弹窗 (background) */
  161. .modal {
  162. display: none; /* 默认隐藏 */
  163. position: fixed; /* 固定定位 */
  164. z-index: 1; /* 设置在顶层 */
  165. left: 0;
  166. top: 0;
  167. width: 100%;
  168. height: 100%;
  169. overflow: auto;
  170. background-color: rgb(0,0,0);
  171. background-color: rgba(0,0,0,0.4);
  172. }
  173. /* 弹窗内容 */
  174. .modal-content {
  175. background-color: #fefefe;
  176. margin: 15% auto;
  177. padding: 20px;
  178. border: 1px solid #888;
  179. width: 25%;
  180. }
  181. /* 关闭按钮 */
  182. .close {
  183. color: #aaa;
  184. float: right;
  185. font-size: 28px;
  186. font-weight: bold;
  187. }
  188. .close:hover,
  189. .close:focus {
  190. color: black;
  191. text-decoration: none;
  192. cursor: pointer;
  193. }
  194. .dis{
  195. margin-bottom:20px;
  196. }
  197. </style>