feat(plugins/discussions): add plugin_discussions_categories and plugin_discussions_categories_limit support (#751) [skip ci]

This commit is contained in:
Simon Lecoq
2022-01-09 19:53:48 +01:00
committed by GitHub
parent 5907c356f8
commit 2123056288
3 changed files with 18 additions and 4 deletions

View File

@@ -7,8 +7,9 @@
return null
//Load inputs
imports.metadata.plugins.discussions.inputs({data, account, q})
const {categories:_categories, "categories.limit":_categories_limit} = imports.metadata.plugins.discussions.inputs({data, account, q})
const discussions = {categories:{}, upvotes:{discussions:0, comments:0}}
discussions.display = {categories:_categories ? {limit:_categories_limit || Infinity} : null}
//Fetch general statistics
const stats = Object.fromEntries(Object.entries((await graphql(queries.discussions.statistics({login}))).user).map(([key, value]) => [key, value.totalCount]))

View File

@@ -12,3 +12,16 @@ inputs:
description: GitHub discussions metrics
type: boolean
default: no
# Display discussion categories you have taken part in
plugin_discussions_categories:
description: Display discussion categories
type: boolean
default: yes
# Maximum number of categories to display (note that these are sorted desc)
# Set to 0 to disable limitations
plugin_discussions_categories_limit:
description: Number of discussion categories to display
type: number
default: 0

View File

@@ -40,11 +40,11 @@
</div>
</section>
</div>
<% if (Object.keys(plugins.discussions.categories.stats).length) { %>
<% if ((plugins.discussions.display.categories)&&(Object.keys(plugins.discussions.categories.stats).length)) { %>
<div class="row fill-width">
<section>
<div class="field wrap">
<% for (const [category, posts] of Object.entries(plugins.discussions.categories.stats)) { %>
<% for (const [category, posts] of Object.entries(plugins.discussions.categories.stats).slice(0, plugins.discussions.display.categories.limit)) { %>
<div class="label label-flex"><%= category %> <div class="label-right"><%= posts %></div> </div>
<% } %>
</div>