@stats-forge/github-stats-forge-core 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/api/contributed-to.js +1 -1
- package/build/api/gist.js +1 -1
- package/build/api/index.d.ts +1 -0
- package/build/api/index.d.ts.map +1 -1
- package/build/api/index.js +1 -0
- package/build/api/organization.d.ts +29 -0
- package/build/api/organization.d.ts.map +1 -0
- package/build/api/organization.js +53 -0
- package/build/api/params.js +1 -1
- package/build/api/pin.js +1 -1
- package/build/api/stats.js +1 -1
- package/build/api/top-langs.js +1 -1
- package/build/api/wakatime.js +1 -1
- package/build/cards/{contributed-to.d.ts → contributed-to/index.d.ts} +3 -3
- package/build/cards/contributed-to/index.d.ts.map +1 -0
- package/build/cards/{contributed-to.js → contributed-to/index.js} +31 -30
- package/build/cards/contributed-to/locales.d.ts +38 -0
- package/build/cards/contributed-to/locales.d.ts.map +1 -0
- package/build/cards/contributed-to/locales.js +39 -0
- package/build/cards/{gist.d.ts → gist/index.d.ts} +3 -3
- package/build/cards/gist/index.d.ts.map +1 -0
- package/build/cards/{gist.js → gist/index.js} +20 -15
- package/build/cards/gist/locales.d.ts +14 -0
- package/build/cards/gist/locales.d.ts.map +1 -0
- package/build/cards/gist/locales.js +15 -0
- package/build/cards/organization/index.d.ts +36 -0
- package/build/cards/organization/index.d.ts.map +1 -0
- package/build/cards/organization/index.js +225 -0
- package/build/cards/organization/locales.d.ts +47 -0
- package/build/cards/organization/locales.d.ts.map +1 -0
- package/build/cards/organization/locales.js +47 -0
- package/build/cards/{repo.d.ts → repo/index.d.ts} +3 -3
- package/build/cards/repo/index.d.ts.map +1 -0
- package/build/cards/{repo.js → repo/index.js} +20 -23
- package/build/cards/repo/locales.d.ts +129 -0
- package/build/cards/repo/locales.d.ts.map +1 -0
- package/build/cards/repo/locales.js +129 -0
- package/build/cards/{stats.d.ts → stats/index.d.ts} +3 -3
- package/build/cards/stats/index.d.ts.map +1 -0
- package/build/cards/{stats.js → stats/index.js} +38 -42
- package/build/cards/stats/locales.d.ts +621 -0
- package/build/cards/stats/locales.d.ts.map +1 -0
- package/build/cards/stats/locales.js +623 -0
- package/build/cards/{top-languages.d.ts → top-languages/index.d.ts} +3 -3
- package/build/cards/top-languages/index.d.ts.map +1 -0
- package/build/cards/{top-languages.js → top-languages/index.js} +13 -16
- package/build/cards/top-languages/locales.d.ts +103 -0
- package/build/cards/top-languages/locales.d.ts.map +1 -0
- package/build/cards/top-languages/locales.js +103 -0
- package/build/cards/{wakatime.d.ts → wakatime/index.d.ts} +3 -3
- package/build/cards/wakatime/index.d.ts.map +1 -0
- package/build/cards/{wakatime.js → wakatime/index.js} +22 -23
- package/build/cards/wakatime/locales.d.ts +250 -0
- package/build/cards/wakatime/locales.d.ts.map +1 -0
- package/build/cards/wakatime/locales.js +250 -0
- package/build/common/brand.d.ts +1 -0
- package/build/common/brand.d.ts.map +1 -1
- package/build/common/brand.js +1 -0
- package/build/common/error.d.ts +3 -1
- package/build/common/error.d.ts.map +1 -1
- package/build/common/error.js +3 -1
- package/build/common/icons.d.ts +5 -0
- package/build/common/icons.d.ts.map +1 -1
- package/build/common/icons.js +19 -4
- package/build/common/locales.d.ts +59 -0
- package/build/common/locales.d.ts.map +1 -0
- package/build/common/locales.js +59 -0
- package/build/common/localize.d.ts +60 -0
- package/build/common/localize.d.ts.map +1 -0
- package/build/common/localize.js +163 -0
- package/build/common/render.d.ts.map +1 -1
- package/build/common/render.js +9 -3
- package/build/fetchers/index.d.ts +2 -1
- package/build/fetchers/index.d.ts.map +1 -1
- package/build/fetchers/index.js +1 -0
- package/build/fetchers/organization.d.ts +15 -0
- package/build/fetchers/organization.d.ts.map +1 -0
- package/build/fetchers/organization.js +115 -0
- package/build/fetchers/types.d.ts +38 -0
- package/build/fetchers/types.d.ts.map +1 -1
- package/build/graphql/generated/organization.d.ts +88 -0
- package/build/graphql/generated/organization.d.ts.map +1 -0
- package/build/graphql/generated/organization.js +59 -0
- package/package.json +1 -1
- package/src/api/contributed-to.ts +1 -1
- package/src/api/gist.ts +1 -1
- package/src/api/index.ts +1 -0
- package/src/api/organization.ts +90 -0
- package/src/api/params.ts +1 -1
- package/src/api/pin.ts +1 -1
- package/src/api/stats.ts +1 -1
- package/src/api/top-langs.ts +1 -1
- package/src/api/wakatime.ts +1 -1
- package/src/cards/{contributed-to.ts → contributed-to/index.ts} +42 -39
- package/src/cards/contributed-to/locales.ts +41 -0
- package/src/cards/{gist.ts → gist/index.ts} +23 -20
- package/src/cards/gist/locales.ts +17 -0
- package/src/cards/organization/index.ts +358 -0
- package/src/cards/organization/locales.ts +49 -0
- package/src/cards/{repo.ts → repo/index.ts} +23 -26
- package/src/cards/repo/locales.ts +131 -0
- package/src/cards/{stats.ts → stats/index.ts} +48 -56
- package/src/cards/stats/locales.ts +625 -0
- package/src/cards/{top-languages.ts → top-languages/index.ts} +17 -20
- package/src/cards/top-languages/locales.ts +105 -0
- package/src/cards/{wakatime.ts → wakatime/index.ts} +26 -27
- package/src/cards/wakatime/locales.ts +252 -0
- package/src/common/brand.ts +1 -0
- package/src/common/error.ts +4 -0
- package/src/common/icons.ts +20 -4
- package/src/common/locales.ts +61 -0
- package/src/common/localize.ts +251 -0
- package/src/common/render.ts +10 -3
- package/src/fetchers/index.ts +2 -0
- package/src/fetchers/organization.ts +153 -0
- package/src/fetchers/types.ts +36 -0
- package/src/graphql/generated/organization.ts +109 -0
- package/src/graphql/queries/organization.graphql +57 -0
- package/build/cards/contributed-to.d.ts.map +0 -1
- package/build/cards/gist.d.ts.map +0 -1
- package/build/cards/repo.d.ts.map +0 -1
- package/build/cards/stats.d.ts.map +0 -1
- package/build/cards/top-languages.d.ts.map +0 -1
- package/build/cards/wakatime.d.ts.map +0 -1
- package/build/common/I18n.d.ts +0 -21
- package/build/common/I18n.d.ts.map +0 -1
- package/build/common/I18n.js +0 -34
- package/build/translations.d.ts +0 -1212
- package/build/translations.d.ts.map +0 -1
- package/build/translations.js +0 -1213
- package/src/common/I18n.ts +0 -50
- package/src/translations.ts +0 -1239
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { defineLocales } from '../../common/localize.js';
|
|
2
|
+
/** The repo card's labels in the locales they have been translated into. */
|
|
3
|
+
const repoCardLocales = defineLocales({
|
|
4
|
+
noDescription: {
|
|
5
|
+
en: 'No description provided',
|
|
6
|
+
},
|
|
7
|
+
unspecifiedLanguage: {
|
|
8
|
+
en: 'Unspecified',
|
|
9
|
+
},
|
|
10
|
+
template: {
|
|
11
|
+
en: 'Template',
|
|
12
|
+
ar: 'قالب',
|
|
13
|
+
az: 'Şablon',
|
|
14
|
+
bg: 'Шаблон',
|
|
15
|
+
bn: 'টেমপ্লেট',
|
|
16
|
+
ca: 'Plantilla',
|
|
17
|
+
cn: '模板',
|
|
18
|
+
'zh-tw': '模板',
|
|
19
|
+
cs: 'Šablona',
|
|
20
|
+
de: 'Vorlage',
|
|
21
|
+
sw: 'Kigezo',
|
|
22
|
+
ur: 'سانچہ',
|
|
23
|
+
es: 'Plantilla',
|
|
24
|
+
fa: 'الگو',
|
|
25
|
+
fi: 'Malli',
|
|
26
|
+
fr: 'Modèle',
|
|
27
|
+
hi: 'खाका',
|
|
28
|
+
sa: 'प्रारूपम्',
|
|
29
|
+
hu: 'Sablon',
|
|
30
|
+
it: 'Template',
|
|
31
|
+
ja: 'テンプレート',
|
|
32
|
+
kr: '템플릿',
|
|
33
|
+
nl: 'Sjabloon',
|
|
34
|
+
'pt-pt': 'Modelo',
|
|
35
|
+
'pt-br': 'Modelo',
|
|
36
|
+
np: 'टेम्पलेट',
|
|
37
|
+
el: 'Πρότυπο',
|
|
38
|
+
ro: 'Șablon',
|
|
39
|
+
ru: 'Шаблон',
|
|
40
|
+
'uk-ua': 'Шаблон',
|
|
41
|
+
id: 'Pola',
|
|
42
|
+
ml: 'ടെംപ്ലേറ്റ്',
|
|
43
|
+
my: 'ပုံစံ',
|
|
44
|
+
ta: `டெம்ப்ளேட்`,
|
|
45
|
+
sk: 'Šablóna',
|
|
46
|
+
tr: 'Şablon',
|
|
47
|
+
pl: 'Szablony',
|
|
48
|
+
uz: 'Shablon',
|
|
49
|
+
vi: 'Mẫu',
|
|
50
|
+
se: 'Mall',
|
|
51
|
+
he: 'תבנית',
|
|
52
|
+
fil: 'Suleras',
|
|
53
|
+
th: 'เทมเพลต',
|
|
54
|
+
sr: 'Шаблон',
|
|
55
|
+
'sr-latn': 'Šablon',
|
|
56
|
+
no: 'Mal',
|
|
57
|
+
be: 'Шаблон',
|
|
58
|
+
},
|
|
59
|
+
archived: {
|
|
60
|
+
en: 'Archived',
|
|
61
|
+
ar: 'مُؤرشف',
|
|
62
|
+
az: 'Arxiv',
|
|
63
|
+
bg: 'Архивирани',
|
|
64
|
+
bn: 'আর্কাইভড',
|
|
65
|
+
ca: 'Arxivats',
|
|
66
|
+
cn: '已归档',
|
|
67
|
+
'zh-tw': '已封存',
|
|
68
|
+
cs: 'Archivováno',
|
|
69
|
+
de: 'Archiviert',
|
|
70
|
+
sw: 'Hifadhiwa kwenye kumbukumbu',
|
|
71
|
+
ur: 'محفوظ شدہ',
|
|
72
|
+
es: 'Archivados',
|
|
73
|
+
fa: 'بایگانیشده',
|
|
74
|
+
fi: 'Arkistoitu',
|
|
75
|
+
fr: 'Archivé',
|
|
76
|
+
hi: 'संग्रहीत',
|
|
77
|
+
sa: 'संगृहीतम्',
|
|
78
|
+
hu: 'Archivált',
|
|
79
|
+
it: 'Archiviata',
|
|
80
|
+
ja: 'アーカイブ済み',
|
|
81
|
+
kr: '보관됨',
|
|
82
|
+
nl: 'Gearchiveerd',
|
|
83
|
+
'pt-pt': 'Arquivados',
|
|
84
|
+
'pt-br': 'Arquivados',
|
|
85
|
+
np: 'अभिलेख राखियो',
|
|
86
|
+
el: 'Αρχειοθετημένα',
|
|
87
|
+
ro: 'Arhivat',
|
|
88
|
+
ru: 'Архивирован',
|
|
89
|
+
'uk-ua': 'Архивований',
|
|
90
|
+
id: 'Arsip',
|
|
91
|
+
ml: 'ശേഖരിച്ചത്',
|
|
92
|
+
my: 'သိုလှောင်ပြီး',
|
|
93
|
+
ta: `காப்பகப்படுத்தப்பட்டது`,
|
|
94
|
+
sk: 'Archivované',
|
|
95
|
+
tr: 'Arşiv',
|
|
96
|
+
pl: 'Zarchiwizowano',
|
|
97
|
+
uz: 'Arxivlangan',
|
|
98
|
+
vi: 'Đã Lưu Trữ',
|
|
99
|
+
se: 'Arkiverade',
|
|
100
|
+
he: 'גנוז',
|
|
101
|
+
fil: 'Naka-arkibo',
|
|
102
|
+
th: 'เก็บถาวร',
|
|
103
|
+
sr: 'Архивирано',
|
|
104
|
+
'sr-latn': 'Arhivirano',
|
|
105
|
+
no: 'Arkivert',
|
|
106
|
+
be: 'Архіваваны',
|
|
107
|
+
},
|
|
108
|
+
prsAuthored: {
|
|
109
|
+
en: 'my created PRs',
|
|
110
|
+
'zh-tw': '我所創建的拉取請求',
|
|
111
|
+
},
|
|
112
|
+
prsCommented: {
|
|
113
|
+
en: 'my commented PRs',
|
|
114
|
+
'zh-tw': '我所參與的拉取請求',
|
|
115
|
+
},
|
|
116
|
+
prsReviewed: {
|
|
117
|
+
en: 'my reviewed PRs',
|
|
118
|
+
'zh-tw': '我所審核的拉取請求',
|
|
119
|
+
},
|
|
120
|
+
issuesAuthored: {
|
|
121
|
+
en: 'my created issues',
|
|
122
|
+
'zh-tw': '我所創建的議題',
|
|
123
|
+
},
|
|
124
|
+
issuesCommented: {
|
|
125
|
+
en: 'my commented issues',
|
|
126
|
+
'zh-tw': '我所參與的議題',
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
export { repoCardLocales };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { StatsData } from '
|
|
2
|
-
import type { CardOptions, CommonCardOptions } from '
|
|
1
|
+
import type { StatsData } from '../../fetchers/types.ts';
|
|
2
|
+
import type { CardOptions, CommonCardOptions } from '../options.ts';
|
|
3
3
|
/** Rank indicators the card can draw; the api validates `rank_icon` against this. */
|
|
4
4
|
declare const RANK_ICONS: readonly ['default', 'github', 'percentile'];
|
|
5
5
|
type RankIcon = (typeof RANK_ICONS)[number];
|
|
@@ -41,4 +41,4 @@ declare const renderStatsCard: typeof renderCard & {
|
|
|
41
41
|
};
|
|
42
42
|
};
|
|
43
43
|
export { renderStatsCard };
|
|
44
|
-
//# sourceMappingURL=
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cards/stats/index.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAuBpE,qFAAqF;AACrF,QAAA,MAAM,UAAU,YAAI,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAC;AAChE,KAAK,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AA0B5C,UAAU,eAAgB,SAAQ,iBAAiB;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,QAAQ,CAAC;IACpB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACrB;AA8ID;;;;GAIG;AACH,QAAA,MAAM,UAAU,UACP,SAAS,YACP,WAAW,CAAC,eAAe,CAAC,aAC1B,MAAM,SACX,KAAK,CAAC,MAAM,CAAC,UACZ,KAAK,CAAC,MAAM,CAAC,KACnB,MAoWF,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,eAAe;;QAEjB,SAAS;QACT,IAAI;QACJ,IAAI;QACJ,aAAa;;CAEf,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { CARD_ICON, CARD_WIDTH, FONT_SIZE, FONT_WEIGHT, firefoxFontSize, font, } from '
|
|
2
|
-
import { Card } from '
|
|
3
|
-
import { getLightDarkColors } from '
|
|
4
|
-
import { formatRange } from '
|
|
5
|
-
import { CardError } from '
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
1
|
+
import { CARD_ICON, CARD_WIDTH, FONT_SIZE, FONT_WEIGHT, firefoxFontSize, font, } from '../../common/brand.js';
|
|
2
|
+
import { Card } from '../../common/Card.js';
|
|
3
|
+
import { getLightDarkColors } from '../../common/color.js';
|
|
4
|
+
import { formatRange } from '../../common/date.js';
|
|
5
|
+
import { CardError } from '../../common/error.js';
|
|
6
|
+
import { icons, rankIcon } from '../../common/icons.js';
|
|
7
|
+
import { commonLocales } from '../../common/locales.js';
|
|
8
|
+
import { localize } from '../../common/localize.js';
|
|
9
|
+
import { buildSearchFilter, clampValue } from '../../common/ops.js';
|
|
10
|
+
import { NUMBER_FORMATS, createTextNode, flexLayout, measureText } from '../../common/render.js';
|
|
11
|
+
import { atRule, cssComment, el, rule } from '../../markup/index.js';
|
|
12
|
+
import { statCardLocales } from './locales.js';
|
|
12
13
|
const CARD_MIN_WIDTH = 287;
|
|
13
14
|
const CARD_DEFAULT_WIDTH = CARD_WIDTH.compact;
|
|
14
15
|
const RANK_CARD_DEFAULT_WIDTH = CARD_WIDTH.wide;
|
|
@@ -142,11 +143,11 @@ const getStyles = ({ textColor, iconColor, ringColor, show_icons, progress, }) =
|
|
|
142
143
|
/**
|
|
143
144
|
* @returns What the commit count covers, for the stat's label.
|
|
144
145
|
*/
|
|
145
|
-
const getTotalCommitsRangeLabel = (include_all_commits, commitsRange,
|
|
146
|
+
const getTotalCommitsRangeLabel = (include_all_commits, commitsRange, commonT) => include_all_commits
|
|
146
147
|
? ''
|
|
147
148
|
: commitsRange
|
|
148
149
|
? ` (${formatRange(commitsRange)})`
|
|
149
|
-
: ` (${
|
|
150
|
+
: ` (${commonT.lastYear()})`;
|
|
150
151
|
/**
|
|
151
152
|
* Renders the stats card.
|
|
152
153
|
*
|
|
@@ -160,18 +161,13 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
160
161
|
// Typed against the exported list, so a stat drawn here cannot be missing from it.
|
|
161
162
|
const shows = (stat) => show.includes(stat);
|
|
162
163
|
const apostrophe = /s$/i.test(name.trim()) ? '' : 's';
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
translations: {
|
|
166
|
-
...statCardLocales({ name, apostrophe }),
|
|
167
|
-
...wakatimeCardLocales,
|
|
168
|
-
},
|
|
169
|
-
});
|
|
164
|
+
const t = localize(statCardLocales, locale);
|
|
165
|
+
const commonT = localize(commonLocales, locale);
|
|
170
166
|
// Meta data for creating text nodes with createTextNode function
|
|
171
167
|
const STATS = {
|
|
172
168
|
stars: {
|
|
173
169
|
icon: icons.star,
|
|
174
|
-
label:
|
|
170
|
+
label: t.totalStars(),
|
|
175
171
|
value: totalStars,
|
|
176
172
|
id: 'stars',
|
|
177
173
|
},
|
|
@@ -179,27 +175,27 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
179
175
|
if (shows('contributions')) {
|
|
180
176
|
STATS['contributions'] = {
|
|
181
177
|
icon: icons.contributions,
|
|
182
|
-
label:
|
|
178
|
+
label: t.contributions(),
|
|
183
179
|
value: totalContributions,
|
|
184
180
|
id: 'contributions',
|
|
185
181
|
};
|
|
186
182
|
}
|
|
187
183
|
STATS['commits'] = {
|
|
188
184
|
icon: icons.commits,
|
|
189
|
-
label: `${
|
|
185
|
+
label: `${t.commits()}${getTotalCommitsRangeLabel(include_all_commits, commitsRange, commonT)}`,
|
|
190
186
|
value: totalCommits,
|
|
191
187
|
id: 'commits',
|
|
192
188
|
};
|
|
193
189
|
STATS['prs'] = {
|
|
194
190
|
icon: icons.prs,
|
|
195
|
-
label:
|
|
191
|
+
label: t.prs(),
|
|
196
192
|
value: totalPRs,
|
|
197
193
|
id: 'prs',
|
|
198
194
|
};
|
|
199
195
|
if (shows('prs_merged')) {
|
|
200
196
|
STATS['prs_merged'] = {
|
|
201
197
|
icon: icons.prs_merged,
|
|
202
|
-
label:
|
|
198
|
+
label: t.prsMerged(),
|
|
203
199
|
value: totalPRsMerged,
|
|
204
200
|
id: 'prs_merged',
|
|
205
201
|
};
|
|
@@ -207,7 +203,7 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
207
203
|
if (shows('prs_merged_percentage')) {
|
|
208
204
|
STATS['prs_merged_percentage'] = {
|
|
209
205
|
icon: icons.prs_merged_percentage,
|
|
210
|
-
label:
|
|
206
|
+
label: t.prsMergedPercentage(),
|
|
211
207
|
value: mergedPRsPercentage.toFixed(number_precision !== undefined && Number.isFinite(number_precision)
|
|
212
208
|
? clampValue(number_precision, 0, 2)
|
|
213
209
|
: 2),
|
|
@@ -218,21 +214,21 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
218
214
|
if (shows('reviews')) {
|
|
219
215
|
STATS['reviews'] = {
|
|
220
216
|
icon: icons.reviews,
|
|
221
|
-
label:
|
|
217
|
+
label: t.reviews(),
|
|
222
218
|
value: totalReviews,
|
|
223
219
|
id: 'reviews',
|
|
224
220
|
};
|
|
225
221
|
}
|
|
226
222
|
STATS['issues'] = {
|
|
227
223
|
icon: icons.issues,
|
|
228
|
-
label:
|
|
224
|
+
label: t.issues(),
|
|
229
225
|
value: totalIssues,
|
|
230
226
|
id: 'issues',
|
|
231
227
|
};
|
|
232
228
|
if (shows('discussions_started')) {
|
|
233
229
|
STATS['discussions_started'] = {
|
|
234
230
|
icon: icons.discussions_started,
|
|
235
|
-
label:
|
|
231
|
+
label: t.discussionsStarted(),
|
|
236
232
|
value: totalDiscussionsStarted,
|
|
237
233
|
id: 'discussions_started',
|
|
238
234
|
};
|
|
@@ -240,7 +236,7 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
240
236
|
if (shows('discussions_answered')) {
|
|
241
237
|
STATS['discussions_answered'] = {
|
|
242
238
|
icon: icons.discussions_answered,
|
|
243
|
-
label:
|
|
239
|
+
label: t.discussionsAnswered(),
|
|
244
240
|
value: totalDiscussionsAnswered,
|
|
245
241
|
id: 'discussions_answered',
|
|
246
242
|
};
|
|
@@ -250,7 +246,7 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
250
246
|
if (shows('prs_authored')) {
|
|
251
247
|
STATS['prs_authored'] = {
|
|
252
248
|
icon: icons.prs,
|
|
253
|
-
label:
|
|
249
|
+
label: t.prsAuthored(),
|
|
254
250
|
value: totalPRsAuthored,
|
|
255
251
|
id: 'prs_authored',
|
|
256
252
|
link: `https://github.com/search?q=${repoFilter}author%3A${encodedUsername}&type=pullrequests`,
|
|
@@ -259,7 +255,7 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
259
255
|
if (shows('prs_commented')) {
|
|
260
256
|
STATS['prs_commented'] = {
|
|
261
257
|
icon: icons.comments,
|
|
262
|
-
label:
|
|
258
|
+
label: t.prsCommented(),
|
|
263
259
|
value: totalPRsCommented,
|
|
264
260
|
id: 'prs_commented',
|
|
265
261
|
link: `https://github.com/search?q=${repoFilter}commenter%3A${encodedUsername}+-author%3A${encodedUsername}&type=pullrequests`,
|
|
@@ -268,7 +264,7 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
268
264
|
if (shows('prs_reviewed')) {
|
|
269
265
|
STATS['prs_reviewed'] = {
|
|
270
266
|
icon: icons.reviews,
|
|
271
|
-
label:
|
|
267
|
+
label: t.prsReviewed(),
|
|
272
268
|
value: totalPRsReviewed,
|
|
273
269
|
id: 'prs_reviewed',
|
|
274
270
|
link: `https://github.com/search?q=${repoFilter}reviewed-by%3A${encodedUsername}+-author%3A${encodedUsername}&type=pullrequests`,
|
|
@@ -277,7 +273,7 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
277
273
|
if (shows('issues_authored')) {
|
|
278
274
|
STATS['issues_authored'] = {
|
|
279
275
|
icon: icons.issues,
|
|
280
|
-
label:
|
|
276
|
+
label: t.issuesAuthored(),
|
|
281
277
|
value: totalIssuesAuthored,
|
|
282
278
|
id: 'issues_authored',
|
|
283
279
|
link: `https://github.com/search?q=${repoFilter}author%3A${encodedUsername}&type=issues`,
|
|
@@ -286,7 +282,7 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
286
282
|
if (shows('issues_commented')) {
|
|
287
283
|
STATS['issues_commented'] = {
|
|
288
284
|
icon: icons.discussions_started,
|
|
289
|
-
label:
|
|
285
|
+
label: t.issuesCommented(),
|
|
290
286
|
value: totalIssuesCommented,
|
|
291
287
|
id: 'issues_commented',
|
|
292
288
|
link: `https://github.com/search?q=${repoFilter}commenter%3A${encodedUsername}+-author%3A${encodedUsername}&type=issues`,
|
|
@@ -294,14 +290,14 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
294
290
|
}
|
|
295
291
|
STATS['contribs'] = {
|
|
296
292
|
icon: icons.repo,
|
|
297
|
-
label:
|
|
293
|
+
label: t.contribs(),
|
|
298
294
|
value: contributedTo,
|
|
299
295
|
id: 'contribs',
|
|
300
296
|
};
|
|
301
297
|
if (shows('all_time_contribs')) {
|
|
302
298
|
STATS['all_time_contribs'] = {
|
|
303
299
|
icon: icons.repo,
|
|
304
|
-
label:
|
|
300
|
+
label: t.allTimeContribs(),
|
|
305
301
|
value: allTimeContributedTo,
|
|
306
302
|
id: 'all_time_contribs',
|
|
307
303
|
};
|
|
@@ -316,13 +312,13 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
316
312
|
});
|
|
317
313
|
}
|
|
318
314
|
// check if all used labels are short
|
|
315
|
+
const defaultTitle = visibleStats.length > 0 ? t.title({ name, apostrophe }) : t.rankTitle({ name, apostrophe });
|
|
319
316
|
const longLabels = visibleStats.some(([, stat]) => stat.label.length > 18);
|
|
320
317
|
// The rank ring sets the floor: 150 beside the stats, 180 when it is the whole card.
|
|
321
318
|
const height = Math.max(45 + (visibleStats.length + 1) * lheight, hide_rank ? 0 : visibleStats.length > 0 ? 150 : 180);
|
|
322
319
|
// the lower the user's percentile the better
|
|
323
320
|
const progress = 100 - rank.percentile;
|
|
324
|
-
const calculateTextWidth = () => measureText(custom_title ||
|
|
325
|
-
(visibleStats.length > 0 ? i18n.t('statcard.title') : i18n.t('statcard.ranktitle')));
|
|
321
|
+
const calculateTextWidth = () => measureText(custom_title || defaultTitle);
|
|
326
322
|
const iconWidth = show_icons && visibleStats.length > 0 ? 16 + /* padding */ 1 : 0;
|
|
327
323
|
// The icons ride inside the step's own slack, so a default card lands on the width grid;
|
|
328
324
|
// only the minimum, which has no slack, still has to make room for them.
|
|
@@ -363,7 +359,7 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
363
359
|
}));
|
|
364
360
|
const card = new Card({
|
|
365
361
|
customTitle: custom_title,
|
|
366
|
-
defaultTitle
|
|
362
|
+
defaultTitle,
|
|
367
363
|
titlePrefixIcon: CARD_ICON.stats,
|
|
368
364
|
width,
|
|
369
365
|
height,
|
|
@@ -396,13 +392,13 @@ const renderCard = (stats, options = {}, username, repo = [], owner = []) => {
|
|
|
396
392
|
const labels = visibleStats
|
|
397
393
|
.map(([key, stat]) => {
|
|
398
394
|
if (key === 'commits') {
|
|
399
|
-
return `${
|
|
395
|
+
return `${t.commits()} ${getTotalCommitsRangeLabel(include_all_commits, commitsRange, commonT)} : ${stat.value}`;
|
|
400
396
|
}
|
|
401
397
|
return `${stat.label}: ${stat.value}`;
|
|
402
398
|
})
|
|
403
399
|
.join(', ');
|
|
404
400
|
card.setAccessibilityLabel({
|
|
405
|
-
title:
|
|
401
|
+
title: t.accessibilityTitle({ title: card.title, level: rank.level }),
|
|
406
402
|
desc: labels,
|
|
407
403
|
});
|
|
408
404
|
return card.render([
|