Compare commits

...

7 Commits

Author SHA1 Message Date
  zhoupzh 8910bfa617 fix issue 2 years ago
  zouap 55bcd99d3d 提交代码。增加置顶功能。 2 years ago
  zouap 4174e094a5 智算网络相关接口修改。 2 years ago
  zouap f3a817bc19 Merge remote-tracking branch 'origin/V20230215' into zouap 2 years ago
  zouap fa5e71fc54 智算任务监控接口变动 2 years ago
  zouap c95c0dd748 智算任务监控接口变动 2 years ago
  zouap 9a262a20c4 issue中增加置顶属性 2 years ago
11 changed files with 124 additions and 16 deletions
Split View
  1. +9
    -0
      models/cloudbrain.go
  2. +27
    -1
      models/issue.go
  3. +3
    -8
      modules/grampus/resty.go
  4. +3
    -0
      options/locale/locale_en-US.ini
  5. +3
    -0
      options/locale/locale_zh-CN.ini
  6. +3
    -2
      routers/repo/grampus.go
  7. +24
    -0
      routers/repo/issue.go
  8. +1
    -0
      routers/routes/routes.go
  9. +4
    -2
      templates/repo/issue/list.tmpl
  10. +19
    -1
      templates/repo/issue/view_content/sidebar.tmpl
  11. +28
    -2
      web_src/js/index.js

+ 9
- 0
models/cloudbrain.go View File

@@ -1661,6 +1661,15 @@ type Metrics struct {
Value []string `json:"value"` //获取的监控值的序列,元素为String类型
}

type NewModelArtsMetricStatisticResult struct {
MetricsInfo []NewModelArtsMetrics `json:"metrics"` //监控详情
}

type NewModelArtsMetrics struct {
Metric string `json:"metric"` //监控指标项
Value []float32 `json:"value"` //获取的监控值的序列,元素为float类型
}

