Browse Source

fix issue

pull/1693/head
zhoupzh 3 years ago
parent
commit
b1e33ebb15
14 changed files with 360 additions and 182 deletions
  1. +28
    -1
      options/locale/locale_en-US.ini
  2. +29
    -1
      options/locale/locale_zh-CN.ini
  3. +57
    -6
      templates/custom/select_dataset.tmpl
  4. +7
    -5
      templates/explore/datasets.tmpl
  5. +3
    -3
      templates/repo/attachment/edit.tmpl
  6. +14
    -35
      templates/repo/attachment/upload.tmpl
  7. +1
    -26
      templates/repo/cloudbrain/new.tmpl
  8. +14
    -14
      templates/repo/datasets/create.tmpl
  9. +14
    -14
      templates/repo/datasets/edit.tmpl
  10. +54
    -43
      templates/repo/datasets/index.tmpl
  11. +9
    -18
      templates/repo/modelarts/notebook/new.tmpl
  12. +7
    -3
      web_src/js/components/MinioUploader.vue
  13. +88
    -13
      web_src/js/index.js
  14. +35
    -0
      web_src/less/_dataset.less

+ 28
- 1
options/locale/locale_en-US.ini View File

@@ -796,6 +796,33 @@ owner_dataset=Owner Dataset
public_dataset=Public Dataset public_dataset=Public Dataset
I_liked = I Liked I_liked = I Liked
use = Use use = Use
create_new_dataset = Create New Dataset
dataset_name = Dataset Name
dataset_description = Dataset Description
select_category = Select Category
select_task = Select Research Direction/Application Area
dataset_name_tooltips = Please enter letters, numbers, _ and - up to 64 characters and cannot end with a dash (-).
dataset_no_create = No dataset has been created yet
dataset_explain = Dataset: CloudBrain I provides CPU/GPU resources, Cloudbrain II provides Ascend NPU resources, and the data set used for debugging also needs to be uploaded to the corresponding environment;
dataset_instructions_for_use = Instructions for use: You can refer to Qizhi AI Collaboration Platform
dataset_camp_course = Newcomer Training Camp Course;
dataset_upload = Upload
dataset_file_name = File Name
dataset_available_clusters = Available Clusters
dataset_upload_time = Upload Time
download = Download
modify_description = Modify Description
set_public = Set Public
set_private = Set Private
annotation = Annotation
upload_dataset_file = Upload Dataset File
file_description = File Description
data_upload = Dataset Upload
illustrate = Illustrate
illustrate.only = Only Datasets In
illustrate.zip = Zip Format
illustrate.fisrt_end = Can Initiate Cloudbrain Tasks
modify_dataset = Modify Dataset
[repo] [repo]
owner = Owner owner = Owner
repo_name = Repository Name repo_name = Repository Name
@@ -825,7 +852,7 @@ repo_label_helpe = Press Enter to complete
issue_labels = Issue Labels issue_labels = Issue Labels
issue_labels_helper = Select an issue label set. issue_labels_helper = Select an issue label set.
license = License license = License
license_helper = Select a license file.
license_helper = Select a license file
readme = README readme = README
readme_helper = Select a README file template. readme_helper = Select a README file template.
auto_init = Initialize Repository (Adds .gitignore, License and README) auto_init = Initialize Repository (Adds .gitignore, License and README)


+ 29
- 1
options/locale/locale_zh-CN.ini View File

@@ -801,6 +801,34 @@ owner_dataset=我的数据集
public_dataset=公开数据集 public_dataset=公开数据集
I_liked=我收藏的 I_liked=我收藏的
use=使用 use=使用
create_new_dataset = 新建数据集
dataset_name=数据集名称
dataset_description = 数据集描述
select_category = 选择分类
select_task = 选择研究方向/应用领域
dataset_name_tooltips = 请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。
dataset_no_create = 还未创建过数据集
dataset_explain = 数据集:云脑1提供 CPU / GPU 资源,云脑2提供 Ascend NPU 资源,调试使用的数据集也需要上传到对应的环境;
dataset_instructions_for_use = 使用说明:可以参考启智AI协作平台
dataset_camp_course = 小白训练营课程
dataset_upload = 上传
dataset_file_name = 文件名字
dataset_available_clusters = 可用集群
dataset_upload_time = 上传时间
download = 下载
modify_description = 修改描述
set_public = 设为公开
set_private = 设为私有
annotation = 标注
upload_dataset_file = 上传数据集文件
file_description = 文件描述
data_upload = 数据上传
illustrate = 说明
illustrate.only = 只有
illustrate.zip = zip格式
illustrate.fisrt_end = 的数据集才能发起云脑任务
modify_dataset = 修改数据集

[repo] [repo]
owner=拥有者 owner=拥有者
repo_name=项目名称 repo_name=项目名称
@@ -830,7 +858,7 @@ repo_label_helpe=输入完成后回车键完成标签确定。
issue_labels=任务标签 issue_labels=任务标签
issue_labels_helper=选择一个任务标签集 issue_labels_helper=选择一个任务标签集
license=授权许可 license=授权许可
license_helper=选择授权许可文件
license_helper=选择授权许可文件
readme=自述 readme=自述
readme_helper=选择自述文件模板。 readme_helper=选择自述文件模板。
auto_init=初始化存储库 (添加. gitignore、许可证和自述文件) auto_init=初始化存储库 (添加. gitignore、许可证和自述文件)


+ 57
- 6
templates/custom/select_dataset.tmpl View File

@@ -1,8 +1,27 @@
<style>
.loading{
animation: load 2s linear infinite;
}
@-webkit-keyframes load
{
from{-webkit-transform:rotate(0deg);}
to{-webkit-transform:rotate(360deg);}
}
@-moz-keyframes load
{
from{-moz-transform:rotate(0deg);}
to{-moz-transform:rotate(360deg);}
}
@-o-keyframes load
{
from{-o-transform:rotate(0deg);}
to{-o-transform:rotate(360deg);}
}</style>
<div class="dataset-repolink" id="dataset-repolink-init" style="display: none;" data-repolink="{{.RepoLink}}" data-cloudranin-type="{{.cloudbraintype}}"></div> <div class="dataset-repolink" id="dataset-repolink-init" style="display: none;" data-repolink="{{.RepoLink}}" data-cloudranin-type="{{.cloudbraintype}}"></div>
<div class="inline required field" id="dataset-base"> <div class="inline required field" id="dataset-base">
<label>{{.i18n.Tr "dataset.dataset"}}</label> <label>{{.i18n.Tr "dataset.dataset"}}</label>
<input type="hidden" name="attachment" :value="dataset_uuid"> <input type="hidden" name="attachment" :value="dataset_uuid">
<input type="text" :value="dataset_name">
<input type="text" :value="dataset_name" disabled>
<el-button type="text" @click="dialogVisible = true" icon="el-icon-plus"> {{.i18n.Tr "dataset.select_dataset"}}</el-button> <el-button type="text" @click="dialogVisible = true" icon="el-icon-plus"> {{.i18n.Tr "dataset.select_dataset"}}</el-button>
<el-dialog <el-dialog
title="{{.i18n.Tr "dataset.select_dataset"}}" title="{{.i18n.Tr "dataset.select_dataset"}}"
@@ -27,7 +46,15 @@
</div> </div>
</div> </div>
<div> <div>
<button class="ui primary basic button mini" @click.stop.prevent="selectDataset(dataset.UUID,dataset.Name)">{{.i18n.Tr "dataset.use"}}</button>
<button v-if="dataset.DecompressState===1" class="ui primary basic button mini" @click.stop.prevent="selectDataset(dataset.UUID,dataset.Name)">{{.i18n.Tr "dataset.use"}}</button>
<span v-if="dataset.DecompressState===2" style="display: flex;align-items: center;">
<i class="CREATING"></i>
<span style="margin-left: 0.4em;font-size: 12px;color: #5A5A5A;">解压中</span>
</span>
<span v-if="dataset.DecompressState===3" style="display: flex;align-items: center;">
<i class="FAILED"></i>
<span style="margin-left: 0.4em;font-size: 12px;color:red;">解压失败</span>
</span>
</div> </div>
</div> </div>
@@ -45,7 +72,15 @@
</div> </div>
</div> </div>
<div> <div>
<button class="ui primary basic button mini" @click.stop.prevent="selectDataset(dataset.UUID,dataset.Name)">{{.i18n.Tr "dataset.use"}}</button>
<button v-if="dataset.DecompressState===1" class="ui primary basic button mini" @click.stop.prevent="selectDataset(dataset.UUID,dataset.Name)">{{.i18n.Tr "dataset.use"}}</button>
<span v-if="dataset.DecompressState===2" style="display: flex;align-items: center;">
<i class="CREATING"></i>
<span style="margin-left: 0.4em;font-size: 12px;color: #5A5A5A;">解压中</span>
</span>
<span v-if="dataset.DecompressState===3" style="display: flex;align-items: center;">
<i class="FAILED"></i>
<span style="margin-left: 0.4em;font-size: 12px;color:red;">解压失败</span>
</span>
</div> </div>
</div> </div>


