| @@ -65,6 +65,7 @@ type AttachmentInfo struct { | |||
| Repo *Repository `xorm:"extends"` | |||
| RelAvatarLink string `xorm:"extends"` | |||
| UserName string `xorm:"extends"` | |||
| Recommend bool `xorm:"-"` | |||
| } | |||
| type AttachmentsOptions struct { | |||
| @@ -79,6 +80,7 @@ type AttachmentsOptions struct { | |||
| JustNeedZipFile bool | |||
| NeedRepoInfo bool | |||
| Keyword string | |||
| RecommendOnly bool | |||
| } | |||
| func (a *Attachment) AfterUpdate() { | |||
| @@ -579,6 +581,11 @@ func Attachments(opts *AttachmentsOptions) ([]*AttachmentInfo, int64, error) { | |||
| builder.Eq{"attachment.is_private": opts.IsPrivate}, | |||
| ) | |||
| } | |||
| if opts.RecommendOnly { | |||
| cond = cond.And(builder.In("attachment.id", builder.Select("attachment.id"). | |||
| From("attachment"). | |||
| Join("INNER", "dataset", "attachment.dataset_id = dataset.id and dataset.recommend=true"))) | |||
| } | |||
| if opts.JustNeedZipFile { | |||
| var DecompressState []int32 | |||
| @@ -627,6 +634,7 @@ func Attachments(opts *AttachmentsOptions) ([]*AttachmentInfo, int64, error) { | |||
| if err != nil { | |||
| return nil, 0, fmt.Errorf("GetDatasetByID failed error: %v", err) | |||
| } | |||
| attachment.Recommend = dataset.Recommend | |||
| repo, err := GetRepositoryByID(dataset.RepoID) | |||
| if err == nil { | |||
| attachment.Repo = repo | |||
| @@ -580,6 +580,8 @@ type CommitImageParams struct { | |||
| Topics []string | |||
| CloudBrainType int | |||
| UID int64 | |||
| Place string | |||
| Type int | |||
| } | |||
| type CommitImageResult struct { | |||
| @@ -567,12 +567,12 @@ func isImageStaring(e Engine, userID, imageID int64) bool { | |||
| } | |||
| func RecommendImage(imageId int64, recommond bool) error { | |||
| image := Image{Type: getRecommondType(recommond)} | |||
| image := Image{Type: GetRecommondType(recommond)} | |||
| _, err := x.ID(imageId).Cols("type").Update(image) | |||
| return err | |||
| } | |||
| func getRecommondType(recommond bool) int { | |||
| func GetRecommondType(recommond bool) int { | |||
| if recommond { | |||
| return RECOMMOND_TYPE | |||
| @@ -23,7 +23,8 @@ type Dataset struct { | |||
| Category string | |||
| Description string `xorm:"TEXT"` | |||
| DownloadTimes int64 | |||
| NumStars int `xorm:"INDEX NOT NULL DEFAULT 0"` | |||
| NumStars int `xorm:"INDEX NOT NULL DEFAULT 0"` | |||
| Recommend bool `xorm:"INDEX NOT NULL DEFAULT false"` | |||
| License string | |||
| Task string | |||
| ReleaseID int64 `xorm:"INDEX"` | |||
| @@ -99,6 +100,7 @@ type SearchDatasetOptions struct { | |||
| OwnerID int64 | |||
| RepoID int64 | |||
| IncludePublic bool | |||
| RecommendOnly bool | |||
| Category string | |||
| Task string | |||
| License string | |||
| @@ -132,6 +134,13 @@ func CreateDataset(dataset *Dataset) (err error) { | |||
| } | |||
| func RecommendDataset(dataSetId int64, recommend bool) error { | |||
| dataset := Dataset{Recommend: recommend} | |||
| _, err := x.ID(dataSetId).Cols("recommend").Update(dataset) | |||
| return err | |||
| } | |||
| func SearchDataset(opts *SearchDatasetOptions) (DatasetList, int64, error) { | |||
| cond := SearchDatasetCondition(opts) | |||
| return SearchDatasetByCondition(opts, cond) | |||
| @@ -146,6 +155,9 @@ func SearchDatasetCondition(opts *SearchDatasetOptions) builder.Cond { | |||
| if opts.RepoID > 0 { | |||
| cond = cond.And(builder.Eq{"dataset.repo_id": opts.RepoID}) | |||
| } | |||
| if opts.RecommendOnly { | |||
| cond = cond.And(builder.Eq{"dataset.recommend": opts.RecommendOnly}) | |||
| } | |||
| if opts.IncludePublic { | |||
| cond = cond.And(builder.Eq{"dataset.status": DatasetStatusPublic}) | |||
| @@ -198,7 +210,7 @@ func SearchDatasetByCondition(opts *SearchDatasetOptions, cond builder.Cond) (Da | |||
| defer sess.Close() | |||
| datasets := make(DatasetList, 0, opts.PageSize) | |||
| selectColumnsSql := "distinct dataset.id,dataset.title, dataset.status, dataset.category, dataset.description, dataset.download_times, dataset.license, dataset.task, dataset.release_id, dataset.user_id, dataset.repo_id, dataset.created_unix,dataset.updated_unix,dataset.num_stars" | |||
| selectColumnsSql := "distinct dataset.id,dataset.title, dataset.status, dataset.category, dataset.description, dataset.download_times, dataset.license, dataset.task, dataset.release_id, dataset.user_id, dataset.repo_id, dataset.created_unix,dataset.updated_unix,dataset.num_stars,dataset.recommend" | |||
| count, err := sess.Distinct("dataset.id").Join("INNER", "repository", "repository.id = dataset.repo_id"). | |||
| Join("INNER", "attachment", "attachment.dataset_id=dataset.id"). | |||
| @@ -33,6 +33,16 @@ type CommitImageCloudBrainForm struct { | |||
| Topics string `form:"topics"` | |||
| } | |||
| type CommitAdminImageCloudBrainForm struct { | |||
| Description string `form:"description" binding:"Required"` | |||
| Type int `form:"type" binding:"Required"` | |||
| Tag string `form:"tag" binding:"Required;MaxSize(100)" ` | |||
| IsPrivate bool `form:"isPrivate" binding:"Required"` | |||
| Topics string `form:"topics"` | |||
| Place string `form:"place" binding:"Required"` | |||
| IsRecommend bool `form:"isRecommend" binding:"Required"` | |||
| } | |||
| type EditImageCloudBrainForm struct { | |||
| ID int64 `form:"id" binding:"Required"` | |||
| Description string `form:"description" binding:"Required"` | |||
| @@ -312,12 +312,51 @@ sendjob: | |||
| return nil | |||
| }) | |||
| if err == nil { | |||
| go updateImageStatus(image, isSetCreatedUnix, createTime) | |||
| } | |||
| return err | |||
| } | |||
| func CommitAdminImage(params models.CommitImageParams) error { | |||
| exist, err := models.IsImageExist(params.ImageTag) | |||
| if err != nil { | |||
| return fmt.Errorf("resty CommitImage: %v", err) | |||
| } | |||
| if exist { | |||
| return models.ErrorImageTagExist{ | |||
| Tag: params.ImageTag, | |||
| } | |||
| } | |||
| image := models.Image{ | |||
| CloudbrainType: params.CloudBrainType, | |||
| UID: params.UID, | |||
| IsPrivate: params.IsPrivate, | |||
| Tag: params.ImageTag, | |||
| Description: params.ImageDescription, | |||
| Place: params.Place, | |||
| Status: models.IMAGE_STATUS_SUCCESS, | |||
| Type: params.Type, | |||
| } | |||
| err = models.WithTx(func(ctx models.DBContext) error { | |||
| if err := models.CreateLocalImage(&image); err != nil { | |||
| log.Error("Failed to insert image record.", err) | |||
| return fmt.Errorf("resty CommitImage: %v", err) | |||
| } | |||
| if err := models.SaveImageTopics(image.ID, params.Topics...); err != nil { | |||
| log.Error("Failed to insert image record.", err) | |||
| return fmt.Errorf("resty CommitImage: %v", err) | |||
| } | |||
| return nil | |||
| }) | |||
| return err | |||
| } | |||
| func updateImageStatus(image models.Image, isSetCreatedUnix bool, createTime time.Time) { | |||
| attemps := 5 | |||
| commitSuccess := false | |||
| @@ -1389,6 +1389,7 @@ issues.filter_sort.feweststars = Fewest stars | |||
| issues.filter_sort.mostforks = Most forks | |||
| issues.filter_sort.fewestforks = Fewest forks | |||
| issues.filter_sort.downloadtimes = Most downloaded | |||
| issues.filter_sort.moststars = Most star | |||
| issues.action_open = Open | |||
| issues.action_close = Close | |||
| issues.action_label = Label | |||
| @@ -2502,11 +2503,15 @@ repos.contributor=Contributor | |||
| repos.yes=Yes | |||
| repos.no=No | |||
| images.recommend = Recommend | |||
| images.unrecommend = Unrecommend | |||
| datasets.dataset_manage_panel= Dataset Manage | |||
| datasets.owner=Owner | |||
| datasets.name=name | |||
| datasets.private=Private | |||
| datasets.recommend=Set recommend | |||
| datasets.unrecommend=Set unrecommend | |||
| cloudbrain.all_task_types=All Task Types | |||
| cloudbrain.all_computing_resources=All Computing Resources | |||
| @@ -2964,6 +2969,7 @@ snn4imagenet_path = Snn4imagenet script path | |||
| brainscore_path = Brainscore script path | |||
| start_command = Start command | |||
| choose_mirror = select mirror or enter mirror path | |||
| input_mirror = Please enter image path | |||
| select_dataset = select dataset | |||
| specification = specification | |||
| select_specification = select specification | |||
| @@ -1401,6 +1401,7 @@ issues.filter_sort.feweststars=点赞由少到多 | |||
| issues.filter_sort.mostforks=派生由多到少 | |||
| issues.filter_sort.fewestforks=派生由少到多 | |||
| issues.filter_sort.downloadtimes=下载次数 | |||
| issues.filter_sort.moststars=收藏数量 | |||
| issues.action_open=开启 | |||
| issues.action_close=关闭 | |||
| issues.action_label=标签 | |||
| @@ -2512,11 +2513,15 @@ repos.contributor=贡献者数 | |||
| repos.yes=是 | |||
| repos.no=否 | |||
| images.recommend = 推荐 | |||
| images.unrecommend = 不推荐 | |||
| datasets.dataset_manage_panel=数据集管理 | |||
| datasets.owner=所有者 | |||
| datasets.name=名称 | |||
| datasets.private=私有 | |||
| datasets.recommend=设为推荐 | |||
| datasets.unrecommend=取消推荐 | |||
| cloudbrain.all_task_types=全部任务类型 | |||
| cloudbrain.all_computing_resources=全部计算资源 | |||
| @@ -2974,6 +2979,7 @@ snn4imagenet_path = snn4imagenet脚本存放路径 | |||
| brainscore_path = brainscore脚本存放路径 | |||
| start_command = 启动命令 | |||
| choose_mirror = 选择镜像或输入镜像地址 | |||
| input_mirror = 请输入云脑镜像地址 | |||
| select_dataset = 选择数据集 | |||
| specification = 规格 | |||
| select_specification = 选择资源规格 | |||
| @@ -21,6 +21,7 @@ import ( | |||
| const ( | |||
| tplCloudBrains base.TplName = "admin/cloudbrain/list" | |||
| tplImages base.TplName = "admin/cloudbrain/images" | |||
| tplCommitImages base.TplName = "admin/cloudbrain/imagecommit" | |||
| EXCEL_DATE_FORMAT = "20060102150405" | |||
| CREATE_TIME_FORMAT = "2006/01/02 15:04:05" | |||
| ) | |||
| @@ -114,6 +115,12 @@ func Images(ctx *context.Context) { | |||
| } | |||
| func CloudBrainCommitImageShow(ctx *context.Context) { | |||
| ctx.Data["PageIsAdminImages"] = true | |||
| ctx.HTML(200, tplCommitImages) | |||
| } | |||
| func DownloadCloudBrains(ctx *context.Context) { | |||
| page := 1 | |||
| @@ -1,6 +1,8 @@ | |||
| package admin | |||
| import ( | |||
| "net/http" | |||
| "strconv" | |||
| "strings" | |||
| "code.gitea.io/gitea/models" | |||
| @@ -49,6 +51,8 @@ func Datasets(ctx *context.Context) { | |||
| orderBy = models.SearchOrderBySizeReverse | |||
| case "size": | |||
| orderBy = models.SearchOrderBySize | |||
| case "downloadtimes": | |||
| orderBy = models.SearchOrderByDownloadTimes | |||
| case "moststars": | |||
| orderBy = models.SearchOrderByStarsReverse | |||
| case "feweststars": | |||
| @@ -70,6 +74,7 @@ func Datasets(ctx *context.Context) { | |||
| PageSize: setting.UI.ExplorePagingNum, | |||
| }, | |||
| Keyword: keyword, | |||
| RecommendOnly: ctx.QueryBool("recommend"), | |||
| SearchOrderBy: orderBy, | |||
| }) | |||
| if err != nil { | |||
| @@ -80,7 +85,7 @@ func Datasets(ctx *context.Context) { | |||
| ctx.Data["Keyword"] = keyword | |||
| ctx.Data["Total"] = count | |||
| ctx.Data["Datasets"] = datasets | |||
| ctx.Data["Recommend"] = ctx.QueryBool("recommend") | |||
| pager := context.NewPagination(int(count), setting.UI.ExplorePagingNum, page, 5) | |||
| pager.SetDefaultParams(ctx) | |||
| ctx.Data["Page"] = pager | |||
| @@ -88,6 +93,23 @@ func Datasets(ctx *context.Context) { | |||
| ctx.HTML(200, tplDatasets) | |||
| } | |||
| func DatasetAction(ctx *context.Context) { | |||
| var err error | |||
| datasetId, _ := strconv.ParseInt(ctx.Params(":id"), 10, 64) | |||
| switch ctx.Params(":action") { | |||
| case "recommend": | |||
| err = models.RecommendDataset(datasetId, true) | |||
| case "unrecommend": | |||
| err = models.RecommendDataset(datasetId, false) | |||
| } | |||
| if err != nil { | |||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("repo.star_fail", ctx.Params(":action")))) | |||
| } else { | |||
| ctx.JSON(http.StatusOK, models.BaseOKMessage) | |||
| } | |||
| } | |||
| func DeleteDataset(ctx *context.Context) { | |||
| dataset, err := models.GetDatasetByID(ctx.QueryInt64("id")) | |||
| if err != nil { | |||
| @@ -331,6 +331,7 @@ func ExploreDatasets(ctx *context.Context) { | |||
| Task: task, | |||
| License: license, | |||
| OwnerID: ownerID, | |||
| RecommendOnly: ctx.QueryBool("recommend"), | |||
| ListOptions: models.ListOptions{ | |||
| Page: page, | |||
| PageSize: 30, | |||
| @@ -357,6 +358,7 @@ func ExploreDatasets(ctx *context.Context) { | |||
| ctx.Data["Category"] = category | |||
| ctx.Data["Task"] = task | |||
| ctx.Data["License"] = license | |||
| ctx.Data["Recommend"] = ctx.QueryBool("recommend") | |||
| pager.SetDefaultParams(ctx) | |||
| ctx.Data["Page"] = pager | |||
| @@ -703,6 +703,53 @@ func CloudBrainCommitImageCheck(ctx *context.Context, form auth.CommitImageCloud | |||
| } | |||
| func CloudBrainAdminCommitImage(ctx *context.Context, form auth.CommitAdminImageCloudBrainForm) { | |||
| if !NamePattern.MatchString(form.Tag) { | |||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.title_format_err"))) | |||
| return | |||
| } | |||
| if utf8.RuneCountInString(form.Description) > 255 { | |||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr("dataset.description_format_err", 255))) | |||
| return | |||
| } | |||
| validTopics, errMessage := checkTopics(form.Topics) | |||
| if errMessage != "" { | |||
| ctx.JSON(http.StatusOK, models.BaseErrorMessage(ctx.Tr(errMessage))) | |||
| return | |||
| } | |||
| err := cloudbrain.CommitAdminImage(models.CommitImageParams{ | |||
| CommitImageCloudBrainParams: models.CommitImageCloudBrainParams{ | |||
| ImageDescription: form.Description, | |||
| ImageTag: form.Tag, | |||
| }, | |||
| IsPrivate: form.IsPrivate, | |||
| CloudBrainType: form.Type, | |||
| Topics: validTopics, | |||
| UID: ctx.User.ID, | |||
| Type: models.GetRecommondType(form.IsRecommend), | |||
| Place: form.Place, | |||
| }) | |||
| if err != nil { | |||
| log.Error("CommitImagefailed") | |||
| if models.IsErrImageTagExist(err) { | |||
| ctx.JSON(200, models.BaseErrorMessage(ctx.Tr("repo.image_exist"))) | |||
| } else if models.IsErrorImageCommitting(err) { | |||
| ctx.JSON(200, models.BaseErrorMessage(ctx.Tr("repo.image_committing"))) | |||
| } else { | |||
| ctx.JSON(200, models.BaseErrorMessage(ctx.Tr("repo.image_commit_fail"))) | |||
| } | |||
| return | |||
| } | |||
| ctx.JSON(200, models.BaseOKMessage) | |||
| } | |||
| func CloudBrainCommitImage(ctx *context.Context, form auth.CommitImageCloudBrainForm) { | |||
| if !NamePattern.MatchString(form.Tag) { | |||
| @@ -358,6 +358,7 @@ func MyDatasets(ctx *context.Context) { | |||
| NeedIsPrivate: false, | |||
| JustNeedZipFile: true, | |||
| NeedRepoInfo: true, | |||
| RecommendOnly: ctx.QueryBool("recommend"), | |||
| }) | |||
| if err != nil { | |||
| ctx.ServerError("datasets", err) | |||
| @@ -398,6 +399,7 @@ func PublicDataset(ctx *context.Context) { | |||
| Type: cloudbrainType, | |||
| JustNeedZipFile: true, | |||
| NeedRepoInfo: true, | |||
| RecommendOnly: ctx.QueryBool("recommend"), | |||
| }) | |||
| if err != nil { | |||
| ctx.ServerError("datasets", err) | |||
| @@ -454,6 +456,7 @@ func MyFavoriteDataset(ctx *context.Context) { | |||
| Type: cloudbrainType, | |||
| JustNeedZipFile: true, | |||
| NeedRepoInfo: true, | |||
| RecommendOnly: ctx.QueryBool("recommend"), | |||
| }) | |||
| if err != nil { | |||
| ctx.ServerError("datasets", err) | |||
| @@ -525,6 +525,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||
| m.Group("/datasets", func() { | |||
| m.Get("", admin.Datasets) | |||
| m.Put("/:id/action/:action", admin.DatasetAction) | |||
| // m.Post("/delete", admin.DeleteDataset) | |||
| }) | |||
| m.Group("/cloudbrains", func() { | |||
| @@ -534,6 +535,8 @@ func RegisterRoutes(m *macaron.Macaron) { | |||
| m.Group("/images", func() { | |||
| m.Get("", admin.Images) | |||
| m.Get("/data", repo.GetAllImages) | |||
| m.Get("/commit_image", admin.CloudBrainCommitImageShow) | |||
| m.Post("/commit_image", bindIgnErr(auth.CommitAdminImageCloudBrainForm{}), repo.CloudBrainAdminCommitImage) | |||
| }) | |||
| m.Put("/image/:id/action/:action", image.Action) | |||
| @@ -106,9 +106,9 @@ func Profile(ctx *context.Context) { | |||
| for _, org := range orgs { | |||
| _, repoCount, err := models.SearchRepository(&models.SearchRepoOptions{ | |||
| OwnerID: org.ID, | |||
| Private: ctx.IsSigned, | |||
| Actor: ctx.User, | |||
| OwnerID: org.ID, | |||
| Private: ctx.IsSigned, | |||
| Actor: ctx.User, | |||
| }) | |||
| if err != nil { | |||
| ctx.ServerError("SearchRepository", err) | |||
| @@ -175,6 +175,8 @@ func Profile(ctx *context.Context) { | |||
| orderBy = models.SearchOrderByAlphabeticallyReverse | |||
| case "alphabetically": | |||
| orderBy = models.SearchOrderByAlphabetically | |||
| case "downloadtimes": | |||
| orderBy = models.SearchOrderByDownloadTimes | |||
| case "moststars": | |||
| orderBy = models.SearchOrderByStarsReverse | |||
| case "feweststars": | |||
| @@ -0,0 +1,129 @@ | |||
| <style> | |||
| .label_color{ | |||
| color:#505559 !important; | |||
| width: 6% !important; | |||
| text-align: center; | |||
| } | |||
| </style> | |||
| {{template "base/head" .}} | |||
| <div id="mask"> | |||
| <div id="loadingPage"> | |||
| <div class="rect1"></div> | |||
| <div class="rect2"></div> | |||
| <div class="rect3"></div> | |||
| <div class="rect4"></div> | |||
| <div class="rect5"></div> | |||
| </div> | |||
| </div> | |||
| <div class="repository"> | |||
| {{template "repo/header" .}} | |||
| <div class="alert"></div> | |||
| <div class="ui container"> | |||
| <div> | |||
| <div class="ui negative message" style="display: none;"> | |||
| </div> | |||
| <div class="ui info message" style="display: none;"> | |||
| </div> | |||
| <div class="ui positive message" style="display: none;"> | |||
| </div> | |||
| <h4 class="ui top attached header"> | |||
| {{.i18n.Tr "repo.submit_image"}} | |||
| </h4> | |||
| <div class="submit-image-tmplvalue" style="display: none;" data-link="{{$.Link}}"></div> | |||
| <div class="ui attached segment" style="padding: 2em 3em;padding-bottom: 7rem;"> | |||
| <div class="ui form" id="form_image"> | |||
| <input type="hidden" name="edit" value="edit"> | |||
| {{.CsrfTokenHtml}} | |||
| <div class="inline field"> | |||
| <label class="label_color" for="">{{$.i18n.Tr "dataset.dataset_available_clusters"}}</label> | |||
| <div class="ui basic label" style="border: none !important;color:#3291f8;"> | |||
| <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14"><path fill="none" d="M0 0h24v24H0z"></path><path d="M4 3h16a1 1 0 0 1 1 1v7H3V4a1 1 0 0 1 1-1zM3 13h18v7a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-7zm4 3v2h3v-2H7zM7 6v2h3V6H7z"></path></svg> | |||
| CPU/GPU | |||
| </div> | |||
| <input type="hidden" value="{{.Type}}" name="type"> | |||
| </div> | |||
| <div class="inline required field"> | |||
| <label class="label_color" for="">{{$.i18n.Tr "repo.images.name"}}</label> | |||
| <input type="text" name="tag" required placeholder="{{$.i18n.Tr "repo.images.name_placerholder"}}" style="width: 80%;" maxlength="100"> | |||
| <span class="tooltips" style="display: block;padding-left: 0.5rem;">{{.i18n.Tr "repo.images.name_rule"}}</span> | |||
| </div> | |||
| <div class="inline required field"> | |||
| <label class="label_color" for="">{{$.i18n.Tr "repo.images"}}</label> | |||
| <input type="text" name="place" required placeholder="{{$.i18n.Tr "cloudbrain.input_mirror"}}" style="width: 80%;" maxlength="100"> | |||
| </div> | |||
| <div class="inline required field"> | |||
| <label class="label_color" for="">{{$.i18n.Tr "dataset.description"}}</label> | |||
| <textarea style="width: 80%;" required 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 class="inline field" style="display: flex;align-items: center;"> | |||
| <label class="label_color" for="">{{$.i18n.Tr "repo.model.manage.label"}}</label> | |||
| <div class="ui multiple search selection dropdown" id="dropdown_image" style="width: 80%;"> | |||
| <input type="hidden" name="topics" value="" required> | |||
| <div class="default text" id="default_text">{{.i18n.Tr "repo.repo_label_helpe"}}</div> | |||
| <div class="menu" id="course_label_item"></div> | |||
| </div> | |||
| </div> | |||
| <span class="tooltips" style="display: block;padding-left: 0.5rem;margin-top: 0.5rem;margin-bottom: 1rem;">{{.i18n.Tr "repo.image.label_tooltips"}}</span> | |||
| <div class="inline fields"> | |||
| <label class="label_color" for="" style="visibility: hidden;"></label> | |||
| <div class="field"> | |||
| <div class="ui radio checkbox"> | |||
| <input type="radio" name="isRecommend" checked="checked" value="true"> | |||
| <label>{{.i18n.Tr "admin.images.recommend"}}</label> | |||
| </div> | |||
| </div> | |||
| <div class="field" style="flex: 0.15;"> | |||
| <div class="ui radio checkbox" > | |||
| <input type="radio" name="isRecommend" value="false"> | |||
| <label>{{.i18n.Tr "admin.images.unrecommend"}}</label> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="inline fields"> | |||
| <label class="label_color" for="" style="visibility: hidden;"></label> | |||
| <div class="field"> | |||
| <div class="ui radio checkbox"> | |||
| <input type="radio" name="isPrivate" checked="checked" value="false"> | |||
| <label>{{.i18n.Tr "org.settings.visibility.public"}}</label> | |||
| </div> | |||
| </div> | |||
| <div class="field" style="flex: 0.15;"> | |||
| <div class="ui radio checkbox" > | |||
| <input type="radio" name="isPrivate" value="true"> | |||
| <label>{{.i18n.Tr "home.show_private"}}</label> | |||
| </div> | |||
| </div> | |||
| <div class="field"> | |||
| <span class="label_color">{{.i18n.Tr "repo.images.public_tooltips"}}</span> | |||
| </div> | |||
| </div> | |||
| <div class="inline required field" style="padding-top: 2rem;"> | |||
| <label class="label_color" for="" style="visibility: hidden;"></label> | |||
| <button class="ui create_image green button" type="button"> | |||
| {{.i18n.Tr "repo.cloudbrain.commit_image"}} | |||
| </button> | |||
| <a class="ui button" id="cancel_submit_image">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <!-- 确认模态框 --> | |||
| <div> | |||
| <div class="ui modal image_confirm_submit"> | |||
| <div class="header">{{.i18n.Tr "repo.submit_image"}}</div> | |||
| <div class="content text red center"> | |||
| <p><i class="exclamation icon"></i>{{.i18n.Tr "repo.image_overwrite"}}</p> | |||
| </div> | |||
| <div class="actions"> | |||
| <button class="ui deny small button">{{.i18n.Tr "cloudbrain.operate_cancel"}}</button> | |||
| <button class="ui green small approve button">{{.i18n.Tr "cloudbrain.operate_confirm"}}</button> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| {{template "base/footer" .}} | |||
| @@ -3,6 +3,9 @@ | |||
| {{template "admin/navbar" .}} | |||
| <div class="ui container"> | |||
| {{template "base/alert" .}} | |||
| <div class="ui negative message" style="display: none;"> | |||
| </div> | |||
| <h4 class="ui top attached header"> | |||
| {{.i18n.Tr "admin.datasets.dataset_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) | |||
| </h4> | |||
| @@ -24,10 +27,10 @@ | |||
| {{range .Datasets}} | |||
| <tr> | |||
| <td>{{.ID}}</td> | |||
| <td><a href="{{AppSubUrl}}/">{{.Title}}</a></td> | |||
| <td style="display: flex;align-items: center;"><a href="{{AppSubUrl}}/">{{.Title}}</a>{{if .Recommend}}<img src="/img/jian.svg" style="margin-left: 0.5rem;">{{end}}</td> | |||
| <td><i class="fa fa{{if .IsPrivate}}-check{{end}}-square-o"></i></td> | |||
| <td><span title="{{.CreatedUnix.FormatLong}}">{{.CreatedUnix.FormatShort}}</span></td> | |||
| <td></td> | |||
| <td>{{if .Recommend}}<span class="set_dataset" style="color: rgb(250, 140, 22);cursor: pointer;" data-url="{{$.Link}}/{{.ID}}/action/unrecommend">{{$.i18n.Tr "admin.datasets.unrecommend"}}</span>{{else}}<span class="set_dataset" style="color: rgb(19, 194, 141);cursor: pointer;" data-url="{{$.Link}}/{{.ID}}/action/recommend">{{$.i18n.Tr "admin.datasets.recommend"}}</span>{{end}}</td> | |||
| </tr> | |||
| {{end}} | |||
| </tbody> | |||
| @@ -37,16 +40,4 @@ | |||
| {{template "base/paginate" .}} | |||
| </div> | |||
| </div> | |||
| <div class="ui small basic delete modal"> | |||
| <div class="ui icon header"> | |||
| <i class="trash icon"></i> | |||
| {{.i18n.Tr "dataset.settings.delete"}} | |||
| </div> | |||
| <div class="content"> | |||
| <p>{{.i18n.Tr "dataset.settings.delete_desc"}}</p> | |||
| {{.i18n.Tr "dataset.settings.delete_notices_2" `<span class="name"></span>` | Safe}}<br> | |||
| </div> | |||
| {{template "base/delete_modal_actions" .}} | |||
| </div> | |||
| {{template "base/footer" .}} | |||
| {{template "base/footer" .}} | |||
| @@ -23,7 +23,7 @@ | |||
| <el-tab-pane label="{{.i18n.Tr "dataset.current_project"}}" name="first"> | |||
| <div style="display: flex;align-items: center;justify-content: space-between;padding: 1rem 0;border-bottom:1px solid #F5F5F5" v-for="(dataset,index) in currentRepoDataset" :key="index"> | |||
| <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><img v-if="dataset.Recommend" src="/img/jian.svg" style="margin-left: 0.5rem;"><span class="panel_dataset_name">${dataset.Name} </span></div> | |||
| <div style="margin-top: 8px;display: flex;"> | |||
| <a :title="dataset.UserName" style="cursor: default;"> | |||
| <img class="ui avatar mini image" style="width: 20px;height: 20px;" :src="dataset.RelAvatarLink"> | |||
| @@ -49,7 +49,7 @@ | |||
| <el-tab-pane label="{{.i18n.Tr "dataset.owner_dataset"}}" name="second"> | |||
| <div style="display: flex;align-items: center;justify-content: space-between;padding: 1rem 0;border-bottom:1px solid #F5F5F5" v-for="(dataset,index) in myDataset" :key="index"> | |||
| <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><img v-if="dataset.Recommend" src="/img/jian.svg" style="margin-left: 0.5rem;"><span class="panel_dataset_name">${dataset.Name}</span></div> | |||
| <div style="margin-top: 8px;display: flex;"> | |||
| <a :title="dataset.UserName" style="cursor: default;"> | |||
| <img class="ui avatar mini image" style="width: 20px;height: 20px;" :src="dataset.RelAvatarLink"> | |||
| @@ -74,7 +74,7 @@ | |||
| <el-tab-pane label="{{.i18n.Tr "dataset.public_dataset"}}" name="third"> | |||
| <div style="display: flex;align-items: center;justify-content: space-between;padding: 1rem 0;border-bottom:1px solid #F5F5F5" v-for="(dataset,index) in publicDataset" :key="index"> | |||
| <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><img v-if="dataset.Recommend" src="/img/jian.svg" style="margin-left: 0.5rem;"><span class="panel_dataset_name">${dataset.Name}</span></div> | |||
| <div style="margin-top: 8px;display: flex;"> | |||
| <a :title="dataset.UserName" style="cursor: default;"> | |||
| <img class="ui avatar mini image" style="width: 20px;height: 20px;" :src="dataset.RelAvatarLink"> | |||
| @@ -99,7 +99,7 @@ | |||
| <el-tab-pane label="{{.i18n.Tr "dataset.I_liked"}}" name="fourth"> | |||
| <div style="display: flex;align-items: center;justify-content: space-between;padding: 1rem 0;border-bottom:1px solid #F5F5F5" v-for="(dataset,index) in myFavoriteDataset" :key="index"> | |||
| <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><img v-if="dataset.Recommend" src="/img/jian.svg" style="margin-left: 0.5rem;"><span class="panel_dataset_name">${dataset.Name}</span></div> | |||
| <div style="margin-top: 8px;display: flex;"> | |||
| <a :title="dataset.UserName" style="cursor: default;"> | |||
| <img class="ui avatar mini image" style="width: 20px;height: 20px;" :src="dataset.RelAvatarLink"> | |||
| @@ -23,7 +23,7 @@ | |||
| <el-tab-pane label="{{.i18n.Tr "dataset.current_project"}}" name="first"> | |||
| <div style="display: flex;align-items: center;justify-content: space-between;padding: 1rem 0;border-bottom:1px solid #F5F5F5" v-for="(dataset,index) in currentRepoDataset" :key="index"> | |||
| <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><img v-if="dataset.Recommend" src="/img/jian.svg" style="margin-left: 0.5rem;"><span class="panel_dataset_name">${dataset.Name} </span></div> | |||
| <div style="margin-top: 8px;display: flex;"> | |||
| <a :title="dataset.UserName" style="cursor: default;"> | |||
| <img class="ui avatar mini image" style="width: 20px;height: 20px;" :src="dataset.RelAvatarLink"> | |||
| @@ -49,7 +49,7 @@ | |||
| <el-tab-pane label="{{.i18n.Tr "dataset.owner_dataset"}}" name="second"> | |||
| <div style="display: flex;align-items: center;justify-content: space-between;padding: 1rem 0;border-bottom:1px solid #F5F5F5" v-for="(dataset,index) in myDataset" :key="index"> | |||
| <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><img v-if="dataset.Recommend" src="/img/jian.svg" style="margin-left: 0.5rem;"><span class="panel_dataset_name">${dataset.Name}</span></div> | |||
| <div style="margin-top: 8px;display: flex;"> | |||
| <a :title="dataset.UserName" style="cursor: default;"> | |||
| <img class="ui avatar mini image" style="width: 20px;height: 20px;" :src="dataset.RelAvatarLink"> | |||
| @@ -74,7 +74,7 @@ | |||
| <el-tab-pane label="{{.i18n.Tr "dataset.public_dataset"}}" name="third"> | |||
| <div style="display: flex;align-items: center;justify-content: space-between;padding: 1rem 0;border-bottom:1px solid #F5F5F5" v-for="(dataset,index) in publicDataset" :key="index"> | |||
| <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><img v-if="dataset.Recommend" src="/img/jian.svg" style="margin-left: 0.5rem;"><span class="panel_dataset_name">${dataset.Name}</span></div> | |||
| <div style="margin-top: 8px;display: flex;"> | |||
| <a :title="dataset.UserName" style="cursor: default;"> | |||
| <img class="ui avatar mini image" style="width: 20px;height: 20px;" :src="dataset.RelAvatarLink"> | |||
| @@ -99,7 +99,7 @@ | |||
| <el-tab-pane label="{{.i18n.Tr "dataset.I_liked"}}" name="fourth"> | |||
| <div style="display: flex;align-items: center;justify-content: space-between;padding: 1rem 0;border-bottom:1px solid #F5F5F5" v-for="(dataset,index) in myFavoriteDataset" :key="index"> | |||
| <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><img v-if="dataset.Recommend" src="/img/jian.svg" style="margin-left: 0.5rem;"><span class="panel_dataset_name">${dataset.Name}</span></div> | |||
| <div style="margin-top: 8px;display: flex;"> | |||
| <a :title="dataset.UserName" style="cursor: default;"> | |||
| <img class="ui avatar mini image" style="width: 20px;height: 20px;" :src="dataset.RelAvatarLink"> | |||
| @@ -125,7 +125,8 @@ | |||
| <a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}&tab={{$.TabName}}&category={{$.Category}}&task={{$.Task}}&license={{$.License}}">{{.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}}&category={{$.Category}}&task={{$.Task}}&license={{$.License}}">{{.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}}&category={{$.Category}}&task={{$.Task}}&license={{$.License}}">{{.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}}&category={{$.Category}}&task={{$.Task}}&license={{$.License}}">{{.i18n.Tr "repo.issues.filter_sort.downloadtimes"}}</a> | |||
| <a class="{{if eq .SortType "moststars"}}active{{end}} item" href="{{$.Link}}?sort=moststars&q={{$.Keyword}}&tab={{$.TabName}}&category={{$.Category}}&task={{$.Task}}&license={{$.License}}">{{.i18n.Tr "repo.issues.filter_sort.moststars"}}</a> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -144,7 +145,8 @@ | |||
| <div class="ui card" @click="gotoDataset('{{.Repo.Link}}/datasets')" style="cursor: pointer;box-shadow: 0px 4px 4px 0px rgba(232,232,232,0.6);border: 1px solid rgba(232, 232, 232, 1);"> | |||
| <div class="content" style="border-bottom: none;"> | |||
| <div class="repo_dataset_header" style="display: flex;align-items: center;justify-content: space-between;"> | |||
| <a href="{{.Repo.Link}}/datasets" style="font-size: 12px;color: #3291F8;height: 24px;">{{.Repo.OwnerName}} / {{.Repo.Alias}}</a> | |||
| <a href="{{.Repo.Link}}/datasets" style="font-size: 12px;color: #3291F8;height: 24px;">{{.Repo.OwnerName}} / {{.Repo.Alias}}{{if .Recommend}}<img src="/img/jian.svg" style="margin-left: 0.5rem;">{{end}}</a> | |||
| {{if $.IsSigned}} | |||
| <span style="display: flex;align-items: center;justify-content: flex-end;cursor: pointer;" @click.stop="postSquareStar({{.ID}},'{{.Repo.Link}}/datasets',{{$k}})"> | |||
| <div style="line-height: 1;margin-right: 4px;margin-bottom: -2px;"> | |||
| @@ -179,7 +179,26 @@ | |||
| </div> | |||
| </div> | |||
| <input id="store_category" type="hidden" name="get_benchmark_category"> | |||
| <div class="inline required field"> | |||
| <label>{{.i18n.Tr "repo.modelarts.code_version"}}</label> | |||
| <select class="ui dropdown width80 left2" id="code_version" name="branch_name"> | |||
| {{if .branch_name}} | |||
| <option name="branch_name" value="{{.branch_name}}">{{.branch_name}}</option> | |||
| {{range $k, $v :=.Branches}} | |||
| {{ if ne $v $.branch_name }} | |||
| <option name="branch_name" value="{{$v}}">{{$v}}</option> | |||
| {{end}} | |||
| {{end}} | |||
| {{else}} | |||
| <option name="branch_name" value="{{.branchName}}">{{.branchName}}</option> | |||
| {{range $k, $v :=.Branches}} | |||
| {{ if ne $v $.branchName }} | |||
| <option name="branch_name" value="{{$v}}">{{$v}}</option> | |||
| {{end}} | |||
| {{end}} | |||
| {{end}} | |||
| </select> | |||
| </div> | |||
| <div class="inline required field"> | |||
| <label>{{.i18n.Tr "cloudbrain.gpu_type"}}</label> | |||
| <select id="cloudbrain_gpu_type" class="ui search dropdown" placeholder="选择GPU类型" style='width:385px' name="gpu_type"> | |||
| @@ -1,6 +1,7 @@ | |||
| <template> | |||
| <div> | |||
| <div > | |||
| <div class="ui container" style="width: 80%;"> | |||
| <div class="ui grid"> | |||
| <div class="row" style="border: 1px solid #d4d4d5;margin-top: 15px;padding-top: 0;"> | |||
| <div class="ui attached segment"> | |||
| @@ -11,12 +12,10 @@ | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <el-row style="padding: 1rem;"> | |||
| <el-col :span="2" style="margin-right: 1rem;"> | |||
| <el-checkbox v-model="checked" style="padding: 0.5rem 1rem;">仅显示平台推荐</el-checkbox> | |||
| </el-col> | |||
| <el-col :span="6"> | |||
| <el-dropdown @command="handleCommand" trigger="click" style="border: 1px solid rgba(34,36,38,.15);border-radius: 4px;padding: 0.5rem 1rem;"> | |||
| <div class="ui ten wide column" style="margin: 1rem 0;"> | |||
| <el-checkbox v-model="checked" style="padding: 0.5rem 1rem;">仅显示平台推荐</el-checkbox> | |||
| <el-dropdown @command="handleCommand" trigger="click" style="border: 1px solid rgba(34,36,38,.15);border-radius: 4px;padding: 0.5rem 1rem;"> | |||
| <span class="el-dropdown-link"> | |||
| {{dropdownPrivate}}<i class="el-icon-caret-bottom el-icon--right"></i> | |||
| </span> | |||
| @@ -25,10 +24,12 @@ | |||
| <el-dropdown-item :command="{label:'公开',private:false}">公开</el-dropdown-item> | |||
| <el-dropdown-item :command="{label:'公开',private:true}">私有</el-dropdown-item> | |||
| </el-dropdown-menu> | |||
| </el-dropdown> | |||
| </el-col> | |||
| </el-row> | |||
| <el-row> | |||
| </el-dropdown> | |||
| </div> | |||
| <div class="ui six wide column right aligned" style="margin: 1rem 0;"> | |||
| <a class="ui blue small button" href="/admin/images/commit_image?from=imageAdmin">创建云脑镜像</a> | |||
| </div> | |||
| <div class="ui sixteen wide column" style="padding: 0;"> | |||
| <el-table | |||
| :data="tableDataCustom" | |||
| style="width: 100%" | |||
| @@ -138,7 +139,7 @@ | |||
| </template> | |||
| </el-table-column> | |||
| </el-table> | |||
| </el-row> | |||
| </div> | |||
| <div class="ui container" style="padding:2rem 0;text-align:center"> | |||
| <el-pagination | |||
| background | |||
| @@ -152,6 +153,7 @@ | |||
| </el-pagination> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -26,6 +26,15 @@ export default async function initImage(){ | |||
| } | |||
| ] | |||
| }, | |||
| place:{ | |||
| identifier : 'place', | |||
| rules: [ | |||
| { | |||
| type: 'empty', | |||
| } | |||
| ] | |||
| }, | |||
| } | |||
| }) | |||
| } | |||
| @@ -75,8 +84,9 @@ export default async function initImage(){ | |||
| type:'POST', | |||
| data:formData, | |||
| success:function(res){ | |||
| console.log(res) | |||
| if(res.Code===1){ | |||
| $('.ui.info.message').text(res.Message).show().delay(1500).fadeOut(); | |||
| $('.ui.negative.message').text(res.Message).show().delay(2500).fadeOut(); | |||
| }else if(res.Code==0){ | |||
| if(location.href.indexOf('imageAdmin')!==-1){ | |||
| location.href = `${window.config.AppSubUrl}/admin/images` | |||
| @@ -105,6 +115,11 @@ export default async function initImage(){ | |||
| $("textarea[name='description']").parent().addClass('error') | |||
| return false | |||
| } | |||
| if($("input[name='place']").length>0&&!$("input[name='place']").val()){ | |||
| console.log("1111111",$("input[name='place']")) | |||
| $("input[name='place']").parent().addClass('error') | |||
| return false | |||
| } | |||
| const postData = { | |||
| _csrf:$("input[name='_csrf']").val(), | |||
| @@ -115,6 +130,10 @@ export default async function initImage(){ | |||
| topics:$("input[name='topics']").val(), | |||
| id:$("input[name='id']").val() | |||
| } | |||
| if($("input[name='place']").val()&&$("input[name='isRecommend']:checked").val()){ | |||
| postData.isRecommend = $("input[name='isRecommend']:checked").val() | |||
| postData.place = $("input[name='place']").val() | |||
| } | |||
| let formData = $params(postData) | |||
| if($("input[name='edit']").val()=="edit"){ | |||
| postImage(formData) | |||
| @@ -143,7 +162,7 @@ export default async function initImage(){ | |||
| } | |||
| }) | |||
| } | |||
| return false | |||
| }) | |||
| $('#cancel_submit_image').click(()=>{ | |||
| if(link.includes('cloudbrain')){ | |||
| @@ -34,7 +34,6 @@ import { | |||
| } from './features/notification.js'; | |||
| import {createCodeEditor} from './features/codeeditor.js'; | |||
| import MinioUploader from './components/MinioUploader.vue'; | |||
| import ObsUploader from './components/ObsUploader.vue'; | |||
| import EditAboutInfo from './components/EditAboutInfo.vue'; | |||
| // import Images from './components/Images.vue'; | |||
| import EditTopics from './components/EditTopics.vue'; | |||
| @@ -2958,7 +2957,6 @@ $(document).ready(async () => { | |||
| initCodeView(); | |||
| initVueApp(); | |||
| initVueUploader(); | |||
| initObsUploader(); | |||
| initVueDataset(); | |||
| initVueEditAbout(); | |||
| initVueEditTopic(); | |||
| @@ -3702,6 +3700,32 @@ function initVueEditAbout() { | |||
| } | |||
| function initVueDataset() { | |||
| $('.set_dataset').on('click', function(){ | |||
| const $this = $(this); | |||
| let link = $this.data('url') | |||
| $.ajax({ | |||
| url:link, | |||
| type:'PUT', | |||
| success:function(res){ | |||
| console.log(res) | |||
| if(res.Code==0){ | |||
| window.location.href = '/admin/datasets' | |||
| }else{ | |||
| $('.ui.negative.message').text(res.Message).show().delay(1500).fadeOut(); | |||
| } | |||
| }, | |||
| error: function(xhr){ | |||
| // 隐藏 loading | |||
| // 只有请求不正常(状态码不为200)才会执行 | |||
| $('.ui.negative.message').html(xhr.responseText).show().delay(1500).fadeOut(); | |||
| console.log(xhr) | |||
| }, | |||
| complete:function(xhr){ | |||
| // $("#mask").css({"display":"none","z-index":"1"}) | |||
| } | |||
| }) | |||
| }); | |||
| const el = document.getElementById('dataset-base'); | |||
| if (!el) { | |||
| return; | |||
| @@ -3855,7 +3879,6 @@ function initVueDataset() { | |||
| }, | |||
| components: { | |||
| MinioUploader, | |||
| ObsUploader | |||
| }, | |||
| mounted(){ | |||
| // if(document.getElementById('postPath')){ | |||
| @@ -4380,19 +4403,7 @@ function initVueDataAnalysis() { | |||
| render: h => h(DataAnalysis) | |||
| }); | |||
| } | |||
| // 新增 | |||
| function initObsUploader() { | |||
| const el = document.getElementById('obsUploader'); | |||
| if (!el) { | |||
| return; | |||
| } | |||
| new Vue({ | |||
| el: '#obsUploader', | |||
| components: {ObsUploader}, | |||
| template: '<ObsUploader />' | |||
| }); | |||
| } | |||
| function initVueWxAutorize() { | |||
| const el = document.getElementById('WxAutorize'); | |||
| if (!el) { | |||
| @@ -250,23 +250,6 @@ footer .column{margin-bottom:0!important; padding-bottom:0!important;} | |||
| .CREATING, .STOPPING, .DELETING, .STARTING, i.WAITING ,.INIT,.KILLING{display:inline-block;background-image:url('/img/loading.gif');background-repeat:no-repeat;width:16px;height:16px;background-size:16px 16px;margin-right:5px;} | |||
| i.COMPLETED,i.SUCCEEDED{display:inline-block;width:18px;height:18px;background:url("/img/icons.svg");background-position: -496px -52px;background-position: -441px -52px;} | |||
| .icon-to-bottom{ | |||
| background:url("/img/icons.svg"); | |||
| background-position: -574px -208px; | |||
| width: 30px; | |||
| height: 30px; | |||
| display: inline-block; | |||
| } | |||
| .icon-to-top{ | |||
| background:url("/img/icons.svg"); | |||
| background-position: -540px -208px; | |||
| width: 30px; | |||
| height: 30px; | |||
| display: inline-block; | |||
| } | |||
| .text_over{ | |||
| overflow: hidden; | |||
| text-overflow: ellipsis; | |||