| @@ -535,13 +535,16 @@ func refreshUserStaticTable(wikiCountMap map[string]int, tableName string, pageS | |||||
| //normalization | //normalization | ||||
| for k, v := range userIndexMap { | for k, v := range userIndexMap { | ||||
| tmpResult := (v - minUserIndex) / (maxUserIndex - minUserIndex) | tmpResult := (v - minUserIndex) / (maxUserIndex - minUserIndex) | ||||
| if tmpResult > 0.99 { | |||||
| tmpResult = 0.99 | |||||
| } | |||||
| updateUserIndex(tableName, statictisSess, k, tmpResult) | updateUserIndex(tableName, statictisSess, k, tmpResult) | ||||
| } | } | ||||
| log.Info("refresh data finished.tableName=" + tableName + " total record:" + fmt.Sprint(insertCount)) | log.Info("refresh data finished.tableName=" + tableName + " total record:" + fmt.Sprint(insertCount)) | ||||
| } | } | ||||
| func updateUserIndex(tableName string, statictisSess *xorm.Session, userId int64, userIndex float64) { | func updateUserIndex(tableName string, statictisSess *xorm.Session, userId int64, userIndex float64) { | ||||
| updateSql := "UPDATE public." + tableName + " set user_index=" + fmt.Sprint(userIndex) + " where id=" + fmt.Sprint(userId) | |||||
| updateSql := "UPDATE public." + tableName + " set user_index=" + fmt.Sprint(userIndex*100) + " where id=" + fmt.Sprint(userId) | |||||
| statictisSess.Exec(updateSql) | statictisSess.Exec(updateSql) | ||||
| } | } | ||||
| @@ -266,6 +266,16 @@ search_related=related | |||||
| search_maybe=maybe | search_maybe=maybe | ||||
| search_ge= | search_ge= | ||||
| wecome_AI_plt = Welcome to OpenI AI Collaboration Platform! | |||||
| explore_AI = Explore better AI, come here to find more interesting | |||||
| datasets = Datasets | |||||
| repositories = Repositories | |||||
| use_plt__fuction = To use the AI collaboration functions provided by this platform, such as: hosting code, sharing data, debugging algorithms or training models, start with | |||||
| provide_resoure = Computing resources of CPU/GPU/NPU are provided freely for various types of AI tasks. | |||||
| activity = Activity | |||||
| no_events = There are no events related | |||||
| or_t = or | |||||
| [explore] | [explore] | ||||
| repos = Repositories | repos = Repositories | ||||
| select_repos = Select the project | select_repos = Select the project | ||||
| @@ -268,6 +268,18 @@ search_related=相关 | |||||
| search_maybe=约为 | search_maybe=约为 | ||||
| search_ge=个 | search_ge=个 | ||||
| wecome_AI_plt=欢迎来到启智AI协作平台! | |||||
| explore_AI = 探索更好的AI,来这里发现更有意思的 | |||||
| datasets = 数据集 | |||||
| repositories = 项目 | |||||
| use_plt__fuction = 使用本平台提供的AI协作功能,如:托管代码、共享数据、调试算法或训练模型,请先 | |||||
| provide_resoure = 平台目前免费提供CPU、GPU、NPU的算力资源,可进行多种类型的AI任务。 | |||||
| create_pro = 创建项目 | |||||
| activity = 活动 | |||||
| no_events = 还没有与您相关的活动 | |||||
| or_t = 或 | |||||
| [explore] | [explore] | ||||
| repos=项目 | repos=项目 | ||||
| select_repos=精选项目 | select_repos=精选项目 | ||||
| @@ -54,11 +54,11 @@ func queryUserDataPage(ctx *context.Context, tableName string, queryObj interfac | |||||
| "N1": ctx.Tr("user.static.encyclopediascount"), | "N1": ctx.Tr("user.static.encyclopediascount"), | ||||
| "O1": ctx.Tr("user.static.createrepocount"), | "O1": ctx.Tr("user.static.createrepocount"), | ||||
| "P1": ctx.Tr("user.static.openiindex"), | "P1": ctx.Tr("user.static.openiindex"), | ||||
| "Q1": ctx.Tr("user.static.registdate"), | |||||
| "R1": ctx.Tr("user.static.CloudBrainTaskNum"), | |||||
| "S1": ctx.Tr("user.static.CloudBrainRunTime"), | |||||
| "T1": ctx.Tr("user.static.CommitDatasetNum"), | |||||
| "U1": ctx.Tr("user.static.CommitModelCount"), | |||||
| "Q1": ctx.Tr("user.static.CloudBrainTaskNum"), | |||||
| "R1": ctx.Tr("user.static.CloudBrainRunTime"), | |||||
| "S1": ctx.Tr("user.static.CommitDatasetNum"), | |||||
| "T1": ctx.Tr("user.static.CommitModelCount"), | |||||
| "U1": ctx.Tr("user.static.registdate"), | |||||
| "V1": ctx.Tr("user.static.countdate"), | "V1": ctx.Tr("user.static.countdate"), | ||||
| } | } | ||||
| for k, v := range dataHeader { | for k, v := range dataHeader { | ||||
| @@ -91,14 +91,12 @@ func queryUserDataPage(ctx *context.Context, tableName string, queryObj interfac | |||||
| xlsx.SetCellValue(sheetName, "N"+rows, userRecord.EncyclopediasCount) | xlsx.SetCellValue(sheetName, "N"+rows, userRecord.EncyclopediasCount) | ||||
| xlsx.SetCellValue(sheetName, "O"+rows, userRecord.CreateRepoCount) | xlsx.SetCellValue(sheetName, "O"+rows, userRecord.CreateRepoCount) | ||||
| xlsx.SetCellValue(sheetName, "P"+rows, fmt.Sprintf("%.2f", userRecord.OpenIIndex)) | xlsx.SetCellValue(sheetName, "P"+rows, fmt.Sprintf("%.2f", userRecord.OpenIIndex)) | ||||
| xlsx.SetCellValue(sheetName, "Q"+rows, userRecord.CloudBrainTaskNum) | |||||
| xlsx.SetCellValue(sheetName, "R"+rows, fmt.Sprintf("%.2f", float64(userRecord.CloudBrainRunTime)/3600)) | |||||
| xlsx.SetCellValue(sheetName, "S"+rows, userRecord.CommitDatasetNum) | |||||
| xlsx.SetCellValue(sheetName, "T"+rows, userRecord.CommitModelCount) | |||||
| formatTime := userRecord.RegistDate.Format("2006-01-02 15:04:05") | formatTime := userRecord.RegistDate.Format("2006-01-02 15:04:05") | ||||
| xlsx.SetCellValue(sheetName, "Q"+rows, formatTime[0:len(formatTime)-3]) | |||||
| xlsx.SetCellValue(sheetName, "R"+rows, userRecord.CloudBrainTaskNum) | |||||
| xlsx.SetCellValue(sheetName, "S"+rows, fmt.Sprintf("%.2f", float64(userRecord.CloudBrainRunTime)/3600)) | |||||
| xlsx.SetCellValue(sheetName, "T"+rows, userRecord.CommitDatasetNum) | |||||
| xlsx.SetCellValue(sheetName, "U"+rows, userRecord.CommitModelCount) | |||||
| xlsx.SetCellValue(sheetName, "U"+rows, formatTime[0:len(formatTime)-3]) | |||||
| formatTime = userRecord.DataDate | formatTime = userRecord.DataDate | ||||
| xlsx.SetCellValue(sheetName, "V"+rows, formatTime) | xlsx.SetCellValue(sheetName, "V"+rows, formatTime) | ||||
| } | } | ||||
| @@ -255,11 +253,11 @@ func QueryUserStaticDataPage(ctx *context.Context) { | |||||
| "N1": ctx.Tr("user.static.encyclopediascount"), | "N1": ctx.Tr("user.static.encyclopediascount"), | ||||
| "O1": ctx.Tr("user.static.createrepocount"), | "O1": ctx.Tr("user.static.createrepocount"), | ||||
| "P1": ctx.Tr("user.static.openiindex"), | "P1": ctx.Tr("user.static.openiindex"), | ||||
| "Q1": ctx.Tr("user.static.registdate"), | |||||
| "R1": ctx.Tr("user.static.CloudBrainTaskNum"), | |||||
| "S1": ctx.Tr("user.static.CloudBrainRunTime"), | |||||
| "T1": ctx.Tr("user.static.CommitDatasetNum"), | |||||
| "U1": ctx.Tr("user.static.CommitModelCount"), | |||||
| "Q1": ctx.Tr("user.static.CloudBrainTaskNum"), | |||||
| "R1": ctx.Tr("user.static.CloudBrainRunTime"), | |||||
| "S1": ctx.Tr("user.static.CommitDatasetNum"), | |||||
| "T1": ctx.Tr("user.static.CommitModelCount"), | |||||
| "U1": ctx.Tr("user.static.registdate"), | |||||
| "V1": ctx.Tr("user.static.countdate"), | "V1": ctx.Tr("user.static.countdate"), | ||||
| } | } | ||||
| for k, v := range dataHeader { | for k, v := range dataHeader { | ||||
| @@ -286,13 +284,12 @@ func QueryUserStaticDataPage(ctx *context.Context) { | |||||
| xlsx.SetCellValue(sheetName, "N"+rows, userRecord.EncyclopediasCount) | xlsx.SetCellValue(sheetName, "N"+rows, userRecord.EncyclopediasCount) | ||||
| xlsx.SetCellValue(sheetName, "O"+rows, userRecord.CreateRepoCount) | xlsx.SetCellValue(sheetName, "O"+rows, userRecord.CreateRepoCount) | ||||
| xlsx.SetCellValue(sheetName, "P"+rows, fmt.Sprintf("%.2f", userRecord.OpenIIndex)) | xlsx.SetCellValue(sheetName, "P"+rows, fmt.Sprintf("%.2f", userRecord.OpenIIndex)) | ||||
| xlsx.SetCellValue(sheetName, "Q"+rows, userRecord.CloudBrainTaskNum) | |||||
| xlsx.SetCellValue(sheetName, "R"+rows, fmt.Sprintf("%.2f", float64(userRecord.CloudBrainRunTime)/3600)) | |||||
| xlsx.SetCellValue(sheetName, "S"+rows, userRecord.CommitDatasetNum) | |||||
| xlsx.SetCellValue(sheetName, "T"+rows, userRecord.CommitModelCount) | |||||
| formatTime := userRecord.RegistDate.Format("2006-01-02 15:04:05") | formatTime := userRecord.RegistDate.Format("2006-01-02 15:04:05") | ||||
| xlsx.SetCellValue(sheetName, "Q"+rows, formatTime[0:len(formatTime)-3]) | |||||
| xlsx.SetCellValue(sheetName, "R"+rows, userRecord.CloudBrainTaskNum) | |||||
| xlsx.SetCellValue(sheetName, "S"+rows, fmt.Sprintf("%.2f", float64(userRecord.CloudBrainRunTime)/3600)) | |||||
| xlsx.SetCellValue(sheetName, "T"+rows, userRecord.CommitDatasetNum) | |||||
| xlsx.SetCellValue(sheetName, "U"+rows, userRecord.CommitModelCount) | |||||
| xlsx.SetCellValue(sheetName, "U"+rows, formatTime[0:len(formatTime)-3]) | |||||
| formatTime = userRecord.DataDate | formatTime = userRecord.DataDate | ||||
| xlsx.SetCellValue(sheetName, "V"+rows, formatTime) | xlsx.SetCellValue(sheetName, "V"+rows, formatTime) | ||||
| } | } | ||||
| @@ -380,7 +380,7 @@ | |||||
| <div class="menu" style="right: auto;"> | <div class="menu" style="right: auto;"> | ||||
| <div class="item" style="padding: 0 !important;"> | <div class="item" style="padding: 0 !important;"> | ||||
| {{if .CanDebug}} | {{if .CanDebug}} | ||||
| <a id="model-image-{{.Cloudbrain.ID}}" class='imageBtn ui basic {{if ne .Status "RUNNING"}} {{else}}blue {{end}}button' href="{{$.RepoLink}}/cloudbrain/{{.Cloudbrain.ID}}/commit_image">{{$.i18n.Tr "repo.submit_image"}}</a> | |||||
| <a id="model-image-{{.Cloudbrain.ID}}" class='imageBtn ui basic {{if ne .Status "RUNNING"}}disabled {{else}}blue {{end}}button' href="{{$.RepoLink}}/cloudbrain/{{.Cloudbrain.ID}}/commit_image">{{$.i18n.Tr "repo.submit_image"}}</a> | |||||
| {{else}} | {{else}} | ||||
| <a class="imageBtn ui basic disabled button">{{$.i18n.Tr "repo.submit_image"}}</a> | <a class="imageBtn ui basic disabled button">{{$.i18n.Tr "repo.submit_image"}}</a> | ||||
| {{end}} | {{end}} | ||||
| @@ -5,13 +5,110 @@ | |||||
| {{template "base/alert" .}} | {{template "base/alert" .}} | ||||
| <div class="ui mobile reversed stackable grid"> | <div class="ui mobile reversed stackable grid"> | ||||
| <div class="ui container ten wide column"> | <div class="ui container ten wide column"> | ||||
| <div class="default" id = 'default_page' style="display: none;"> | |||||
| <div class="w_title"> | |||||
| {{.i18n.Tr "home.wecome_AI_plt"}} | |||||
| </div> | |||||
| <div class="content"> | |||||
| <p >{{.i18n.Tr "home.explore_AI"}} <a href="{{AppSubUrl}}/explore/repos"> {{.i18n.Tr "home.repositories"}}</a> {{.i18n.Tr "home.or_t"}} <a href="{{AppSubUrl}}/explore/datasets">{{.i18n.Tr "home.datasets"}}</a></p> | |||||
| <p >{{.i18n.Tr "home.use_plt__fuction"}} <a class="mini ui blue button" href="{{AppSubUrl}}/repo/create{{if .ContextUser.IsOrganization}}?org={{.ContextUser.ID}}{{end}}" >{{.i18n.Tr "repo.create_repo"}}</a></p> | |||||
| <p > {{.i18n.Tr "home.provide_resoure"}}</p> | |||||
| </div> | |||||
| <div class="guide "> | |||||
| <a class="mini ui blue basic button" style="font-weight:700" href="https://git.openi.org.cn/zeizei/OpenI_Learning" target="_blank">{{.i18n.Tr "custom.Platform_Tutorial"}} <i class="ri-arrow-right-line" ></i></a> | |||||
| </div> | |||||
| </div> | |||||
| {{if .EnableHeatmap}} | {{if .EnableHeatmap}} | ||||
| {{template "user/dashboard/heatmap" .}} | {{template "user/dashboard/heatmap" .}} | ||||
| {{end}} | {{end}} | ||||
| {{template "user/dashboard/feeds" .}} | {{template "user/dashboard/feeds" .}} | ||||
| <diV id = "activity_cont" style="display: none;"> | |||||
| <div class="ui placeholder segment bgtask-none padding_none line" > | |||||
| <div class="act_title" style="padding-left: 0px ;"> | |||||
| {{.i18n.Tr "home.activity"}} : | |||||
| </div> | |||||
| <div class="ui icon header bgtask-header-pic"></div> | |||||
| <p class="p_hint"> | |||||
| {{.i18n.Tr "home.no_events"}} | |||||
| </p> | |||||
| </div> | |||||
| </diV> | |||||
| </div> | </div> | ||||
| {{template "user/dashboard/repolist" .}} | {{template "user/dashboard/repolist" .}} | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| {{template "base/footer" .}} | {{template "base/footer" .}} | ||||
| <script> | |||||
| const {AppSubUrl, StaticUrlPrefix, csrf} = window.config; | |||||
| uid_ = Number((document.querySelector('meta[name=_context_uid]') || {}).content) | |||||
| // console.log("uid:",uid_) | |||||
| let URL = AppSubUrl + '/api/v1/repos/search?sort=updated&order=desc&uid='+uid_ +'&q=&page=1&limit=10&mode= '; | |||||
| $.getJSON(URL, (result, _textStatus, request) => { | |||||
| const counts_pro = request.getResponseHeader('X-Total-Count'); | |||||
| console.log("count:",counts_pro) | |||||
| if (counts_pro == 0){ | |||||
| document.getElementById("default_page").style.display = "block"; | |||||
| document.getElementById("activity_cont").style.display = "block" | |||||
| } | |||||
| }) | |||||
| </script> | |||||
| <style> | |||||
| .default{ | |||||
| background-color: rgba(24, 144, 255, 0.1); | |||||
| margin-bottom: 20px; | |||||
| border-radius: 15px; | |||||
| line-height: 20px; | |||||
| padding:0px 25px; | |||||
| } | |||||
| .w_title{ | |||||
| padding-top: 25px; | |||||
| color: rgba(16, 16, 16, 100); | |||||
| font-size: 20px; | |||||
| text-align: left; | |||||
| font-weight: 700; | |||||
| } | |||||
| .content{ | |||||
| color: rgba(80, 85, 89, 100); | |||||
| font-size: 14px; | |||||
| text-align: left; | |||||
| font-family: SourceHanSansSC-regular; | |||||
| margin-top: 20px; | |||||
| } | |||||
| .guide{ | |||||
| margin-top:30px; | |||||
| padding-bottom: 30px; | |||||
| } | |||||
| .activity{ | |||||
| margin-top: 20px; | |||||
| } | |||||
| .act_title{ | |||||
| color: rgba(16, 16, 16, 100) !important; | |||||
| font-size: 20px; | |||||
| text-align: left; | |||||
| background-color: #fff !important; | |||||
| font-weight: 700; | |||||
| } | |||||
| .p_hint{ | |||||
| color: rgba(136, 136, 136, 100); | |||||
| font-size: 14px; | |||||
| text-align: center; | |||||
| font-family: SourceHanSansSC-regular; | |||||
| } | |||||
| .padding_none{ | |||||
| padding: 0px !important; | |||||
| } | |||||
| .ui.placeholder.segment { | |||||
| min-height: 15rem !important; | |||||
| } | |||||
| .line{ | |||||
| border-top: 1px solid rgba(187, 187, 187, 0.5) !important; | |||||
| margin-top: 20px !important; | |||||
| } | |||||
| </style> | |||||
| @@ -23,7 +23,7 @@ | |||||
| </form> | </form> | ||||
| </div> | </div> | ||||
| <img class="ui mini image" src="{{.RelAvatarLink}}"> | <img class="ui mini image" src="{{.RelAvatarLink}}"> | ||||
| <div class="content"> | |||||
| <div class="content-org" style="display: inline-block;width: auto;padding: 0 0 0 0.5em;"> | |||||
| <a href="{{.HomeLink}}">{{.Name}}</a> | <a href="{{.HomeLink}}">{{.Name}}</a> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -134,15 +134,6 @@ | |||||
| label="创建项目" | label="创建项目" | ||||
| align="center"> | align="center"> | ||||
| </el-table-column> | </el-table-column> | ||||
| <el-table-column | |||||
| prop="RegistDate" | |||||
| label="用户注册时间" | |||||
| width="120px" | |||||
| align="center"> | |||||
| <template slot-scope="scope"> | |||||
| {{scope.row.RegistDate | transformTimestamp}} | |||||
| </template> | |||||
| </el-table-column> | |||||
| <el-table-column | <el-table-column | ||||
| prop="CloudBrainTaskNum" | prop="CloudBrainTaskNum" | ||||
| label="云脑任务数" | label="云脑任务数" | ||||
| @@ -170,7 +161,15 @@ | |||||
| width="120px" | width="120px" | ||||
| align="center"> | align="center"> | ||||
| </el-table-column> | </el-table-column> | ||||
| <el-table-column | |||||
| prop="RegistDate" | |||||
| label="用户注册时间" | |||||
| width="120px" | |||||
| align="center"> | |||||
| <template slot-scope="scope"> | |||||
| {{scope.row.RegistDate | transformTimestamp}} | |||||
| </template> | |||||
| </el-table-column> | |||||
| <el-table-column | <el-table-column | ||||
| prop="DataDate" | prop="DataDate" | ||||
| label="系统统计时间" | label="系统统计时间" | ||||
| @@ -969,10 +969,10 @@ display: block; | |||||
| color: red; | color: red; | ||||
| } | } | ||||
| // .ui.list .list>.item>img.image+.content, .ui.list>.item>img.image+.content { | |||||
| // width: calc(100% - 4.0em); | |||||
| // margin-left: 0; | |||||
| // } | |||||
| .ui.list .list>.item>img.image+.content, .ui.list>.item>img.image+.content { | |||||
| width: calc(100% - 4.0em); | |||||
| margin-left: 0; | |||||
| } | |||||
| .seach .ui.list .list>.item .header, .seach .ui.list>.item .header{ | .seach .ui.list .list>.item .header, .seach .ui.list>.item .header{ | ||||
| margin-bottom: 0.5em; | margin-bottom: 0.5em; | ||||