Skip to content

Commit

Permalink
feat: added hide_langs_below option
Browse files Browse the repository at this point in the history
  • Loading branch information
anuraghazra committed Jul 21, 2020
1 parent 7c104cf commit 4a8fd03
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
2 changes: 2 additions & 0 deletions api/top-langs.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const renderTopLanguages = require("../src/renderTopLanguages");
module.exports = async (req, res) => {
const {
username,
hide_langs_below,
hide_title,
card_width,
title_color,
Expand Down Expand Up @@ -42,6 +43,7 @@ module.exports = async (req, res) => {
theme,
hide_title: parseBoolean(hide_title),
card_width: parseInt(card_width, 10),
hide_langs_below: parseFloat(hide_langs_below, 10),
title_color,
text_color,
bg_color,
Expand Down
9 changes: 8 additions & 1 deletion src/renderTopLanguages.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,22 @@ const renderTopLanguages = (topLangs, options = {}) => {
title_color,
text_color,
bg_color,
hide_langs_below,
theme,
} = options;

const langs = Object.values(topLangs);
let langs = Object.values(topLangs);

const totalSize = langs.reduce((acc, curr) => {
return acc + curr.size;
}, 0);

// hide langs
langs = langs.filter((lang) => {
if (!hide_langs_below) return true;
return (lang.size / totalSize) * 100 > hide_langs_below;
});

// returns theme based colors with proper overrides and defaults
const { titleColor, textColor, bgColor } = getCardColors({
title_color,
Expand Down
14 changes: 14 additions & 0 deletions tests/renderTopLanguages.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,20 @@ describe("Test renderTopLanguages", () => {
);
});

it("should hide_langs_below", () => {
document.body.innerHTML = renderTopLanguages(langs, {
hide_langs_below: 34,
});

expect(queryAllByTestId(document.body, "lang-name")[0]).toBeInTheDocument(
"HTML"
);
expect(queryAllByTestId(document.body, "lang-name")[1]).toBeInTheDocument(
"javascript"
);
expect(queryAllByTestId(document.body, "lang-name")[2]).not.toBeDefined();
});

it("should resize the height correctly depending on langs", () => {
document.body.innerHTML = renderTopLanguages(langs, {});
expect(document.querySelector("svg")).toHaveAttribute("height", "205");
Expand Down

0 comments on commit 4a8fd03

Please sign in to comment.