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 11 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
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. <!-- 头部导航栏 -->
  2. {{template "base/head" .}}
  3. <style>
  4. .width70{
  5. width: 70% !important;
  6. }
  7. .width83{
  8. width: 83% !important;
  9. }
  10. .content-padding{
  11. padding: 40px !important;
  12. }
  13. </style>
  14. <!-- 弹窗 -->
  15. <div id="mask">
  16. <div id="loadingPage">
  17. <div class="rect1"></div>
  18. <div class="rect2"></div>
  19. <div class="rect3"></div>
  20. <div class="rect4"></div>
  21. <div class="rect5"></div>
  22. </div>
  23. </div>
  24. {{$repository := .Repository.ID}}
  25. <!-- 提示框 -->
  26. <div class="alert"></div>
  27. <div class="repository release dataset-list view">
  28. {{template "repo/header" .}}
  29. <!-- 列表容器 -->
  30. <div class="ui container active loader" id="loadContainer">
  31. {{template "base/alert" .}}
  32. <div class="ui two column stackable grid ">
  33. <div class="column"></div>
  34. <div class="column right aligned">
  35. <!-- -->
  36. <a class="ui button {{if .Permission.CanWrite $.UnitTypeCloudBrain}} green {{else}} disabled {{end}}" onclick="showcreate(this)">{{$.i18n.Tr "repo.model.manage.import_new_model"}}</a>
  37. </div>
  38. </div>
  39. <!-- 中下列表展示区 -->
  40. <div class="ui grid">
  41. <div class="row" style="padding-top: 0;">
  42. <div class="ui sixteen wide column">
  43. <!-- 任务展示 -->
  44. <div class="dataset list" id="model_list">
  45. <!-- 表头 -->
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. <!-- div full height-->
  53. </div>
  54. <!-- 确认模态框 -->
  55. <div id="deletemodel">
  56. <div class="ui basic modal first">
  57. <div class="ui icon header">
  58. <i class="trash icon"></i> 删除任务
  59. </div>
  60. <div class="content">
  61. <p>你确认删除该任务么?此任务一旦删除不可恢复。</p>
  62. </div>
  63. <div class="actions">
  64. <div class="ui red basic inverted cancel button">
  65. <i class="remove icon"></i> 取消操作
  66. </div>
  67. <div class="ui green basic inverted ok button">
  68. <i class="checkmark icon"></i> 确定操作
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. <div id="newmodel">
  74. <div class="ui modal second">
  75. <div class="header" style="padding: 1rem;background-color: rgba(240, 240, 240, 100);">
  76. <h4>导入新模型</h4>
  77. </div>
  78. <div class="content content-padding">
  79. <form id="formId" method="POST" class="ui form">
  80. <div class="ui error message">
  81. <!-- <p>asdasdasd</p> -->
  82. </div>
  83. <input type="hidden" name="_csrf" value="">
  84. <div class="two inline fields ">
  85. <div class="required ten wide field">
  86. <label style="margin-left: -23px;">选择训练任务</label>
  87. <div class="ui dropdown selection search width83 loading" id="choice_model">
  88. <input type="hidden" id="JobId" name="JobId" required>
  89. <div class="default text">选择训练任务</div>
  90. <i class="dropdown icon"></i>
  91. <div class="menu" id="job-name">
  92. </div>
  93. </div>
  94. </div>
  95. <div class="required six widde field">
  96. <label>版本</label>
  97. <div class="ui dropdown selection search width70" id="choice_version">
  98. <input type="hidden" id="VersionName" name="VersionName" required>
  99. <div class="default text">选择版本</div>
  100. <i class="dropdown icon"></i>
  101. <div class="menu" id="job-version">
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. <div class="required inline field" id="modelname">
  107. <label>模型名称</label>
  108. <input style="width: 45%;" id="name" name="Name" required maxlength="25" onkeyup="this.value=this.value.replace(/[, ]/g,'')">
  109. </div>
  110. <div class="required inline field" id="verionname">
  111. <label>模型版本</label>
  112. <input style="width: 45%;" id="version" name="Version" value="" readonly required maxlength="255">
  113. </div>
  114. <div class="inline field">
  115. <label>模型标签</label>
  116. <input style="width: 83%;margin-left: 7px;" name="Label" maxlength="255">
  117. </div>
  118. <div class="inline field">
  119. <label for="description">模型描述</label>
  120. <textarea style="width: 83%;margin-left: 7px;" id="Description" name="Description" rows="3" maxlength="255" placeholder={{.i18n.Tr "repo.modelarts.train_job.new_place"}} onchange="this.value=this.value.substring(0, 255)" onkeydown="this.value=this.value.substring(0, 255)" onkeyup="this.value=this.value.substring(0, 256)"></textarea>
  121. </div>
  122. <div class="inline field" style="margin-left: 75px;">
  123. <button id="submitId" type="button" class="ui create_train_job green button" style="position: absolute;">
  124. {{.i18n.Tr "repo.cloudbrain.new"}}
  125. </button>
  126. </div>
  127. </form>
  128. <div class="actions" style="display: inline-block;margin-left: 180px;">
  129. <button class="ui button cancel" >{{.i18n.Tr "repo.cloudbrain.cancel"}}</button>
  130. </div>
  131. </div>
  132. </div>
  133. {{template "base/footer" .}}
  134. <script>
  135. let repolink = {{.RepoLink}}
  136. let repoId = {{$repository}}
  137. let url_href = window.location.pathname.split('show_model')[0] + 'create_model'
  138. const {_AppSubUrl, _StaticUrlPrefix, csrf} = window.config;
  139. $('input[name="_csrf"]').val(csrf)
  140. function createModelName(){
  141. let repoName = location.pathname.split('/')[2]
  142. let modelName = repoName + '_model_' + Math.random().toString(36).substr(2, 4)
  143. $('#name').val(modelName)
  144. $('#version').val("0.0.1")
  145. }
  146. function showcreate(obj){
  147. $('.ui.modal.second')
  148. .modal({
  149. centered: false,
  150. onShow:function(){
  151. $('.ui.dimmer').css({"background-color":"rgb(136, 136, 136,0.7)"})
  152. $("#job-name").empty()
  153. createModelName()
  154. loadTrainList()
  155. },
  156. onHide:function(){
  157. document.getElementById("formId").reset();
  158. $('#choice_model').dropdown('clear')
  159. $('#choice_version').dropdown('clear')
  160. $('.ui.dimmer').css({"background-color":""})
  161. $('.ui.error.message').css('display','none')
  162. }
  163. })
  164. .modal('show')
  165. }
  166. $(function(){
  167. $('#choice_model').dropdown({
  168. onChange:function(value){
  169. $(".ui.dropdown.selection.search.width70").addClass("loading")
  170. $("#job-version").empty()
  171. loadTrainVersion(value)
  172. }
  173. })
  174. })
  175. function versionAdd(version){
  176. let versionArray = version.split('.')
  177. if(versionArray[2]=='9'){
  178. if(versionArray[1]=='9'){
  179. versionArray[0] = String(Number(versionArray[1])+1)
  180. versionArray[1] = '0'
  181. }else{
  182. versionArray[1]=String(Number(versionArray[1])+1)
  183. }
  184. versionArray[2]='0'
  185. }else{
  186. versionArray[2]=String(Number(versionArray[2])+1)
  187. }
  188. return versionArray.join('.')
  189. }
  190. function loadTrainList(){
  191. $.get(`${repolink}/modelmanage/query_train_job?repoId=${repoId}`, (data) => {
  192. const n_length = data.length
  193. let train_html=''
  194. for (let i=0;i<n_length;i++){
  195. train_html += `<div class="item" data-value="${data[i].JobID}">${data[i].JobName}</div>`
  196. train_html += '</div>'
  197. }
  198. $("#job-name").append(train_html)
  199. $(".ui.dropdown.selection.search.width83").removeClass("loading")
  200. })
  201. }
  202. function loadTrainVersion(value){
  203. $.get(`${repolink}/modelmanage/query_train_job_version?JobID=${value}`, (data) => {
  204. const n_length = data.length
  205. let train_html=''
  206. for (let i=0;i<n_length;i++){
  207. train_html += `<div class="item" data-value="${data[i].VersionName}">${data[i].VersionName}</div>`
  208. train_html += '</div>'
  209. }
  210. $("#job-version").append(train_html)
  211. $(".ui.dropdown.selection.search.width70").removeClass("loading")
  212. })
  213. }
  214. function check(){
  215. let jobid = document.getElementById("JobId").value
  216. let versionname = document.getElementById("VersionName").value
  217. let name= document.getElementById("name").value
  218. let version= document.getElementById("version").value
  219. if(jobid==""){
  220. $(".required.ten.wide.field").addClass("error")
  221. return false
  222. }else{
  223. $(".required.ten.wide.field").removeClass("error")
  224. }
  225. if(versionname==""){
  226. $(".required.six.widde.field").addClass("error")
  227. return false
  228. }else{
  229. $(".required.six.widde.field").removeClass("error")
  230. }
  231. if(name==""){
  232. $("#modelname").addClass("error")
  233. return false
  234. }else{
  235. $("#modelname").removeClass("error")
  236. }
  237. if(versionname==""){
  238. $("#verionname").addClass("error")
  239. return false
  240. }else{
  241. $("#verionname").removeClass("error")
  242. }
  243. return true
  244. }
  245. $('#submitId').click(function(){
  246. let flag=check()
  247. if(flag){
  248. let data = $("#formId").serialize()
  249. $("#mask").css({"display":"block","z-index":"9999"})
  250. $.ajax({
  251. url:url_href,
  252. type:'POST',
  253. data:data,
  254. success:function(res){
  255. $('.ui.modal.second').modal('hide')
  256. window.location.href=location.href
  257. },
  258. error: function(xhr){
  259. // 隐藏 loading
  260. // 只有请求不正常(状态码不为200)才会执行
  261. console.log("-------------",xhr)
  262. $('.ui.error.message').text(xhr.responseText)
  263. $('.ui.error.message').css('display','block')
  264. },
  265. complete:function(xhr){
  266. $("#mask").css({"display":"none","z-index":"1"})
  267. }
  268. })
  269. }else{
  270. return false
  271. }
  272. })
  273. </script>