func Cloudbrains(opts *CloudbrainsOptions) ([]*CloudbrainInfo, int64, error) {
sess := x.NewSession()
defer sess.Close()


+ 27
- 1
models/issue.go View File

@@ -69,7 +69,8 @@ type Issue struct {

//block_chain
Amount int64
IsTransformed bool `xorm:"INDEX NOT NULL DEFAULT false"`
IsTransformed bool `xorm:"INDEX NOT NULL DEFAULT false"`
StayTop int64 `xorm:"NOT NULL DEFAULT 0"`
}

var (
@@ -775,6 +776,19 @@ func (issue *Issue) ChangeContent(doer *User, content string) (err error) {
return sess.Commit()
}

func (issue *Issue) ChangeStayTop(doer *User, stayTop int64) (err error) {
issue.StayTop = stayTop
sess := x.NewSession()
defer sess.Close()
if err = sess.Begin(); err != nil {
return err
}
if err = updateIssueCols(sess, issue, "stay_top"); err != nil {
return fmt.Errorf("UpdateIssueCols,stayTop: %v", err)
}
return sess.Commit()
}

// ChangeRef changes issue ref, as the given user.
func (issue *Issue) ChangeRef(doer *User, newRef string) (err error) {
oldRef := issue.Ref
@@ -1116,6 +1130,7 @@ type IssuesOptions struct {
// sortIssuesSession sort an issues-related session based on the provided
// sortType string
func sortIssuesSession(sess *xorm.Session, sortType string, priorityRepoID int64) {
sess.Desc("issue.stay_top")
switch sortType {
case "oldest":
sess.Asc("issue.created_unix")
@@ -1966,3 +1981,14 @@ func UpdateReactionsMigrationsByType(gitServiceType structs.GitServiceType, orig
})
return err
}

func GetMaxStayTop(repoId int64) int64 {
re := new(Issue)
isExist, err := x.Table(new(Issue)).Where("repo_id="+fmt.Sprint(repoId)).Desc("stay_top").Limit(1, 0).Get(re)
if err == nil {
if isExist {
return re.StayTop + 1
}
}
return 1
}

+ 3
- 8
modules/grampus/resty.go View File

@@ -315,10 +315,10 @@ func GetTrainJobLog(jobID string) (string, error) {
return logContent, nil
}

func GetGrampusMetrics(jobID string) (models.GetTrainJobMetricStatisticResult, error) {
func GetGrampusMetrics(jobID string) (models.NewModelArtsMetricStatisticResult, error) {
checkSetting()
client := getRestyClient()
var result models.GetTrainJobMetricStatisticResult
var result models.NewModelArtsMetricStatisticResult
res, err := client.R().
SetAuthToken(TOKEN).
Get(HOST + urlTrainJob + "/" + jobID + "/task/0/replica/0/metrics")
@@ -331,12 +331,7 @@ func GetGrampusMetrics(jobID string) (models.GetTrainJobMetricStatisticResult, e
return result, fmt.Errorf("json.Unmarshal failed(%s): %v", res.String(), err.Error())
}
if res.StatusCode() != http.StatusOK {
log.Error("Call GrampusMetrics failed(%d):%s(%s)", res.StatusCode(), result.ErrorCode, result.ErrorMsg)
return result, fmt.Errorf("Call GrampusMetrics failed(%d):%d(%s)", res.StatusCode(), result.ErrorCode, result.ErrorMsg)
}
if !result.IsSuccess {
log.Error("GetGrampusMetrics(%s) failed", jobID)
return result, fmt.Errorf("GetGrampusMetrics failed:%s", result.ErrorMsg)
return result, fmt.Errorf("Call GrampusMetrics failed(%d)", res.StatusCode())
}
return result, nil
}


+ 3
- 0
options/locale/locale_en-US.ini View File

@@ -1732,6 +1732,9 @@ issues.attachment.open_tab = `Click to see "%s" in a new tab`
issues.attachment.download = `Click to download "%s"`
issues.subscribe = Subscribe
issues.unsubscribe = Unsubscribe
issues.top_task=Top issue
issues.top = Top
issues.cancel_topping = Cancel topping
issues.lock = Lock conversation
issues.unlock = Unlock conversation
issues.lock.unknown_reason = Cannot lock an issue with an unknown reason.


+ 3
- 0
options/locale/locale_zh-CN.ini View File

@@ -1749,6 +1749,9 @@ issues.attachment.open_tab=`在新的标签页中查看 '%s'`
issues.attachment.download=`点击下载 '%s'`
issues.subscribe=订阅
issues.unsubscribe=取消订阅
issues.top_task=置顶任务
issues.top=置顶
issues.cancel_topping=取消置顶
issues.lock=锁定对话
issues.unlock=解锁对话
issues.lock.unknown_reason=由于未知原因无法锁定。


+ 3
- 2
routers/repo/grampus.go View File

@@ -1,7 +1,6 @@
package repo

import (
"code.gitea.io/gitea/services/lock"
"encoding/json"
"errors"
"fmt"
@@ -12,6 +11,8 @@ import (
"strconv"
"strings"

"code.gitea.io/gitea/services/lock"

"code.gitea.io/gitea/modules/urfs_client/urchin"
"code.gitea.io/gitea/routers/response"

@@ -1456,7 +1457,7 @@ func GrampusMetrics(ctx *context.Context) {
}
ctx.JSON(http.StatusOK, map[string]interface{}{
"JobID": jobID,
"Interval": result.Interval,
"Interval": 0,
"MetricsInfo": result.MetricsInfo,
})



+ 24
- 0
routers/repo/issue.go View File

@@ -2079,3 +2079,27 @@ func attachmentsHTML(ctx *context.Context, attachments []*models.Attachment) str
}
return attachHTML
}

func SetIssueStayTop(ctx *context.Context) {
issue := GetActionIssue(ctx)
if ctx.Written() {
return
}
isStayTop := ctx.QueryBool("isStayTop")
if !ctx.IsSigned || (!issue.IsPoster(ctx.User.ID) && !ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull)) {
ctx.Error(403)
return
}
var stayTop int64
stayTop = 0
if isStayTop {
stayTop = models.GetMaxStayTop(ctx.Repo.Repository.ID)
}
err := issue.ChangeStayTop(ctx.User, stayTop)
if err != nil {
log.Info("update stay top error," + err.Error())
}
ctx.JSON(200, map[string]interface{}{
"code": 0,
})
}

+ 1
- 0
routers/routes/routes.go View File

@@ -1006,6 +1006,7 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Post("/title", repo.UpdateIssueTitle)
m.Post("/content", repo.UpdateIssueContent)
m.Post("/watch", repo.IssueWatch)
m.Post("/setstaytop", repo.SetIssueStayTop)
m.Group("/dependency", func() {
m.Post("/add", repo.AddDependency)
m.Post("/delete", repo.RemoveDependency)


+ 4
- 2
templates/repo/issue/list.tmpl View File

@@ -246,7 +246,9 @@
{{end}}
<div class="ui {{if .IsClosed}}{{if .IsPull}}{{if .PullRequest.HasMerged}}purple{{else}}red{{end}}{{else}}red{{end}}{{else}}{{if .IsRead}}white{{else}}green{{end}}{{end}} label">#{{.Index}}</div>
<a class="title" href="{{$.Link}}/{{.Index}}">{{RenderEmoji .Title}}</a>

{{if eq .StayTop 1}}
<div class="ui label green" data="{{.StayTop}}">{{$.i18n.Tr "repo.issues.top"}}</div>
{{end}}
{{if .IsPull }}
{{if (index $.CommitStatus .PullRequest.ID)}}
{{template "repo/commit_status" (index $.CommitStatus .PullRequest.ID)}}
@@ -264,7 +266,7 @@
{{if .TotalTrackedTime}}
<span class="comment ui right">{{svg "octicon-clock" 16}} {{.TotalTrackedTime | Sec2Time}}</span>
{{end}}
<p class="desc">
{{ $timeStr := TimeSinceUnix .GetLastEventTimestamp $.Lang }}
{{if .OriginalAuthor }}


+ 19
- 1
templates/repo/issue/view_content/sidebar.tmpl View File

@@ -325,6 +325,25 @@
</div>
</div>
{{end}}

{{if and $.IssueWatch (not .Repository.IsArchived)}}
<div class="ui divider"></div>

<div class="ui isToping">
<span class="text"><strong>{{.i18n.Tr "repo.issues.top_task"}}</strong></span>
<div id="stayTopIssue" data-issue-top="{{if .Issue.StayTop}}false{{else}}true{{end}}" data-update-url="{{$.RepoLink}}/issues/{{.Issue.Index}}/setstaytop">
<button class="fluid ui button">
{{if .Issue.StayTop}}
{{.i18n.Tr "repo.issues.cancel_topping"}}
{{else}}
{{.i18n.Tr "repo.issues.top"}}
{{end}}
</button>
</form>
</div>
</div>
{{end}}

{{if .Repository.IsTimetrackerEnabled }}
{{if and .CanUseTimetracker (not .Repository.IsArchived)}}
<div class="ui divider"></div>
@@ -646,4 +665,3 @@
</div>
{{end}}
{{end}}


+ 28
- 2
web_src/js/index.js View File

@@ -56,6 +56,7 @@ import { Message } from "element-ui";
import { i18nVue } from "./features/i18nVue.js";
import './features/ad.js';
import { Fancybox } from "./vendor/fancybox.esm.js";
import { resolveProjectReferencePath } from "typescript";


Vue.prototype.$axios = axios;
@@ -263,7 +264,20 @@ function updateIssuesMeta(url, action, issueIds, elementId, isAdd) {
});
});
}

function updateIssueTop(url,param) {
return new Promise((resolve,reject) => {
$.ajax({
type: "POST",
url,
data: {
_csrf: csrf,
isStayTop:param,
},
success: resolve,
error:reject,
});
});
}
function initRepoStatusChecker() {
const migrating = $("#repo_migrating");
$("#repo_migrating_failed").hide();
@@ -824,7 +838,19 @@ function initIssueComments() {
event.preventDefault();
updateIssuesMeta(url, "", issueId, id, isChecked).then(reload);
});

$("#stayTopIssue").on("click", function (event){
const url = $(this).data("update-url");
const isIssueTop = $(this).data("issue-top");
updateIssueTop(url, isIssueTop).then((res, rej) => {
console.log(res)
if (res.code === 0){
reload()
}
}).catch((err) => {
console.log(err)
})
event.preventDefault();
})
$(document).on("click", (event) => {
const urlTarget = $(":target");
if (urlTarget.length === 0) return;


Loading…
Cancel
Save