diff --git a/appview/pages/templates/repo/index.html b/appview/pages/templates/repo/index.html
--- a/appview/pages/templates/repo/index.html
+++ b/appview/pages/templates/repo/index.html
@@ -7,18 +7,6 @@
{{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo) }}
{{ end }}
-{{ define "repoLanguages" }}
-
- {{ range $value := .Languages }}
-
- {{ end }}
-
-{{ end }}
-
{{ define "repoContent" }}
{{ if .Languages }}
@@ -44,6 +32,19 @@ {{ block "rightInfo" . }}{{ end }}
{{ end }}
+
+{{ define "repoLanguages" }}
+
+ {{ range $value := .Languages }}
+
+ {{ end }}
+
+{{ end }}
+
{{ define "branchSelector" }}
diff --git a/appview/repo/index.go b/appview/repo/index.go
--- a/appview/repo/index.go
+++ b/appview/repo/index.go
@@ -123,7 +123,7 @@ return
}
}
- languageInfo, err := getLanguageInfo(repoInfo, rp, f, user, signedClient, ref)
+ languageInfo, err := getLanguageInfo(f, signedClient, ref)
if err != nil {
log.Printf("failed to compute language percentages: %s", err)
// non-fatal
@@ -157,10 +157,7 @@ return
}
func getLanguageInfo(
- repoInfo repoinfo.RepoInfo,
- rp *Repo,
f *reporesolver.ResolvedRepo,
- user *oauth.User,
signedClient *knotclient.SignedClient,
ref string,
) ([]types.RepoLanguageDetails, error) {
@@ -169,49 +166,42 @@ if err != nil {
return []types.RepoLanguageDetails{}, err
}
if repoLanguages == nil {
- repoLanguages = &types.RepoLanguageResponse{Languages: make(map[string]int)}
+ repoLanguages = &types.RepoLanguageResponse{Languages: make(map[string]int64)}
}
- totalLanguageFileCount := 0
- for _, fileCount := range repoLanguages.Languages {
- totalLanguageFileCount += fileCount
+ var totalSize int64
+ for _, fileSize := range repoLanguages.Languages {
+ totalSize += fileSize
}
var languageStats []types.RepoLanguageDetails
- var otherLanguageStat *types.RepoLanguageDetails
var otherPercentage float32 = 0
- for fileType, fileCount := range repoLanguages.Languages {
- percentage := (float32(fileCount) / float32(totalLanguageFileCount)) * 100
-
- if percentage <= 0.1 {
- otherPercentage += percentage
- continue
- }
+ for lang, size := range repoLanguages.Languages {
+ percentage := (float32(size) / float32(totalSize)) * 100
- // Exclude languages
- if fileType == "Text" {
+ if percentage <= 0.5 {
otherPercentage += percentage
continue
}
- color := enry.GetColor(fileType)
+ color := enry.GetColor(lang)
- if fileType == "Other" {
- otherLanguageStat = &types.RepoLanguageDetails{Name: fileType, Percentage: percentage, Color: color}
- } else {
- languageStats = append(languageStats, types.RepoLanguageDetails{Name: fileType, Percentage: percentage, Color: color})
- }
+ languageStats = append(languageStats, types.RepoLanguageDetails{Name: lang, Percentage: percentage, Color: color})
}
sort.Slice(languageStats, func(i, j int) bool {
- return languageStats[i].Percentage > languageStats[j].Percentage
+ if languageStats[i].Name == enry.OtherLanguage {
+ return false
+ }
+ if languageStats[j].Name == enry.OtherLanguage {
+ return true
+ }
+ if languageStats[i].Percentage != languageStats[j].Percentage {
+ return languageStats[i].Percentage > languageStats[j].Percentage
+ }
+ return languageStats[i].Name < languageStats[j].Name
})
-
- if otherLanguageStat != nil {
- otherLanguageStat.Percentage += otherPercentage
- languageStats = append(languageStats, *otherLanguageStat)
- }
return languageStats, nil
}