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 25 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
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
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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568
  1. <!-- 头部导航栏 -->
  2. {{template "base/head" .}}
  3. <style>
  4. .inline.fields .right.aligned label{
  5. width: 100% !important;
  6. text-align: right;
  7. }
  8. .inline .ui.dropdown .text {
  9. color: rgba(0, 0, 0, .87) !important;
  10. max-width: 360px;
  11. }
  12. .newtext{
  13. left: 15px !important
  14. }
  15. .menuContent{
  16. position: absolute;
  17. background: #ffffff;
  18. left: 0;
  19. right: 26px;
  20. top: 36px;
  21. z-index:999;
  22. border: 1px solid #96c8da;
  23. border-top: 0;
  24. border-bottom-right-radius: 4px;
  25. border-bottom-left-radius: 4px;
  26. box-shadow: 0 2px 3px 0 rgb(34 36 38 / 15%);
  27. }
  28. </style>
  29. <link rel="stylesheet" href="/self/ztree/css/zTreeStyle/zTreeStyle.css" type="text/css">
  30. <!-- 弹窗 -->
  31. <div id="mask">
  32. <div id="loadingPage">
  33. <div class="rect1"></div>
  34. <div class="rect2"></div>
  35. <div class="rect3"></div>
  36. <div class="rect4"></div>
  37. <div class="rect5"></div>
  38. </div>
  39. </div>
  40. {{$repository := .Repository.ID}}
  41. <!-- 提示框 -->
  42. <div class="alert"></div>
  43. <div class="repository release dataset-list view">
  44. {{template "repo/header" .}}
  45. <!-- 列表容器 -->
  46. <div class="ui container {{if ne $.MODEL_COUNT 0}}active loader {{end}}" id="loadContainer">
  47. {{template "base/alert" .}}
  48. <div class="ui two column stackable grid">
  49. <div class="column">
  50. <div class="ui blue small menu compact selectcloudbrain">
  51. <a class="active item" href="{{.RepoLink}}/modelmanage/show_model">{{$.i18n.Tr "repo.model.list"}}</a>
  52. <a class="item" href="{{.RepoLink}}/modelmanage/convert_model">{{$.i18n.Tr "repo.model.convert"}}</a>
  53. </div>
  54. </div>
  55. <div class="column right aligned">
  56. <!-- -->
  57. <a class="ui button {{if .Permission.CanWrite $.UnitTypeModelManage}} green {{else}} disabled {{end}}"
  58. onclick="showcreate(this)">{{$.i18n.Tr "repo.model.manage.import_new_model"}}</a>
  59. </div>
  60. </div>
  61. {{if eq $.MODEL_COUNT 0}}
  62. <div class="ui placeholder segment bgtask-none">
  63. <div class="ui icon header bgtask-header-pic"></div>
  64. <div class="bgtask-content-header">{{$.i18n.Tr "repo.model.manage.notcreatemodel"}}</div>
  65. <div class="bgtask-content">
  66. {{if $.RepoIsEmpty}}
  67. <div class="bgtask-content-txt">{{$.i18n.Tr "repo.model.manage.init1"}}<a href="{{.RepoLink}}">{{$.i18n.Tr "repo.model.manage.init2"}}</a></div>
  68. {{end}}
  69. {{if eq $.TRAIN_COUNT 0}}
  70. <div class="bgtask-content-txt">{{$.i18n.Tr "repo.model.manage.createtrainjob_tip"}}<a
  71. href="{{.RepoLink}}/modelarts/train-job">{{$.i18n.Tr "repo.model.manage.createtrainjob"}}</a></div>
  72. {{end}}
  73. <div class="bgtask-content-txt">{{$.i18n.Tr "repo.platform_instructions1"}}<a href="https://git.openi.org.cn/zeizei/OpenI_Learning">{{$.i18n.Tr "repo.platform_instructions2"}}</a>{{$.i18n.Tr "repo.platform_instructions3"}}</div>
  74. </div>
  75. <div style="display: none;">
  76. <div id="model_list"></div>
  77. </div>
  78. </div>
  79. {{else}}
  80. <!-- 中下列表展示区 -->
  81. <div class="ui grid" style="display: none;">
  82. <div class="row" style="padding-top: 0;">
  83. <div class="ui sixteen wide column">
  84. <!-- 任务展示 -->
  85. <div class="dataset list" id="model_list">
  86. <!-- 表头 -->
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. {{end}}
  92. </div>
  93. </div>
  94. <!-- div full height-->
  95. </div>
  96. <!-- 确认模态框 -->
  97. <div id="deletemodel">
  98. <div class="ui basic modal first">
  99. <div class="ui icon header">
  100. <i class="trash icon"></i> {{.i18n.Tr "repo.model.manage.delete"}}
  101. </div>
  102. <div class="content">
  103. <p>{{.i18n.Tr "repo.model.manage.delete_confirm"}}</p>
  104. </div>
  105. <div class="actions">
  106. <div class="ui red basic inverted cancel button">
  107. <i class="remove icon"></i> {{.i18n.Tr "cloudbrain.operate_cancel"}}
  108. </div>
  109. <div class="ui green basic inverted ok button">
  110. <i class="checkmark icon"></i> {{.i18n.Tr "cloudbrain.operate_confirm"}}
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. <div id="newmodel">
  116. <div class="ui modal second">
  117. <div class="header" style="padding: 1rem;background-color: rgba(240, 240, 240, 100);">
  118. <h4 id="model_header"></h4>
  119. </div>
  120. <div class="content content-padding">
  121. <form id="formId" method="POST" class="ui form">
  122. <input type="hidden" name="initModel" value="{{$.MODEL_COUNT}}">
  123. <div class="ui error message">
  124. <!-- <p>asdasdasd</p> -->
  125. </div>
  126. <input type="hidden" name="_csrf" value="">
  127. <div class="inline fields">
  128. <div class="required two wide field right aligned">
  129. <label for="JobId">{{.i18n.Tr "repo.model.manage.select.trainjob"}}</label>
  130. </div>
  131. <div class="required thirteen wide inline field">
  132. <div class="ui dropdown selection search loading" id="choice_model">
  133. <input type="hidden" id="JobId" name="JobId" required>
  134. <div class="default text">{{.i18n.Tr "repo.model.manage.select.trainjob"}}</div>
  135. <i class="dropdown icon"></i>
  136. <div class="menu" id="job-name">
  137. </div>
  138. </div>
  139. <label for="VersionName">{{.i18n.Tr "repo.model.manage.version"}}</label>
  140. <span>&nbsp;</span>
  141. <div class="ui dropdown selection search" id="choice_version">
  142. <input type="hidden" id="VersionName" name="VersionName" required>
  143. <div class="default text">{{.i18n.Tr "repo.model.manage.select.version"}}</div>
  144. <i class="dropdown icon"></i>
  145. <div class="menu" id="job-version">
  146. </div>
  147. </div>
  148. </div>
  149. </div>
  150. <div class="required inline fields" id="modelname">
  151. <div class="two wide field right aligned">
  152. <label for="Name">{{.i18n.Tr "repo.model.manage.model_name"}}</label>
  153. </div>
  154. <div class="eight wide field">
  155. <input id="name" name="Name" required maxlength="25" onkeyup="this.value=this.value.replace(/[, ]/g,'')">
  156. </div>
  157. </div>
  158. <div class="required inline fields" id="verionname">
  159. <div class="two wide field right aligned">
  160. <label for="Version">{{.i18n.Tr "repo.model.manage.version"}}</label>
  161. </div>
  162. <div class="eight wide field">
  163. <input id="version" name="Version" value="" readonly required maxlength="255">
  164. </div>
  165. </div>
  166. <div class="unite min_title inline fields required">
  167. <div class="two wide field right aligned">
  168. <label for="Engine">{{.i18n.Tr "repo.model.manage.engine"}}</label>
  169. </div>
  170. <div class="ui ten wide field dropdown selection search" id="choice_Engine">
  171. <input type="hidden" id="Engine" name="Engine" required>
  172. <div class="default text newtext">{{.i18n.Tr "repo.model.manage.select.engine"}}</div>
  173. <i class="dropdown icon"></i>
  174. <div class="menu" id="job-Engine">
  175. </div>
  176. </div>
  177. </div>
  178. <div class="unite min_title inline fields required">
  179. <div class="two wide field right aligned">
  180. <label for="modelSelectedFile">{{.i18n.Tr "repo.model.manage.modelfile"}}</label>
  181. </div>
  182. <div class="thirteen wide field" style="position:relative">
  183. <input id="modelSelectedFile" type="text" readonly required onclick="showMenu();" name="modelSelectedFile" >
  184. <div id="menuContent" class="menuContent" style="display:none;">
  185. <ul id="treeDemo" class="ztree"></ul>
  186. </div>
  187. </div>
  188. </div>
  189. <div class="inline fields">
  190. <div class="two wide field right aligned">
  191. <label for="Label">{{.i18n.Tr "repo.model.manage.modellabel"}} &nbsp</label>
  192. </div>
  193. <div class="thirteen wide field">
  194. <input id="label" name="Label" maxlength="255" placeholder='{{.i18n.Tr "repo.modelarts.train_job.label_place"}}'>
  195. </div>
  196. </div>
  197. <div class="inline fields">
  198. <div class="two wide field right aligned">
  199. <label for="description">{{.i18n.Tr "repo.model.manage.modeldesc"}} &nbsp</label>
  200. </div>
  201. <div class="thirteen wide field">
  202. <textarea id="Description" name="Description" rows="3"
  203. maxlength="255" placeholder='{{.i18n.Tr "repo.modelarts.train_job.new_place"}}'
  204. onchange="this.value=this.value.substring(0, 255)"
  205. onkeydown="this.value=this.value.substring(0, 255)"
  206. onkeyup="this.value=this.value.substring(0, 256)"></textarea>
  207. </div>
  208. </div>
  209. <div class="inline field" style="margin-left: 105px;">
  210. <button id="submitId" type="button" class="ui create_train_job green button"
  211. style="position: absolute;">
  212. {{.i18n.Tr "repo.model.manage.sava_model"}}
  213. </button>
  214. </div>
  215. </form>
  216. <div class="actions" style="display: inline-block;margin-left: 220px;">
  217. <button class="ui button cancel">{{.i18n.Tr "repo.cloudbrain.cancel"}}</button>
  218. </div>
  219. </div>
  220. </div>
  221. {{template "base/footer" .}}
  222. <script type="text/javascript" src="/self/ztree/js/jquery.ztree.core.js"></script>
  223. <script type="text/javascript" src="/self/ztree/js/jquery.ztree.excheck.js"></script>
  224. <script type="text/javascript">
  225. var setting = {
  226. check: {
  227. enable: true,
  228. chkboxType: {"Y":"ps", "N":"ps"}
  229. },
  230. view: {
  231. dblClickExpand: false
  232. },
  233. callback: {
  234. beforeClick: beforeClick,
  235. onCheck: onCheck
  236. }
  237. };
  238. function beforeClick(treeId, treeNode) {
  239. var zTree = $.fn.zTree.getZTreeObj("treeDemo");
  240. zTree.checkNode(treeNode, !treeNode.checked, null, true);
  241. return false;
  242. }
  243. function onCheck(e, treeId, treeNode) {
  244. var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
  245. nodes = zTree.getCheckedNodes(true),
  246. v = "";
  247. for (var i=0, l=nodes.length; i<l; i++) {
  248. if(nodes[i].isParent){
  249. continue;
  250. }
  251. var pathNodes = nodes[i].getPath();
  252. var path ="";
  253. for(var j=0;j<pathNodes.length;j++){
  254. if(j ==0){
  255. path += pathNodes[j].name;
  256. }else{
  257. path += "/" + pathNodes[j].name;
  258. }
  259. }
  260. v += path + ";";
  261. }
  262. if (v.length > 0 ) v = v.substring(0, v.length-1);
  263. var cityObj = $("#modelSelectedFile");
  264. cityObj.attr("value", v);
  265. }
  266. function showMenu() {
  267. var cityObj = $("#modelSelectedFile");
  268. var cityOffset = $("#modelSelectedFile").offset();
  269. // $("#menuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");
  270. $("#menuContent").slideDown("fast");
  271. $("body").bind("mousedown", onBodyDown);
  272. }
  273. function hideMenu() {
  274. $("#menuContent").fadeOut("fast");
  275. $("body").unbind("mousedown", onBodyDown);
  276. }
  277. function onBodyDown(event) {
  278. if (!(event.target.id == "menuBtn" || event.target.id == "modelSelectedFile" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length>0)) {
  279. hideMenu();
  280. }
  281. }
  282. $(document).ready(function(){
  283. //$.fn.zTree.init($("#treeDemo"), setting, zNodes);
  284. });
  285. let repolink = {{.RepoLink }}
  286. let repoId = {{ $repository }}
  287. const { _AppSubUrl, _StaticUrlPrefix, csrf } = window.config;
  288. $('input[name="_csrf"]').val(csrf)
  289. let modelData;
  290. function createModelName() {
  291. let repoName = location.pathname.split('/')[2]
  292. let modelName = repoName + '_model_' + Math.random().toString(36).substr(2, 4)
  293. $('#name').val(modelName)
  294. $('#version').val("0.0.1")
  295. }
  296. let dirKey="isOnlyDir--:&";
  297. function showcreate(obj) {
  298. $('.ui.modal.second')
  299. .modal({
  300. centered: false,
  301. onShow: function () {
  302. $('#model_header').text({{.i18n.Tr "repo.model.manage.import_new_model"}})
  303. $('input[name="Version"]').addClass('model_disabled')
  304. $('.ui.dimmer').css({ "background-color": "rgb(136, 136, 136,0.7)" })
  305. $("#job-name").empty()
  306. createModelName()
  307. loadTrainList()
  308. },
  309. onHide: function () {
  310. var cityObj = $("#modelSelectedFile");
  311. cityObj.attr("value", "");
  312. document.getElementById("formId").reset();
  313. $('#choice_model').dropdown('clear')
  314. $('#choice_version').dropdown('clear')
  315. $('#choice_Engine').dropdown('clear')
  316. $('.ui.dimmer').css({ "background-color": "" })
  317. $('.ui.error.message').text()
  318. $('.ui.error.message').css('display', 'none')
  319. }
  320. })
  321. .modal('show')
  322. }
  323. $(function () {
  324. $('#choice_model').dropdown({
  325. onChange: function (value) {
  326. $("#choice_version").addClass("loading")
  327. $('#choice_version').dropdown('clear')
  328. $("#job-version").empty()
  329. loadTrainVersion(value)
  330. }
  331. })
  332. $('#choice_version').dropdown({
  333. onChange: function (value) {
  334. console.log("model version:" + value);
  335. if (modelData != null) {
  336. for (var i = 0; i < modelData.length; i++) {
  337. if (modelData[i].VersionName == value) {
  338. setEngine(modelData[i])
  339. loadModelFile(modelData[i])
  340. break;
  341. }
  342. }
  343. }
  344. }
  345. })
  346. })
  347. function versionAdd(version) {
  348. let versionArray = version.split('.')
  349. if (versionArray[2] == '9') {
  350. if (versionArray[1] == '9') {
  351. versionArray[0] = String(Number(versionArray[1]) + 1)
  352. versionArray[1] = '0'
  353. } else {
  354. versionArray[1] = String(Number(versionArray[1]) + 1)
  355. }
  356. versionArray[2] = '0'
  357. } else {
  358. versionArray[2] = String(Number(versionArray[2]) + 1)
  359. }
  360. return versionArray.join('.')
  361. }
  362. function loadTrainList() {
  363. $.get(`${repolink}/modelmanage/query_train_job?repoId=${repoId}`, (data) => {
  364. const n_length = data.length
  365. if(n_length > 0){
  366. let train_html = ''
  367. for (let i = 0; i < n_length; i++) {
  368. train_html += `<div class="item" data-value="${data[i].JobID}">${data[i].DisplayJobName}</div>`
  369. train_html += '</div>'
  370. }
  371. $("#job-name").append(train_html)
  372. $("#choice_model").removeClass("loading")
  373. $('#choice_model .default.text').text(data[0].DisplayJobName)
  374. $('#choice_model input[name="JobId"]').val(data[0].JobID)
  375. loadTrainVersion()
  376. }else{
  377. $("#choice_model").removeClass("loading")
  378. }
  379. })
  380. }
  381. function loadTrainVersion(value) {
  382. let JobID = !value ? $('#choice_model input[name="JobId"]').val() : value
  383. $.get(`${repolink}/modelmanage/query_train_job_version?JobID=${JobID}`, (data) => {
  384. const n_length = data.length
  385. let train_html = '';
  386. modelData = data;
  387. for (let i = 0; i < n_length; i++) {
  388. train_html += `<div class="item" data-value="${data[i].VersionName}">${data[i].VersionName}</div>`
  389. train_html += '</div>'
  390. }
  391. if (data.length) {
  392. $("#job-version").append(train_html)
  393. $("#choice_version").removeClass("loading")
  394. var versionName = data[0].VersionName;
  395. if (versionName == null || versionName == "") {
  396. versionName = "V0001";
  397. }
  398. $('#choice_version .default.text').text(versionName)
  399. $('#choice_version input[name="VersionName"]').val(versionName)
  400. setEngine(data[0])
  401. loadModelFile(data[0])
  402. }
  403. })
  404. }
  405. function loadModelFile(trainJob){
  406. console.log("trainJob=" + trainJob);
  407. $('#choice_file').dropdown('clear')
  408. $("#model-file").empty()
  409. if(trainJob ==null || trainJob ==""){
  410. console.log("trainJob is null");
  411. }else{
  412. let type = trainJob.Type;
  413. if(type == 2){
  414. if(trainJob.ComputeResource=="NPU"){
  415. type=1;
  416. }else{
  417. type=0;
  418. }
  419. }
  420. $.get(`${repolink}/modelmanage/query_train_model?jobName=${trainJob.JobName}&type=${type}&VersionName=${trainJob.VersionName}`, (data) => {
  421. const n_length = data.length
  422. let file_html=''
  423. let firstFileName =''
  424. var zNodes=[];
  425. var nodesMap={};
  426. for (let i=0;i<n_length;i++){
  427. var parentNodeMap = nodesMap;
  428. var fileSplits = data[i].FileName.split("/");
  429. for(let j=0;j < fileSplits.length;j++){
  430. if(fileSplits[j] == ""){
  431. break;
  432. }
  433. if(parentNodeMap[fileSplits[j]] == null){
  434. parentNodeMap[fileSplits[j]] = {};
  435. }
  436. parentNodeMap = parentNodeMap[fileSplits[j]];
  437. }
  438. }
  439. for (let i=0;i<n_length;i++){
  440. var parentNodeMap = nodesMap;
  441. var fileSplits = data[i].FileName.split("/");
  442. for(let j=0;j < fileSplits.length;j++){
  443. if(fileSplits[j] == ""){
  444. if(data[i].FileName[data[i].FileName.length -1] =="/"){
  445. if(Object.keys(parentNodeMap).length ==0){
  446. parentNodeMap[dirKey]="true";
  447. }
  448. }
  449. break;
  450. }
  451. parentNodeMap = parentNodeMap[fileSplits[j]];
  452. }
  453. }
  454. convertToNode(zNodes,nodesMap);
  455. $.fn.zTree.init($("#treeDemo"), setting, zNodes);
  456. })
  457. }
  458. }
  459. function convertToNode(nodeList,nodesMap){
  460. var keyList = Object.keys(nodesMap);
  461. keyList.sort(function(a,b){
  462. return a-b;
  463. });
  464. var isFirst = true;
  465. for(var i=0; i<keyList.length;i++){
  466. var node = {};
  467. node["name"] = keyList[i];
  468. nodeList.push(node);
  469. if(nodesMap[keyList[i]] != null && Object.keys(nodesMap[keyList[i]]).length >0){
  470. if(nodesMap[keyList[i]][dirKey] != null){
  471. node["open"] = false;
  472. node["isParent"] = true;
  473. }else{
  474. node["children"]=[];
  475. if(isFirst){
  476. node["open"] = true;
  477. isFirst= false;
  478. }
  479. convertToNode(node["children"],nodesMap[keyList[i]]);
  480. }
  481. }
  482. }
  483. }
  484. function setEngine(modelVersion) {
  485. console.log("modelVersion=" + modelVersion);
  486. $('#choice_Engine').dropdown('clear')
  487. $("#job-Engine").empty()
  488. if (modelVersion.EngineName != null && modelVersion.EngineName != "") {
  489. srcEngine = modelVersion.EngineName.split('-')[0]
  490. srcEngine = srcEngine.trim().toLowerCase();
  491. let selectedText = "PyTorch";
  492. let selectedValue = 0;
  493. let itemHtml = "<option class=\"item\" data-value=\"0\">PyTorch</option>";
  494. if (srcEngine == 'tensorflow') {
  495. selectedText = "TensorFlow";
  496. selectedValue = 1;
  497. itemHtml += "<option class=\"active item\" data-value=\"1\">TensorFlow</option>";
  498. } else {
  499. itemHtml += "<option class=\"item\" data-value=\"1\">TensorFlow</option>";
  500. }
  501. if (srcEngine == 'mindspore') {
  502. selectedText = "MindSpore";
  503. selectedValue = 2;
  504. itemHtml += "<option class=\"active item\" data-value=\"2\">MindSpore</option>";
  505. } else {
  506. itemHtml += "<option class=\"item\" data-value=\"2\">MindSpore</option>";
  507. }
  508. itemHtml += "<option class=\"item\" data-value=\"4\">PaddlePaddle</option>"
  509. itemHtml += "<option class=\"item\" data-value=\"5\">OneFlow</option>"
  510. itemHtml += "<option class=\"item\" data-value=\"6\">MXNet</option>"
  511. itemHtml += "<option class=\"item\" data-value=\"3\">Other</option>"
  512. $('#choice_Engine .default.text').text(selectedText)
  513. $('#choice_Engine input[name="Engine"]').val(selectedValue)
  514. $("#job-Engine").append(itemHtml);
  515. $("#choice_Engine").removeClass('disabled');
  516. } else {
  517. let itemHtml = "<option class=\"active item\" data-value=\"0\">PyTorch</option>";
  518. itemHtml += "<option class=\"item\" data-value=\"1\">TensorFlow</option>"
  519. itemHtml += "<option class=\"item\" data-value=\"2\">MindSpore</option>"
  520. itemHtml += "<option class=\"item\" data-value=\"4\">PaddlePaddle</option>"
  521. itemHtml += "<option class=\"item\" data-value=\"5\">OneFlow</option>"
  522. itemHtml += "<option class=\"item\" data-value=\"6\">MXNet</option>"
  523. itemHtml += "<option class=\"item\" data-value=\"3\">Other</option>"
  524. $('#choice_Engine .default.text').text("PyTorch");
  525. $('#choice_Engine input[name="Engine"]').val(0)
  526. $("#job-Engine").append(itemHtml);
  527. $("#choice_Engine").removeClass('disabled');
  528. }
  529. }
  530. </script>