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 23 kB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. <!-- 头部导航栏 -->
  2. {{template "base/head" .}}
  3. <style>
  4. .label_after::after {
  5. margin: -.2em 0 0 .2em;
  6. content: '\00a0';
  7. }
  8. .selectcloudbrain .active.item {
  9. color: #0087f5 !important;
  10. border: 1px solid #0087f5;
  11. margin: -1px;
  12. background: #FFF !important;
  13. }
  14. #deletemodel {
  15. width: 100%;
  16. height: 100%;
  17. }
  18. /* 消息框 */
  19. .alert {
  20. display: none;
  21. position: fixed;
  22. width: 100%;
  23. z-index: 1001;
  24. padding: 15px;
  25. border: 1px solid transparent;
  26. border-radius: 4px;
  27. text-align: center;
  28. font-weight: bold;
  29. }
  30. .alert-success {
  31. color: #3c763d;
  32. background-color: #dff0d8;
  33. border-color: #d6e9c6;
  34. }
  35. .alert-info {
  36. color: #31708f;
  37. background-color: #d9edf7;
  38. border-color: #bce8f1;
  39. }
  40. .alert-warning {
  41. color: #8a6d3b;
  42. background-color: #fcf8e3;
  43. border-color: #faebcc;
  44. }
  45. .alert-danger {
  46. color: #a94442;
  47. background-color: #f2dede;
  48. border-color: #ebccd1;
  49. }
  50. .pusher {
  51. width: calc(100% - 260px);
  52. box-sizing: border-box;
  53. }
  54. /* 弹窗 (background) */
  55. #imageModal {
  56. display: none;
  57. position: fixed;
  58. z-index: 1;
  59. left: 0;
  60. top: 0;
  61. width: 100%;
  62. height: 100%;
  63. overflow: auto;
  64. background-color: rgb(0, 0, 0);
  65. background-color: rgba(0, 0, 0, 0.4);
  66. }
  67. /* 弹窗内容 */
  68. .modal-content {
  69. background-color: #fefefe;
  70. margin: 15% auto;
  71. padding: 20px;
  72. border: 1px solid #888;
  73. width: 30%;
  74. }
  75. /* 关闭按钮 */
  76. .close {
  77. color: #aaa;
  78. float: right;
  79. font-size: 28px;
  80. font-weight: bold;
  81. }
  82. .close:hover,
  83. .close:focus {
  84. color: black;
  85. text-decoration: none;
  86. cursor: pointer;
  87. }
  88. .dis {
  89. margin-bottom: 20px;
  90. }
  91. .disabled {
  92. cursor: pointer;
  93. pointer-events: none;
  94. }
  95. .time-show {
  96. font-size: 10px;
  97. margin-top: 0.4rem;
  98. display: inline-block;
  99. }
  100. </style>
  101. <div class="alert"></div>
  102. <div class="repository release dataset-list view">
  103. {{template "repo/header" .}}
  104. {{template "base/alert" .}}
  105. <!-- 提示框 -->
  106. <div class="cloudbrain_debug" style="display: none;" data-debug="{{$.i18n.Tr "repo.debug"}}"
  107. data-debug-again="{{$.i18n.Tr "repo.debug_again"}}"></div>
  108. <!-- 列表容器 -->
  109. <div class="ui container">
  110. <div class="ui two column stackable grid">
  111. <div class="column">
  112. <div class="ui blue small menu compact selectcloudbrain">
  113. <a class="active item"
  114. href="{{.RepoLink}}/debugjob?debugListType=all">{{$.i18n.Tr "repo.modelarts.notebook"}}</a>
  115. <a class="item"
  116. href="{{.RepoLink}}/modelarts/train-job?listType=all">{{$.i18n.Tr "repo.modelarts.train_job"}}</a>
  117. <a class="item"
  118. href="{{.RepoLink}}/modelarts/inference-job">{{$.i18n.Tr "repo.modelarts.infer_job"}}</a>
  119. <a class="item"
  120. href="{{.RepoLink}}/cloudbrain/benchmark">{{$.i18n.Tr "repo.modelarts.evaluate_job"}}</a>
  121. </div>
  122. </div>
  123. <div class="column right aligned">
  124. <div class="ui selection dropdown"
  125. style="min-width: 10em;min-height:2.6em;border-radius: .28571429rem;margin-right: 1em;padding: .67em 3.2em .7em 1em;">
  126. {{svg "octicon-server" 16}}
  127. <div class="default text" style="color: rgba(0,0,0,.87);"></div>
  128. <i class="dropdown icon"></i>
  129. <div class="menu">
  130. <div class="item" data-value="all">{{$.i18n.Tr "repo.gpu_type_all"}}</div>
  131. <div class="item" data-value="CPU/GPU">CPU/GPU</div>
  132. <div class="item" data-value="NPU">NPU</div>
  133. </div>
  134. </div>
  135. {{if .Permission.CanWrite $.UnitTypeCloudBrain}}
  136. <a class="ui green button"
  137. href="{{.RepoLink}}/cloudbrain/create">{{$.i18n.Tr "repo.modelarts.train_job.new_debug"}}</a>
  138. {{else}}
  139. <a class="ui disabled button">{{$.i18n.Tr "repo.modelarts.train_job.new_debug"}}</a>
  140. {{end}}
  141. </div>
  142. </div>
  143. {{if eq 0 (len .Tasks)}}
  144. <div class="ui placeholder segment bgtask-none">
  145. <div class="ui icon header bgtask-header-pic"></div>
  146. <div class="bgtask-content-header">{{$.i18n.Tr "repo.debug_task_not_created"}}</div>
  147. <div class="bgtask-content">
  148. {{if $.RepoIsEmpty}}
  149. <div class="bgtask-content-txt">{{$.i18n.Tr "repo.repo_not_initialized" .RepoLink | Safe}}</div>
  150. {{end}}
  151. <div class="bgtask-content-txt">{{$.i18n.Tr "repo.debug_task_running_limit"}}</div>
  152. <div class="bgtask-content-txt">{{$.i18n.Tr "repo.dataset_desc"}}</div>
  153. <div class="bgtask-content-txt">{{$.i18n.Tr "repo.platform_instructions" | Safe}}</div>
  154. </div>
  155. </div>
  156. {{else}}
  157. <!-- 中下列表展示区 -->
  158. <div class="ui grid">
  159. <div class="row">
  160. <div class="ui sixteen wide column">
  161. <!-- 任务展示 -->
  162. <!-- 表头 -->
  163. <div class="dataset list">
  164. <div class="ui grid stackable" style="background: #f0f0f0;;">
  165. <div class="row">
  166. <div class="four wide column">
  167. <span style="margin:0 6px">{{$.i18n.Tr "repo.cloudbrain_task"}}</span>
  168. </div>
  169. <div class="two wide column text center">
  170. <span style="margin:0 6px">{{$.i18n.Tr "repo.modelarts.status"}}</span>
  171. </div>
  172. <div class="two wide column text center">
  173. <span>{{$.i18n.Tr "repo.modelarts.createtime"}}</span>
  174. </div>
  175. <div class="two wide column text center">
  176. <span>{{$.i18n.Tr "repo.modelarts.computing_resources"}}</span>
  177. </div>
  178. <div class="one wide column text center">
  179. <span>{{$.i18n.Tr "repo.cloudbrain_creator"}}</span>
  180. </div>
  181. <div class="five wide column text center">
  182. <span>{{$.i18n.Tr "repo.cloudbrain_operate"}}</span>
  183. </div>
  184. </div>
  185. </div>
  186. {{range .Tasks}}
  187. <div class="ui grid stackable item">
  188. <div class="row">
  189. <!-- 任务名 -->
  190. <div class="four wide column">
  191. <a class="title"
  192. href='{{if eq .ComputeResource "CPU/GPU"}}{{$.RepoLink}}/cloudbrain/{{.Cloudbrain.ID}}{{else}}{{$.RepoLink}}/modelarts/notebook/{{.Cloudbrain.ID}}{{end}}'
  193. title="{{.DisplayJobName}}" style="font-size: 14px;">
  194. <span class="fitted text_over"
  195. style="width: 90%;vertical-align: middle;">{{.DisplayJobName}}</span>
  196. </a>
  197. </div>
  198. <div class="two wide column text center">
  199. <!--任务状态 -->
  200. <span class="job-status" id="{{.Cloudbrain.ID}}"
  201. data-repopath="{{$.RepoRelPath}}{{if eq .ComputeResource "CPU/GPU"}}/cloudbrain{{else}}/modelarts/notebook{{end}}"
  202. data-jobid="{{.Cloudbrain.ID}}" data-resource="{{.ComputeResource}}">
  203. <span><i id="{{.Cloudbrain.ID}}-icon" style="vertical-align: middle;"
  204. class="{{.Status}}"></i><span id="{{.Cloudbrain.ID}}-text"
  205. style="margin-left: 0.4em;font-size: 12px;">{{.Status}}</span></span>
  206. </span>
  207. </div>
  208. <div class="two wide column text center">
  209. <!-- 任务创建时间 -->
  210. <span style="font-size: 12px;margin-left: 0.4rem;"
  211. class="">{{TimeSinceUnix .Cloudbrain.CreatedUnix $.Lang}}</span>
  212. </div>
  213. <div class="two wide column text center">
  214. <!-- 任务计算资源 -->
  215. <span style="font-size: 12px;margin-left: 0.4rem;"
  216. class="">
  217. {{.ComputeResource}}</span>
  218. </div>
  219. <div class="one wide column text center">
  220. {{if .User.Name}}
  221. <a href="{{AppSubUrl}}/{{.User.Name}}" title="{{.User.Name}}"><img
  222. class="ui avatar image" src="{{.User.RelAvatarLink}}"></a>
  223. {{else}}
  224. <a title="Ghost"><img class="ui avatar image"
  225. src="{{AppSubUrl}}/user/avatar/Ghost/-1"></a>
  226. {{end}}
  227. </div>
  228. <div class="five wide column text center">
  229. <div class="ui compact buttons">
  230. <!-- {{if and (ne .Status "WAITING") (ne .JobType "DEBUG")}}
  231. <a class="ui basic button" href="{{$.Link}}/{{.Cloudbrain.ID}}/rate" target="_blank">
  232. 评分
  233. </a>
  234. {{end}} -->
  235. <!-- 调试 -->
  236. <form id="debugAgainForm-{{.Cloudbrain.ID}}">
  237. {{$.CsrfTokenHtml}}
  238. {{if .CanDebug}}
  239. {{if eq .Status "RUNNING" "WAITING" "CREATING" "STARTING"}}
  240. <a style="margin: 0 1rem;" id="ai-debug-{{.Cloudbrain.ID}}"
  241. class='ui basic ai_debug {{if eq .Status "CREATING" "STOPPING" "WAITING" "STARTING"}}disabled {{else}}blue {{end}}button'
  242. data-jobid="{{.Cloudbrain.ID}}"
  243. data-repopath='{{$.RepoLink}}{{if eq .ComputeResource "CPU/GPU"}}/cloudbrain{{else}}/modelarts/notebook{{end}}/{{.Cloudbrain.ID}}/'>
  244. {{$.i18n.Tr "repo.debug"}}
  245. </a>
  246. {{else}}
  247. <a id="ai-debug-{{.Cloudbrain.ID}}"
  248. class='ui basic ai_debug {{if eq .Status "CREATING" "STOPPING" "WAITING" "STARTING"}} disabled {{else}}blue {{end}}button'
  249. data-jobid="{{.Cloudbrain.ID}}"
  250. data-repopath='{{$.RepoLink}}{{if eq .ComputeResource "CPU/GPU"}}/cloudbrain{{else}}/modelarts/notebook{{end}}/{{.Cloudbrain.ID}}/'
  251. data-linkpath='{{$.Link}}'>
  252. {{$.i18n.Tr "repo.debug_again"}}
  253. </a>
  254. {{end}}
  255. {{else}}
  256. {{if eq .Status "RUNNING" "WAITING" "CREATING" "STARTING"}}
  257. <a class="ui basic disabled button">
  258. {{$.i18n.Tr "repo.debug"}}
  259. </a>
  260. {{else}}
  261. <a class="ui basic disabled button">
  262. {{$.i18n.Tr "repo.debug_again"}}
  263. </a>
  264. {{end}}
  265. {{end}}
  266. </form>
  267. <!-- 停止 -->
  268. <form id="stopForm-{{.Cloudbrain.ID}}" style="margin-left:-1px;">
  269. {{$.CsrfTokenHtml}}
  270. {{if .CanDel}}
  271. <a id="ai-stop-{{.Cloudbrain.ID}}"
  272. class='ui basic ai_stop {{if eq .Status "STOPPED" "FAILED" "START_FAILED" "STOPPING" "CREATING" "STARTING" "SUCCEEDED" "CREATE_FAILED" "DELETED"}}disabled {{else}}blue {{end}}button'
  273. data-repopath="{{$.RepoLink}}{{if eq .ComputeResource "CPU/GPU"}}/cloudbrain{{else}}/modelarts/notebook{{end}}/{{.Cloudbrain.ID}}/stop"
  274. data-jobid="{{.Cloudbrain.ID}}">
  275. {{$.i18n.Tr "repo.stop"}}
  276. </a>
  277. {{else}}
  278. <a class="ui basic disabled button">
  279. {{$.i18n.Tr "repo.stop"}}
  280. </a>
  281. {{end}}
  282. </form>
  283. <!-- 删除 -->
  284. <form id="delForm-{{.Cloudbrain.ID}}"
  285. action="{{if eq .ComputeResource "CPU/GPU"}}{{$.RepoLink}}/cloudbrain{{else}}{{$.RepoLink}}/modelarts/notebook{{end}}/{{.Cloudbrain.ID}}/del"
  286. method="post">
  287. <input type="hidden" name="debugListType" value="{{$.ListType}}">
  288. {{$.CsrfTokenHtml}}
  289. {{if .CanDel}}
  290. <a id="ai-delete-{{.Cloudbrain.ID}}"
  291. class='ui basic ai_delete {{if eq .Status "STOPPED" "FAILED" "START_FAILED" "SUCCEEDED" "CREATE_FAILED" "DELETED"}}blue {{else}}disabled {{end}}button'
  292. style="border-radius: .28571429rem;">
  293. {{$.i18n.Tr "repo.delete"}}
  294. </a>
  295. {{else}}
  296. <a class="ui basic button disabled" style="border-radius: .28571429rem;">
  297. {{$.i18n.Tr "repo.delete"}}
  298. </a>
  299. {{end}}
  300. </form>
  301. </div>
  302. <div class="ui compact buttons"
  303. style="{{if eq .ComputeResource "CPU/GPU"}} visibility: visible {{else}} visibility: hidden{{end}}">
  304. <div class="ui dropdown" id="model_more"
  305. style="padding: .58928571em 1.125em .58928571em;">
  306. <div class="text">{{$.i18n.Tr "repo.more"}}</div>
  307. <i class="dropdown icon"></i>
  308. <div class="menu" style="right: auto;">
  309. <div class="item" style="padding: 0 !important;">
  310. {{if .CanDebug}}
  311. <a id="model-image-{{.Cloudbrain.ID}}"
  312. class='imageBtn ui basic {{if ne .Status "RUNNING"}}disabled {{else}}blue {{end}}button'
  313. target="_blank"
  314. href="{{$.RepoLink}}/cloudbrain/{{.Cloudbrain.ID}}/commit_image">{{$.i18n.Tr "repo.submit_image"}}</a>
  315. {{else}}
  316. <a
  317. class="imageBtn ui basic disabled button">{{$.i18n.Tr "repo.submit_image"}}</a>
  318. {{end}}
  319. </div>
  320. <div class="item" style="padding: 0 !important;">
  321. <!-- 模型下载 -->
  322. {{if .CanDebug}}
  323. <a class="ui basic blue button"
  324. href="{{$.RepoLink}}/cloudbrain/{{.Cloudbrain.ID}}/models"
  325. target="_blank">{{$.i18n.Tr "repo.download"}}</a>
  326. {{else}}
  327. <a
  328. class="ui basic disabled button">{{$.i18n.Tr "repo.download"}}</a>
  329. {{end}}
  330. </div>
  331. {{if and (ne .JobType "DEBUG") (eq .Cloudbrain.Type 0)}}
  332. <div class="item" style="padding: 0 !important;">
  333. <a class="ui basic blue button"
  334. href="{{$.RepoLink}}/cloudbrain/{{.Cloudbrain.ID}}/rate"
  335. target="_blank">
  336. 评分
  337. </a>
  338. </div>
  339. {{end}}
  340. </div>
  341. </div>
  342. </div>
  343. </div>
  344. <!-- 镜像列表弹窗 -->
  345. </div>
  346. </div>
  347. {{end}}
  348. <div id="app" style="margin-top: 2rem;">
  349. <div class="center">
  350. <el-pagination background @current-change="handleCurrentChange" :current-page="page"
  351. :page-sizes="[10]" :page-size="10" layout="total, sizes, prev, pager, next, jumper"
  352. :total="{{.Page.Paginater.Total}}">
  353. </el-pagination>
  354. </div>
  355. </div>
  356. </div>
  357. </div>
  358. </div>
  359. </div>
  360. {{end}}
  361. </div>
  362. </div>
  363. </div>
  364. </div>
  365. <!-- 确认模态框 -->
  366. <div id="deletemodel">
  367. <div class="ui basic modal">
  368. <div class="ui icon header">
  369. <i class="trash icon"></i> {{.i18n.Tr "cloudbrain.delete_task"}}
  370. </div>
  371. <div class="content">
  372. <p>{{.i18n.Tr "cloudbrain.task_delete_confirm"}}</p>
  373. </div>
  374. <div class="actions">
  375. <div class="ui red basic inverted cancel button">
  376. <i class="remove icon"></i> {{.i18n.Tr "cloudbrain.operate_cancel"}}
  377. </div>
  378. <div class="ui green basic inverted ok button">
  379. <i class="checkmark icon"></i> {{.i18n.Tr "cloudbrain.operate_confirm"}}
  380. </div>
  381. </div>
  382. </div>
  383. </div>
  384. <div class="ui mini modal debug-again">
  385. <div class="header">{{$.QueuesDetail}}</div>
  386. <div class="content">
  387. <p>1111</p>
  388. </div>
  389. <div class="actions">
  390. <div class="ui mini negative button">Cancel</div>
  391. <div class="ui mini positive button">OK</div>
  392. </div>
  393. </div>
  394. </div>
  395. {{template "base/footer" .}}
  396. <script>
  397. // 调试和评分新开窗口
  398. const { AppSubUrl, StaticUrlPrefix, csrf } = window.config;
  399. let url = {{.RepoLink }}
  400. let redirect_to = {{ $.Link }}
  401. let getParam = getQueryVariable('debugListType')
  402. let dropdownValue = ['all', '', false].includes(getParam) ? '{{$.i18n.Tr "repo.gpu_type_all"}}' : getParam
  403. // localStorage.setItem('all',location.href)
  404. function getQueryVariable(variable) {
  405. let query = window.location.search.substring(1);
  406. let vars = query.split("&");
  407. for (let i = 0; i < vars.length; i++) {
  408. let pair = vars[i].split("=");
  409. if (pair[0] == variable) { return pair[1]; }
  410. }
  411. return (false);
  412. }
  413. $(document).ready(function () {
  414. dropdownValue = dropdownValue === "CPU%2FGPU" ? 'CPU/GPU' : dropdownValue
  415. $('.default.text').text(dropdownValue)
  416. $('.ui.dropdown')
  417. .dropdown({
  418. action: 'hide',
  419. })
  420. $('.ui.selection.dropdown').dropdown({
  421. onChange: function (value) {
  422. location.href = `${url}/debugjob?debugListType=${value}`
  423. }
  424. })
  425. $('.message .close')
  426. .on('click', function () {
  427. $(this)
  428. .closest('.message')
  429. .transition('fade')
  430. })
  431. })
  432. </script>