diff --git a/src/cards/wakatime-card.js b/src/cards/wakatime-card.js index 14203df..5e12cf3 100644 --- a/src/cards/wakatime-card.js +++ b/src/cards/wakatime-card.js @@ -61,14 +61,14 @@ const createTextNode = ({ const cardProgress = hideProgress ? null : createProgressNode({ - x: 110, - y: 4, - progress: percent, - color: progressBarColor, - width: 220, - name: label, - progressBarBackgroundColor, - }); + x: 110, + y: 4, + progress: percent, + color: progressBarColor, + width: 220, + name: label, + progressBarBackgroundColor, + }); return ` @@ -129,26 +129,15 @@ const renderWakatimeCard = (stats = {}, options = { hide: [] }) => { theme, }); - const statItems = languages + const filteredLanguages = languages ? languages - .filter((language) => language.hours || language.minutes) - .slice(0, langsCount) - .map((language) => { - return createTextNode({ - id: language.name, - label: language.name, - value: language.text, - percent: language.percent, - progressBarColor: titleColor, - progressBarBackgroundColor: textColor, - hideProgress: hide_progress, - }); - }) + .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` - let height = Math.max(45 + (statItems.length + 1) * lheight, 150); + let height = Math.max(45 + (filteredLanguages.length + 1) * lheight, 150); const cssStyles = getStyles({ titleColor, @@ -163,17 +152,17 @@ const renderWakatimeCard = (stats = {}, options = { hide: [] }) => { // RENDER COMPACT LAYOUT if (layout === "compact") { width = width + 50; - height = 90 + Math.round(languages.length / 2) * 25; + height = 90 + Math.round(filteredLanguages.length / 2) * 25; // progressOffset holds the previous language's width and used to offset the next language // so that we can stack them one after another, like this: [--][----][---] let progressOffset = 0; - const compactProgressBar = languages - .map((lang) => { + const compactProgressBar = filteredLanguages + .map((language) => { // const progress = (width * lang.percent) / 100; - const progress = ((width - 25) * lang.percent) / 100; + const progress = ((width - 25) * language.percent) / 100; - const languageColor = languageColors[lang.name] || "#858585"; + const languageColor = languageColors[language.name] || "#858585"; const output = ` { ${compactProgressBar} ${createLanguageTextNode({ - x: 0, - y: 25, - langs: languages, - totalSize: 100, - }).join("")} + x: 0, + y: 25, + langs: filteredLanguages, + totalSize: 100, + }).join("")} `; } else { finalLayout = flexLayout({ - items: statItems.length - ? statItems + items: filteredLanguages.length + ? filteredLanguages + .map((language) => { + return createTextNode({ + id: language.name, + label: language.name, + value: language.text, + percent: language.percent, + progressBarColor: titleColor, + progressBarBackgroundColor: textColor, + hideProgress: hide_progress, + }); + }) : [ - noCodingActivityNode({ - color: textColor, - text: i18n.t("wakatimecard.nocodingactivity"), - }), - ], + noCodingActivityNode({ + color: textColor, + text: i18n.t("wakatimecard.nocodingactivity"), + }), + ], gap: lheight, direction: "column", }).join(""); diff --git a/tests/__snapshots__/renderWakatimeCard.test.js.snap b/tests/__snapshots__/renderWakatimeCard.test.js.snap index 43c211c..4c478d5 100644 --- a/tests/__snapshots__/renderWakatimeCard.test.js.snap +++ b/tests/__snapshots__/renderWakatimeCard.test.js.snap @@ -155,8 +155,8 @@ exports[`Test Render Wakatime Card should render correctly with compact layout 1 " @@ -273,16 +273,6 @@ exports[`Test Render Wakatime Card should render correctly with compact layout 1 fill=\\"#2b7489\\" /> - - @@ -298,13 +288,6 @@ exports[`Test Render Wakatime Card should render correctly with compact layout 1 - - - - YAML - 0 secs - - -