@@ -55,14 +90,22 @@
<div style="width: 90%;"> <div style="width: 90%;">
<div style="display: flex;align-items: center;"><span class="panel_creator_reponam">${dataset.Repo.OwnerName}/${dataset.Repo.Alias}</span><span class="panel_dataset_name">${dataset.Name}</span></div> <div style="display: flex;align-items: center;"><span class="panel_creator_reponam">${dataset.Repo.OwnerName}/${dataset.Repo.Alias}</span><span class="panel_dataset_name">${dataset.Name}</span></div>
<div style="margin-top: 8px;display: flex;"> <div style="margin-top: 8px;display: flex;">
<a :title="dataset.Repo.OwnerName">
<a :title="dataset.UserName">
<img class="ui avatar mini image" style="width: 20px;height: 20px;" :src="dataset.RelAvatarLink"> <img class="ui avatar mini image" style="width: 20px;height: 20px;" :src="dataset.RelAvatarLink">
</a> </a>
<span class="panel_datset_desc">${dataset.Description}</span> <span class="panel_datset_desc">${dataset.Description}</span>
</div> </div>
</div> </div>
<div> <div>
<button class="ui primary basic button mini" @click.stop.prevent="selectDataset(dataset.UUID,dataset.Name)">{{.i18n.Tr "dataset.use"}}</button>
<button v-if="dataset.DecompressState===1" class="ui primary basic button mini" @click.stop.prevent="selectDataset(dataset.UUID,dataset.Name)">{{.i18n.Tr "dataset.use"}}</button>
<span v-if="dataset.DecompressState===2" style="display: flex;align-items: center;">
<i class="CREATING"></i>
<span style="margin-left: 0.4em;font-size: 12px;color: #5A5A5A;">解压中</span>
</span>
<span v-if="dataset.DecompressState===3" style="display: flex;align-items: center;">
<i class="FAILED"></i>
<span style="margin-left: 0.4em;font-size: 12px;color:red;">解压失败</span>
</span>
</div> </div>
</div> </div>


@@ -79,7 +122,15 @@
</div> </div>
</div> </div>
<div> <div>
<button class="ui primary basic button mini" @click.stop.prevent="selectDataset(dataset.UUID,dataset.Name)">{{.i18n.Tr "dataset.use"}}</button>
<button v-if="dataset.DecompressState===1" class="ui primary basic button mini" @click.stop.prevent="selectDataset(dataset.UUID,dataset.Name)">{{.i18n.Tr "dataset.use"}}</button>
<span v-if="dataset.DecompressState===2" style="display: flex;align-items: center;">
<i class="CREATING"></i>
<span style="margin-left: 0.4em;font-size: 12px;color: #5A5A5A;">解压中</span>
</span>
<span v-if="dataset.DecompressState===3" style="display: flex;align-items: center;">
<i class="FAILED"></i>
<span style="margin-left: 0.4em;font-size: 12px;color:red;">解压失败</span>
</span>
</div> </div>
</div> </div>




+ 7
- 5
templates/explore/datasets.tmpl View File

@@ -117,7 +117,7 @@
<a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a> <a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a>
<a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a> <a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a>
<a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a> <a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a>
<a class="{{if eq .SortType "downloadtimes"}}active{{end}} item" href="{{$.Link}}?sort=downloadtimes&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.downloadtimes"}}</a>
<!-- <a class="{{if eq .SortType "downloadtimes"}}active{{end}} item" href="{{$.Link}}?sort=downloadtimes&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.downloadtimes"}}</a> -->
</div> </div>
</div> </div>
</div> </div>
@@ -155,11 +155,13 @@
</div> </div>
<div style="font-size: 16px;color:#0366D6;font-family: SourceHanSansSC-medium;height: 27px;">{{.Title}}</div> <div style="font-size: 16px;color:#0366D6;font-family: SourceHanSansSC-medium;height: 27px;">{{.Title}}</div>
<div style="font-size: 12px;margin-top: 5px;height: 24px;"> <div style="font-size: 12px;margin-top: 5px;height: 24px;">
{{if .Task}}
<a class="ui repo-topic label topic" href="{{$.Link}}?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{$.Category}}&task={{.Task}}&license={{$.License}}">{{.Task}}</a>
{{end}}
{{if .Category}} {{if .Category}}
<a class="ui repo-topic label topic" href="{{$.Link}}?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{.Category}}&task={{$.Task}}&license={{$.License}}">{{.Category}}</a>
{{$category := .Category}}
<a class="ui repo-topic label topic" href="{{$.Link}}?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{.Category}}&task={{$.Task}}&license={{$.License}}">{{$.i18n.Tr (printf "dataset.category.%s" $category)}}</a>
{{end}}
{{if .Task}}
{{$task := .Task}}
<a class="ui repo-topic label topic" href="{{$.Link}}?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{$.Category}}&task={{.Task}}&license={{$.License}}">{{$.i18n.Tr (printf "dataset.task.%s" $task)}}</a>
{{end}} {{end}}
{{if .License}} {{if .License}}
<a class="ui repo-topic label topic" href="{{$.Link}}?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{$.Category}}&task={{$.Task}}&license={{.License}}">{{.License}}</a> <a class="ui repo-topic label topic" href="{{$.Link}}?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{$.Category}}&task={{$.Task}}&license={{.License}}">{{.License}}</a>


+ 3
- 3
templates/repo/attachment/edit.tmpl View File

@@ -31,8 +31,8 @@
<el-input type="textarea" :rows="3" maxlength="255" v-model="descfile"></el-input> <el-input type="textarea" :rows="3" maxlength="255" v-model="descfile"></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button style="background-color: #21ba45;" type="success" @click="editDatasetFile({{.Attachment.ID}},'{{.Repo.OwnerName}}/{{.Repo.Name}}')">确定</el-button>
<el-button type="info" @click="cancelDataset('','{{.Repo.OwnerName}}/{{.Repo.Name}}')">取消</el-button>
<el-button style="background-color: #21ba45;" type="success" @click="editDatasetFile({{.Attachment.ID}},'{{$.RepoLink}}')">确定</el-button>
<el-button type="info" @click="cancelDataset('','{{$.RepoLink}}')">取消</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -45,6 +45,6 @@
{{template "base/footer" .}} {{template "base/footer" .}}
<script> <script>
console.log({{.Attachment}}) console.log({{.Attachment}})
console.log({{.Repo}})
console.log({{$.RepoLink}})
console.log({{$.Link}}) console.log({{$.Link}})
</script> </script>

+ 14
- 35
templates/repo/attachment/upload.tmpl View File

