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.

new.tmpl 9.6 kB

4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. {{template "base/head" .}}
  2. <style>
  3. .inline.required.field.cloudbrain_benchmark {
  4. display: none;
  5. }
  6. .inline.field {
  7. padding-left: 12rem !important;
  8. }
  9. .inline.field>label {
  10. width: 120px !important;
  11. text-align: right;
  12. }
  13. .inline.field .dropdown.selection {
  14. width: 60% !important;
  15. }
  16. .width70 {
  17. width: 60% !important;
  18. }
  19. .inline.field input {
  20. width: 40% !important;
  21. }
  22. </style>
  23. <div id="mask">
  24. <div id="loadingPage">
  25. <div class="rect1"></div>
  26. <div class="rect2"></div>
  27. <div class="rect3"></div>
  28. <div class="rect4"></div>
  29. <div class="rect5"></div>
  30. </div>
  31. </div>
  32. <div class="repository">
  33. {{template "repo/header" .}}
  34. <div class="ui container">
  35. <div class="cloudbrain-type" style="display: none;" data-cloudbrain-type="{{.datasetType}}" data-repo-link="{{.RepoLink}}"></div>
  36. {{template "base/alert" .}}
  37. <h4 class="ui top attached header">
  38. {{.i18n.Tr "repo.cloudbrain.new"}}
  39. </h4>
  40. <div class="ui negative message" id="messageInfo" style="display:none">
  41. <p></p>
  42. </div>
  43. <div class="ui attached segment" style="border-top:none;">
  44. <form class="ui form" id="form_id" action="{{.Link}}" method="post">
  45. {{.CsrfTokenHtml}}
  46. <div class="inline required field">
  47. <label>{{.i18n.Tr "cloudbrain.compute_resource"}}</label>
  48. <div class="ui blue small menu compact selectcloudbrain">
  49. <a class="item" href="{{.RepoLink}}/cloudbrain/create">
  50. <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
  51. <path fill="none" d="M0 0h24v24H0z"/>
  52. <path d="M3 2.992C3 2.444 3.445 2 3.993 2h16.014a1 1 0 0 1 .993.992v18.016a.993.993 0 0 1-.993.992H3.993A1 1 0 0 1 3 21.008V2.992zM19 11V4H5v7h14zm0 2H5v7h14v-7zM9 6h6v2H9V6zm0 9h6v2H9v-2z"/>
  53. </svg>
  54. CPU/GPU</a>
  55. <a class="active item" href="{{.RepoLink}}/modelarts/notebook/create">
  56. <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
  57. <path fill="none" d="M0 0h24v24H0z"/>
  58. <path d="M3 2.992C3 2.444 3.445 2 3.993 2h16.014a1 1 0 0 1 .993.992v18.016a.993.993 0 0 1-.993.992H3.993A1 1 0 0 1 3 21.008V2.992zM19 11V4H5v7h14zm0 2H5v7h14v-7zM9 6h6v2H9V6zm0 9h6v2H9v-2z"/>
  59. </svg>
  60. Ascend NPU</a>
  61. </div>
  62. </div>
  63. <div class="inline required field">
  64. <label>{{.i18n.Tr "cloudbrain.task_name"}}</label>
  65. <input name="display_job_name" id="cloudbrain_job_name" placeholder="任务名称" value="{{.display_job_name}}" tabindex="3" autofocus required maxlength="255" onkeyup="this.value=this.value.replace(/[, ]/g,'')">
  66. </div>
  67. <div class="inline required field">
  68. <label>{{.i18n.Tr "cloudbrain.mirror"}}</label>
  69. <select id="cloudbrain_image" class="ui search dropdown" placeholder="{{.i18n.Tr "cloudbrain.choose_mirror"}}" style='width:385px' name="image_id">
  70. {{range .images}}
  71. <option name="image_id" value="{{.Id}}">{{.Value}}</option>
  72. {{end}}
  73. </select>
  74. </div>
  75. <div id="select-multi-dataset">
  76. </div>
  77. <!--<div class="inline required field">
  78. <label>工作环境</label>
  79. <input name="de" id="cloudbrain_de" value="{{.env}}" tabindex="3" disabled autofocus required maxlength="255" readonly="readonly">
  80. </div>
  81. <div class="inline required field">
  82. <label>类型</label>
  83. <input name="job_type" id="cloudbrain_job_type" value="{{.notebook_type}}" tabindex="3" disabled autofocus required maxlength="255" readonly="readonly">
  84. </div> -->
  85. <div class="inline required field">
  86. <label>{{.i18n.Tr "cloudbrain.specification"}}</label>
  87. <select id="cloudbrain_flavor" class="ui search dropdown" placeholder="选择规格" style='width:385px' name="flavor" {{if .CloudBrainPaySwitch}}blance="{{.PointAccount.Balance}}"{{end}}>
  88. {{range .flavors}}
  89. <option name="flavor" value="{{.Value}}" {{if $.CloudBrainPaySwitch}}unitprice="{{.UnitPrice}}"{{end}}>{{.Desc}}
  90. {{if $.CloudBrainPaySwitch}}
  91. ,{{ if eq .UnitPrice 0 }}{{$.i18n.Tr "points.free"}}{{else}}{{.UnitPrice}}{{$.i18n.Tr "points.points_hour"}}{{end}}
  92. {{end}}
  93. </option>
  94. {{end}}
  95. </select>
  96. {{if .CloudBrainPaySwitch}}
  97. <div class="cloudbrain_resource_spec_blance_tip width70" style="padding:0 5px;margin:6px 0;margin-left:135px;font-size:12px;">
  98. <span>{{$.i18n.Tr "points.balance_of_points"}}<span style="color:red;margin: 0 3px">{{.PointAccount.Balance}}</span>{{$.i18n.Tr "points.points"}}</span><span>{{$.i18n.Tr "points.expected_time"}}<span style="color:red;margin: 0 3px" class="can-use-time"></span>{{$.i18n.Tr "points.hours"}}</span>
  99. <span style="float:right;">
  100. <i class="question circle icon link" data-position="right center" data-variation="mini"></i>
  101. <a href="{{AppSubUrl}}/reward/point/rule" target="_blank">{{$.i18n.Tr "points.points_acquisition_instructions"}}</a>
  102. </span>
  103. </div>
  104. {{end}}
  105. </div>
  106. <!--<div class="inline required field">
  107. <label>数据集存放路径</label>
  108. <input name="dataset_path" id="cloudbrain_dataset_path" value="{{.dataset_path}}" tabindex="3" disabled autofocus required maxlength="255" readonly="readonly">
  109. </div> -->
  110. <div class="inline field">
  111. <label>{{.i18n.Tr "cloudbrain.description"}}</label>
  112. <input name="description" id="cloudbrain_description" tabindex="3" autofocus maxlength="255">
  113. </div>
  114. <div class="inline field">
  115. <label></label>
  116. <button class="ui green button">
  117. {{.i18n.Tr "repo.cloudbrain.new"}}
  118. </button>
  119. <a class="ui button cancel" href="{{.RepoLink}}/debugjob?debugListType=all">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a>
  120. </div>
  121. </form>
  122. </div>
  123. </div>
  124. </div>
  125. {{template "base/footer" .}}
  126. <script>
  127. // 判断必填选项是否填写正确
  128. let form = document.getElementById('form_id');
  129. $('#messageInfo').css('display','none')
  130. form.onsubmit = function(e){
  131. let value_task = $("input[name='display_job_name']").val()
  132. let re = /^[a-z0-9][a-z0-9-_]{1,36}$/
  133. let flag = re.test(value_task)
  134. if(!flag){
  135. $('#messageInfo').css('display','block')
  136. let str = '只能以小写字母或数字开头且只包含小写字母、数字、_和-、最长36个字符。'
  137. $('#messageInfo p').text(str)
  138. return false
  139. }
  140. let min_value_task = value_task.toLowerCase()
  141. $("input[name='display_job_name']").attr("value",min_value_task)
  142. document.getElementById("mask").style.display = "block"
  143. }
  144. // 点击按钮后遮罩层显示
  145. // function showmask() {
  146. // document.getElementById("mask").style.display = "block"
  147. // }
  148. // 页面加载完毕后遮罩层隐藏
  149. document.onreadystatechange = function() {
  150. if (document.readyState === "complete") {
  151. document.getElementById("mask").style.display = "none"
  152. }
  153. }
  154. $('select.dropdown')
  155. .dropdown();
  156. $(function() {
  157. $("#cloudbrain_job_type").change(function() {
  158. if ($(this).val() == 'BENCHMARK') {
  159. $(".cloudbrain_benchmark").show();
  160. } else {
  161. $(".cloudbrain_benchmark").hide();
  162. }
  163. })
  164. })
  165. $(document).ready(function(){
  166. $(document).keydown(function(event){
  167. if(event.keyCode==13){
  168. event.preventDefault();
  169. }
  170. });
  171. });
  172. ;(function() {
  173. $('#cloudbrain_flavor').on('change', function(e) {
  174. var cloudbrain_resource_spec_blance_tip_el = $('.cloudbrain_resource_spec_blance_tip');
  175. var val = $(this).val();
  176. var blance = $(this).attr('blance');
  177. var unitPrice = $(this).find('option:selected').attr('unitprice');
  178. if (!blance || !unitPrice) return;
  179. if (unitPrice == 0) {
  180. cloudbrain_resource_spec_blance_tip_el.find('.can-use-time').parent().hide();
  181. } else {
  182. var canUseTime = Number(blance) / Number(unitPrice);
  183. cloudbrain_resource_spec_blance_tip_el.find('.can-use-time').text(canUseTime.toFixed(2)).parent().show();
  184. }
  185. }).trigger('change');
  186. })();
  187. </script>