Localize activity heatmap (except tooltip) (#24131)

The calculation of the total sum is moved to the backend so a full HTML
string could be sent.


![image](https://user-images.githubusercontent.com/20454870/232112381-c11d896b-ba47-40f8-b2a3-71cf4b3208de.png)

- Closes #10669
- 2nd attempt (the first was in #21570)

---------

Signed-off-by: Yarden Shoham <git@yardenshoham.com>
Co-authored-by: Giteabot <teabot@gitea.io>
This commit is contained in:
Yarden Shoham 2023-04-17 21:26:01 +03:00 committed by GitHub
parent 5eb4c63867
commit f045e58cc7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 30 additions and 12 deletions

View File

@ -69,3 +69,12 @@ func getUserHeatmapData(user *user_model.User, team *organization.Team, doer *us
OrderBy("timestamp"). OrderBy("timestamp").
Find(&hdata) Find(&hdata)
} }
// GetTotalContributionsInHeatmap returns the total number of contributions in a heatmap
func GetTotalContributionsInHeatmap(hdata []*UserHeatmapData) int64 {
var total int64
for _, v := range hdata {
total += v.Contributions
}
return total
}

View File

@ -118,6 +118,12 @@ footer = Footer
footer.software = About Software footer.software = About Software
footer.links = Links footer.links = Links
[heatmap]
number_of_contributions_in_the_last_12_months = %s contributions in the last 12 months
no_contributions = No contributions
less = Less
more = More
[editor] [editor]
buttons.heading.tooltip = Add heading buttons.heading.tooltip = Add heading
buttons.bold.tooltip = Add bold text buttons.bold.tooltip = Add bold text

View File

@ -107,6 +107,7 @@ func Dashboard(ctx *context.Context) {
return return
} }
ctx.Data["HeatmapData"] = data ctx.Data["HeatmapData"] = data
ctx.Data["HeatmapTotalContributions"] = activities_model.GetTotalContributionsInHeatmap(data)
} }
feeds, count, err := activities_model.GetFeeds(ctx, activities_model.GetFeedsOptions{ feeds, count, err := activities_model.GetFeeds(ctx, activities_model.GetFeedsOptions{

View File

@ -74,6 +74,7 @@ func Profile(ctx *context.Context) {
return return
} }
ctx.Data["HeatmapData"] = data ctx.Data["HeatmapData"] = data
ctx.Data["HeatmapTotalContributions"] = activities_model.GetTotalContributionsInHeatmap(data)
} }
if len(ctx.ContextUser.Description) != 0 { if len(ctx.ContextUser.Description) != 0 {

View File

@ -1,5 +1,11 @@
{{if .HeatmapData}} {{if .HeatmapData}}
<div id="user-heatmap" data-heatmap-data="{{Json .HeatmapData}}"> <div id="user-heatmap"
data-heatmap-data="{{Json .HeatmapData}}"
data-locale-total-contributions="{{$.locale.Tr "heatmap.number_of_contributions_in_the_last_12_months" ($.locale.PrettyNumber .HeatmapTotalContributions)}}"
data-locale-no-contributions="{{.locale.Tr "heatmap.no_contributions"}}"
data-locale-more="{{.locale.Tr "heatmap.more"}}"
data-locale-less="{{.locale.Tr "heatmap.less"}}"
>
<div slot="loading"> <div slot="loading">
<div class="ui active centered inline indeterminate text loader" id="loading-heatmap">{{.locale.Tr "user.heatmap.loading"}}</div> <div class="ui active centered inline indeterminate text loader" id="loading-heatmap">{{.locale.Tr "user.heatmap.loading"}}</div>
</div> </div>

View File

@ -1,7 +1,7 @@
<template> <template>
<div id="user-heatmap"> <div id="user-heatmap">
<div class="total-contributions"> <div class="total-contributions">
{{ sum }} contributions in the last 12 months {{ locale.contributions_in_the_last_12_months }}
</div> </div>
<calendar-heatmap <calendar-heatmap
:locale="locale" :locale="locale"
@ -41,15 +41,6 @@ export default {
], ],
endDate: new Date(), endDate: new Date(),
}), }),
computed: {
sum() {
let s = 0;
for (let i = 0; i < this.values.length; i++) {
s += this.values[i].count;
}
return s;
}
},
mounted() { mounted() {
// work around issue with first legend color being rendered twice and legend cut off // work around issue with first legend color being rendered twice and legend cut off
const legend = document.querySelector('.vch__external-legend-wrapper'); const legend = document.querySelector('.vch__external-legend-wrapper');

View File

@ -18,11 +18,15 @@ export function initHeatmap() {
return {date: new Date(v), count: heatmap[v]}; return {date: new Date(v), count: heatmap[v]};
}); });
// last heatmap tooltip localization attempt https://github.com/go-gitea/gitea/pull/24131/commits/a83761cbbae3c2e3b4bced71e680f44432073ac8
const locale = { const locale = {
months: new Array(12).fill().map((_, idx) => translateMonth(idx)), months: new Array(12).fill().map((_, idx) => translateMonth(idx)),
days: new Array(7).fill().map((_, idx) => translateDay(idx)), days: new Array(7).fill().map((_, idx) => translateDay(idx)),
contributions: 'contributions', contributions: 'contributions',
no_contributions: 'No contributions', contributions_in_the_last_12_months: el.getAttribute('data-locale-total-contributions'),
no_contributions: el.getAttribute('data-locale-no-contributions'),
more: el.getAttribute('data-locale-more'),
less: el.getAttribute('data-locale-less'),
}; };
const View = createApp(ActivityHeatmap, {values, locale}); const View = createApp(ActivityHeatmap, {values, locale});