@@ -1,12 +1,4 @@
<style>
.active{
color: #0087f5!important;
border: 1px solid #0087f5!important;
/* margin: -1px!important; */
background: #fff!important;


}
</style>
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository"> <div class="repository">
{{template "repo/header" .}} {{template "repo/header" .}}
@@ -14,42 +6,28 @@
<input type="hidden" id="postPath" value="{{.Link}}"> <input type="hidden" id="postPath" value="{{.Link}}">
<div style="width: 80%;margin: auto;"> <div style="width: 80%;margin: auto;">
<h4 class="ui top attached header"> <h4 class="ui top attached header">
上传数据集文件
{{$.i18n.Tr "dataset.upload_dataset_file"}}
</h4> </h4>
<div class="ui attached segment" style="padding: 2em 3em;"> <div class="ui attached segment" style="padding: 2em 3em;">
<div class="ui form" id="dataset-base"> <div class="ui form" id="dataset-base">
<el-form label-width="140px"> <el-form label-width="140px">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<el-form-item label="存储位置:" prop="title">
<el-form-item label='{{$.i18n.Tr "dataset.dataset_available_clusters"}}:' prop="title">
<el-button :class="{active:type==0}" size="small" style="margin: 0;border-radius: 0.28571429rem 0 0 0.28571429rem;" @click="uploadGpu">CPU/GPU</el-button> <el-button :class="{active:type==0}" size="small" style="margin: 0;border-radius: 0.28571429rem 0 0 0.28571429rem;" @click="uploadGpu">CPU/GPU</el-button>
<el-button :class="{active:type==1}" size="small" style="margin: 0 0 0 -4px;border-radius: 0 0.28571429rem 0.28571429rem 0;" @click="uploadNpu">NPU</el-button> <el-button :class="{active:type==1}" size="small" style="margin: 0 0 0 -4px;border-radius: 0 0.28571429rem 0.28571429rem 0;" @click="uploadNpu">NPU</el-button>
<!-- <span>请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span> --> <!-- <span>请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span> -->
</el-form-item> </el-form-item>
<el-form-item label="文件描述:" prop="description">
<el-form-item label='{{$.i18n.Tr "dataset.file_description"}}:' prop="description">
<el-input type="textarea" :rows="3" maxlength="255" v-model="desc"></el-input> <el-input type="textarea" :rows="3" maxlength="255" v-model="desc"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="数据上传:" prop="category">
<el-form-item label='{{$.i18n.Tr "dataset.data_upload"}}:' prop="category">
<minio-uploader :uploadtype="type" :desc="desc"></minio-uploader> <minio-uploader :uploadtype="type" :desc="desc"></minio-uploader>
<!-- <obs-uploader v-if="type==1"></obs-uploader> -->
</el-form-item> </el-form-item>
<!-- <el-form-item label="研究方向/应用领域" prop="task">
<el-select v-model="ruleForm.task" placeholder="请选择活动区域" style="width: 60%;">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item>
<el-button style="background-color: #21ba45;" type="success" @click="createDataset('ruleForm')">确定</el-button>
<el-button type="info" @click="cancelDataset">取消</el-button>
</el-form-item> -->

<div style='display:none;' <div style='display:none;'
id="minioUploader-params" id="minioUploader-params"
data-uuid="{{.uuid}}" data-uuid="{{.uuid}}"
data-add-url="{{.Repo.OwnerName}}/attachments/add"
data-add-url="{{.Repository.OwnerName}}/attachments/add"
data-accepts="{{.AttachmentAllowedTypes}}" data-accepts="{{.AttachmentAllowedTypes}}"
data-remove-url="{{AppSubUrl}}/attachments/delete" data-remove-url="{{AppSubUrl}}/attachments/delete"
data-csrf="{{.CsrfToken}}" data-csrf="{{.CsrfToken}}"
@@ -70,7 +48,9 @@
data-upload-complete='{{.i18n.Tr "dropzone.upload_complete"}}' data-upload-complete='{{.i18n.Tr "dropzone.upload_complete"}}'
data-uploading='{{.i18n.Tr "dropzone.uploading"}}' data-uploading='{{.i18n.Tr "dropzone.uploading"}}'
data-failed='{{.i18n.Tr "dropzone.failed"}}' data-failed='{{.i18n.Tr "dropzone.failed"}}'
data-repopath='{{AppSubUrl}}/{{.Repo.OwnerName}}/{{.Repo.Name}}/datasets'
data-repopath='{{AppSubUrl}}{{$.RepoLink}}/datasets'
data-cancel='{{.i18n.Tr "cancel"}}'
data-upload='{{.i18n.Tr "dataset.dataset_upload"}}'
> >
</div> </div>
<div id="datasetId" datasetId="{{.datasetId}}"></div> <div id="datasetId" datasetId="{{.datasetId}}"></div>
@@ -83,16 +63,15 @@
- 只有<span class="text blue">zip格式</span>zip格式的数据集才能发起云脑任务;<br> - 只有<span class="text blue">zip格式</span>zip格式的数据集才能发起云脑任务;<br>
- 云脑1提供 <span class="text blue">CPU / GPU</span> 资源,云脑2提供 <span class="text blue">Ascend NPU</span> 资源;调试使用的数据集也需要上传到对应的环境。 - 云脑1提供 <span class="text blue">CPU / GPU</span> 资源,云脑2提供 <span class="text blue">Ascend NPU</span> 资源;调试使用的数据集也需要上传到对应的环境。
</p> --> </p> -->
<p style="color: 505559;">说明:</p>
<p style="line-height: 1.5;color: #101010;">只有<span class="text red">zip格式</span>的数据集才能发起云脑任务;</br>
云脑1提供CPU / GPU资源,云脑2提供Ascend NPU资源;调试使用的数据集也需要上传到对应的环境;</p>
<p style="color: 505559;">{{$.i18n.Tr "dataset.illustrate"}}:</p>
<p style="line-height: 1.5;color: #101010;">{{$.i18n.Tr "dataset.illustrate.only"}}<span class="text red">{{$.i18n.Tr "dataset.illustrate.zip"}}</span>{{$.i18n.Tr "dataset.illustrate.fisrt_end"}};</br>
{{$.i18n.Tr "dataset.dataset_explain"}}</p>


</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}
<script> <script>
console.log({{.datasetId}})
console.log({{.Repo}})

console.log({{$.RepoLink}})
console.log({{.Repository}})
</script> </script>

+ 1
- 26
templates/repo/cloudbrain/new.tmpl View File

@@ -101,32 +101,7 @@
} }




.panel_creator_reponam{
display: inline-block;
border-radius: 4px;
padding: 4px;
font-size: 12px;
text-align: center;
background-color: rgba(161, 220, 255, 0.2);
color: #101010;
}
.panel_dataset_name{
font-size: 15px;
color: #0366D6;
text-align: center;
margin-left: 1rem;
}
.panel_datset_desc{
white-space: nowrap;
display: inline-block;
overflow: hidden;
width: 90%;
text-overflow: ellipsis;
}
.el-dialog__body{
padding-top:0
}

</style> </style>


<div id="mask"> <div id="mask">


+ 14
- 14
templates/repo/datasets/create.tmpl View File

