Projects plugin : Add new option plugin_projects_descriptions (#75)

This commit is contained in:
Simon Lecoq
2021-01-23 14:43:33 +01:00
committed by GitHub
parent 5e0ee81395
commit c9961e88fd
9 changed files with 48 additions and 6 deletions

View File

@@ -210,6 +210,8 @@
info(`Projects ${option}`, q[`projects.${option}`] = input.string(`plugin_projects_${option}`))
for (const option of ["limit"])
info(`Projects ${option}`, q[`projects.${option}`] = input.number(`plugin_projects_${option}`))
for (const option of ["descriptions"])
info(`Projects ${option}`, q[`projects.${option}`] = input.bool(`plugin_projects_${option}`))
}
//Tweets
if (plugins.tweets.enabled) {

View File

@@ -210,7 +210,7 @@
}
//Gists query
if (/^query Gists /.test(query)) {
console.debug(`metrics/compute/mocks > mocking graphql api result > Projects`)
console.debug(`metrics/compute/mocks > mocking graphql api result > Gists`)
return /after: "MOCKED_CURSOR"/m.test(query) ? ({
user:{
gists:{
@@ -258,6 +258,7 @@
{
name:"User-owned project",
updatedAt:`${faker.date.recent()}`,
body:faker.lorem.paragraph(),
progress:{
doneCount:faker.random.number(10),
inProgressCount:faker.random.number(10),
@@ -279,6 +280,7 @@
project:{
name:"Repository project example",
updatedAt:`${faker.date.recent()}`,
body:faker.lorem.paragraph(),
progress:{
doneCount:faker.random.number(10),
inProgressCount:faker.random.number(10),

View File

@@ -6,7 +6,7 @@
if ((!enabled)||(!q.projects))
return null
//Parameters override
let {"projects.limit":limit = 4, "projects.repositories":repositories = ""} = q
let {"projects.limit":limit = 4, "projects.repositories":repositories = "", "projects.descriptions":descriptions = false} = q
//Repositories projects
repositories = decodeURIComponent(repositories ?? "").split(",").map(repository => repository.trim()).filter(repository => /[-\w]+[/][-\w]+[/]projects[/]\d+/.test(repository)) ?? []
//Limit
@@ -41,13 +41,13 @@
//Format progress
const {enabled, todoCount:todo, inProgressCount:doing, doneCount:done} = project.progress
//Append
list.push({name:project.name, updated, progress:{enabled, todo, doing, done, total:todo+doing+done}})
list.push({name:project.name, updated, description:project.body, progress:{enabled, todo, doing, done, total:todo+doing+done}})
}
//Limit
console.debug(`metrics/compute/${login}/plugins > projects > keeping only ${limit} projects`)
list.splice(limit)
//Results
return {list, totalCount:projects.totalCount}
return {list, totalCount:projects.totalCount, descriptions}
}
//Handle errors
catch (error) {

View File

@@ -4,6 +4,7 @@ query Projects {
totalCount
nodes {
name
body
updatedAt
progress {
doneCount

View File

@@ -3,6 +3,7 @@ query RepositoryProject {
repository(name: "$repository") {
project(number: $id) {
name
body
updatedAt
progress {
doneCount

View File

@@ -13,8 +13,8 @@
</div>
</section>
<% } else { %>
<section>
<% for (const {name, updated, progress} of plugins.projects.list) { %>
<section class="project">
<% for (const {name, updated, progress, description = ""} of plugins.projects.list) { %>
<div class="row fill-width">
<section>
<div class="field">
@@ -23,6 +23,15 @@
</div>
</section>
</div>
<% if (plugins.projects.descriptions) { %>
<div class="row fill-width">
<section>
<div class="field description">
<%= description %>
</div>
</section>
</div>
<% } %>
<div class="row">
<section>
<div class="field">

View File

@@ -511,6 +511,22 @@
margin: 0 2px;
}
/* Projects */
.project .description {
overflow: hidden;
text-overflow: ellipsis;
display: block;
width: 420px;
margin-left: 37px;
max-height: 38px;
font-size: 12px;
white-space: normal;
/* May not work in all browsers */
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
/* Fade animation */
.af {
opacity: 0;