@@ -368,6 +368,7 @@ type uiBug struct {
368368 Namespace string
369369 Title string
370370 ImpactScore int
371+ RankTooltip string
371372 NumCrashes int64
372373 NumCrashesBad bool
373374 BisectCause BisectStatus
@@ -398,19 +399,21 @@ type uiBugLabel struct {
398399}
399400
400401type uiCrash struct {
401- Title string
402- Manager string
403- Time time.Time
404- Maintainers string
405- LogLink string
406- LogHasStrace bool
407- ReportLink string
408- ReproSyzLink string
409- ReproCLink string
410- ReproIsRevoked bool
411- ReproLogLink string
412- MachineInfoLink string
413- Assets []* uiAsset
402+ Title string
403+ TailTitles []string
404+ Manager string
405+ Time time.Time
406+ Maintainers string
407+ LogLink string
408+ LogHasStrace bool
409+ ReportLink string
410+ TailReportsLinks []string
411+ ReproSyzLink string
412+ ReproCLink string
413+ ReproIsRevoked bool
414+ ReproLogLink string
415+ MachineInfoLink string
416+ Assets []* uiAsset
414417 * uiBuild
415418}
416419
@@ -1938,10 +1941,16 @@ func createUIBug(c context.Context, bug *Bug, state *ReportingState, managers []
19381941 log .Errorf (c , "failed to generate credit email: %v" , err )
19391942 }
19401943 }
1944+
1945+ titleStat , err := report .TitleStatFromBytes ([]byte (bug .TitleStat ))
1946+ if err != nil {
1947+ log .Errorf (c , "report.TitleStatFromBytes: %v" , err )
1948+ }
19411949 uiBug := & uiBug {
19421950 Namespace : bug .Namespace ,
19431951 Title : bug .displayTitle (),
19441952 ImpactScore : report .TitlesToImpact (bug .Title , bug .AltTitles ... ),
1953+ RankTooltip : report .HigherRankTooltip (bug .Title , titleStat .Explain ()),
19451954 BisectCause : bug .BisectCause ,
19461955 BisectFix : bug .BisectFix ,
19471956 NumCrashes : bug .NumCrashes ,
@@ -2076,20 +2085,26 @@ func makeUIAssets(c context.Context, build *Build, crash *Crash, forReport bool)
20762085}
20772086
20782087func makeUICrash (c context.Context , crash * Crash , build * Build ) * uiCrash {
2088+ var tailReportsLinks []string
2089+ for _ , tailReportID := range crash .TailReports {
2090+ tailReportsLinks = append (tailReportsLinks , textLink (textCrashReport , tailReportID ))
2091+ }
20792092 ui := & uiCrash {
2080- Title : crash .Title ,
2081- Manager : crash .Manager ,
2082- Time : crash .Time ,
2083- Maintainers : strings .Join (crash .Maintainers , ", " ),
2084- LogLink : textLink (textCrashLog , crash .Log ),
2085- LogHasStrace : dashapi .CrashFlags (crash .Flags )& dashapi .CrashUnderStrace > 0 ,
2086- ReportLink : textLink (textCrashReport , crash .Report ),
2087- ReproSyzLink : textLink (textReproSyz , crash .ReproSyz ),
2088- ReproCLink : textLink (textReproC , crash .ReproC ),
2089- ReproLogLink : textLink (textReproLog , crash .ReproLog ),
2090- ReproIsRevoked : crash .ReproIsRevoked ,
2091- MachineInfoLink : textLink (textMachineInfo , crash .MachineInfo ),
2092- Assets : makeUIAssets (c , build , crash , true ),
2093+ Title : crash .Title ,
2094+ TailTitles : crash .TailTitles ,
2095+ Manager : crash .Manager ,
2096+ Time : crash .Time ,
2097+ Maintainers : strings .Join (crash .Maintainers , ", " ),
2098+ LogLink : textLink (textCrashLog , crash .Log ),
2099+ LogHasStrace : dashapi .CrashFlags (crash .Flags )& dashapi .CrashUnderStrace > 0 ,
2100+ ReportLink : textLink (textCrashReport , crash .Report ),
2101+ TailReportsLinks : tailReportsLinks ,
2102+ ReproSyzLink : textLink (textReproSyz , crash .ReproSyz ),
2103+ ReproCLink : textLink (textReproC , crash .ReproC ),
2104+ ReproLogLink : textLink (textReproLog , crash .ReproLog ),
2105+ ReproIsRevoked : crash .ReproIsRevoked ,
2106+ MachineInfoLink : textLink (textMachineInfo , crash .MachineInfo ),
2107+ Assets : makeUIAssets (c , build , crash , true ),
20932108 }
20942109 if build != nil {
20952110 ui .uiBuild = makeUIBuild (c , build , true )
0 commit comments