@@ -20,45 +20,45 @@
<input type="hidden" id="postPath" value="{{.Link}}"> <input type="hidden" id="postPath" value="{{.Link}}">
<div style="width: 80%;margin: auto;"> <div style="width: 80%;margin: auto;">
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "repo.modelarts.train_job.new_infer"}}
{{.i18n.Tr "dataset.create_new_dataset"}}
</h4> </h4>
<div class="ui attached segment" style="padding: 2em 3em;"> <div class="ui attached segment" style="padding: 2em 3em;">
<div class="ui form" id="dataset-base"> <div class="ui form" id="dataset-base">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="140px"> <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="140px">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<el-form-item label="数据集名称" prop="title">
<el-form-item label='{{.i18n.Tr "dataset.dataset_name"}}' prop="title">
<el-input v-model="ruleForm.title"></el-input> <el-input v-model="ruleForm.title"></el-input>
<span style="font-size: 12px;color: #888;line-height: 1;margin-top: 0.5em;display: inline-block;">请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span>
<span style="font-size: 12px;color: #888;line-height: 1;margin-top: 0.5em;display: inline-block;">{{.i18n.Tr "dataset.dataset_name_tooltips"}}</span>
<!-- <span>请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span> --> <!-- <span>请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span> -->
</el-form-item> </el-form-item>
<el-form-item label="数据集描述" prop="description">
<el-form-item label='{{.i18n.Tr "dataset.dataset_description"}}' prop="description">
<el-input type="textarea" :rows="3" maxlength="1024" v-model="ruleForm.description"></el-input> <el-input type="textarea" :rows="3" maxlength="1024" v-model="ruleForm.description"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="分类" prop="category">
<el-select v-model="ruleForm.category" placeholder="请选择活动区域" style="width: 60%;">
<el-form-item label='{{.i18n.Tr "dataset.category"}}' prop="category">
<el-select v-model="ruleForm.category" placeholder='{{.i18n.Tr "dataset.select_category"}}' style="width: 60%;">
{{range $category := categories}} {{range $category := categories}}
<el-option label='{{$.i18n.Tr (printf "dataset.category.%s" $category)}}' value='{{$.i18n.Tr (printf "dataset.category.%s" $category)}}'></el-option>
<el-option label='{{$.i18n.Tr (printf "dataset.category.%s" $category)}}' value='{{$category}}'></el-option>
{{end}} {{end}}
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="研究方向/应用领域" prop="task">
<el-select v-model="ruleForm.task" placeholder="请选择活动区域" style="width: 60%;">
<el-form-item label='{{.i18n.Tr "dataset.task"}}' prop="task">
<el-select v-model="ruleForm.task" placeholder='{{.i18n.Tr "dataset.select_task"}}' style="width: 60%;">
{{range $task := tasks}} {{range $task := tasks}}
<el-option label='{{$.i18n.Tr (printf "dataset.task.%s" $task)}}' value='{{$.i18n.Tr (printf "dataset.task.%s" $task)}}'></el-option>
<el-option label='{{$.i18n.Tr (printf "dataset.task.%s" $task)}}' value='{{$task}}'></el-option>
{{end}} {{end}}
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="授权许可" prop="license">
<el-select v-model="ruleForm.license" placeholder="请选择活动区域" style="width: 60%;">
<el-form-item label='{{.i18n.Tr "repo.license"}}' prop="license">
<el-select v-model="ruleForm.license" placeholder='{{.i18n.Tr "repo.license_helper"}}' style="width: 60%;">
{{range $license := licenses}} {{range $license := licenses}}
<el-option label='{{$license}}' value='{{$license}}'></el-option> <el-option label='{{$license}}' value='{{$license}}'></el-option>
{{end}} {{end}}
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button style="background-color: #21ba45;" type="success" @click="createDataset('ruleForm')">确定</el-button>
<el-button type="info" @click="cancelDataset('create','')">取消</el-button>
<el-button style="background-color: #21ba45;" type="success" @click="createDataset('ruleForm')">{{.i18n.Tr "repo.confirm_choice"}}</el-button>
<el-button type="info" @click="cancelDataset('create','')">{{.i18n.Tr "cancel"}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>


+ 14
- 14
templates/repo/datasets/edit.tmpl View File

@@ -20,7 +20,7 @@
<input type="hidden" id="postPath" value="{{.Link}}"> <input type="hidden" id="postPath" value="{{.Link}}">
<div style="width: 80%;margin: auto;"> <div style="width: 80%;margin: auto;">
<h4 class="ui top attached header"> <h4 class="ui top attached header">
修改数据集
{{.i18n.Tr "dataset.modify_dataset"}}
</h4> </h4>
<div id="dataset-edit-value" style="display: none;" data-edit-id="{{.Dataset.ID}}" data-edit-title="{{.Dataset.Title}}" data-edit-description="{{.Dataset.Description}}" <div id="dataset-edit-value" style="display: none;" data-edit-id="{{.Dataset.ID}}" data-edit-title="{{.Dataset.Title}}" data-edit-description="{{.Dataset.Description}}"
data-edit-category="{{.Dataset.Category}}" data-edit-task="{{.Dataset.Task}}" data-edit-license="{{.Dataset.License}}"> data-edit-category="{{.Dataset.Category}}" data-edit-task="{{.Dataset.Task}}" data-edit-license="{{.Dataset.License}}">
@@ -30,38 +30,38 @@
<div class="ui form" id="dataset-base"> <div class="ui form" id="dataset-base">
<el-form :model="ruleForm1" :rules="rules" ref="ruleForm" label-width="140px"> <el-form :model="ruleForm1" :rules="rules" ref="ruleForm" label-width="140px">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<el-form-item label="数据集名称" prop="title">
<el-form-item label='{{.i18n.Tr "dataset.dataset_name"}}' prop="title">
<el-input v-model="ruleForm1.title"></el-input> <el-input v-model="ruleForm1.title"></el-input>
<span style="font-size: 12px;color: #888;line-height: 1;margin-top: 0.5em;display: inline-block;">请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span>
<span style="font-size: 12px;color: #888;line-height: 1;margin-top: 0.5em;display: inline-block;">{{.i18n.Tr "dataset.dataset_name_tooltips"}}</span>
<!-- <span>请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span> --> <!-- <span>请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span> -->
</el-form-item> </el-form-item>
<el-form-item label="数据集描述" prop="description">
<el-form-item label='{{.i18n.Tr "dataset.dataset_description"}}' prop="description">
<el-input type="textarea" :rows="3" maxlength="1024" v-model="ruleForm1.description"></el-input> <el-input type="textarea" :rows="3" maxlength="1024" v-model="ruleForm1.description"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="分类" prop="category">
<el-select v-model="ruleForm1.category" placeholder="请选择活动区域" style="width: 60%;">
<el-form-item label='{{.i18n.Tr "dataset.category"}}' prop="category">
<el-select v-model="ruleForm1.category" placeholder='{{.i18n.Tr "dataset.select_category"}}' style="width: 60%;">
{{range $category := categories}} {{range $category := categories}}
<el-option label='{{$.i18n.Tr (printf "dataset.category.%s" $category)}}' value='{{$.i18n.Tr (printf "dataset.category.%s" $category)}}'></el-option>
<el-option label='{{$.i18n.Tr (printf "dataset.category.%s" $category)}}' value='{{$category}}'></el-option>
{{end}} {{end}}
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="研究方向/应用领域" prop="task">
<el-select v-model="ruleForm1.task" placeholder="请选择活动区域" style="width: 60%;">
<el-form-item label='{{.i18n.Tr "dataset.task"}}' prop="task">
<el-select v-model="ruleForm1.task" placeholder='{{.i18n.Tr "dataset.select_task"}}' style="width: 60%;">
{{range $task := tasks}} {{range $task := tasks}}
<el-option label='{{$.i18n.Tr (printf "dataset.task.%s" $task)}}' value='{{$.i18n.Tr (printf "dataset.task.%s" $task)}}'></el-option>
<el-option label='{{$.i18n.Tr (printf "dataset.task.%s" $task)}}' value='{{$task}}'></el-option>
{{end}} {{end}}
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="授权许可" prop="license">
<el-select v-model="ruleForm1.license" placeholder="请选择活动区域" style="width: 60%;">
<el-form-item label='{{.i18n.Tr "repo.license"}}' prop="license">
<el-select v-model="ruleForm1.license" placeholder='{{.i18n.Tr "repo.license_helper"}}' style="width: 60%;">
{{range $license := licenses}} {{range $license := licenses}}
<el-option label='{{$license}}' value='{{$license}}'></el-option> <el-option label='{{$license}}' value='{{$license}}'></el-option>
{{end}} {{end}}
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button style="background-color: #21ba45;" type="success" @click="editDataset('ruleForm',{{.Dataset.ID}})">确定</el-button>
<el-button type="info" @click="cancelDataset('edit','')">取消</el-button>
<el-button style="background-color: #21ba45;" type="success" @click="editDataset('ruleForm',{{.Dataset.ID}})">{{.i18n.Tr "repo.confirm_choice"}}</el-button>
<el-button type="info" @click="cancelDataset('edit','')">{{.i18n.Tr "cancel"}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>


+ 54
- 43
templates/repo/datasets/index.tmpl View File

@@ -32,7 +32,7 @@
visibility: hidden; visibility: hidden;
} }
.exp:checked+.text .btn::after{ .exp:checked+.text .btn::after{
content:'收起'
content:'{{$.i18n.Tr "org.fold"}}'
} }


