diff --git a/README.md b/README.md index c54745ae..440a91ba 100644 --- a/README.md +++ b/README.md @@ -578,10 +578,10 @@ Used template defaults to the `classic` one. RepositoryR ✔️ - ❌ + ✔️M ❌ ❌ - ❌ + ✔️M ✔️ ❌ ✔️ diff --git a/source/queries/repository.graphql b/source/queries/repository.graphql index a2356f62..e18683e2 100644 --- a/source/queries/repository.graphql +++ b/source/queries/repository.graphql @@ -4,6 +4,7 @@ query Repository { name createdAt diskUsage + homepageUrl watchers { totalCount } diff --git a/source/templates/repository/image.svg b/source/templates/repository/image.svg index 26ab1507..5fbc9248 100644 --- a/source/templates/repository/image.svg +++ b/source/templates/repository/image.svg @@ -145,6 +145,38 @@ <% } %> + <% if (plugins.languages) { %> +
+

Most used languages

+ <% if (plugins.languages.error) { %> +
+
+ + <%= plugins.languages.error.message %> +
+
+ <% } else { %> + + + + + + <% for (const {name, value, color, x} of plugins.languages.favorites) { %> + + <% } %> + +
+ <% for (const {name, value, color} of plugins.languages.favorites) { %> +
+ + <%= name %> +
+ <% } %> +
+ <% } %> +
+ <% } %> + <% if (plugins.projects) { %>

@@ -205,54 +237,166 @@

<% } %> - <% } %> - - <% if (plugins.stargazers) { %> -
-

- - Stargazers over the last two weeks -

- <% if (plugins.stargazers.error) { %> -
- - <%= plugins.stargazers.error.message %> + <% if (plugins.pagespeed) { %> +
+
+

+ + PageSpeed Insights +

+
+ + <%= plugins.pagespeed.url %> +
+
+
+ <% if (plugins.pagespeed.error) { %> +
+
+
+ + <%= plugins.pagespeed.error.message %> +
+
<% } else { %> -
-
-

Total stargazers

-
- <% { let previous = null; for (const [date, value] of Object.entries(plugins.stargazers.total.dates)) { const p = 0.05+0.95*(value-plugins.stargazers.total.min)/(plugins.stargazers.total.max-plugins.stargazers.total.min); const [y, m, d] = date.split("-").map(Number) %> -
- <%= (value-(previous ?? 0)) ? value : "" %> -
- <%= d %> - <% if ((previous === null)||(d === 1)) { %> -
<%= plugins.stargazers.months[m] %>
+
+
+
+ <% for (const {score, title} of plugins.pagespeed.scores) { %> +
+ + + <% if (!Number.isNaN(score)) { %> + + <%= Math.round(score*100) %> + <% } else { %> + - + <% } %> + + <%= title %> +
+ <% } %> +
+
+
+ <% if (plugins.pagespeed.detailed) { %> +
+
+
+ + Time to interactive +
+
+ + Speed Index +
+
+ + Total Blocking Time +
+
+ + First Contentful Paint +
+
+ + Largest Contentful Paint +
+
+ + Cumulative Layout Shift +
+
+
+ <% for (const {score, suffix = "", threshold} of [ + {score:plugins.pagespeed.metrics.interactive/1000, suffix:"s", threshold:[3.785, 7.3]}, + {score:plugins.pagespeed.metrics.speedIndex/1000, suffix:"s", threshold:[3.387, 5.8]}, + {score:plugins.pagespeed.metrics.totalBlockingTime/1000, suffix:"s", threshold:[.287, .6]}, + {score:plugins.pagespeed.metrics.firstContentfulPaint/1000, suffix:"s", threshold:[2.336, 4]}, + {score:plugins.pagespeed.metrics.largestContentfulPaint/1000, suffix:"s", threshold:[2.5, 4]}, + {score:+plugins.pagespeed.metrics.cumulativeLayoutShift, threshold:[.1, .25]} + ]) { %> +
+
+ <% if (!Number.isNaN(score)) { %> + <%= score.toFixed(2).replace(/[.]0+$/, "") %> <%= suffix %> + <% } else { %> + N/A <% } %>
- <% previous = value } } %> -
-
-
-

New stargazers per day

-
- <% { let previous = true; for (const [date, value] of Object.entries(plugins.stargazers.increments.dates)) { const p = value/plugins.stargazers.increments.max; const [y, m, d] = date.split("-").map(Number) %> -
- <%= value != 0 ? value : "" %> -
- <%= d %> - <% if ((previous === null)||(d === 1)) { %> -
<%= plugins.stargazers.months[m] %>
- <% } %> -
- <% previous = value } } %> -
-
-
+ <% if (Number.isNaN(score)) { %> + + <% } else if (score <= threshold[0]) { %> + + <% } else if (score <= threshold[1]) { %> + + <% } else { %> + + <% } %> +
+ <% } %> +
+
+ <% } %> + <% if (plugins.pagespeed.screenshot) { %> +
+
+ +
+
+ <% } %> <% } %> -
+ <% } %> + + <% if (plugins.stargazers) { %> +
+

+ + Stargazers over the last two weeks +

+ <% if (plugins.stargazers.error) { %> +
+ + <%= plugins.stargazers.error.message %> +
+ <% } else { %> +
+
+

Total stargazers

+
+ <% { let previous = null; for (const [date, value] of Object.entries(plugins.stargazers.total.dates)) { const p = 0.05+0.95*(value-plugins.stargazers.total.min)/(plugins.stargazers.total.max-plugins.stargazers.total.min); const [y, m, d] = date.split("-").map(Number) %> +
+ <%= (value-(previous ?? 0)) ? value : "" %> +
+ <%= d %> + <% if ((previous === null)||(d === 1)) { %> +
<%= plugins.stargazers.months[m] %>
+ <% } %> +
+ <% previous = value } } %> +
+
+
+

New stargazers per day

+
+ <% { let previous = true; for (const [date, value] of Object.entries(plugins.stargazers.increments.dates)) { const p = value/plugins.stargazers.increments.max; const [y, m, d] = date.split("-").map(Number) %> +
+ <%= value != 0 ? value : "" %> +
+ <%= d %> + <% if ((previous === null)||(d === 1)) { %> +
<%= plugins.stargazers.months[m] %>
+ <% } %> +
+ <% previous = value } } %> +
+
+
+ <% } %> +
+ <% } %> + <% } %> <% if (base.metadata) { %> diff --git a/source/templates/repository/template.mjs b/source/templates/repository/template.mjs index 98ffe8b7..cbee549e 100644 --- a/source/templates/repository/template.mjs +++ b/source/templates/repository/template.mjs @@ -30,9 +30,10 @@ } console.debug(`metrics/compute/${login}/${repo} > ${commits.length} commits loaded`) - //Override creation date and disk usage + //Override creation date, disk usage and website url data.user.createdAt = repository.createdAt data.user.repositories.totalDiskUsage = repository.diskUsage + data.user.websiteUrl = repository.homepageUrl //Override contributions calendar const days = 14 diff --git a/tests/metrics.test.js b/tests/metrics.test.js index 4c3b37de..b4cfc80c 100644 --- a/tests/metrics.test.js +++ b/tests/metrics.test.js @@ -86,24 +86,24 @@ }], ["PageSpeed plugin (default)", { plugin_pagespeed:true, - }, {skip:["repository"]}], + }], ["PageSpeed plugin (different url)", { plugin_pagespeed:true, plugin_pagespeed_url:"github.com", - }, {skip:["repository"]}], + }], ["PageSpeed plugin (detailed)", { plugin_pagespeed:true, plugin_pagespeed_detailed:true, - }, {skip:["repository"]}], + }], ["PageSpeed plugin (screenshot)", { plugin_pagespeed:true, plugin_pagespeed_screenshot:true, - }, {skip:["repository"]}], + }], ["PageSpeed plugin (complete)", { plugin_pagespeed:true, plugin_pagespeed_detailed:true, plugin_pagespeed_screenshot:true, - }, {skip:["repository"]}], + }], ["Isocalendar plugin (default)", { plugin_isocalendar: true, }, {skip:["terminal", "repository"]}], @@ -129,20 +129,20 @@ }, {skip:["terminal", "repository"]}], ["Language plugin (default)", { plugin_languages:true, - }, {skip:["repository"]}], + }], ["Language plugin (ignored languages)", { plugin_languages:true, plugin_languages_ignored:"html, css, dockerfile", - }, {skip:["repository"]}], + }], ["Language plugin (skipped repositories)", { plugin_languages:true, plugin_languages_skipped:"metrics", - }, {skip:["repository"]}], + }], ["Language plugin (complete)", { plugin_languages:true, plugin_languages_ignored:"html, css, dockerfile", plugin_languages_skipped:"metrics", - }, {skip:["repository"]}], + }], ["Follow-up plugin (default)", { plugin_followup:true, }], @@ -241,20 +241,20 @@ plugin_activity_limit:100, plugin_activity_days:14, plugin_activity_filter:"all", - }, {skip:["terminal"]}], + }, {skip:["terminal", "repository"]}], ["Activity plugin (filtered)", { plugin_activity:true, plugin_activity_filter:"pr, issue", - }, {skip:["terminal"]}], + }, {skip:["terminal", "repository"]}], ["Stars plugin (default)", { plugin_stars:true, - }, {skip:["terminal"]}], + }, {skip:["terminal", "repository"]}], ["Stargazers plugin (default)", { plugin_stargazers:true, }, {skip:["terminal"]}], ["Gists plugin (default)", { plugin_gists:true, - }, {skip:["terminal"]}], + }, {skip:["terminal", "repository"]}], ] //Tests run