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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  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.cluster.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. {{if eq .Type 2}}
  218. 智算网络
  219. {{else}}
  220. 启智
  221. {{end}}
  222. {{.ComputeResource}}</span>
  223. </div>
  224. <div class="one wide column text center">
  225. {{if .User.Name}}
  226. <a href="{{AppSubUrl}}/{{.User.Name}}" title="{{.User.Name}}"><img
  227. class="ui avatar image" src="{{.User.RelAvatarLink}}"></a>
  228. {{else}}
  229. <a title="Ghost"><img class="ui avatar image"
  230. src="{{AppSubUrl}}/user/avatar/Ghost/-1"></a>
  231. {{end}}
  232. </div>
  233. <div class="five wide column text center">
  234. <div class="ui compact buttons">
  235. <!-- {{if and (ne .Status "WAITING") (ne .JobType "DEBUG")}}
  236. <a class="ui basic button" href="{{$.Link}}/{{.Cloudbrain.ID}}/rate" target="_blank">
  237. 评分
  238. </a>
  239. {{end}} -->
  240. <!-- 调试 -->
  241. <form id="debugAgainForm-{{.Cloudbrain.ID}}">
  242. {{$.CsrfTokenHtml}}
  243. {{if .CanDebug}}
  244. {{if eq .Status "RUNNING" "WAITING" "CREATING" "STARTING"}}
  245. <a style="margin: 0 1rem;" id="ai-debug-{{.Cloudbrain.ID}}"
  246. class='ui basic ai_debug {{if eq .Status "CREATING" "STOPPING" "WAITING" "STARTING"}}disabled {{else}}blue {{end}}button'
  247. data-jobid="{{.Cloudbrain.ID}}"
  248. data-repopath='{{$.RepoLink}}{{if eq .ComputeResource "CPU/GPU"}}/cloudbrain{{else}}/modelarts/notebook{{end}}/{{.Cloudbrain.ID}}/'>
  249. {{$.i18n.Tr "repo.debug"}}
  250. </a>
  251. {{else}}
  252. <a id="ai-debug-{{.Cloudbrain.ID}}"
  253. class='ui basic ai_debug {{if eq .Status "CREATING" "STOPPING" "WAITING" "STARTING"}} disabled {{else}}blue {{end}}button'
  254. data-jobid="{{.Cloudbrain.ID}}"
  255. data-repopath='{{$.RepoLink}}{{if eq .ComputeResource "CPU/GPU"}}/cloudbrain{{else}}/modelarts/notebook{{end}}/{{.Cloudbrain.ID}}/'
  256. data-linkpath='{{$.Link}}'>
  257. {{$.i18n.Tr "repo.debug_again"}}
  258. </a>
  259. {{end}}
  260. {{else}}
  261. {{if eq .Status "RUNNING" "WAITING" "CREATING" "STARTING"}}
  262. <a class="ui basic disabled button">
  263. {{$.i18n.Tr "repo.debug"}}
  264. </a>
  265. {{else}}
  266. <a class="ui basic disabled button">
  267. {{$.i18n.Tr "repo.debug_again"}}
  268. </a>
  269. {{end}}
  270. {{end}}
  271. </form>
  272. <!-- 停止 -->
  273. <form id="stopForm-{{.Cloudbrain.ID}}" style="margin-left:-1px;">
  274. {{$.CsrfTokenHtml}}
  275. {{if .CanDel}}
  276. <a id="ai-stop-{{.Cloudbrain.ID}}"
  277. class='ui basic ai_stop {{if eq .Status "STOPPED" "FAILED" "START_FAILED" "STOPPING" "CREATING" "STARTING" "SUCCEEDED" "CREATE_FAILED" "DELETED"}}disabled {{else}}blue {{end}}button'
  278. data-repopath="{{$.RepoLink}}{{if eq .ComputeResource "CPU/GPU"}}/cloudbrain{{else}}/modelarts/notebook{{end}}/{{.Cloudbrain.ID}}/stop"
  279. data-jobid="{{.Cloudbrain.ID}}">
  280. {{$.i18n.Tr "repo.stop"}}
  281. </a>
  282. {{else}}
  283. <a class="ui basic disabled button">
  284. {{$.i18n.Tr "repo.stop"}}
  285. </a>
  286. {{end}}
  287. </form>
  288. <!-- 删除 -->
  289. <form id="delForm-{{.Cloudbrain.ID}}"
  290. action="{{if eq .ComputeResource "CPU/GPU"}}{{$.RepoLink}}/cloudbrain{{else}}{{$.RepoLink}}/modelarts/notebook{{end}}/{{.Cloudbrain.ID}}/del"
  291. method="post">
  292. <input type="hidden" name="debugListType" value="{{$.ListType}}">
  293. {{$.CsrfTokenHtml}}
  294. {{if .CanDel}}
  295. <a id="ai-delete-{{.Cloudbrain.ID}}"
  296. class='ui basic ai_delete {{if eq .Status "STOPPED" "FAILED" "START_FAILED" "SUCCEEDED" "CREATE_FAILED" "DELETED"}}blue {{else}}disabled {{end}}button'
  297. style="border-radius: .28571429rem;">
  298. {{$.i18n.Tr "repo.delete"}}
  299. </a>
  300. {{else}}
  301. <a class="ui basic button disabled" style="border-radius: .28571429rem;">
  302. {{$.i18n.Tr "repo.delete"}}
  303. </a>
  304. {{end}}
  305. </form>
  306. </div>
  307. <div class="ui compact buttons"
  308. style="{{if eq .ComputeResource "CPU/GPU"}} visibility: visible {{else}} visibility: hidden{{end}}">
  309. <div class="ui dropdown" id="model_more"
  310. style="padding: .58928571em 1.125em .58928571em;">
  311. <div class="text">{{$.i18n.Tr "repo.more"}}</div>
  312. <i class="dropdown icon"></i>
  313. <div class="menu" style="right: auto;">
  314. <div class="item" style="padding: 0 !important;">
  315. {{if .CanDebug}}
  316. <a id="model-image-{{.Cloudbrain.ID}}"
  317. class='imageBtn ui basic {{if ne .Status "RUNNING"}}disabled {{else}}blue {{end}}button'
  318. target="_blank"
  319. href="{{$.RepoLink}}/cloudbrain/{{.Cloudbrain.ID}}/commit_image">{{$.i18n.Tr "repo.submit_image"}}</a>
  320. {{else}}
  321. <a
  322. class="imageBtn ui basic disabled button">{{$.i18n.Tr "repo.submit_image"}}</a>
  323. {{end}}
  324. </div>
  325. <div class="item" style="padding: 0 !important;">
  326. <!-- 模型下载 -->
  327. {{if .CanDebug}}
  328. <a class="ui basic blue button"
  329. href="{{$.RepoLink}}/cloudbrain/{{.Cloudbrain.ID}}/models"
  330. target="_blank">{{$.i18n.Tr "repo.download"}}</a>
  331. {{else}}
  332. <a
  333. class="ui basic disabled button">{{$.i18n.Tr "repo.download"}}</a>
  334. {{end}}
  335. </div>
  336. {{if and (ne .JobType "DEBUG") (eq .Cloudbrain.Type 0)}}
  337. <div class="item" style="padding: 0 !important;">
  338. <a class="ui basic blue button"
  339. href="{{$.RepoLink}}/cloudbrain/{{.Cloudbrain.ID}}/rate"
  340. target="_blank">
  341. 评分
  342. </a>
  343. </div>
  344. {{end}}
  345. </div>
  346. </div>
  347. </div>
  348. </div>
  349. <!-- 镜像列表弹窗 -->
  350. </div>
  351. </div>
  352. {{end}}
  353. <div id="app" style="margin-top: 2rem;">
  354. <div class="center">
  355. <el-pagination background @current-change="handleCurrentChange" :current-page="page"
  356. :page-sizes="[10]" :page-size="10" layout="total, sizes, prev, pager, next, jumper"
  357. :total="{{.Page.Paginater.Total}}">
  358. </el-pagination>
  359. </div>
  360. </div>
  361. </div>
  362. </div>
  363. </div>
  364. </div>
  365. {{end}}
  366. </div>
  367. </div>
  368. </div>
  369. </div>
  370. <!-- 确认模态框 -->
  371. <div id="deletemodel">
  372. <div class="ui basic modal">
  373. <div class="ui icon header">
  374. <i class="trash icon"></i> {{.i18n.Tr "cloudbrain.delete_task"}}
  375. </div>
  376. <div class="content">
  377. <p>{{.i18n.Tr "cloudbrain.task_delete_confirm"}}</p>
  378. </div>
  379. <div class="actions">
  380. <div class="ui red basic inverted cancel button">
  381. <i class="remove icon"></i> {{.i18n.Tr "cloudbrain.operate_cancel"}}
  382. </div>
  383. <div class="ui green basic inverted ok button">
  384. <i class="checkmark icon"></i> {{.i18n.Tr "cloudbrain.operate_confirm"}}
  385. </div>
  386. </div>
  387. </div>
  388. </div>
  389. <div class="ui mini modal debug-again">
  390. <div class="header">{{$.QueuesDetail}}</div>
  391. <div class="content">
  392. <p>1111</p>
  393. </div>
  394. <div class="actions">
  395. <div class="ui mini negative button">Cancel</div>
  396. <div class="ui mini positive button">OK</div>
  397. </div>
  398. </div>
  399. </div>
  400. {{template "base/footer" .}}
  401. <script>
  402. // 调试和评分新开窗口
  403. const { AppSubUrl, StaticUrlPrefix, csrf } = window.config;
  404. let url = {{.RepoLink }}
  405. let redirect_to = {{ $.Link }}
  406. let getParam = getQueryVariable('debugListType')
  407. let dropdownValue = ['all', '', false].includes(getParam) ? '{{$.i18n.Tr "repo.gpu_type_all"}}' : getParam
  408. // localStorage.setItem('all',location.href)
  409. function getQueryVariable(variable) {
  410. let query = window.location.search.substring(1);
  411. let vars = query.split("&");
  412. for (let i = 0; i < vars.length; i++) {
  413. let pair = vars[i].split("=");
  414. if (pair[0] == variable) { return pair[1]; }
  415. }
  416. return (false);
  417. }
  418. $(document).ready(function () {
  419. dropdownValue = dropdownValue === "CPU%2FGPU" ? 'CPU/GPU' : dropdownValue
  420. $('.default.text').text(dropdownValue)
  421. $('.ui.dropdown')
  422. .dropdown({
  423. action: 'hide',
  424. })
  425. $('.ui.selection.dropdown').dropdown({
  426. onChange: function (value) {
  427. location.href = `${url}/debugjob?debugListType=${value}`
  428. }
  429. })
  430. $('.message .close')
  431. .on('click', function () {
  432. $(this)
  433. .closest('.message')
  434. .transition('fade')
  435. })
  436. })
  437. </script>