.wrapper>.text { .wrapper>.text {
@@ -77,7 +77,7 @@
/* margin-top: -30px; */ /* margin-top: -30px; */
} }
.btn::after{ .btn::after{
content:'展开'
content:'{{$.i18n.Tr "org.unfold"}}'
} }
.btn::before{ .btn::before{
content: '...'; content: '...';
@@ -105,8 +105,8 @@
{{template "repo/header" .}} {{template "repo/header" .}}
{{if .dataset}} {{if .dataset}}
<div id="dataset-range-value" data-num-stars="{{.dataset.NumStars}}" data-star-active="{{$.IsStaringDataset}}" style="display: none;"> <div id="dataset-range-value" data-num-stars="{{.dataset.NumStars}}" data-star-active="{{$.IsStaringDataset}}" style="display: none;">
{{range .dataset.Attachments}}
<div class="item" data-private={{.IsPrivate}}></div>
{{range .Attachments}}
<div class="item" data-private="{{.IsPrivate}}" data-decompress-state="{{.DecompressState}}"></div>
{{end}} {{end}}
</div> </div>
@@ -128,15 +128,17 @@
</div> </div>
<span style="line-height: 1;">${num_stars}</span> <span style="line-height: 1;">${num_stars}</span>
{{end}} {{end}}
<a style="margin-left:30px;" href="{{.RepoLink}}/datasets/edit/{{.dataset.ID}}" class="ui primary basic mini {{if not $.CanWrite}} disabled {{end}} button">修改</a>
<a style="margin-left:30px;" href="{{.RepoLink}}/datasets/edit/{{.dataset.ID}}" class="ui primary basic mini {{if not $.CanWrite}} disabled {{end}} button">{{.i18n.Tr "repo.modelarts.modify"}}</a>
</span> </span>
</div> </div>
<div class="column thirteen wide"> <div class="column thirteen wide">
{{if .dataset.Task}}
<a class="ui repo-topic label topic" href="{{AppSubUrl}}/explore/datasets?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{$.Category}}&task={{.dataset.Task}}&license={{$.License}}">{{.dataset.Task}}</a>
{{end}}
{{if .dataset.Category}} {{if .dataset.Category}}
<a class="ui repo-topic label topic" href="{{AppSubUrl}}/explore/datasets?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{.dataset.Category}}&task={{$.Task}}&license={{$.License}}">{{.dataset.Category}}</a>
{{$category := .dataset.Category}}
<a class="ui repo-topic label topic" href="{{AppSubUrl}}/explore/datasets?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{.dataset.Category}}&task={{$.Task}}&license={{$.License}}">{{$.i18n.Tr (printf "dataset.category.%s" $category)}}</a>
{{end}}
{{if .dataset.Task}}
{{$task := .dataset.Task}}
<a class="ui repo-topic label topic" href="{{AppSubUrl}}/explore/datasets?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{$.Category}}&task={{.dataset.Task}}&license={{$.License}}">{{$.i18n.Tr (printf "dataset.task.%s" $task)}}</a>
{{end}} {{end}}
{{if .dataset.License}} {{if .dataset.License}}
<a class="ui repo-topic label topic" href="{{AppSubUrl}}/explore/datasets?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{$.Category}}&task={{$.Task}}&license={{.dataset.License}}">{{.dataset.License}}</a> <a class="ui repo-topic label topic" href="{{AppSubUrl}}/explore/datasets?sort={{$.SortType}}&q={{$.Keyword}}&tab={{$.TabName}}&category={{$.Category}}&task={{$.Task}}&license={{.dataset.License}}">{{.dataset.License}}</a>
@@ -157,11 +159,11 @@
<div class="column six wide right aligned"> <div class="column six wide right aligned">
<el-select v-model="datasetType" style="width: 40%;" size="small" @change="changeDatasetType"> <el-select v-model="datasetType" style="width: 40%;" size="small" @change="changeDatasetType">
<i slot="prefix" style="display: inline-block;color: #101010;" class="el-input__icon ri-archive-drawer-line"></i> <i slot="prefix" style="display: inline-block;color: #101010;" class="el-input__icon ri-archive-drawer-line"></i>
<el-option label="全部" value="-1"></el-option>
<el-option label="{{$.i18n.Tr "repo.gpu_type_all"}}" value="-1"></el-option>
<el-option label="CPU/GPU" value="0"></el-option> <el-option label="CPU/GPU" value="0"></el-option>
<el-option label="NPU" value="1"></el-option> <el-option label="NPU" value="1"></el-option>
</el-select> </el-select>
<el-button icon="el-icon-upload" {{if not $.CanWrite}} disabled {{end}} type="primary" size="small" @click="gotoUpload({{.dataset.ID}})">上传</el-button>
<el-button icon="el-icon-upload" {{if not $.CanWrite}} disabled {{end}} type="primary" size="small" @click="gotoUpload('{{.RepoLink}}',{{.dataset.ID}})">{{$.i18n.Tr "dataset.dataset_upload"}}</el-button>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@@ -170,25 +172,25 @@
<div class="row"> <div class="row">
<!-- 数据集名称 --> <!-- 数据集名称 -->
<div class="four wide column"> <div class="four wide column">
<span style="margin:0 6px">文件名称</span>
<span style="margin:0 6px">{{$.i18n.Tr "dataset.dataset_file_name"}}</span>
</div> </div>
<div class="one wide column text center"> <div class="one wide column text center">
大小
{{$.i18n.Tr "repo.model.manage.size"}}
</div> </div>
<div class="two wide column text center"> <div class="two wide column text center">
存储位置
{{$.i18n.Tr "dataset.dataset_available_clusters"}}
</div> </div>
<div class="one wide column text center"> <div class="one wide column text center">
状态
{{$.i18n.Tr "repo.modelarts.status"}}
</div> </div>
<div class="one wide column text center"> <div class="one wide column text center">
创建者
{{$.i18n.Tr "repo.cloudbrain_creator"}}
</div> </div>
<div class="three wide column text center"> <div class="three wide column text center">
上传时间
{{$.i18n.Tr "dataset.dataset_upload_time"}}
</div> </div>
<div class="four wide column text center"> <div class="four wide column text center">
操作
{{$.i18n.Tr "repo.cloudbrain_operate"}}
</div> </div>
</div> </div>
</div> </div>
@@ -197,23 +199,26 @@
<div class="row"> <div class="row">
<!-- 数据集名称 --> <!-- 数据集名称 -->


<div class="four wide column" style="display: flex;align-items: center;">
<div class="four wide column" style="display: flex;align-items: center;justify-content: space-between;">
{{if .Description}} {{if .Description}}
<el-tooltip class="item" effect="dark" placement="top" popper-class="diy-popper"> <el-tooltip class="item" effect="dark" placement="top" popper-class="diy-popper">
<div slot="content" >{{.Description}}</br><span><i class="ri-download-line"></i>下载:{{.DownloadCount}}</span></div>
<a class="dataset_title title" href="{{if $.CanRead}}{{.DownloadURL}}{{else}}javascript:void(0){{end}}" title="{{.Name}}" style="border: none;">
<div slot="content" >{{.Description}}</br><span><i class="ri-download-line"></i>{{$.i18n.Tr "dataset.download"}}:{{.DownloadCount}}</span></div>
<a class="dataset_title title" href="{{.DownloadURL}}" title="{{.Name}}" style="border: none;">
{{.Name}} {{.Name}}
</a> </a>
</el-tooltip> </el-tooltip>
{{else}} {{else}}
<el-tooltip class="item" effect="dark" placement="top" popper-class="diy-popper"> <el-tooltip class="item" effect="dark" placement="top" popper-class="diy-popper">
<div slot="content" ><span><i class="ri-download-line"></i>下载:{{.DownloadCount}}</span></div>
<a class="dataset_title title" href="{{if $.CanRead}}{{.DownloadURL}}{{else}}javascript:void(0){{end}}" title="{{.Name}}" style="border: none;">
<div slot="content" ><span><i class="ri-download-line"></i>{{$.i18n.Tr "dataset.download"}}:{{.DownloadCount}}</span></div>
<a class="dataset_title title" href="{{.DownloadURL}}" title="{{.Name}}" style="border: none;">
{{.Name}} {{.Name}}
</a> </a>
</el-tooltip> </el-tooltip>
{{end}} {{end}}
<i class="ri-lock-2-line" style="color: #fa8c16;" v-if="privates[{{$k}}]"></i> <i class="ri-lock-2-line" style="color: #fa8c16;" v-if="privates[{{$k}}]"></i>
<!-- <i class="COMPLETED" v-if="zipStatus[{{$k}}]==1"></i>
<i class="WAITING" v-if="zipStatus[{{$k}}]==2"></i>
<i class="FAILED" v-if="zipStatus[{{$k}}]==3"></i> -->
</div> </div>
<div class="one wide column text center"> <div class="one wide column text center">
{{.Size | FileSize}} {{.Size | FileSize}}
@@ -251,32 +256,38 @@
</el-popover> </el-popover>
</el-button> --> </el-button> -->
<div class="ui compact buttons"> <div class="ui compact buttons">
{{if $.CanRead}}
<a class="ui basic blue button" href="{{.DownloadURL}}">下载</a>
{{else}}
<a class="ui basic disabled button">下载</a>
{{end}}
<a class="ui basic blue button" href="{{.DownloadURL}}">{{$.i18n.Tr "dataset.download"}}</a>
{{if eq .DecompressState 1}} {{if eq .DecompressState 1}}
<a class="ui basic blue button" href="datasets/dirs/{{.UUID}}?type={{$.Type}}" data-tooltip='{{$.i18n.Tr "dataset.directory"}}'>预览</a>
<a class="ui basic blue button" href="datasets/dirs/{{.UUID}}?type={{$.Type}}" data-tooltip='{{$.i18n.Tr "dataset.directory"}}'>{{$.i18n.Tr "preview"}}</a>
{{end}} {{end}}
{{if $.CanRead}}
{{if .CanDel}}
<span class="ui basic blue button" style="color: #13c28d !important;" @click="setPrivate('{{.FileChunk.UUID}}',false,{{$k}})" v-if="privates[{{$k}}]">{{$.i18n.Tr "dataset.set_public"}}</span>
<span class="ui basic blue button" style="color: #fa8c16 !important;" @click="setPrivate('{{.FileChunk.UUID}}',true,{{$k}})" v-else="privates[{{$k}}]">{{$.i18n.Tr "dataset.set_private"}}</span>
{{else}}
<span class="ui basic disabled button" style="color: #13c28d !important;" @click="setPrivate('{{.FileChunk.UUID}}',false,{{$k}})" v-if="privates[{{$k}}]">{{$.i18n.Tr "dataset.set_public"}}</span>
<span class="ui basic disabled button" style="color: #fa8c16 !important;" @click="setPrivate('{{.FileChunk.UUID}}',true,{{$k}})" v-else="privates[{{$k}}]">{{$.i18n.Tr "dataset.set_private"}}</span>
{{end}}
<!-- {{if $.CanRead}}
<a class="ui basic blue button" href="datasets/label/{{.UUID}}?type={{$.Type}}" data-tooltip='{{$.i18n.Tr "dataset.create_label_task"}}'>标注</a> <a class="ui basic blue button" href="datasets/label/{{.UUID}}?type={{$.Type}}" data-tooltip='{{$.i18n.Tr "dataset.create_label_task"}}'>标注</a>
{{else}} {{else}}
<a class="ui basic disabled button">标注</a> <a class="ui basic disabled button">标注</a>
{{end}}
{{end}} -->
<a class="ui basic blue button"> <a class="ui basic blue button">
<el-dropdown size="medium"> <el-dropdown size="medium">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
更多<i class="el-icon-arrow-down el-icon--right"></i>
{{$.i18n.Tr "repo.more"}}<i class="el-icon-arrow-down el-icon--right"></i>
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item class="clipboard" data-clipboard-text="{{.DownloadURL}}" data-clipboard-action="copy">复制下载链接</el-dropdown-item>
<el-dropdown-item class="clipboard" data-clipboard-text="{{.FileChunk.Md5}}" data-clipboard-action="copy">复制文件MD5</el-dropdown-item>
<el-dropdown-item class="clipboard" data-clipboard-text="{{.DownloadURL}}" data-clipboard-action="copy">{{$.i18n.Tr "dataset.copy_url"}}</el-dropdown-item>
<el-dropdown-item class="clipboard" data-clipboard-text="{{.FileChunk.Md5}}" data-clipboard-action="copy">{{$.i18n.Tr "dataset.copy_md5"}}</el-dropdown-item>
{{if $.CanWrite}}
<el-dropdown-item @click.native="gotoAnnotate('{{$.RepoLink}}','{{.UUID}}',{{.Type}})">{{$.i18n.Tr "dataset.annotation"}}</el-dropdown-item>
{{end}}
{{if .CanDel}} {{if .CanDel}}
<el-dropdown-item style="color: #13c28d;" @click.native="setPrivate('{{.FileChunk.UUID}}',false,{{$k}})" v-if="privates[{{$k}}]">设为公有</el-dropdown-item>
<el-dropdown-item style="color: #fa8c16;" @click.native="setPrivate('{{.FileChunk.UUID}}',true,{{$k}})" v-else="privates[{{$k}}]">设为私有</el-dropdown-item>
<el-dropdown-item @click.native="gotoDatasetEidt({{.ID}})">修改描述</el-dropdown-item>
<el-dropdown-item style="color: red;" @click.native="delDataset('{{.FileChunk.UUID}}')">删除</el-dropdown-item>
<el-dropdown-item @click.native="gotoDatasetEidt('{{$.RepoLink}}',{{.ID}})">{{$.i18n.Tr "dataset.modify_description"}}</el-dropdown-item>
<el-dropdown-item style="color: red;" @click.native="delDataset('{{.FileChunk.UUID}}')">{{$.i18n.Tr "dataset.delete"}}</el-dropdown-item>
{{end}} {{end}}
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
@@ -310,13 +321,13 @@
{{else}} {{else}}
<div class="ui placeholder segment bgtask-none"> <div class="ui placeholder segment bgtask-none">
<div class="ui icon header bgtask-header-pic"></div> <div class="ui icon header bgtask-header-pic"></div>
<div class="bgtask-content-header">还未创建过数据集</div>
<div class="bgtask-content-header">{{.i18n.Tr "dataset.dataset_no_create"}}</div>
{{if $.CanWrite}} {{if $.CanWrite}}
<a class="ui green button" href="{{.RepoLink}}/datasets/create">新建数据集</a>
<a class="ui green button" href="{{.RepoLink}}/datasets/create">{{.i18n.Tr "dataset.create_new_dataset"}}</a>
{{end}} {{end}}
<div class="bgtask-content"> <div class="bgtask-content">
<div class="bgtask-content-txt">数据集:云脑1提供 CPU / GPU 资源,云脑2提供 Ascend NPU 资源,调试使用的数据集也需要上传到对应的环境;</div>
<div class="bgtask-content-txt">使用说明:可以参考启智AI协作平台<a href="https://git.openi.org.cn/zeizei/OpenI_Learning">小白训练营课程。</a></div>
<div class="bgtask-content-txt">{{.i18n.Tr "dataset.dataset_explain"}}</div>
<div class="bgtask-content-txt">{{.i18n.Tr "dataset.dataset_instructions_for_use"}}<a href="https://git.openi.org.cn/zeizei/OpenI_Learning">{{.i18n.Tr "dataset.dataset_camp_course"}}</a></div>
</div> </div>
</div> </div>
{{end}} {{end}}
@@ -336,7 +347,7 @@
<script> <script>
console.log({{.dataset}}) console.log({{.dataset}})
console.log({{.RepoLink}}) console.log({{.RepoLink}})
console.log({{.Repository}})
const items = [] const items = []
$('#dataset-range-value').find('.item').each(function(){ $('#dataset-range-value').find('.item').each(function(){
items.push($(this).data('private')) items.push($(this).data('private'))


+ 9
- 18
templates/repo/modelarts/notebook/new.tmpl View File

@@ -89,8 +89,8 @@
<div class="inline field"> <div class="inline field">
<label></label> <label></label>
<button class="ui green button"> <button class="ui green button">
{{.i18n.Tr "repo.cloudbrain.new"}}
</button>
{{.i18n.Tr "repo.cloudbrain.new"}}
</button>
<a class="ui button cancel" href="{{.RepoLink}}/debugjob?debugListType=all">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a> <a class="ui button cancel" href="{{.RepoLink}}/debugjob?debugListType=all">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a>
</div> </div>
</div> </div>
@@ -149,20 +149,11 @@
} }
}) })
}) })
document.querySelector('input[list]').addEventListener('input',function(e){
var input = e.target,
list = input.getAttribute('list'),
options = document.querySelectorAll('#'+list+' option'),
hiddenInput = document.getElementById(input.getAttribute('id')+'-hidden'),
inputValue = input.value;
hiddenInput.value = inputValue;
for (let i=0;i<options.length;i++){
var option = options[i]
if(option.innerText===inputValue){
hiddenInput.value = option.getAttribute('data-value');
break
}
}
})
$(document).ready(function(){
$(document).keydown(function(event){
if(event.keyCode==13){
event.preventDefault();
}
});
});
</script> </script>

