+13
-12
appview/pages/templates/repo/index.html
+13
-12
appview/pages/templates/repo/index.html
···
7
7
{{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo) }}
8
8
{{ end }}
9
9
10
-
{{ define "repoLanguages" }}
11
-
<div class="flex gap-[3px] -m-6 mb-6 overflow-hidden rounded-t">
12
-
{{ range $value := .Languages }}
13
-
<div
14
-
title="{{ $value.Name }} {{ printf "%.1f" $value.Percentage }}%"
15
-
class="h-2"
16
-
style="background-color: {{ $value.Color }}; width: {{ $value.Percentage }}%"
17
-
></div>
18
-
{{ end }}
19
-
</div>
20
-
{{ end }}
21
-
22
10
{{ define "repoContent" }}
23
11
<main>
24
12
{{ if .Languages }}
···
44
32
</div>
45
33
</main>
46
34
{{ end }}
35
+
36
+
{{ define "repoLanguages" }}
37
+
<div class="flex gap-[1px] -m-6 mb-6 overflow-hidden rounded-t">
38
+
{{ range $value := .Languages }}
39
+
<div
40
+
title='{{ or $value.Name "Other" }} {{ printf "%.1f" $value.Percentage }}%'
41
+
class="h-[4px] rounded-full"
42
+
style="background-color: {{ $value.Color }}; width: {{ $value.Percentage }}%"
43
+
></div>
44
+
{{ end }}
45
+
</div>
46
+
{{ end }}
47
+
47
48
48
49
{{ define "branchSelector" }}
49
50
<div class="flex gap-2 items-center items-stretch justify-center">
+20
-30
appview/repo/index.go
+20
-30
appview/repo/index.go
···
123
123
}
124
124
}
125
125
126
-
languageInfo, err := getLanguageInfo(repoInfo, rp, f, user, signedClient, ref)
126
+
languageInfo, err := getLanguageInfo(f, signedClient, ref)
127
127
if err != nil {
128
128
log.Printf("failed to compute language percentages: %s", err)
129
129
// non-fatal
···
157
157
}
158
158
159
159
func getLanguageInfo(
160
-
repoInfo repoinfo.RepoInfo,
161
-
rp *Repo,
162
160
f *reporesolver.ResolvedRepo,
163
-
user *oauth.User,
164
161
signedClient *knotclient.SignedClient,
165
162
ref string,
166
163
) ([]types.RepoLanguageDetails, error) {
···
169
166
return []types.RepoLanguageDetails{}, err
170
167
}
171
168
if repoLanguages == nil {
172
-
repoLanguages = &types.RepoLanguageResponse{Languages: make(map[string]int)}
169
+
repoLanguages = &types.RepoLanguageResponse{Languages: make(map[string]int64)}
173
170
}
174
171
175
-
totalLanguageFileCount := 0
176
-
for _, fileCount := range repoLanguages.Languages {
177
-
totalLanguageFileCount += fileCount
172
+
var totalSize int64
173
+
for _, fileSize := range repoLanguages.Languages {
174
+
totalSize += fileSize
178
175
}
179
176
180
177
var languageStats []types.RepoLanguageDetails
181
-
var otherLanguageStat *types.RepoLanguageDetails
182
178
var otherPercentage float32 = 0
183
179
184
-
for fileType, fileCount := range repoLanguages.Languages {
185
-
percentage := (float32(fileCount) / float32(totalLanguageFileCount)) * 100
186
-
187
-
if percentage <= 0.1 {
188
-
otherPercentage += percentage
189
-
continue
190
-
}
180
+
for lang, size := range repoLanguages.Languages {
181
+
percentage := (float32(size) / float32(totalSize)) * 100
191
182
192
-
// Exclude languages
193
-
if fileType == "Text" {
183
+
if percentage <= 0.5 {
194
184
otherPercentage += percentage
195
185
continue
196
186
}
197
187
198
-
color := enry.GetColor(fileType)
188
+
color := enry.GetColor(lang)
199
189
200
-
if fileType == "Other" {
201
-
otherLanguageStat = &types.RepoLanguageDetails{Name: fileType, Percentage: percentage, Color: color}
202
-
} else {
203
-
languageStats = append(languageStats, types.RepoLanguageDetails{Name: fileType, Percentage: percentage, Color: color})
204
-
}
190
+
languageStats = append(languageStats, types.RepoLanguageDetails{Name: lang, Percentage: percentage, Color: color})
205
191
}
206
192
207
193
sort.Slice(languageStats, func(i, j int) bool {
208
-
return languageStats[i].Percentage > languageStats[j].Percentage
194
+
if languageStats[i].Name == enry.OtherLanguage {
195
+
return false
196
+
}
197
+
if languageStats[j].Name == enry.OtherLanguage {
198
+
return true
199
+
}
200
+
if languageStats[i].Percentage != languageStats[j].Percentage {
201
+
return languageStats[i].Percentage > languageStats[j].Percentage
202
+
}
203
+
return languageStats[i].Name < languageStats[j].Name
209
204
})
210
-
211
-
if otherLanguageStat != nil {
212
-
otherLanguageStat.Percentage += otherPercentage
213
-
languageStats = append(languageStats, *otherLanguageStat)
214
-
}
215
205
216
206
return languageStats, nil
217
207
}