diff --git a/models/attachment.go b/models/attachment.go index ea8f1645f..bb99ba467 100755 --- a/models/attachment.go +++ b/models/attachment.go @@ -43,6 +43,7 @@ type Attachment struct { Name string Description string `xorm:"TEXT"` DownloadCount int64 `xorm:"DEFAULT 0"` + UseNumber int64 `xorm:"DEFAULT 0"` Size int64 `xorm:"DEFAULT 0"` IsPrivate bool `xorm:"DEFAULT false"` DecompressState int32 `xorm:"DEFAULT 0"` @@ -107,6 +108,15 @@ func (a *Attachment) IncreaseDownloadCount() error { return nil } +func IncreaseAttachmentUseNumber(uuid string) error { + // Update use number. + if _, err := x.Exec("UPDATE `attachment` SET use_number=use_number+1 WHERE uuid=?", uuid); err != nil { + return fmt.Errorf("increase attachment use count: %v", err) + } + + return nil +} + func (a *Attachment) UpdateDatasetUpdateUnix() error { // Update download count. if _, err := x.Exec("UPDATE `dataset` SET updated_unix="+fmt.Sprint(time.Now().Unix())+" WHERE id=?", a.DatasetID); err != nil { diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 97fa69e0d..163c3dee6 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1491,6 +1491,8 @@ func CreateCloudbrain(cloudbrain *Cloudbrain) (err error) { if _, err = x.NoAutoTime().Insert(cloudbrain); err != nil { return err } + + go IncreaseDatasetUseCount(cloudbrain.Uuid) return nil } @@ -1735,6 +1737,8 @@ func RestartCloudbrain(old *Cloudbrain, new *Cloudbrain) (err error) { return err } + go IncreaseDatasetUseCount(new.Uuid) + return nil } func CloudbrainAll(opts *CloudbrainsOptions) ([]*CloudbrainInfo, int64, error) { diff --git a/models/dataset.go b/models/dataset.go index d4a7748d3..726a5010f 100755 --- a/models/dataset.go +++ b/models/dataset.go @@ -25,8 +25,9 @@ type Dataset struct { Category string Description string `xorm:"TEXT"` DownloadTimes int64 - NumStars int `xorm:"INDEX NOT NULL DEFAULT 0"` - Recommend bool `xorm:"INDEX NOT NULL DEFAULT false"` + UseCount int64 `xorm:"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"` @@ -212,7 +213,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,dataset.recommend" + 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,dataset.use_count" count, err := sess.Distinct("dataset.id").Join("INNER", "repository", "repository.id = dataset.repo_id"). Join("INNER", "attachment", "attachment.dataset_id=dataset.id"). @@ -350,6 +351,17 @@ func UpdateDataset(ctx DBContext, rel *Dataset) error { return err } +func IncreaseDatasetUseCount(uuid string) { + + IncreaseAttachmentUseNumber(uuid) + + attachment, _ := GetAttachmentByUUID(uuid) + if attachment != nil { + x.Exec("UPDATE `dataset` SET use_count=use_count+1 WHERE id=?", attachment.DatasetID) + } + +} + // GetDatasetByID returns Dataset with given ID. func GetDatasetByID(id int64) (*Dataset, error) { rel := new(Dataset) diff --git a/models/repo_list.go b/models/repo_list.go index 253cc968c..92654c11c 100755 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -218,6 +218,8 @@ const ( SearchOrderByForks SearchOrderBy = "num_forks ASC" SearchOrderByForksReverse SearchOrderBy = "num_forks DESC" SearchOrderByDownloadTimes SearchOrderBy = "download_times DESC" + SearchOrderByUseCount SearchOrderBy = "use_count ASC" + SearchOrderByUseCountReverse SearchOrderBy = "use_count DESC" SearchOrderByHot SearchOrderBy = "(num_watches + num_stars + num_forks + clone_cnt) DESC" SearchOrderByActive SearchOrderBy = "(num_issues + num_pulls + num_commit) DESC" SearchOrderByWatches SearchOrderBy = "num_watches DESC" diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 2772d6ba8..647dc35f5 100755 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -898,6 +898,10 @@ search_dataset = Search Dataset Files unzip_tooltips = If it has not been decompressed for a long time, please check whether the compressed package has encrypted files or file errors zip_failed = Decompression failed, please check whether the compressed package is encrypted or contact technical support dataset_desc = The description should not exceed 1024 characters +unzip_successed=Unzip Successed +unzip_failed=Unzip Failed +unzip_stared=Unzipping +unzip_status=Unzip Status [repo] owner = Owner repo_name = Repository Name @@ -1449,7 +1453,8 @@ 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.filter_sort.mostusecount = Most Quote +issues.filter_sort.fewestusecount=Fewest Quote issues.action_open = Open issues.action_close = Close issues.action_label = Label diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index ae6c1b276..f05de1780 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -903,6 +903,10 @@ search_dataset = 搜索数据集文件 unzip_tooltips = 如果长时间未解压,请检查压缩包是否有加密文件或者文件错误 zip_failed = 解压失败,请检查压缩包是否有加密或者联系技术支持人员。 dataset_desc = 描述字数不超过1024个字符 +unzip_successed=解压成功 +unzip_failed=解压失败 +unzip_stared=解压中 +unzip_status=解压状态 [repo] owner=拥有者 @@ -1455,12 +1459,13 @@ issues.filter_sort.mostcomment=最多评论 issues.filter_sort.leastcomment=最少评论 issues.filter_sort.nearduedate=到期日从近到远 issues.filter_sort.farduedate=到期日从远到近 -issues.filter_sort.moststars=点赞由多到少 issues.filter_sort.feweststars=点赞由少到多 issues.filter_sort.mostforks=派生由多到少 issues.filter_sort.fewestforks=派生由少到多 issues.filter_sort.downloadtimes=下载次数 issues.filter_sort.moststars=收藏数量 +issues.filter_sort.mostusecount=最多引用 +issues.filter_sort.fewestusecount=最少引用 issues.action_open=开启 issues.action_close=关闭 issues.action_label=标签 diff --git a/routers/admin/dataset.go b/routers/admin/dataset.go index 6b29b06ff..d1a8f2780 100644 --- a/routers/admin/dataset.go +++ b/routers/admin/dataset.go @@ -61,6 +61,10 @@ func Datasets(ctx *context.Context) { orderBy = models.SearchOrderByForksReverse case "fewestforks": orderBy = models.SearchOrderByForks + case "mostusecount": + orderBy = models.SearchOrderByUseCountReverse + case "fewestusecount": + orderBy = models.SearchOrderByUseCount default: ctx.Data["SortType"] = "recentupdate" orderBy = models.SearchOrderByRecentUpdated diff --git a/routers/home.go b/routers/home.go index 38acffb2f..a34302876 100755 --- a/routers/home.go +++ b/routers/home.go @@ -322,6 +322,10 @@ func ExploreDatasets(ctx *context.Context) { orderBy = models.SearchOrderByStarsReverse case "feweststars": orderBy = models.SearchOrderByStars + case "mostusecount": + orderBy = models.SearchOrderByUseCountReverse + case "fewestusecount": + orderBy = models.SearchOrderByUseCount case "default": orderBy = models.SearchOrderByDefault default: diff --git a/routers/repo/dataset.go b/routers/repo/dataset.go index 0e57fe1a0..9d7f4a4d7 100755 --- a/routers/repo/dataset.go +++ b/routers/repo/dataset.go @@ -172,6 +172,10 @@ func DatasetIndex(ctx *context.Context) { for _, attachment := range pageAttachments { uploader, _ := models.GetUserByID(attachment.UploaderID) attachment.Uploader = uploader + if !strings.HasSuffix(attachment.Name, ".zip") { + attachment.DecompressState = 3 //非zip文件 + } + } ctx.Data["Page"] = pager diff --git a/templates/explore/datasets.tmpl b/templates/explore/datasets.tmpl index 5739ebb10..57942c24a 100644 --- a/templates/explore/datasets.tmpl +++ b/templates/explore/datasets.tmpl @@ -1,133 +1,164 @@ {{template "base/head" .}}
{{template "explore/dataset_search" .}}
- + {{template "explore/dataset_left" .}} - +

- {{.i18n.Tr "datasets"}} + {{.i18n.Tr "datasets"}}

@@ -141,85 +172,114 @@ {{end}}
- 仅显示平台推荐 + + 仅显示平台推荐
{{range $k, $v :=.Datasets}} -
+
-
- {{.Repo.OwnerName}} / {{.Repo.Alias}} +
+ {{.Title}}{{if .Recommend}}{{end}} {{if $.IsSigned}} - - - {{.DownloadTimes}} + +
- + + + +
${starItems[{{$k}}]}
{{else}} - - - {{.DownloadTimes}} + +
- + + + +
${starItems[{{$k}}]}
{{end}} +
-
{{.Title}}{{if .Recommend}}{{end}}
{{if or (.Category) (.Task) (.License)}} {{end}} -
+

{{.Description}}

- +
{{if eq .UserID 0}} - + {{else}} - + {{end}} - 创建于:{{TimeSinceUnix1 .CreatedUnix}} + {{TimeSinceUnixShort .CreatedUnix}} + + + {{.UseCount}} + + + + {{.DownloadTimes}} +
{{end}} - +
- +
diff --git a/templates/repo/datasets/index.tmpl b/templates/repo/datasets/index.tmpl index 74448406f..9a8f2aaea 100755 --- a/templates/repo/datasets/index.tmpl +++ b/templates/repo/datasets/index.tmpl @@ -105,7 +105,7 @@ } .heart-stroke { - stroke: #666; + stroke: #FA8C16; stroke-width: 2; fill: #fff } @@ -148,7 +148,7 @@
-

{{.dataset.Title}}

+

{{.dataset.Title}}

@@ -276,27 +276,34 @@
- {{if .Description}} -
{{.Description}}
{{$.i18n.Tr "dataset.download"}}:{{.DownloadCount}}
- - {{.Name}} - -
- {{else}} - -
{{$.i18n.Tr "dataset.download"}}:{{.DownloadCount}}
- - {{.Name}} - +
+ + {{if ne .DecompressState 3}}{{$.i18n.Tr "dataset.unzip_status"}}:{{if eq .DecompressState 1}}{{$.i18n.Tr "dataset.unzip_successed"}}{{else if eq .DecompressState 0}}{{$.i18n.Tr "dataset.unzip_stared"}}{{else}}{{$.i18n.Tr "dataset.unzip_failed"}}{{end}} +   {{end}}{{$.i18n.Tr "dataset.download"}}:{{.DownloadCount}} + {{if .Description}}  {{$.i18n.Tr "dataset.description"}}:{{.Description}}{{end}} +
+
+ {{if eq .DecompressState 1}} + + {{else if eq .DecompressState 0}} + + {{else if eq .DecompressState 2}} + + {{else}} + + {{end}} + + {{.Name}} + + +
- {{end}} - -
{{.Size | FileSize}} @@ -322,18 +329,6 @@ {{.CreatedUnix | TimeSinceUnix1}}
-
{{$.i18n.Tr "dataset.download"}} @@ -350,11 +345,6 @@ @click="setPrivate('{{.UUID}}',true,{{$k}})" v-else="privates[{{$k}}]">{{$.i18n.Tr "dataset.set_private"}} {{end}} - @@ -363,7 +353,6 @@ {{$.i18n.Tr "dataset.copy_url"}} - {{if and ($.CanWrite) (eq .DecompressState 1) }} {{$.i18n.Tr "dataset.annotation"}}