+ 7
- 3
web_src/js/components/MinioUploader.vue View File

@@ -8,8 +8,8 @@
{{ file_status_text }} {{ file_status_text }}
<strong class="success text red">{{ status }}</strong> <strong class="success text red">{{ status }}</strong>
</p> </p>
<el-button style="background-color: #21ba45;" type="success" :disabled="btnFlag" @click="onFileAdded">上传</el-button>
<el-button type="info" @click="cancelDataset">取消</el-button>
<el-button style="background-color: #21ba45;" type="success" :disabled="btnFlag" @click="onFileAdded">{{upload}}</el-button>
<el-button type="info" @click="cancelDataset">{{cancel}}</el-button>
<!-- <p>说明:<br> <!-- <p>说明:<br>
- 只有zip格式的数据集才能发起云脑任务;<br> - 只有zip格式的数据集才能发起云脑任务;<br>
- 云脑1提供 <span class="text blue">CPU / GPU</span> 资源,云脑2提供 <span class="text blue">Ascend NPU</span> 资源;调试使用的数据集也需要上传到对应的环境。</p> --> - 云脑1提供 <span class="text blue">CPU / GPU</span> 资源,云脑2提供 <span class="text blue">Ascend NPU</span> 资源;调试使用的数据集也需要上传到对应的环境。</p> -->
@@ -51,7 +51,9 @@ export default {
file_status_text: '', file_status_text: '',
file:{}, file:{},
repoPath:'', repoPath:'',
btnFlag:false
btnFlag:false,
cancel:'',
upload:'',
}; };
}, },


