feat: improved top lang fetching & changed title

This commit is contained in:
anuraghazra 2020-07-28 23:33:43 +05:30
parent f7f8ee7ba0
commit 826f0201aa
4 changed files with 10 additions and 14 deletions

View File

@ -8,9 +8,10 @@ const fetcher = (variables, token) => {
query: ` query: `
query userInfo($login: String!) { query userInfo($login: String!) {
user(login: $login) { user(login: $login) {
repositories(isFork: false, first: 100, orderBy: {field: UPDATED_AT, direction: DESC}) { # fetch only owner repos & not forks
repositories(ownerAffiliations: OWNER, isFork: false, first: 100) {
nodes { nodes {
languages(first: 1, orderBy: {field: SIZE, direction: DESC}) { languages(first: 10, orderBy: {field: SIZE, direction: DESC}) {
edges { edges {
size size
node { node {
@ -49,18 +50,13 @@ async function fetchTopLanguages(username) {
.filter((node) => { .filter((node) => {
return node.languages.edges.length > 0; return node.languages.edges.length > 0;
}) })
.sort((a, b) => { .reduce((acc, curr) => curr.languages.edges.concat(acc), [])
return b.languages.edges[0].size - a.languages.edges[0].size; .sort((a, b) => b.size - a.size)
})
.map((node) => {
return node.languages.edges[0];
})
.reduce((acc, prev) => { .reduce((acc, prev) => {
let langSize = prev.size; let langSize = prev.size;
if (acc[prev.node.name] && prev.node.name === acc[prev.node.name].name) { if (acc[prev.node.name] && prev.node.name === acc[prev.node.name].name) {
langSize = prev.size + acc[prev.node.name].size; langSize = prev.size + acc[prev.node.name].size;
} }
return { return {
...acc, ...acc,
[prev.node.name]: { [prev.node.name]: {

View File

@ -185,7 +185,7 @@ const renderTopLanguages = (topLangs, options = {}) => {
${ ${
hide_title hide_title
? "" ? ""
: `<text data-testid="header" x="25" y="35" class="header">Top Languages</text>` : `<text data-testid="header" x="25" y="35" class="header">Most Used Languages</text>`
} }
<svg data-testid="lang-items" x="25" y="${hide_title ? 25 : 55}"> <svg data-testid="lang-items" x="25" y="${hide_title ? 25 : 55}">

View File

@ -32,7 +32,7 @@ describe("Test renderTopLanguages", () => {
document.body.innerHTML = renderTopLanguages(langs); document.body.innerHTML = renderTopLanguages(langs);
expect(queryByTestId(document.body, "header")).toHaveTextContent( expect(queryByTestId(document.body, "header")).toHaveTextContent(
"Top Languages" "Most Used Languages"
); );
expect(queryAllByTestId(document.body, "lang-name")[0]).toHaveTextContent( expect(queryAllByTestId(document.body, "lang-name")[0]).toHaveTextContent(
@ -211,7 +211,7 @@ describe("Test renderTopLanguages", () => {
it('should render with layout compact', () => { it('should render with layout compact', () => {
document.body.innerHTML = renderTopLanguages(langs, {layout: 'compact'}); document.body.innerHTML = renderTopLanguages(langs, {layout: 'compact'});
expect(queryByTestId(document.body, "header")).toHaveTextContent("Top Languages"); expect(queryByTestId(document.body, "header")).toHaveTextContent("Most Used Languages");
expect(queryAllByTestId(document.body, "lang-name")[0]).toHaveTextContent("HTML 40.00%"); expect(queryAllByTestId(document.body, "lang-name")[0]).toHaveTextContent("HTML 40.00%");
expect(queryAllByTestId(document.body, "lang-progress")[0]).toHaveAttribute("width","120.00"); expect(queryAllByTestId(document.body, "lang-progress")[0]).toHaveAttribute("width","120.00");

View File

@ -12,7 +12,7 @@ const data_langs = {
nodes: [ nodes: [
{ {
languages: { languages: {
edges: [{ size: 100, node: { color: "#0f0", name: "HTML" } }], edges: [{ size: 150, node: { color: "#0f0", name: "HTML" } }],
}, },
}, },
{ {
@ -55,7 +55,7 @@ const langs = {
HTML: { HTML: {
color: "#0f0", color: "#0f0",
name: "HTML", name: "HTML",
size: 200, size: 250,
}, },
javascript: { javascript: {
color: "#0ff", color: "#0ff",