@@ -46,16 +46,21 @@ const noCodingActivityNode = ({ color, text }) => {
46
46
*@param {WakaTimeLang } args.lang The languages array.
47
47
*@param {number } args.x The x position of the language node.
48
48
*@param {number } args.y The y position of the language node.
49
+ *@param {"time" | "percent" } args.display_format The display format of the language node.
49
50
*@returns {string } The compact layout language SVG node.
50
51
*/
51
- const createCompactLangNode = ( { lang, x, y} ) => {
52
+ const createCompactLangNode = ( { lang, x, y, display_format } ) => {
52
53
const color = languageColors [ lang . name ] || "#858585" ;
54
+ const value =
55
+ display_format === "percent"
56
+ ?`${ lang . percent . toFixed ( 2 ) . toString ( ) } %`
57
+ :lang . text ;
53
58
54
59
return `
55
60
<g transform="translate(${ x } ,${ y } )">
56
61
<circle cx="5" cy="6" r="5" fill="${ color } " />
57
62
<text data-testid="lang-name" x="15" y="10" class='lang-name'>
58
- ${ lang . name } -${ lang . text }
63
+ ${ lang . name } -${ value }
59
64
</text>
60
65
</g>
61
66
` ;
@@ -67,21 +72,24 @@ const createCompactLangNode = ({ lang, x, y }) => {
67
72
*@param {Object } args The function arguments.
68
73
*@param {WakaTimeLang[] } args.langs The language objects.
69
74
*@param {number } args.y The y position of the language node.
75
+ *@param {"time" | "percent" } args.display_format The display format of the language node.
70
76
*@returns {string[] } The language text node items.
71
77
*/
72
- const createLanguageTextNode = ( { langs, y} ) => {
78
+ const createLanguageTextNode = ( { langs, y, display_format } ) => {
73
79
return langs . map ( ( lang , index ) => {
74
80
if ( index % 2 === 0 ) {
75
81
return createCompactLangNode ( {
76
82
lang,
77
83
x :25 ,
78
84
y :12.5 * index + y ,
85
+ display_format,
79
86
} ) ;
80
87
}
81
88
return createCompactLangNode ( {
82
89
lang,
83
90
x :230 ,
84
91
y :12.5 + 12.5 * index ,
92
+ display_format,
85
93
} ) ;
86
94
} ) ;
87
95
} ;
@@ -313,6 +321,7 @@ const renderWakatimeCard = (stats = {}, options = { hide: [] }) => {
313
321
?createLanguageTextNode ( {
314
322
y :25 ,
315
323
langs :filteredLanguages ,
324
+ display_format,
316
325
} ) . join ( "" )
317
326
:noCodingActivityNode ( {
318
327
//@ts -ignore