Fix actions frontend bugs (pagination, long name alignment) and small simplify (#23370) (#23436)

Backport #23370 by @HesterG

1 Right now on actions page, the action list will not be aligned if
commit message is long. In this PR, the changes are:
- The branch tag is moved to bottom row
- Width percentage is given to make them aligned
- Show "..." if commit is longer than two lines.
- Align the status icon with the commit message with baseline

 Before:
<img width="1068" alt="截屏2023-03-08 12 23 22"
src="https://user-images.githubusercontent.com/17645053/223628534-6b9472cb-29f5-40a3-9714-c5152553049e.png">
  
 After:
<img width="756" alt="截屏2023-03-08 13 34 28"
src="https://user-images.githubusercontent.com/17645053/223628571-da94698b-0e0a-43e3-ae82-34d8c780e5ba.png">


2 Right now the actions list's pagination is not working properly
because Param is not passed to pagination template, in this PR Param
Strings are passed to the pager

Before:
<img width="1176" alt="截屏2023-03-08 12 23 50"
src="https://user-images.githubusercontent.com/17645053/223629207-8b67ce74-2342-4259-bc81-036e37752716.png">

After:
<img width="1343" alt="截屏2023-03-08 13 11 54"
src="https://user-images.githubusercontent.com/17645053/223629321-4f538f8a-45dc-4d6f-ae60-2c82680ae3e7.png">

3 A small simplify in `RepoActionView.vue` .

Co-authored-by: Hester Gong <hestergong@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
Giteabot 2023-03-13 03:09:00 -04:00 committed by GitHub
parent 41655ee878
commit b1162495af
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 9 deletions

View file

@ -133,6 +133,8 @@ func List(ctx *context.Context) {
pager := context.NewPagination(int(total), opts.PageSize, opts.Page, 5) pager := context.NewPagination(int(total), opts.PageSize, opts.Page, 5)
pager.SetDefaultParams(ctx) pager.SetDefaultParams(ctx)
pager.AddParamString("workflow", workflow)
pager.AddParamString("state", ctx.FormString("state"))
ctx.Data["Page"] = pager ctx.Data["Page"] = pager
ctx.HTML(http.StatusOK, tplListActions) ctx.HTML(http.StatusOK, tplListActions)

View file

@ -1,14 +1,18 @@
<div class="issue list"> <div class="issue list">
{{range .Runs}} {{range .Runs}}
<li class="item gt-df gt-py-3"> <li class="item gt-df gt-py-3 gt-ab">
<div class="issue-item-left gt-df"> <div class="issue-item-left gt-df">
{{template "repo/actions/status" .Status}} {{template "repo/actions/status" .Status}}
</div> </div>
<div class="issue-item-main gt-f1 gt-fc gt-df"> <div class="issue-item-main action-item-main gt-f1 gt-fc gt-df gt-mr-3">
<div class="issue-item-top-row"> <div class="issue-item-top-row">
<a class="index gt-ml-0 gt-mr-2" href="{{if .Link}}{{.Link}}{{else}}{{$.Link}}/{{.Index}}{{end}}"> <a class="index gt-ml-0 gt-mr-2" title="{{.Title}}" href="{{if .Link}}{{.Link}}{{else}}{{$.Link}}/{{.Index}}{{end}}">
{{- .Title -}} {{- .Title -}}
</a> </a>
</div>
<div class="desc issue-item-bottom-row gt-df gt-ac gt-fw gt-my-1">
<b>{{if not $.CurWorkflow}}{{.WorkflowID}} {{end}}#{{.Index}}</b>: {{$.locale.Tr "actions.runs.commit"}}
<a href="{{$.RepoLink}}/commit/{{.CommitSHA}}">{{ShortSha .CommitSHA}}</a>{{$.locale.Tr "actions.runs.pushed_by"}} {{.TriggerUser.GetDisplayName}}
<span class="ui label"> <span class="ui label">
{{if .RefLink}} {{if .RefLink}}
<a href="{{.RefLink}}">{{.PrettyRef}}</a> <a href="{{.RefLink}}">{{.PrettyRef}}</a>
@ -17,10 +21,6 @@
{{end}} {{end}}
</span> </span>
</div> </div>
<div class="desc issue-item-bottom-row gt-df gt-ac gt-fw gt-my-1">
<b>{{if not $.CurWorkflow}}{{.WorkflowID}} {{end}}#{{.Index}}</b>: {{$.locale.Tr "actions.runs.commit"}}
<a href="{{$.RepoLink}}/commit/{{.CommitSHA}}">{{ShortSha .CommitSHA}}</a>&nbsp; {{$.locale.Tr "actions.runs.pushed_by"}} {{.TriggerUser.GetDisplayName | Escape}}
</div>
</div> </div>
<div class="issue-item-right"> <div class="issue-item-right">
<div>{{TimeSinceUnix .Updated $.locale}}</div> <div>{{TimeSinceUnix .Updated $.locale}}</div>

View file

@ -42,8 +42,7 @@
<div class="job-step-container"> <div class="job-step-container">
<div class="job-step-section" v-for="(jobStep, i) in currentJob.steps" :key="i"> <div class="job-step-section" v-for="(jobStep, i) in currentJob.steps" :key="i">
<div class="job-step-summary" @click.stop="toggleStepLogs(i)"> <div class="job-step-summary" @click.stop="toggleStepLogs(i)">
<SvgIcon name="octicon-chevron-down" class="gt-mr-3" v-show="currentJobStepsStates[i].expanded"/> <SvgIcon :name="currentJobStepsStates[i].expanded ? 'octicon-chevron-down': 'octicon-chevron-right'" class="gt-mr-3"/>
<SvgIcon name="octicon-chevron-right" class="gt-mr-3" v-show="!currentJobStepsStates[i].expanded"/>
<SvgIcon name="octicon-check-circle-fill" class="green gt-mr-3" v-if="jobStep.status === 'success'"/> <SvgIcon name="octicon-check-circle-fill" class="green gt-mr-3" v-if="jobStep.status === 'success'"/>
<SvgIcon name="octicon-skip" class="ui text grey gt-mr-3" v-else-if="jobStep.status === 'skipped'"/> <SvgIcon name="octicon-skip" class="ui text grey gt-mr-3" v-else-if="jobStep.status === 'skipped'"/>

View file

@ -3,6 +3,7 @@
.gt-dif { display: inline-flex !important; } .gt-dif { display: inline-flex !important; }
.gt-dib { display: inline-block !important; } .gt-dib { display: inline-block !important; }
.gt-ac { align-items: center !important; } .gt-ac { align-items: center !important; }
.gt-ab { align-items: baseline !important; }
.gt-tc { text-align: center !important; } .gt-tc { text-align: center !important; }
.gt-tl { text-align: left !important; } .gt-tl { text-align: left !important; }
.gt-tdn { text-decoration: none !important; } .gt-tdn { text-decoration: none !important; }

View file

@ -23,6 +23,14 @@
.issue-item-main { .issue-item-main {
width: 100%; width: 100%;
} }
.action-item-main {
width: 80%;
}
.issue-item-right {
width: 15%;
}
.issue-item-top-row { .issue-item-top-row {
max-width: 100%; max-width: 100%;
@ -30,6 +38,14 @@
font-size: 16px; font-size: 16px;
min-width: 0; min-width: 0;
font-weight: 600; font-weight: 600;
a.index {
max-width: fit-content;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
word-break:break-all;
}
} }
.labels-list { .labels-list {