diff --git a/src/cards/wakatime-card.js b/src/cards/wakatime-card.js
index 8b042fd..e7af1df 100644
--- a/src/cards/wakatime-card.js
+++ b/src/cards/wakatime-card.js
@@ -159,7 +159,7 @@ const recalculatePercentages = (languages) => {
* @returns {string} WakaTime card SVG.
*/
const renderWakatimeCard = (stats = {}, options = { hide: [] }) => {
- let { languages } = stats;
+ let { languages = [] } = stats;
const {
hide_title = false,
hide_border = false,
@@ -174,20 +174,24 @@ const renderWakatimeCard = (stats = {}, options = { hide: [] }) => {
custom_title,
locale,
layout,
- langs_count = languages ? languages.length : 0,
+ langs_count = languages.length,
border_radius,
border_color,
} = options;
const shouldHideLangs = Array.isArray(hide) && hide.length > 0;
- if (shouldHideLangs && languages !== undefined) {
+ if (shouldHideLangs) {
const languagesToHide = new Set(hide.map((lang) => lowercaseTrim(lang)));
languages = languages.filter(
(lang) => !languagesToHide.has(lowercaseTrim(lang.name)),
);
- recalculatePercentages(languages);
}
+ // Since the percentages are sorted in descending order, we can just
+ // slice from the beginning without sorting.
+ languages = languages.slice(0, langs_count);
+ recalculatePercentages(languages);
+
const i18n = new I18n({
locale,
translations: wakatimeCardLocales,
@@ -209,10 +213,8 @@ const renderWakatimeCard = (stats = {}, options = { hide: [] }) => {
});
const filteredLanguages = languages
- ? languages
- .filter((language) => language.hours || language.minutes)
- .slice(0, langsCount)
- : [];
+ .filter((language) => language.hours || language.minutes)
+ .slice(0, langsCount);
// Calculate the card height depending on how many items there are
// but if rank circle is visible clamp the minimum height to `150`
diff --git a/tests/__snapshots__/renderWakatimeCard.test.js.snap b/tests/__snapshots__/renderWakatimeCard.test.js.snap
index dd9ffd3..416ead9 100644
--- a/tests/__snapshots__/renderWakatimeCard.test.js.snap
+++ b/tests/__snapshots__/renderWakatimeCard.test.js.snap
@@ -122,7 +122,7 @@ exports[`Test Render Wakatime Card should render correctly with compact layout 1
data-testid="lang-progress"
x="0"
y="0"
- width="6.6495"
+ width="415.61699999999996"
height="8"
fill="#858585"
/>
@@ -130,9 +130,167 @@ exports[`Test Render Wakatime Card should render correctly with compact layout 1
+
+
+
+
+
+ Other - 19 mins
+
+
+
+
+
+
+ TypeScript - 1 min
+
+
+
+
+
+
+
+
+ "
+`;
+
+exports[`Test Render Wakatime Card should render correctly with compact layout when langs_count is set 1`] = `
+"
+