@@ -60,6 +62,8 @@ export default {
this.file_status_text = this.dropzoneParams.data('file-status'); this.file_status_text = this.dropzoneParams.data('file-status');
this.status = this.dropzoneParams.data('file-init-status'); this.status = this.dropzoneParams.data('file-init-status');
this.repoPath = this.dropzoneParams.data('repopath'); this.repoPath = this.dropzoneParams.data('repopath');
this.cancel = this.dropzoneParams.data('cancel');
this.upload = this.dropzoneParams.data('upload');
// let previewTemplate = ''; // let previewTemplate = '';
// previewTemplate += '<div class="dz-preview dz-file-preview">\n '; // previewTemplate += '<div class="dz-preview dz-file-preview">\n ';
// previewTemplate += ' <div class="dz-details">\n '; // previewTemplate += ' <div class="dz-details">\n ';


+ 88
- 13
web_src/js/index.js View File

@@ -3681,8 +3681,10 @@ function initVueDataset() {
}) })
} }
const items = [] const items = []
const zipStatus = []
$('#dataset-range-value').find('.item').each(function(){ $('#dataset-range-value').find('.item').each(function(){
items.push($(this).data('private')) items.push($(this).data('private'))
zipStatus.push($(this).data('decompress-state'))
}) })
let num_stars = $('#dataset-range-value').data('num-stars') let num_stars = $('#dataset-range-value').data('num-stars')
let star_active = $('#dataset-range-value').data('star-active') let star_active = $('#dataset-range-value').data('star-active')
@@ -3739,6 +3741,7 @@ function initVueDataset() {
descfile:'', descfile:'',
datasetType:'', datasetType:'',
privates:[], privates:[],
zipStatus:[],
starItems:[], starItems:[],
starActives:[], starActives:[],
taskLists:[], taskLists:[],
@@ -3763,6 +3766,7 @@ function initVueDataset() {
dataset_uuid:'', dataset_uuid:'',
dataset_name:'', dataset_name:'',
loadingDataIndex:true, loadingDataIndex:true,
timer:null,
ruleForm:{ ruleForm:{
title:'', title:'',
description:'', description:'',
@@ -3835,6 +3839,7 @@ function initVueDataset() {
this.url = document.getElementById('postPath').value this.url = document.getElementById('postPath').value
} }
this.privates = items this.privates = items
this.zipStatus = zipStatus
this.num_stars = num_stars this.num_stars = num_stars
this.star_active = star_active this.star_active = star_active
this.ruleForm1 = ruleForm this.ruleForm1 = ruleForm
@@ -3847,7 +3852,7 @@ function initVueDataset() {
this.descfile = dataset_file_desc this.descfile = dataset_file_desc
this.repolink = repolink this.repolink = repolink
this.cloudbrainType = cloudbrainType this.cloudbrainType = cloudbrainType
console.log(this.starItems,this.starActives)
console.log(this.starItems,this.starActives,this.zipStatus)
}, },
methods:{ methods:{
handleCurrentChange(val) { handleCurrentChange(val) {
@@ -3904,18 +3909,21 @@ function initVueDataset() {
} }
else{ else{
console.log(attachment) console.log(attachment)
location.href = '/'+attachment + '/datasets'
location.href = `${AppSubUrl}${attachment}/datasets`
} }
}, },
gotoUpload(datsetId){
location.href = `${AppSubUrl}/attachments/upload?datasetId=${datsetId}`
gotoUpload(repolink,datsetId){
location.href = `${AppSubUrl}${repolink}/datasets/attachments/upload?datasetId=${datsetId}`
}, },
gotoDataset(datsetUrl){ gotoDataset(datsetUrl){
console.log(datsetUrl) console.log(datsetUrl)
location.href = datsetUrl location.href = datsetUrl
}, },
gotoAnnotate(repolink,uuid,type){
location.href = `${AppSubUrl}${repolink}/datasets/label/${uuid}?type=${type}`
},
uploadGpu(){ uploadGpu(){
this.type=0 this.type=0
}, },
@@ -3993,7 +4001,7 @@ function initVueDataset() {
// document.getElementById("mask").style.display = "block" // document.getElementById("mask").style.display = "block"
this.$axios.post(url,this.qs.stringify(params)).then((res)=>{ this.$axios.post(url,this.qs.stringify(params)).then((res)=>{
if(res.data.Code===0){ if(res.data.Code===0){
location.href = '/'+backurl + '/datasets'
location.href = `${AppSubUrl}${backurl}/datasets`
}else{ }else{
console.log(res.data.Message) console.log(res.data.Message)
} }
@@ -4082,8 +4090,8 @@ function initVueDataset() {


}, },
gotoDatasetEidt(id){
location.href = `/attachments/edit/${id}`
gotoDatasetEidt(repolink,id){
location.href = `${repolink}/datasets/attachments/edit/${id}`


}, },
handleClick(repoLink, tabName,type) { handleClick(repoLink, tabName,type) {
@@ -4110,7 +4118,57 @@ function initVueDataset() {
this.getStarDataset(repoLink,type) this.getStarDataset(repoLink,type)
} }
}, },
polling (checkStatuDataset,repoLink) {
console.log("===polling===checkStatuDataset===",checkStatuDataset,repoLink)
this.timer = window.setInterval(() => {
setTimeout(() => {
this.getDatasetStatus(checkStatuDataset,repoLink)
},0)
},15000)

},

getDatasetStatus(checkStatuDataset,repoLink){
const getmap = checkStatuDataset.map((item)=>{
let url = `${AppSubUrl}${repolink}/datasets/status/${item.UUID}`
console.log("map item",item,url)
return this.$axios.get(url)
})
console.log(getmap)
this.$axios.all(getmap)
.then((res)=>{
console.log(res,this.timer)
let flag = res.some((item)=>{
console.log(item.data)
return item.data.AttachmentStatus == 1
})
console.log(flag)
flag && clearInterval(this.timer)
flag && this.refreshStatusDataset()
}
)

},
refreshStatusDataset(){
console.log("refresh")
switch(this.activeName){
case 'first':
this.getCurrentRepoDataset(this.repolink,this.cloudbrainType)
break
case 'second':
this.getMyDataset(this.repolink,this.cloudbrainType)
break
case 'third':
this.getPublicDataset(this.repolink,this.cloudbrainType)
break
case 'fourth':
this.getStarDataset(this.repolink,this.cloudbrainType)
break
}
},
getCurrentRepoDataset(repoLink,type){ getCurrentRepoDataset(repoLink,type){
clearInterval(this.timer)
this.loadingDataIndex = true this.loadingDataIndex = true
let url = repoLink + '/datasets/current_repo' let url = repoLink + '/datasets/current_repo'
this.$axios.get(url,{ this.$axios.get(url,{
@@ -4124,11 +4182,17 @@ function initVueDataset() {
console.log(JSON.parse(res.data.data)) console.log(JSON.parse(res.data.data))
console.log(res.data.count) console.log(res.data.count)
this.currentRepoDataset = JSON.parse(res.data.data) this.currentRepoDataset = JSON.parse(res.data.data)
const checkStatuDataset = this.currentRepoDataset.filter(item=>item.DecompressState===2)
console.log("=========checkStatuDataset",checkStatuDataset,repoLink)
if(checkStatuDataset.length>0){
this.polling(checkStatuDataset,repoLink)
}
this.totalnums = parseInt(res.data.count) this.totalnums = parseInt(res.data.count)
this.loadingDataIndex = false this.loadingDataIndex = false
}) })
}, },
getMyDataset(repoLink,type){ getMyDataset(repoLink,type){
clearInterval(this.timer)
this.loadingDataIndex = true this.loadingDataIndex = true
let url = repoLink + '/datasets/my_datasets' let url = repoLink + '/datasets/my_datasets'
this.$axios.get(url,{ this.$axios.get(url,{
@@ -4141,12 +4205,18 @@ function initVueDataset() {
console.log(res) console.log(res)
console.log(JSON.parse(res.data.data)) console.log(JSON.parse(res.data.data))
this.myDataset = JSON.parse(res.data.data) this.myDataset = JSON.parse(res.data.data)
const checkStatuDataset = this.myDataset.filter(item=>item.DecompressState===2)
console.log("=========checkStatuDataset",checkStatuDataset,repoLink)
if(checkStatuDataset.length>0){
this.polling(checkStatuDataset,repoLink)
}
this.totalnums = parseInt(res.data.count) this.totalnums = parseInt(res.data.count)
this.loadingDataIndex = false this.loadingDataIndex = false
}) })


}, },
getPublicDataset(repoLink,type){ getPublicDataset(repoLink,type){
clearInterval(this.timer)
this.loadingDataIndex = true this.loadingDataIndex = true
let url = repoLink + '/datasets/public_datasets' let url = repoLink + '/datasets/public_datasets'
this.$axios.get(url,{ this.$axios.get(url,{
@@ -4159,12 +4229,18 @@ function initVueDataset() {
console.log(res) console.log(res)
console.log(JSON.parse(res.data.data)) console.log(JSON.parse(res.data.data))
this.publicDataset = JSON.parse(res.data.data) this.publicDataset = JSON.parse(res.data.data)
const checkStatuDataset = this.publicDataset.filter(item=>item.DecompressState===2)
console.log("=========checkStatuDataset",checkStatuDataset,repoLink)
if(checkStatuDataset.length>0){
this.polling(checkStatuDataset,repoLink)
}
this.totalnums = parseInt(res.data.count) this.totalnums = parseInt(res.data.count)
this.loadingDataIndex = false this.loadingDataIndex = false
}) })


}, },
getStarDataset(repoLink,type){ getStarDataset(repoLink,type){
clearInterval(this.timer)
this.loadingDataIndex = true this.loadingDataIndex = true
let url = repoLink + '/datasets/my_favorite' let url = repoLink + '/datasets/my_favorite'
this.$axios.get(url,{ this.$axios.get(url,{
@@ -4177,6 +4253,11 @@ function initVueDataset() {
console.log(res) console.log(res)
console.log(JSON.parse(res.data.data)) console.log(JSON.parse(res.data.data))
this.myFavoriteDataset = JSON.parse(res.data.data) this.myFavoriteDataset = JSON.parse(res.data.data)
const checkStatuDataset = this.myFavoriteDataset.filter(item=>item.DecompressState===2)
console.log("=========checkStatuDataset",checkStatuDataset,repoLink)
if(checkStatuDataset.length>0){
this.polling(checkStatuDataset,repoLink)
}
this.totalnums= parseInt(res.data.count) this.totalnums= parseInt(res.data.count)
this.loadingDataIndex = false this.loadingDataIndex = false
}) })
@@ -4209,13 +4290,7 @@ function initVueDataset() {
break break
} }
} }


}, },

}); });


} }


+ 35
- 0
web_src/less/_dataset.less View File

@@ -222,3 +222,38 @@
} }
} }
} }
.panel_creator_reponam{
display: inline-block;
border-radius: 4px;
padding: 4px;
font-size: 12px;
text-align: center;
background-color: rgba(161, 220, 255, 0.2);
color: #101010;
}
.panel_dataset_name{
font-size: 15px;
color: #0366D6;
text-align: center;
margin-left: 1rem;
}
.panel_datset_desc{
white-space: nowrap;
display: inline-block;
overflow: hidden;
width: 90%;
text-overflow: ellipsis;
}
.el-dialog__body{
padding-top:0
}
#dataset-base{
.active{
color: #0087f5!important;
border: 1px solid #0087f5!important;
/* margin: -1px!important; */
background: #fff!important;
}
}

Loading…
Cancel
Save