Skip to content

Commit f7c5942

Browse files
committed
Add LKGB link (☆) to dashboard
1 parent 6ace141 commit f7c5942

File tree

1 file changed

+47
-12
lines changed

1 file changed

+47
-12
lines changed

dashboard/dashboard.go

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ type statusLine struct {
8383
lastbuild time.Time
8484
statuses []status
8585
builderUrl string
86+
lkgb string
8687
}
8788

8889
type Builds struct {
@@ -99,6 +100,15 @@ type Builds struct {
99100
} `json:"builds"`
100101
}
101102

103+
func AnyContains(lst []string, s string) bool {
104+
for _, v := range lst {
105+
if v == s {
106+
return true
107+
}
108+
}
109+
return false
110+
}
111+
102112
func QueryJSONBuilds(url string) (*Builds, error) {
103113
var resp *http.Response
104114
var err error
@@ -144,18 +154,13 @@ func GetStatusFromJson(builderUrl string) (statusLine, error) {
144154
var sl statusLine = statusLine{
145155
builderUrl: builderUrl,
146156
}
157+
lkgb := 0
158+
lkgbUrl := ""
147159
for _, b := range builds.Builds {
148160
if !b.Complete {
149161
continue
150162
}
151-
foundForceBuild := false
152-
for _, v := range b.Properties.Reason {
153-
if v == "Force Build Form" {
154-
foundForceBuild = true
155-
break
156-
}
157-
}
158-
if foundForceBuild {
163+
if AnyContains(b.Properties.Reason, "Force Build Form") {
159164
continue
160165
}
161166

@@ -165,18 +170,44 @@ func GetStatusFromJson(builderUrl string) (statusLine, error) {
165170
if sl.lastbuild.Before(time) {
166171
sl.lastbuild = time
167172
}
173+
174+
build, _ := url.Parse(fmt.Sprintf("../../../#/builders/%d/builds/%d", b.Builderid, b.Number))
175+
thisUrl := baseUrl.ResolveReference(build).String()
176+
168177
success := 0
169178
if b.Results < 2 {
170179
success = 1
180+
if b.Number > lkgb {
181+
lkgb = b.Number
182+
lkgbUrl = thisUrl
183+
}
171184
} else if b.Results == 2 {
172185
success = -1
173186
}
174-
build, _ := url.Parse(fmt.Sprintf("../../../#/builders/%d/builds/%d", b.Builderid, b.Number))
175-
sl.statuses = append(sl.statuses, status{baseUrl.ResolveReference(build).String(), success})
187+
sl.statuses = append(sl.statuses, status{thisUrl, success})
176188
if len(sl.statuses) >= 31 {
177189
break
178190
}
179191
}
192+
if lkgb == 0 {
193+
lkgbBuilds, err := QueryJSONBuilds(builderUrl + "/builds?limit=5&order=-number&property=reason&results__lt=2")
194+
if err != nil {
195+
return sl, nil
196+
}
197+
for _, b := range lkgbBuilds.Builds {
198+
if AnyContains(b.Properties.Reason, "Force Build Form") {
199+
continue
200+
}
201+
if b.Number > lkgb {
202+
build, _ := url.Parse(fmt.Sprintf("../../../#/builders/%d/builds/%d", b.Builderid, b.Number))
203+
lkgbUrl = baseUrl.ResolveReference(build).String()
204+
lkgb = b.Number
205+
}
206+
}
207+
}
208+
if lkgbUrl != "" {
209+
sl.lkgb = lkgbUrl
210+
}
180211
return sl, nil
181212
}
182213

@@ -279,7 +310,7 @@ func GetStatus(builderUrl string) (statusLine, error) {
279310

280311
statuses = append(statuses, status{buildUrl, success})
281312
}
282-
return statusLine{lastbuild, statuses, builderUrl}
313+
return statusLine{lastbuild, statuses, builderUrl, ""}
283314
}
284315
}
285316
}
@@ -496,7 +527,11 @@ $(function() {
496527
style = class(statuses[i].statuses[0].success)
497528
}
498529

499-
r += td("", a(statuses[i].builderUrl, span(style, bots[i].name)))
530+
if statuses[i].lkgb != "" {
531+
r += td("", a(statuses[i].builderUrl, span(style, bots[i].name))+" "+a(statuses[i].lkgb, "&star;"))
532+
} else {
533+
r += td("", a(statuses[i].builderUrl, span(style, bots[i].name)))
534+
}
500535

501536
if errors[i] != nil {
502537
errStr := errors[i].Error()

0 commit comments

Comments
 (0)