@@ -2270,7 +2270,7 @@ func getTrainJobCommand(form auth.CreateCloudBrainForm, fileNames string) (strin | |||||
} | } | ||||
} | } | ||||
param += " --dataset_list=" + fileNames | |||||
param += " --dataset_list='" + fileNames + "'" | |||||
command += "python /code/" + bootFile + param + " > " + cloudbrain.ModelMountPath + "/" + form.DisplayJobName + "-" + cloudbrain.LogFile | command += "python /code/" + bootFile + param + " > " + cloudbrain.ModelMountPath + "/" + form.DisplayJobName + "-" + cloudbrain.LogFile | ||||
@@ -1,11 +1,11 @@ | |||||
<div class="dataset-repolink" id="dataset-repolink-init" style="display: none;" data-repolink="{{.RepoLink}}" | <div class="dataset-repolink" id="dataset-repolink-init" style="display: none;" data-repolink="{{.RepoLink}}" | ||||
data-dataset-type="{{.datasetType}}"></div> | data-dataset-type="{{.datasetType}}"></div> | ||||
<div class="inline required unite min_title field" id="dataset-base" style="margin-bottom: 0 !important;"> | |||||
<div class="inline required min_title field" id="dataset-base" style="margin-bottom: 0 !important;"> | |||||
{{if or (.benchmarkMode) (.newInference)}} | {{if or (.benchmarkMode) (.newInference)}} | ||||
<label | <label | ||||
style="font-weight: normal;">{{if .benchmarkMode}}{{.i18n.Tr "repo.model_manager"}}</label><span> </span>{{else}}{{.i18n.Tr "dataset.dataset"}}</label> {{end}} | style="font-weight: normal;">{{if .benchmarkMode}}{{.i18n.Tr "repo.model_manager"}}</label><span> </span>{{else}}{{.i18n.Tr "dataset.dataset"}}</label> {{end}} | ||||
{{else}} | {{else}} | ||||
<label style="font-weight: normal;">{{.i18n.Tr "dataset.dataset"}}</label> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "dataset.dataset"}}</label> | |||||
{{end}} | {{end}} | ||||
<input type="hidden" name="attachment" :value="dataset_uuid"> | <input type="hidden" name="attachment" :value="dataset_uuid"> | ||||
<input class="disabled" type="text" :value="dataset_name" required onfocus="this.blur();" style="width: 48.5%;"> | <input class="disabled" type="text" :value="dataset_name" required onfocus="this.blur();" style="width: 48.5%;"> | ||||
@@ -91,13 +91,13 @@ | |||||
<input type="hidden" id="ai_flaver_name" name="flaver_names" value=""> | <input type="hidden" id="ai_flaver_name" name="flaver_names" value=""> | ||||
<h4 class="train-job-title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4> | <h4 class="train-job-title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4> | ||||
<div class="required unite min_title inline field"> | <div class="required unite min_title inline field"> | ||||
<label style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_cluster"}}</label> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_cluster"}}</label> | |||||
<div class="ui blue mini menu compact selectcloudbrain"> | <div class="ui blue mini menu compact selectcloudbrain"> | ||||
<a class="active item" href="{{.RepoLink}}/cloudbrain/train-job/create"> | <a class="active item" href="{{.RepoLink}}/cloudbrain/train-job/create"> | ||||
<svg class="svg" sxmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path fill="none" d="M0 0h24v24H0z"></path><path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"></path></svg> | <svg class="svg" sxmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path fill="none" d="M0 0h24v24H0z"></path><path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"></path></svg> | ||||
{{.i18n.Tr "cloudbrain.resource_cluster_openi"}} | {{.i18n.Tr "cloudbrain.resource_cluster_openi"}} | ||||
</a> | </a> | ||||
<a class="item" href="{{.RepoLink}}/grampus/train-job/{{if.NPUEnabled}}npu{{else}}gpu{{end}}/create"> | |||||
<a class="item" href="{{.RepoLink}}/grampus/train-job/npu/create"> | |||||
<svg class="svg" sxmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path fill="none" d="M0 0h24v24H0z"></path><path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"></path></svg> | <svg class="svg" sxmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path fill="none" d="M0 0h24v24H0z"></path><path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"></path></svg> | ||||
{{.i18n.Tr "cloudbrain.resource_cluster_c2net"}}(Beta) | {{.i18n.Tr "cloudbrain.resource_cluster_c2net"}}(Beta) | ||||
</a> | </a> | ||||
@@ -1,20 +1,15 @@ | |||||
{{template "base/head" .}} | {{template "base/head" .}} | ||||
<style> | <style> | ||||
.unite{ | |||||
.train-job-title { | |||||
font-family: SourceHanSansSC-medium !important; | font-family: SourceHanSansSC-medium !important; | ||||
color: rgba(16, 16, 16, 100) !important; | color: rgba(16, 16, 16, 100) !important; | ||||
} | |||||
.title{ | |||||
font-size: 16px !important; | font-size: 16px !important; | ||||
padding-left: 3rem !important; | padding-left: 3rem !important; | ||||
} | } | ||||
.min_title{ | .min_title{ | ||||
font-size: 14px !important; | font-size: 14px !important; | ||||
padding-left: 6rem !important; | |||||
margin-bottom: 2rem !important; | margin-bottom: 2rem !important; | ||||
} | } | ||||
.width{ | .width{ | ||||
width:100% !important; | width:100% !important; | ||||
@@ -32,7 +27,6 @@ | |||||
margin-left: 4.5rem !important; | margin-left: 4.5rem !important; | ||||
} | } | ||||
.width81{ | .width81{ | ||||
margin-left: 1.5rem !important; | |||||
width: 81% !important; | width: 81% !important; | ||||
} | } | ||||
@@ -53,7 +47,13 @@ | |||||
text-align: center; | text-align: center; | ||||
color: #C2C7CC; | color: #C2C7CC; | ||||
} | } | ||||
.label-fix-width{ | |||||
width: 140px !important; | |||||
text-align: right; | |||||
font-family: SourceHanSansSC-medium !important; | |||||
color: rgba(16, 16, 16, 100) !important; | |||||
font-size: 14px !important; | |||||
} | |||||
</style> | </style> | ||||
<!-- <div class="ui page dimmer"> | <!-- <div class="ui page dimmer"> | ||||
<div class="ui text loader">{{.i18n.Tr "loading"}}</div> | <div class="ui text loader">{{.i18n.Tr "loading"}}</div> | ||||
@@ -81,9 +81,9 @@ | |||||
<input type="hidden" name="action" value="update"> | <input type="hidden" name="action" value="update"> | ||||
<input type="hidden" id="ai_engine_name" name="engine_names" value=""> | <input type="hidden" id="ai_engine_name" name="engine_names" value=""> | ||||
<input type="hidden" id="ai_flavor_name" name="flavor_name" value=""> | <input type="hidden" id="ai_flavor_name" name="flavor_name" value=""> | ||||
<h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4> | |||||
<div class="required unite min_title inline field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_cluster"}}</label> | |||||
<h4 class="train-job-title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_cluster"}}</label> | |||||
<div class="ui blue mini menu compact selectcloudbrain"> | <div class="ui blue mini menu compact selectcloudbrain"> | ||||
<a class="item" href="{{.RepoLink}}/cloudbrain/train-job/create"> | <a class="item" href="{{.RepoLink}}/cloudbrain/train-job/create"> | ||||
<svg class="svg" sxmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path fill="none" d="M0 0h24v24H0z"></path><path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"></path></svg> | <svg class="svg" sxmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path fill="none" d="M0 0h24v24H0z"></path><path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"></path></svg> | ||||
@@ -95,8 +95,8 @@ | |||||
</a> | </a> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="required unite min_title inline field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "cloudbrain.compute_resource"}}</label> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.compute_resource"}}</label> | |||||
<div class="ui blue mini menu compact selectcloudbrain"> | <div class="ui blue mini menu compact selectcloudbrain"> | ||||
<a {{if.GPUEnabled}}class="active item" href="{{.RepoLink}}/grampus/train-job/gpu/create"{{else}}href="javascript:return false;" class="item disabled" {{end}}> | <a {{if.GPUEnabled}}class="active item" href="{{.RepoLink}}/grampus/train-job/gpu/create"{{else}}href="javascript:return false;" class="item disabled" {{end}}> | ||||
<svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"> | <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"> | ||||
@@ -113,23 +113,23 @@ | |||||
Ascend NPU</a> | Ascend NPU</a> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="required unite min_title inline field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.job_name"}}</label> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.job_name"}}</label> | |||||
<input style="width: 60%;" name="display_job_name" id="display_job_name" placeholder={{.i18n.Tr "repo.modelarts.train_job.job_name"}} value="{{.display_job_name}}" tabindex="3" onkeyup="this.value=this.value.replace(/[, ]/g,'')" autofocus required maxlength="64"> | <input style="width: 60%;" name="display_job_name" id="display_job_name" placeholder={{.i18n.Tr "repo.modelarts.train_job.job_name"}} value="{{.display_job_name}}" tabindex="3" onkeyup="this.value=this.value.replace(/[, ]/g,'')" autofocus required maxlength="64"> | ||||
<span class="tooltips" style="display: block;">{{.i18n.Tr "cloudbrain.job_name_rule"}}</span> | |||||
<span class="tooltips" style="margin-left: 11.5rem;display: block;">{{.i18n.Tr "cloudbrain.job_name_rule"}}</span> | |||||
</div> | </div> | ||||
<div class="unite min_title inline field"> | |||||
<label style="font-weight: normal;" for="description">{{.i18n.Tr "repo.modelarts.train_job.description"}} </label> | |||||
<div class="min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;" for="description">{{.i18n.Tr "repo.modelarts.train_job.description"}} </label> | |||||
<textarea style="width: 80%;" 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, 255)"></textarea> | <textarea style="width: 80%;" 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, 255)"></textarea> | ||||
</div> | </div> | ||||
<div class="ui divider"></div> | <div class="ui divider"></div> | ||||
<h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.parameter_setting"}}:</h4> | |||||
<h4 class="train-job-title ui header ">{{.i18n.Tr "repo.modelarts.train_job.parameter_setting"}}:</h4> | |||||
<div class="required unite min_title inline field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.code_version"}}</label> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.code_version"}}</label> | |||||
<select class="ui dropdown width80 left2" id="code_version" name="branch_name"> | <select class="ui dropdown width80 left2" id="code_version" name="branch_name"> | ||||
{{if .branch_name}} | {{if .branch_name}} | ||||
<option name="branch_name" value="{{.branch_name}}">{{.branch_name}}</option> | <option name="branch_name" value="{{.branch_name}}">{{.branch_name}}</option> | ||||
@@ -152,8 +152,8 @@ | |||||
<div id="images-new-grampus"> | <div id="images-new-grampus"> | ||||
</div> | </div> | ||||
<div class="inline unite min_title field required"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.start_file"}}</label> | |||||
<div class="inline min_title field required"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.start_file"}}</label> | |||||
{{if .bootFile}} | {{if .bootFile}} | ||||
<input style="width: 48.5%;" name="boot_file" id="trainjob_boot_file" value="{{.bootFile}}" tabindex="3" autofocus required maxlength="255" > | <input style="width: 48.5%;" name="boot_file" id="trainjob_boot_file" value="{{.bootFile}}" tabindex="3" autofocus required maxlength="255" > | ||||
{{else}} | {{else}} | ||||
@@ -168,8 +168,8 @@ | |||||
{{template "custom/select_dataset_train" .}} | {{template "custom/select_dataset_train" .}} | ||||
<span class="tooltips" style="margin-left: 11.5rem;margin-bottom: 2rem;">{{.i18n.Tr "repo.grampus.dataset_path_rule"}}</span> | <span class="tooltips" style="margin-left: 11.5rem;margin-bottom: 2rem;">{{.i18n.Tr "repo.grampus.dataset_path_rule"}}</span> | ||||
<div class="inline unite min_title field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.run_parameter"}}</label> | |||||
<div class="inline min_title field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.run_parameter"}}</label> | |||||
<span id="add_run_para" style="margin-left: 0.5rem;cursor:pointer;color: rgba(3, 102, 214, 100);font-size: 14px;line-height: 26px;font-family: SourceHanSansSC-medium;"><i class="plus square outline icon"></i>{{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}</span> | <span id="add_run_para" style="margin-left: 0.5rem;cursor:pointer;color: rgba(3, 102, 214, 100);font-size: 14px;line-height: 26px;font-family: SourceHanSansSC-medium;"><i class="plus square outline icon"></i>{{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}</span> | ||||
<input id="store_run_para" type="hidden" name="run_para_list"> | <input id="store_run_para" type="hidden" name="run_para_list"> | ||||
<div class="dynamic field" style="margin-top: 1rem;"> | <div class="dynamic field" style="margin-top: 1rem;"> | ||||
@@ -194,8 +194,8 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="required unite min_title inline field" id="flavor_name"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.standard"}}</label> | |||||
<div class="required min_title inline field" id="flavor_name"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.standard"}}</label> | |||||
<select class="ui dropdown width81" id="trainjob-flavor" style='width:385px' name="flavor"> | <select class="ui dropdown width81" id="trainjob-flavor" style='width:385px' name="flavor"> | ||||
{{range .flavor_infos}} | {{range .flavor_infos}} | ||||
<option name="flavor" value="{{.ID}}">{{.Name}}</option> | <option name="flavor" value="{{.ID}}">{{.Name}}</option> | ||||
@@ -203,7 +203,8 @@ | |||||
</select> | </select> | ||||
</div> | </div> | ||||
<div class="inline unite min_title field"> | |||||
<div class="inline min_title field"> | |||||
<label class="label-fix-width"></label> | |||||
<button class="ui create_train_job green button"> | <button class="ui create_train_job green button"> | ||||
{{.i18n.Tr "repo.cloudbrain.new"}} | {{.i18n.Tr "repo.cloudbrain.new"}} | ||||
</button> | </button> | ||||
@@ -1,20 +1,14 @@ | |||||
{{template "base/head" .}} | {{template "base/head" .}} | ||||
<style> | <style> | ||||
.unite{ | |||||
.train-job-title { | |||||
font-family: SourceHanSansSC-medium !important; | font-family: SourceHanSansSC-medium !important; | ||||
color: rgba(16, 16, 16, 100) !important; | color: rgba(16, 16, 16, 100) !important; | ||||
} | |||||
.title{ | |||||
font-size: 16px !important; | font-size: 16px !important; | ||||
padding-left: 3rem !important; | padding-left: 3rem !important; | ||||
} | } | ||||
.min_title{ | .min_title{ | ||||
font-size: 14px !important; | font-size: 14px !important; | ||||
padding-left: 6rem !important; | |||||
margin-bottom: 2rem !important; | margin-bottom: 2rem !important; | ||||
} | } | ||||
.width{ | .width{ | ||||
width:100% !important; | width:100% !important; | ||||
@@ -28,7 +22,6 @@ | |||||
margin-left: 4.5rem !important; | margin-left: 4.5rem !important; | ||||
} | } | ||||
.width81{ | .width81{ | ||||
margin-left: 1.5rem; | |||||
width: 81% !important; | width: 81% !important; | ||||
} | } | ||||
@@ -49,7 +42,13 @@ | |||||
text-align: center; | text-align: center; | ||||
color: #C2C7CC; | color: #C2C7CC; | ||||
} | } | ||||
.label-fix-width{ | |||||
width: 140px !important; | |||||
text-align: right; | |||||
font-family: SourceHanSansSC-medium !important; | |||||
color: rgba(16, 16, 16, 100) !important; | |||||
font-size: 14px !important; | |||||
} | |||||
</style> | </style> | ||||
<!-- <div class="ui page dimmer"> | <!-- <div class="ui page dimmer"> | ||||
<div class="ui text loader">{{.i18n.Tr "loading"}}</div> | <div class="ui text loader">{{.i18n.Tr "loading"}}</div> | ||||
@@ -77,9 +76,9 @@ | |||||
<input type="hidden" name="action" value="update"> | <input type="hidden" name="action" value="update"> | ||||
<input type="hidden" id="ai_engine_name" name="engine_name" value=""> | <input type="hidden" id="ai_engine_name" name="engine_name" value=""> | ||||
<input type="hidden" id="ai_flavor_name" name="flavor_name" value=""> | <input type="hidden" id="ai_flavor_name" name="flavor_name" value=""> | ||||
<h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4> | |||||
<div class="required unite min_title inline field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_cluster"}}</label> | |||||
<h4 class="train-job-title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_cluster"}}</label> | |||||
<div class="ui blue mini menu compact selectcloudbrain"> | <div class="ui blue mini menu compact selectcloudbrain"> | ||||
<a class="item" href="{{.RepoLink}}/cloudbrain/train-job/create"> | <a class="item" href="{{.RepoLink}}/cloudbrain/train-job/create"> | ||||
<svg class="svg" sxmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path fill="none" d="M0 0h24v24H0z"></path><path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"></path></svg> | <svg class="svg" sxmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path fill="none" d="M0 0h24v24H0z"></path><path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"></path></svg> | ||||
@@ -91,8 +90,8 @@ | |||||
</a> | </a> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="required unite min_title inline field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "cloudbrain.compute_resource"}}</label> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.compute_resource"}}</label> | |||||
<div class="ui blue mini menu compact selectcloudbrain"> | <div class="ui blue mini menu compact selectcloudbrain"> | ||||
<a {{if.GPUEnabled}}class="item" href="{{.RepoLink}}/grampus/train-job/gpu/create"{{else}}href="javascript:return false;" class="item disabled" {{end}}> | <a {{if.GPUEnabled}}class="item" href="{{.RepoLink}}/grampus/train-job/gpu/create"{{else}}href="javascript:return false;" class="item disabled" {{end}}> | ||||
<svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"> | <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"> | ||||
@@ -109,23 +108,23 @@ | |||||
Ascend NPU</a> | Ascend NPU</a> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="required unite min_title inline field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.job_name"}}</label> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.job_name"}}</label> | |||||
<input style="width: 60%;" name="display_job_name" id="display_job_name" placeholder={{.i18n.Tr "repo.modelarts.train_job.job_name"}} value="{{.display_job_name}}" tabindex="3" onkeyup="this.value=this.value.replace(/[, ]/g,'')" autofocus required maxlength="64"> | <input style="width: 60%;" name="display_job_name" id="display_job_name" placeholder={{.i18n.Tr "repo.modelarts.train_job.job_name"}} value="{{.display_job_name}}" tabindex="3" onkeyup="this.value=this.value.replace(/[, ]/g,'')" autofocus required maxlength="64"> | ||||
<span class="tooltips" style="display: block;">{{.i18n.Tr "cloudbrain.job_name_rule"}}</span> | <span class="tooltips" style="display: block;">{{.i18n.Tr "cloudbrain.job_name_rule"}}</span> | ||||
</div> | </div> | ||||
<div class="unite min_title inline field"> | |||||
<label style="font-weight: normal;" for="description">{{.i18n.Tr "repo.modelarts.train_job.description"}} </label> | |||||
<div class="min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;" for="description">{{.i18n.Tr "repo.modelarts.train_job.description"}} </label> | |||||
<textarea style="width: 80%;" 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, 255)"></textarea> | <textarea style="width: 80%;" 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, 255)"></textarea> | ||||
</div> | </div> | ||||
<div class="ui divider"></div> | <div class="ui divider"></div> | ||||
<h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.parameter_setting"}}:</h4> | |||||
<h4 class="train-job-title title ui header ">{{.i18n.Tr "repo.modelarts.train_job.parameter_setting"}}:</h4> | |||||
<div class="required unite min_title inline field"> | <div class="required unite min_title inline field"> | ||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.code_version"}}</label> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.code_version"}}</label> | |||||
<select class="ui dropdown width80 left2" id="code_version" name="branch_name"> | <select class="ui dropdown width80 left2" id="code_version" name="branch_name"> | ||||
{{if .branch_name}} | {{if .branch_name}} | ||||
<option name="branch_name" value="{{.branch_name}}">{{.branch_name}}</option> | <option name="branch_name" value="{{.branch_name}}">{{.branch_name}}</option> | ||||
@@ -145,8 +144,8 @@ | |||||
</select> | </select> | ||||
</div> | </div> | ||||
<div class="required unite min_title inline field" id="engine_name"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "cloudbrain.mirror"}}</label> | |||||
<div class="required min_title inline field" id="engine_name"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.mirror"}}</label> | |||||
<select class="ui dropdown width81" id="trainjob_images" name="image_id"> | <select class="ui dropdown width81" id="trainjob_images" name="image_id"> | ||||
{{range .images}} | {{range .images}} | ||||
<option name="image_id" value="{{.ID}}">{{.Name}}</option> | <option name="image_id" value="{{.ID}}">{{.Name}}</option> | ||||
@@ -154,8 +153,8 @@ | |||||
</select> | </select> | ||||
</div> | </div> | ||||
<div class="inline unite min_title field required"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.start_file"}}</label> | |||||
<div class="inline min_title field required"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.start_file"}}</label> | |||||
{{if .bootFile}} | {{if .bootFile}} | ||||
<input style="width: 48.5%;" name="boot_file" id="trainjob_boot_file" value="{{.bootFile}}" tabindex="3" autofocus required maxlength="255" > | <input style="width: 48.5%;" name="boot_file" id="trainjob_boot_file" value="{{.bootFile}}" tabindex="3" autofocus required maxlength="255" > | ||||
{{else}} | {{else}} | ||||
@@ -169,24 +168,24 @@ | |||||
{{template "custom/select_dataset_train" .}} | {{template "custom/select_dataset_train" .}} | ||||
<span class="tooltips" style="margin-left: 11.5rem;margin-bottom: 2rem;">{{.i18n.Tr "repo.grampus.dataset_path_rule"}}</span> | <span class="tooltips" style="margin-left: 11.5rem;margin-bottom: 2rem;">{{.i18n.Tr "repo.grampus.dataset_path_rule"}}</span> | ||||
<div class="inline unite min_title field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.run_parameter"}}</label> | |||||
<div class="inline min_title field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.run_parameter"}}</label> | |||||
<span id="add_run_para" style="margin-left: 0.5rem;cursor:pointer;color: rgba(3, 102, 214, 100);font-size: 14px;line-height: 26px;font-family: SourceHanSansSC-medium;"><i class="plus square outline icon"></i>{{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}</span> | <span id="add_run_para" style="margin-left: 0.5rem;cursor:pointer;color: rgba(3, 102, 214, 100);font-size: 14px;line-height: 26px;font-family: SourceHanSansSC-medium;"><i class="plus square outline icon"></i>{{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}</span> | ||||
<input id="store_run_para" type="hidden" name="run_para_list"> | <input id="store_run_para" type="hidden" name="run_para_list"> | ||||
<div class="dynamic field" style="margin-top: 1rem;"> | <div class="dynamic field" style="margin-top: 1rem;"> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="required unite min_title inline field" id="flavor_name"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.standard"}}</label> | |||||
<div class="required min_title inline field" id="flavor_name"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.standard"}}</label> | |||||
<select class="ui dropdown width81" id="trainjob-flavor" style='width:385px' name="flavor"> | <select class="ui dropdown width81" id="trainjob-flavor" style='width:385px' name="flavor"> | ||||
{{range .flavor_infos}} | {{range .flavor_infos}} | ||||
<option name="flavor" value="{{.ID}}">{{.Name}}</option> | <option name="flavor" value="{{.ID}}">{{.Name}}</option> | ||||
{{end}} | {{end}} | ||||
</select> | </select> | ||||
</div> | </div> | ||||
<div class="inline required unite min_title field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.amount_of_compute_node"}}</label> | |||||
<div class="inline required min_title field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.amount_of_compute_node"}}</label> | |||||
<div class="ui labeled input" style="width: 5%;"> | <div class="ui labeled input" style="width: 5%;"> | ||||
@@ -200,7 +199,8 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="inline unite min_title field"> | |||||
<div class="inline min_title field"> | |||||
<label class="label-fix-width"></label> | |||||
<button class="ui create_train_job green button"> | <button class="ui create_train_job green button"> | ||||
{{.i18n.Tr "repo.cloudbrain.new"}} | {{.i18n.Tr "repo.cloudbrain.new"}} | ||||
</button> | </button> | ||||
@@ -69,7 +69,6 @@ | |||||
} | } | ||||
.tab_2_content { | .tab_2_content { | ||||
min-height: 460px; | |||||
margin-left: 10px; | margin-left: 10px; | ||||
} | } | ||||
@@ -338,30 +337,6 @@ | |||||
</div> | </div> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr class="ti-no-ng-animate"> | |||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | |||||
{{$.i18n.Tr "repo.modelarts.train_job.dura_time"}} | |||||
</td> | |||||
<td class="ti-text-form-content"> | |||||
<div class="text-span text-span-w" | |||||
id="{{.VersionName}}-duration"> | |||||
{{$.duration}} | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr class="ti-no-ng-animate"> | |||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | |||||
{{$.i18n.Tr "repo.cloudbrain.datasetdownload"}} | |||||
</td> | |||||
<td class="ti-text-form-content"> | |||||
<div class="text-span-new" id="model_description"> | |||||
{{$.datasetDownloadLink}} | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr class="ti-no-ng-animate"> | <tr class="ti-no-ng-animate"> | ||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | <td class="ti-no-ng-animate ti-text-form-label text-width80"> | ||||
{{$.i18n.Tr "cloudbrain.description"}} | {{$.i18n.Tr "cloudbrain.description"}} | ||||
@@ -392,24 +367,6 @@ | |||||
</div> | </div> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr class="ti-no-ng-animate"> | |||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | |||||
{{$.i18n.Tr "repo.modelarts.train_job.dataset"}} | |||||
</td> | |||||
<td class="ti-text-form-content"> | |||||
<div class="text-span text-span-w" | |||||
id="{{.VersionName}}-BenchmarkTypeName"> | |||||
{{.DatasetName}} | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr class="ti-no-ng-animate"> | <tr class="ti-no-ng-animate"> | ||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | <td class="ti-no-ng-animate ti-text-form-label text-width80"> | ||||
{{$.i18n.Tr "repo.modelarts.train_job.standard"}} | {{$.i18n.Tr "repo.modelarts.train_job.standard"}} | ||||
@@ -456,6 +413,18 @@ | |||||
</div> | </div> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr class="ti-no-ng-animate"> | |||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | |||||
{{$.i18n.Tr "repo.modelarts.train_job.dura_time"}} | |||||
</td> | |||||
<td class="ti-text-form-content"> | |||||
<div class="text-span text-span-w" | |||||
id="{{.VersionName}}-duration"> | |||||
{{$.duration}} | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</tbody> | </tbody> | ||||
@@ -463,8 +432,26 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div style="clear:both"> | |||||
<table style="border:none" class="ui fixed small stackable table"> | |||||
<thead> | |||||
<tr><th style="color: #8a8e99;font-size:12px" class="three wide center aligned">数据集文件</th> | |||||
<th style="color: #8a8e99;font-size:12px"class="eleven wide">数据集下载地址</th> | |||||
<th style="color: #8a8e99;font-size:12px" class="two wide center aligned">操作</th> | |||||
</tr></thead> | |||||
<tbody> | |||||
{{range $.datasetDownload}} | |||||
<tr> | |||||
<td style="word-wrap: break-word;word-break: break-all;" class="center aligned"><a>{{.DatasetName}}</a></td> | |||||
<td style="word-wrap: break-word;word-break: break-all;">{{.DatasetDownloadLink}}</td> | |||||
<td class="center aligned" data-label="Job"><a class="clipboard" data-clipboard-text="{{.DatasetDownloadLink}}">复制链接</a></td> | |||||
</tr> | |||||
{{end}} | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -509,4 +496,5 @@ | |||||
$(document).ready(function () { | $(document).ready(function () { | ||||
$('.secondary.menu .item').tab(); | $('.secondary.menu .item').tab(); | ||||
}); | }); | ||||
console.log({{$.datasetDownload}}) | |||||
</script> | </script> |
@@ -1,11 +1,8 @@ | |||||
{{template "base/head" .}} | {{template "base/head" .}} | ||||
<style> | <style> | ||||
.unite{ | |||||
.train-job-title { | |||||
font-family: SourceHanSansSC-medium !important; | font-family: SourceHanSansSC-medium !important; | ||||
color: rgba(16, 16, 16, 100) !important; | color: rgba(16, 16, 16, 100) !important; | ||||
} | |||||
.title{ | |||||
font-size: 16px !important; | font-size: 16px !important; | ||||
padding-left: 3rem !important; | padding-left: 3rem !important; | ||||
} | } | ||||
@@ -84,9 +81,9 @@ | |||||
<input type="hidden" name="action" value="update"> | <input type="hidden" name="action" value="update"> | ||||
<input type="hidden" id="ai_engine_name" name="engine_names" value=""> | <input type="hidden" id="ai_engine_name" name="engine_names" value=""> | ||||
<input type="hidden" id="ai_flaver_name" name="flaver_names" value=""> | <input type="hidden" id="ai_flaver_name" name="flaver_names" value=""> | ||||
<h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4> | |||||
<div class="required unite min_title inline field"> | |||||
<label style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_cluster"}}</label> | |||||
<h4 class="train-job-title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_cluster"}}</label> | |||||
<div class="ui blue mini menu compact selectcloudbrain"> | <div class="ui blue mini menu compact selectcloudbrain"> | ||||
<a class="active item" href="{{.RepoLink}}/cloudbrain/train-job/create"> | <a class="active item" href="{{.RepoLink}}/cloudbrain/train-job/create"> | ||||
<svg class="svg" sxmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path fill="none" d="M0 0h24v24H0z"></path><path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"></path></svg> | <svg class="svg" sxmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path fill="none" d="M0 0h24v24H0z"></path><path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.008 8.008 0 0 0 5.648 6.667zM10.03 13c.151 2.439.848 4.73 1.97 6.752A15.905 15.905 0 0 0 13.97 13h-3.94zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.008 8.008 0 0 0 19.938 13zM4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333 8.008 8.008 0 0 0 4.062 11zm5.969 0h3.938A15.905 15.905 0 0 0 12 4.248 15.905 15.905 0 0 0 10.03 11zm4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.008 8.008 0 0 0-5.648-6.667z"></path></svg> | ||||
@@ -132,7 +129,7 @@ | |||||
</div> | </div> | ||||
<div class="ui divider"></div> | <div class="ui divider"></div> | ||||
<h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.parameter_setting"}}:</h4> | |||||
<h4 class="train-job-title ui header ">{{.i18n.Tr "repo.modelarts.train_job.parameter_setting"}}:</h4> | |||||
<div class="required inline min_title field"> | <div class="required inline min_title field"> | ||||
@@ -39,8 +39,15 @@ | |||||
class="disabled" | class="disabled" | ||||
style="width: 48.5%" | style="width: 48.5%" | ||||
placeholder="选择数据集文件" | placeholder="选择数据集文件" | ||||
required | |||||
/> | |||||
<input | |||||
v-else | |||||
type="text" | |||||
class="disabled" | |||||
required | |||||
placeholder="选择数据集文件" | |||||
/> | /> | ||||
<input v-else type="text" class="disabled" placeholder="选择数据集文件" /> | |||||
</span> | </span> | ||||
<el-button | <el-button | ||||
@@ -99,30 +106,37 @@ | |||||
> | > | ||||
<span slot-scope="{ node, data }" class="slot-wrap"> | <span slot-scope="{ node, data }" class="slot-wrap"> | ||||
<span v-if="data.parent" class="custom-tree-node"> | <span v-if="data.parent" class="custom-tree-node"> | ||||
<el-tooltip v-if="data.Description" placement="left"> | |||||
<el-tooltip v-if="data.Description" placement="top-start"> | |||||
<div slot="content" class="multiple-wrap"> | <div slot="content" class="multiple-wrap"> | ||||
{{ data.Description }} | {{ data.Description }} | ||||
</div> | </div> | ||||
<span class="dataset-title dataset-nowrap" | <span class="dataset-title dataset-nowrap" | ||||
>{{ node.label }} | |||||
><div class="dataset_flex"> | |||||
<span | |||||
style="flex: inherit" | |||||
class="dataset-nowrap" | |||||
>{{ node.label }}</span | |||||
> | |||||
<img | |||||
v-if="data.Recommend" | |||||
style="margin-left: 0.4rem" | |||||
src="/img/jian.svg" | |||||
/> | |||||
</div> | |||||
</span> | </span> | ||||
</el-tooltip> | </el-tooltip> | ||||
<span v-else class="dataset-title dataset-nowrap" | <span v-else class="dataset-title dataset-nowrap" | ||||
>{{ node.label }} | |||||
><div class="dataset_flex"> | |||||
<span style="flex: inherit" class="dataset-nowrap">{{ | |||||
node.label | |||||
}}</span> | |||||
<img | |||||
v-if="data.Recommend" | |||||
style="margin-left: 0.4rem" | |||||
src="/img/jian.svg" | |||||
/> | |||||
</div> | |||||
</span> | </span> | ||||
<!-- <a | |||||
:href=" | |||||
'/' + | |||||
data.Repo.OwnerName + | |||||
'/' + | |||||
data.Repo.Alias + | |||||
'/datasets' | |||||
" | |||||
target="_blank" | |||||
class="dataset-repolink dataset-nowrap" | |||||
:title="data.Repo.OwnerName + '/' + data.Repo.Alias" | |||||
>{{ data.Repo.OwnerName }}/{{ data.Repo.Alias }}</a | |||||
> --> | |||||
<span | <span | ||||
class="dataset-repolink dataset-nowrap" | class="dataset-repolink dataset-nowrap" | ||||
@click.stop="return false;" | @click.stop="return false;" | ||||
@@ -194,30 +208,54 @@ | |||||
> | > | ||||
<span slot-scope="{ node, data }" class="slot-wrap"> | <span slot-scope="{ node, data }" class="slot-wrap"> | ||||
<span v-if="data.parent" class="custom-tree-node"> | <span v-if="data.parent" class="custom-tree-node"> | ||||
<el-tooltip v-if="data.Description" placement="left"> | |||||
<el-tooltip v-if="data.Description" placement="top-start"> | |||||
<div slot="content" class="multiple-wrap"> | <div slot="content" class="multiple-wrap"> | ||||
{{ data.Description }} | {{ data.Description }} | ||||
</div> | </div> | ||||
<span class="dataset-title dataset-nowrap" | <span class="dataset-title dataset-nowrap" | ||||
>{{ node.label }} | |||||
><div class="dataset_flex"> | |||||
<span | |||||
style="flex: inherit" | |||||
class="dataset-nowrap" | |||||
>{{ node.label }}</span | |||||
> | |||||
<img | |||||
v-if="data.Recommend" | |||||
style="margin-left: 0.4rem" | |||||
src="/img/jian.svg" | |||||
/> | |||||
</div> | |||||
</span> | </span> | ||||
</el-tooltip> | </el-tooltip> | ||||
<span v-else class="dataset-title dataset-nowrap" | <span v-else class="dataset-title dataset-nowrap" | ||||
>{{ node.label }} | |||||
><div class="dataset_flex"> | |||||
<span style="flex: inherit" class="dataset-nowrap">{{ | |||||
node.label | |||||
}}</span> | |||||
<img | |||||
v-if="data.Recommend" | |||||
style="margin-left: 0.4rem" | |||||
src="/img/jian.svg" | |||||
/> | |||||
</div> | |||||
</span> | </span> | ||||
<a | |||||
:href=" | |||||
'/' + | |||||
data.Repo.OwnerName + | |||||
'/' + | |||||
data.Repo.Alias + | |||||
'/datasets' | |||||
" | |||||
target="_blank" | |||||
<span | |||||
class="dataset-repolink dataset-nowrap" | class="dataset-repolink dataset-nowrap" | ||||
:title="data.Repo.OwnerName + '/' + data.Repo.Alias" | |||||
>{{ data.Repo.OwnerName }}/{{ data.Repo.Alias }} | |||||
</a> | |||||
@click.stop="return false;" | |||||
> | |||||
<a | |||||
:href=" | |||||
'/' + | |||||
data.Repo.OwnerName + | |||||
'/' + | |||||
data.Repo.Alias + | |||||
'/datasets' | |||||
" | |||||
target="_blank" | |||||
:title="data.Repo.OwnerName + '/' + data.Repo.Alias" | |||||
>{{ data.Repo.OwnerName }}/{{ data.Repo.Alias }}</a | |||||
> | |||||
</span> | |||||
</span> | </span> | ||||
<span v-else style="display: flex"> | <span v-else style="display: flex"> | ||||
<span class="dataset-nowrap" :title="node.label"> | <span class="dataset-nowrap" :title="node.label"> | ||||
@@ -276,30 +314,54 @@ | |||||
> | > | ||||
<span slot-scope="{ node, data }" class="slot-wrap"> | <span slot-scope="{ node, data }" class="slot-wrap"> | ||||
<span v-if="data.parent" class="custom-tree-node"> | <span v-if="data.parent" class="custom-tree-node"> | ||||
<el-tooltip v-if="data.Description" placement="left"> | |||||
<el-tooltip v-if="data.Description" placement="top-start"> | |||||
<div slot="content" class="multiple-wrap"> | <div slot="content" class="multiple-wrap"> | ||||
{{ data.Description }} | {{ data.Description }} | ||||
</div> | </div> | ||||
<span class="dataset-title dataset-nowrap" | <span class="dataset-title dataset-nowrap" | ||||
>{{ node.label }} | |||||
><div class="dataset_flex"> | |||||
<span | |||||
style="flex: inherit" | |||||
class="dataset-nowrap" | |||||
>{{ node.label }}</span | |||||
> | |||||
<img | |||||
v-if="data.Recommend" | |||||
style="margin-left: 0.4rem" | |||||
src="/img/jian.svg" | |||||
/> | |||||
</div> | |||||
</span> | </span> | ||||
</el-tooltip> | </el-tooltip> | ||||
<span v-else class="dataset-title dataset-nowrap" | <span v-else class="dataset-title dataset-nowrap" | ||||
>{{ node.label }} | |||||
><div class="dataset_flex"> | |||||
<span style="flex: inherit" class="dataset-nowrap">{{ | |||||
node.label | |||||
}}</span> | |||||
<img | |||||
v-if="data.Recommend" | |||||
style="margin-left: 0.4rem" | |||||
src="/img/jian.svg" | |||||
/> | |||||
</div> | |||||
</span> | </span> | ||||
<a | |||||
:href=" | |||||
'/' + | |||||
data.Repo.OwnerName + | |||||
'/' + | |||||
data.Repo.Alias + | |||||
'/datasets' | |||||
" | |||||
target="_blank" | |||||
<span | |||||
class="dataset-repolink dataset-nowrap" | class="dataset-repolink dataset-nowrap" | ||||
:title="data.Repo.OwnerName + '/' + data.Repo.Alias" | |||||
>{{ data.Repo.OwnerName }}/{{ data.Repo.Alias }}</a | |||||
@click.stop="return false;" | |||||
> | > | ||||
<a | |||||
:href=" | |||||
'/' + | |||||
data.Repo.OwnerName + | |||||
'/' + | |||||
data.Repo.Alias + | |||||
'/datasets' | |||||
" | |||||
target="_blank" | |||||
:title="data.Repo.OwnerName + '/' + data.Repo.Alias" | |||||
>{{ data.Repo.OwnerName }}/{{ data.Repo.Alias }}</a | |||||
> | |||||
</span> | |||||
</span> | </span> | ||||
<span v-else style="display: flex"> | <span v-else style="display: flex"> | ||||
<span class="dataset-nowrap" :title="node.label"> | <span class="dataset-nowrap" :title="node.label"> | ||||
@@ -358,30 +420,54 @@ | |||||
> | > | ||||
<span slot-scope="{ node, data }" class="slot-wrap"> | <span slot-scope="{ node, data }" class="slot-wrap"> | ||||
<span v-if="data.parent" class="custom-tree-node"> | <span v-if="data.parent" class="custom-tree-node"> | ||||
<el-tooltip v-if="data.Description" placement="left"> | |||||
<el-tooltip v-if="data.Description" placement="top-start"> | |||||
<div slot="content" class="multiple-wrap"> | <div slot="content" class="multiple-wrap"> | ||||
{{ data.Description }} | {{ data.Description }} | ||||
</div> | </div> | ||||
<span class="dataset-title dataset-nowrap" | <span class="dataset-title dataset-nowrap" | ||||
>{{ node.label }} | |||||
><div class="dataset_flex"> | |||||
<span | |||||
style="flex: inherit" | |||||
class="dataset-nowrap" | |||||
>{{ node.label }}</span | |||||
> | |||||
<img | |||||
v-if="data.Recommend" | |||||
style="margin-left: 0.4rem" | |||||
src="/img/jian.svg" | |||||
/> | |||||
</div> | |||||
</span> | </span> | ||||
</el-tooltip> | </el-tooltip> | ||||
<span v-else class="dataset-title dataset-nowrap" | <span v-else class="dataset-title dataset-nowrap" | ||||
>{{ node.label }} | |||||
><div class="dataset_flex"> | |||||
<span style="flex: inherit" class="dataset-nowrap">{{ | |||||
node.label | |||||
}}</span> | |||||
<img | |||||
v-if="data.Recommend" | |||||
style="margin-left: 0.4rem" | |||||
src="/img/jian.svg" | |||||
/> | |||||
</div> | |||||
</span> | </span> | ||||
<a | |||||
:href=" | |||||
'/' + | |||||
data.Repo.OwnerName + | |||||
'/' + | |||||
data.Repo.Alias + | |||||
'/datasets' | |||||
" | |||||
target="_blank" | |||||
<span | |||||
class="dataset-repolink dataset-nowrap" | class="dataset-repolink dataset-nowrap" | ||||
:title="data.Repo.OwnerName + '/' + data.Repo.Alias" | |||||
>{{ data.Repo.OwnerName }}/{{ data.Repo.Alias }}</a | |||||
@click.stop="return false;" | |||||
> | > | ||||
<a | |||||
:href=" | |||||
'/' + | |||||
data.Repo.OwnerName + | |||||
'/' + | |||||
data.Repo.Alias + | |||||
'/datasets' | |||||
" | |||||
target="_blank" | |||||
:title="data.Repo.OwnerName + '/' + data.Repo.Alias" | |||||
>{{ data.Repo.OwnerName }}/{{ data.Repo.Alias }}</a | |||||
> | |||||
</span> | |||||
</span> | </span> | ||||
<span v-else style="display: flex"> | <span v-else style="display: flex"> | ||||
<span class="dataset-nowrap" :title="node.label"> | <span class="dataset-nowrap" :title="node.label"> | ||||
@@ -1,216 +1,292 @@ | |||||
<template> | <template> | ||||
<div class="inline required field" :class="{ 'unite': benchmarkNew, 'min_title': benchmarkNew}"> | |||||
<label v-if="benchmarkNew" style="font-weight: normal;">镜像</label> | |||||
<label v-else>镜像</label> | |||||
<span v-if="benchmarkNew"> </span> | |||||
<input v-if="benchmarkNew" type="text" name="image" :value="imageAddress" style="width: 48.5%;" | |||||
placeholder="选择镜像或输入镜像地址"> | |||||
<input v-else type="text" name="image" :value="imageAddress" placeholder="选择镜像或输入镜像地址"> | |||||
<el-button type="text" @click="dialogVisible = true" icon="el-icon-plus" style="color: #0366d6;">选择镜像 | |||||
</el-button> | |||||
<el-dialog title="选择镜像" :visible.sync="dialogVisible" width="50%"> | |||||
<div class="ui icon input" style="z-index: 9999;position: absolute;right: 50px;height:30px;"> | |||||
<i class="search icon" style="cursor: pointer;pointer-events:auto"></i> | |||||
<input type="text" placeholder="搜镜像Tag/描述/标签..." v-model="search"> | |||||
<div | |||||
class="inline required field" | |||||
:class="{ unite: benchmarkNew, min_title: benchmarkNew }" | |||||
> | |||||
<label | |||||
v-if="benchmarkNew" | |||||
class="label-fix-width" | |||||
style="font-weight: normal" | |||||
>镜像</label | |||||
> | |||||
<label v-else>镜像</label> | |||||
<input | |||||
v-if="benchmarkNew" | |||||
type="text" | |||||
name="image" | |||||
:value="imageAddress" | |||||
style="width: 48.5%" | |||||
placeholder="选择镜像或输入镜像地址" | |||||
/> | |||||
<input | |||||
v-else | |||||
type="text" | |||||
name="image" | |||||
:value="imageAddress" | |||||
placeholder="选择镜像或输入镜像地址" | |||||
/> | |||||
<el-button | |||||
type="text" | |||||
@click="dialogVisible = true" | |||||
icon="el-icon-plus" | |||||
style="color: #0366d6" | |||||
>选择镜像 | |||||
</el-button> | |||||
<el-dialog title="选择镜像" :visible.sync="dialogVisible" width="50%"> | |||||
<div | |||||
class="ui icon input" | |||||
style="z-index: 9999; position: absolute; right: 50px; height: 30px" | |||||
> | |||||
<i | |||||
class="search icon" | |||||
style="cursor: pointer; pointer-events: auto" | |||||
></i> | |||||
<input | |||||
type="text" | |||||
placeholder="搜镜像Tag/描述/标签..." | |||||
v-model="search" | |||||
/> | |||||
</div> | |||||
<el-tabs v-model="activeName" @tab-click="handleClick"> | |||||
<el-tab-pane label="公开镜像" name="first" v-loading="loadingPublic"> | |||||
<div | |||||
style=" | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: space-between; | |||||
padding: 1rem 0; | |||||
border-bottom: 1px solid #f5f5f5; | |||||
" | |||||
v-for="(publicData, index) in tableDataPublic" | |||||
:key="index" | |||||
> | |||||
<div style="width: 90%"> | |||||
<div | |||||
style=" | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: space-between; | |||||
" | |||||
> | |||||
<div style="display: flex; align-items: center"> | |||||
<span | |||||
class="panel_dataset_name text-over" | |||||
style="margin-left: 0" | |||||
>{{ publicData.tag }} | |||||
</span> | |||||
<img | |||||
v-if="publicData.type == 5" | |||||
src="/img/jian.svg" | |||||
style="margin-left: 0.5rem" | |||||
/> | |||||
</div> | |||||
<div v-if="!!publicData.topics" class="text-over"> | |||||
<span | |||||
v-for="(topic, index) in publicData.topics" | |||||
class="ui repo-topic label topic" | |||||
>{{ topic }}</span | |||||
> | |||||
</div> | |||||
</div> | |||||
<div style="margin-top: 8px; display: flex"> | |||||
<a | |||||
v-if="publicData.relAvatarLink || publicData.userName" | |||||
:title="publicData.userName" | |||||
style="cursor: default" | |||||
> | |||||
<img | |||||
class="ui avatar mini image" | |||||
style="width: 20px; height: 20px" | |||||
:src="publicData.relAvatarLink" | |||||
/> | |||||
</a> | |||||
<a v-else | |||||
><img | |||||
class="ui avatar mini image" | |||||
title="Ghost" | |||||
src="/user/avatar/ghost/-1" | |||||
style="width: 20px; height: 20px" | |||||
/></a> | |||||
<span class="panel_datset_desc">{{ | |||||
publicData.description | |||||
}}</span> | |||||
</div> | |||||
</div> | </div> | ||||
<el-tabs v-model="activeName" @tab-click="handleClick"> | |||||
<el-tab-pane label="公开镜像" name="first" v-loading="loadingPublic"> | |||||
<div style="display: flex;align-items: center;justify-content: space-between;padding: 1rem 0;border-bottom:1px solid #F5F5F5" | |||||
v-for="(publicData,index) in tableDataPublic" :key="index"> | |||||
<div style="width: 90%;"> | |||||
<div style="display: flex;align-items: center;justify-content: space-between;"> | |||||
<div style="display: flex;align-items: center;"> | |||||
<span class="panel_dataset_name text-over" | |||||
style="margin-left: 0;">{{publicData.tag}} </span> | |||||
<img v-if="publicData.type==5" src="/img/jian.svg" style="margin-left: 0.5rem;"> | |||||
</div> | |||||
<div v-if="!!publicData.topics" class="text-over"> | |||||
<span v-for="(topic,index) in publicData.topics" | |||||
class="ui repo-topic label topic">{{topic}}</span> | |||||
</div> | |||||
</div> | |||||
<div style="margin-top: 8px;display: flex;"> | |||||
<a v-if="publicData.relAvatarLink||publicData.userName" :title="publicData.userName" | |||||
style="cursor: default;"> | |||||
<img class="ui avatar mini image" style="width: 20px;height: 20px;" | |||||
:src="publicData.relAvatarLink"> | |||||
</a> | |||||
<a v-else><img class="ui avatar mini image" title="Ghost" src="/user/avatar/ghost/-1" | |||||
style="width: 20px;height: 20px;"></a> | |||||
<span class="panel_datset_desc">{{publicData.description}}</span> | |||||
</div> | |||||
</div> | |||||
<div> | |||||
<button class="ui primary basic button mini" | |||||
@click.stop.prevent="selectImages(publicData.place,publicData.tag)">使用</button> | |||||
</div> | |||||
</div> | |||||
<div class="ui container" style="margin-top:50px;text-align:center"> | |||||
<el-pagination background @current-change="handleCurrentChangePublic" | |||||
:current-page="currentPagePublic" :page-size="pageSizePublic" | |||||
layout="total, prev, pager, next" :total="totalNumPublic"> | |||||
</el-pagination> | |||||
</div> | |||||
</el-tab-pane> | |||||
</el-tabs> | |||||
</el-dialog> | |||||
</div> | |||||
<div> | |||||
<button | |||||
class="ui primary basic button mini" | |||||
@click.stop.prevent=" | |||||
selectImages(publicData.place, publicData.tag) | |||||
" | |||||
> | |||||
使用 | |||||
</button> | |||||
</div> | |||||
</div> | |||||
<div | |||||
class="ui container" | |||||
style="margin-top: 50px; text-align: center" | |||||
> | |||||
<el-pagination | |||||
background | |||||
@current-change="handleCurrentChangePublic" | |||||
:current-page="currentPagePublic" | |||||
:page-size="pageSizePublic" | |||||
layout="total, prev, pager, next" | |||||
:total="totalNumPublic" | |||||
> | |||||
</el-pagination> | |||||
</div> | |||||
</el-tab-pane> | |||||
</el-tabs> | |||||
</el-dialog> | |||||
</div> | |||||
</template> | </template> | ||||
<script> | <script> | ||||
const { _AppSubUrl, _StaticUrlPrefix, csrf } = window.config; | |||||
export default { | |||||
components: { | |||||
}, | |||||
data() { | |||||
return { | |||||
dialogVisible: false, | |||||
benchmarkNew: false, | |||||
imageAddress: '', | |||||
activeName: 'first', | |||||
search: '', | |||||
checked: false, | |||||
currentPagePublic: 1, | |||||
pageSizePublic: 5, | |||||
totalNumPublic: 0, | |||||
paramsPublic: { page: 1, pageSize: 5, q: '', recommend: false,cloudbrainType: 2 }, | |||||
tableDataPublic: [], | |||||
loadingPublic: false, | |||||
}; | |||||
}, | |||||
methods: { | |||||
handleClick(tab, event) { | |||||
this.search = '' | |||||
if (tab.name == "first") { | |||||
this.paramsPublic.q = '' | |||||
this.getImageListPublic() | |||||
} | |||||
}, | |||||
tableHeaderStyle({ row, column, rowIndex, columnIndex }) { | |||||
if (rowIndex === 0) { | |||||
return 'background:#f5f5f6;color:#606266' | |||||
} | |||||
}, | |||||
handleCurrentChangePublic(val) { | |||||
this.paramsPublic.page = val | |||||
this.getImageListPublic() | |||||
}, | |||||
getImageListPublic() { | |||||
this.loadingPublic = true | |||||
this.$axios.get('/explore/images/public', { | |||||
params: this.paramsPublic | |||||
}).then((res) => { | |||||
this.totalNumPublic = res.data.count | |||||
this.tableDataPublic = res.data.images | |||||
this.loadingPublic = false | |||||
}) | |||||
}, | |||||
searchName() { | |||||
if (this.activeName == 'first') { | |||||
this.paramsPublic.q = this.search | |||||
this.paramsPublic.page = 1 | |||||
this.getImageListPublic() | |||||
} | |||||
}, | |||||
selectImages(place) { | |||||
this.imageAddress = place | |||||
this.dialogVisible = false | |||||
}, | |||||
}, | |||||
watch: { | |||||
search(val) { | |||||
if (this.activeName == 'first') { | |||||
this.paramsPublic.q = val | |||||
this.getImageListPublic() | |||||
} | |||||
} | |||||
}, | |||||
mounted() { | |||||
this.getImageListPublic() | |||||
if (location.href.indexOf('benchmark') !== -1 || location.href.indexOf('train-job') !== -1) { | |||||
this.benchmarkNew = true | |||||
} | |||||
}, | |||||
created() { | |||||
} | |||||
const { _AppSubUrl, _StaticUrlPrefix, csrf } = window.config; | |||||
export default { | |||||
components: {}, | |||||
data() { | |||||
return { | |||||
dialogVisible: false, | |||||
benchmarkNew: false, | |||||
imageAddress: "", | |||||
activeName: "first", | |||||
search: "", | |||||
checked: false, | |||||
currentPagePublic: 1, | |||||
pageSizePublic: 5, | |||||
totalNumPublic: 0, | |||||
paramsPublic: { | |||||
page: 1, | |||||
pageSize: 5, | |||||
q: "", | |||||
recommend: false, | |||||
cloudbrainType: 2, | |||||
}, | |||||
tableDataPublic: [], | |||||
loadingPublic: false, | |||||
}; | }; | ||||
}, | |||||
methods: { | |||||
handleClick(tab, event) { | |||||
this.search = ""; | |||||
if (tab.name == "first") { | |||||
this.paramsPublic.q = ""; | |||||
this.getImageListPublic(); | |||||
} | |||||
}, | |||||
tableHeaderStyle({ row, column, rowIndex, columnIndex }) { | |||||
if (rowIndex === 0) { | |||||
return "background:#f5f5f6;color:#606266"; | |||||
} | |||||
}, | |||||
handleCurrentChangePublic(val) { | |||||
this.paramsPublic.page = val; | |||||
this.getImageListPublic(); | |||||
}, | |||||
getImageListPublic() { | |||||
this.loadingPublic = true; | |||||
this.$axios | |||||
.get("/explore/images/public", { | |||||
params: this.paramsPublic, | |||||
}) | |||||
.then((res) => { | |||||
this.totalNumPublic = res.data.count; | |||||
this.tableDataPublic = res.data.images; | |||||
this.loadingPublic = false; | |||||
}); | |||||
}, | |||||
searchName() { | |||||
if (this.activeName == "first") { | |||||
this.paramsPublic.q = this.search; | |||||
this.paramsPublic.page = 1; | |||||
this.getImageListPublic(); | |||||
} | |||||
}, | |||||
selectImages(place) { | |||||
this.imageAddress = place; | |||||
this.dialogVisible = false; | |||||
}, | |||||
}, | |||||
watch: { | |||||
search(val) { | |||||
if (this.activeName == "first") { | |||||
this.paramsPublic.q = val; | |||||
this.getImageListPublic(); | |||||
} | |||||
}, | |||||
}, | |||||
mounted() { | |||||
this.getImageListPublic(); | |||||
if ( | |||||
location.href.indexOf("benchmark") !== -1 || | |||||
location.href.indexOf("train-job") !== -1 | |||||
) { | |||||
this.benchmarkNew = true; | |||||
} | |||||
}, | |||||
created() {}, | |||||
}; | |||||
</script> | </script> | ||||
<style scoped> | <style scoped> | ||||
.header-wrapper { | |||||
background-color: #f5f5f6; | |||||
padding-top: 15px; | |||||
} | |||||
.image_text { | |||||
padding: 25px 0 55px 0; | |||||
} | |||||
#header { | |||||
position: relative; | |||||
top: -40px; | |||||
} | |||||
#success { | |||||
background-color: #5bb973; | |||||
color: white; | |||||
} | |||||
.text-over { | |||||
overflow: hidden; | |||||
text-overflow: ellipsis; | |||||
vertical-align: middle; | |||||
white-space: nowrap; | |||||
} | |||||
.image_title { | |||||
display: inline-block; | |||||
width: 80%; | |||||
cursor: default; | |||||
color: rgb(66, 98, 144); | |||||
} | |||||
.image_desc { | |||||
-webkit-line-clamp: 2; | |||||
-webkit-box-orient: vertical; | |||||
display: -webkit-box; | |||||
text-overflow: ellipsis; | |||||
overflow: hidden; | |||||
} | |||||
.heart-stroke { | |||||
stroke: #666; | |||||
stroke-width: 2; | |||||
fill: #fff | |||||
} | |||||
.stars_active { | |||||
fill: #FA8C16 !important; | |||||
stroke: #FA8C16 !important | |||||
} | |||||
</style> | |||||
.header-wrapper { | |||||
background-color: #f5f5f6; | |||||
padding-top: 15px; | |||||
} | |||||
.image_text { | |||||
padding: 25px 0 55px 0; | |||||
} | |||||
#header { | |||||
position: relative; | |||||
top: -40px; | |||||
} | |||||
#success { | |||||
background-color: #5bb973; | |||||
color: white; | |||||
} | |||||
.text-over { | |||||
overflow: hidden; | |||||
text-overflow: ellipsis; | |||||
vertical-align: middle; | |||||
white-space: nowrap; | |||||
} | |||||
.image_title { | |||||
display: inline-block; | |||||
width: 80%; | |||||
cursor: default; | |||||
color: rgb(66, 98, 144); | |||||
} | |||||
.image_desc { | |||||
-webkit-line-clamp: 2; | |||||
-webkit-box-orient: vertical; | |||||
display: -webkit-box; | |||||
text-overflow: ellipsis; | |||||
overflow: hidden; | |||||
} | |||||
.heart-stroke { | |||||
stroke: #666; | |||||
stroke-width: 2; | |||||
fill: #fff; | |||||
} | |||||
.stars_active { | |||||
fill: #fa8c16 !important; | |||||
stroke: #fa8c16 !important; | |||||
} | |||||
</style> |
@@ -18,6 +18,7 @@ | |||||
:value="imageAddress" | :value="imageAddress" | ||||
style="width: 48.5%" | style="width: 48.5%" | ||||
placeholder="选择镜像或输入镜像地址" | placeholder="选择镜像或输入镜像地址" | ||||
required | |||||
/> | /> | ||||
<input | <input | ||||
v-else | v-else | ||||
@@ -25,6 +26,7 @@ | |||||
name="image" | name="image" | ||||
:value="imageAddress" | :value="imageAddress" | ||||
placeholder="选择镜像或输入镜像地址" | placeholder="选择镜像或输入镜像地址" | ||||
required | |||||
/> | /> | ||||
<el-button | <el-button | ||||
type="text" | type="text" | ||||