| @@ -5,6 +5,7 @@ import ( | |||
| "fmt" | |||
| "io/ioutil" | |||
| "net/http" | |||
| "net/url" | |||
| "os" | |||
| "path" | |||
| "strconv" | |||
| @@ -169,7 +170,7 @@ func ServeAllProjectsPeriodStatisticsFile(ctx *context.Context) { | |||
| return | |||
| } | |||
| fileName := getFileName(ctx, beginTime, endTime) | |||
| fileName, frontName := getFileName(ctx, beginTime, endTime) | |||
| if err := os.MkdirAll(setting.RadarMap.Path, os.ModePerm); err != nil { | |||
| ctx.Error(http.StatusBadRequest, fmt.Errorf("Failed to create dir %s: %v", setting.AvatarUploadPath, err).Error()) | |||
| @@ -197,20 +198,24 @@ func ServeAllProjectsPeriodStatisticsFile(ctx *context.Context) { | |||
| } | |||
| ctx.ServeFile(fileName) | |||
| ctx.ServeFile(fileName, url.QueryEscape(frontName)) | |||
| } | |||
| func getFileName(ctx *context.Context, beginTime time.Time, endTime time.Time) string { | |||
| baseName := setting.RadarMap.Path + "/" | |||
| if ctx.QueryTrim("type") != "" { | |||
| baseName = baseName + ctx.QueryTrim("type") + "_" | |||
| } | |||
| func getFileName(ctx *context.Context, beginTime time.Time, endTime time.Time) (string, string) { | |||
| baseName := setting.RadarMap.Path + "/项目分析_" | |||
| if ctx.QueryTrim("q") != "" { | |||
| baseName = baseName + ctx.QueryTrim("q") + "_" | |||
| } | |||
| baseName = baseName + beginTime.AddDate(0, 0, -1).Format(DATE_FORMAT) + "_to_" + endTime.AddDate(0, 0, -1).Format(DATE_FORMAT) + "_" + strconv.FormatInt(time.Now().Unix(), 10) + ".csv" | |||
| return baseName | |||
| if ctx.QueryTrim("type") == "all" { | |||
| baseName = baseName + "所有" | |||
| } else { | |||
| baseName = baseName + beginTime.AddDate(0, 0, -1).Format(DATE_FORMAT) + "_" + endTime.AddDate(0, 0, -1).Format(DATE_FORMAT) | |||
| } | |||
| frontName := baseName + ".csv" | |||
| localName := baseName + "_" + strconv.FormatInt(time.Now().Unix(), 10) + ".csv" | |||
| return localName, path.Base(frontName) | |||
| } | |||
| func ClearUnusedStatisticsFile() { | |||
| @@ -230,8 +235,8 @@ func ClearUnusedStatisticsFile() { | |||
| func allProjectsPeroidHeader(ctx *context.Context) []string { | |||
| return []string{ctx.Tr("repos.id"), ctx.Tr("repos.projectName"), ctx.Tr("repos.isPrivate"), ctx.Tr("repos.openi"), ctx.Tr("repos.visit"), ctx.Tr("repos.download"), ctx.Tr("repos.pr"), ctx.Tr("repos.commit"), | |||
| ctx.Tr("repos.watches"), ctx.Tr("repos.stars"), ctx.Tr("repos.forks"), ctx.Tr("repos.issues"), ctx.Tr("repos.closedIssues"), ctx.Tr("repos.contributor")} | |||
| return []string{ctx.Tr("admin.repos.id"), ctx.Tr("admin.repos.projectName"), ctx.Tr("admin.repos.isPrivate"), ctx.Tr("admin.repos.openi"), ctx.Tr("admin.repos.visit"), ctx.Tr("admin.repos.download"), ctx.Tr("admin.repos.pr"), ctx.Tr("admin.repos.commit"), | |||
| ctx.Tr("admin.repos.watches"), ctx.Tr("admin.repos.stars"), ctx.Tr("admin.repos.forks"), ctx.Tr("admin.repos.issues"), ctx.Tr("admin.repos.closedIssues"), ctx.Tr("admin.repos.contributor")} | |||
| } | |||
| @@ -245,9 +250,9 @@ func allProjectsPeroidValues(rs *models.RepoStatistic, ctx *context.Context) []s | |||
| func getIsPrivateDisplay(private bool, ctx *context.Context) string { | |||
| if private { | |||
| return ctx.Tr("repos.yes") | |||
| return ctx.Tr("admin.repos.yes") | |||
| } else { | |||
| return ctx.Tr("repos.no") | |||
| return ctx.Tr("admin.repos.no") | |||
| } | |||
| } | |||