new reports
This commit is contained in:
Родитель
5f6bcf2d92
Коммит
00b8746963
11
lib/issue.js
11
lib/issue.js
|
@ -19,7 +19,8 @@ class Issue {
|
|||
|
||||
this.commentsAfterClosure = this.getCommentsAfterClosure()
|
||||
this.commentsAfterClosureCount = this.commentsAfterClosure.length
|
||||
this.sentimentScore = this.getSentimentScore()
|
||||
this.sentimentScore = this.getSentimentScore(this.comments)
|
||||
this.postClosureSentimentScore = this.getSentimentScore(this.commentsAfterClosure)
|
||||
this.positiveWords = this.getPositiveWords().join(', ')
|
||||
this.negativeWords = this.getNegativeWords().join(', ')
|
||||
return this
|
||||
|
@ -34,16 +35,16 @@ class Issue {
|
|||
})
|
||||
}
|
||||
|
||||
getSentimentScore () {
|
||||
if (!this.comments.length) return 0
|
||||
getSentimentScore (comments) {
|
||||
if (!comments || !comments.length) return 0
|
||||
|
||||
const total = this.comments
|
||||
const total = comments
|
||||
.map(comment => {
|
||||
comment.sentiment = sentiment(comment.body)
|
||||
return comment.sentiment.score
|
||||
})
|
||||
.reduce((a, b) => {return a + b}, 0)
|
||||
return Math.round(total / this.comments.length)
|
||||
return Math.round(total / comments.length)
|
||||
}
|
||||
|
||||
getPositiveWords () {
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"name": "electron-electron-issues",
|
||||
"name": "electron-issues",
|
||||
"version": "1.0.0",
|
||||
"description": "An experiment to better understand the issues filed on electron/electron",
|
||||
"main": "index.js",
|
||||
"repository": "https://github.com/electron/electron-electron-issues",
|
||||
"repository": "https://github.com/electron/electron-issues",
|
||||
"author": "zeke",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
|
33
readme.md
33
readme.md
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
71
render.js
71
render.js
|
@ -2,7 +2,7 @@ const issues = require('.')
|
|||
const tableify = require('tableify')
|
||||
// const {pick} = require('lodash')
|
||||
const {titleCase} = require('change-case')
|
||||
const MAX = 20
|
||||
const MAX = 30
|
||||
|
||||
let datasets = {
|
||||
closed_issues_with_comments_after_closure: {
|
||||
|
@ -21,30 +21,11 @@ let datasets = {
|
|||
.value()
|
||||
},
|
||||
|
||||
open_issues_with_high_sentiment_score: {
|
||||
closed_issues_with_low_sentiment_score_after_closure: {
|
||||
data: issues
|
||||
.filter('open')
|
||||
.filter(issue => issue.commentCount > 3)
|
||||
.sortBy('sentimentScore')
|
||||
.reverse()
|
||||
.slice(0, MAX)
|
||||
.map(issue => {
|
||||
return {
|
||||
'#': issue.linkedNumber,
|
||||
title: issue.linkedTitle,
|
||||
words: issue.positiveWords,
|
||||
comments: issue.commentCount,
|
||||
sentiment: issue.sentimentScore
|
||||
}
|
||||
})
|
||||
.value()
|
||||
},
|
||||
|
||||
open_issues_with_low_sentiment_score: {
|
||||
data: issues
|
||||
.filter('open')
|
||||
.filter(issue => issue.commentCount > 3)
|
||||
.sortBy('sentimentScore')
|
||||
.filter('closed')
|
||||
.filter(issue => issue.commentCount > 2)
|
||||
.sortBy('postClosureSentimentScore')
|
||||
.slice(0, MAX)
|
||||
.map(issue => {
|
||||
return {
|
||||
|
@ -52,7 +33,7 @@ let datasets = {
|
|||
title: issue.linkedTitle,
|
||||
words: issue.negativeWords,
|
||||
comments: issue.commentCount,
|
||||
sentiment: issue.sentimentScore
|
||||
sentiment: issue.postClosureSentimentScore
|
||||
}
|
||||
})
|
||||
.value()
|
||||
|
@ -94,8 +75,7 @@ let datasets = {
|
|||
})
|
||||
.value()
|
||||
},
|
||||
|
||||
|
||||
|
||||
oldest_open_issues: {
|
||||
data: issues
|
||||
.filter('open')
|
||||
|
@ -141,6 +121,43 @@ let datasets = {
|
|||
}
|
||||
})
|
||||
.value()
|
||||
},
|
||||
|
||||
open_issues_with_high_sentiment_score: {
|
||||
data: issues
|
||||
.filter('open')
|
||||
.filter(issue => issue.commentCount > 3)
|
||||
.sortBy('sentimentScore')
|
||||
.reverse()
|
||||
.slice(0, MAX)
|
||||
.map(issue => {
|
||||
return {
|
||||
'#': issue.linkedNumber,
|
||||
title: issue.linkedTitle,
|
||||
words: issue.positiveWords,
|
||||
comments: issue.commentCount,
|
||||
sentiment: issue.sentimentScore
|
||||
}
|
||||
})
|
||||
.value()
|
||||
},
|
||||
|
||||
open_issues_with_low_sentiment_score: {
|
||||
data: issues
|
||||
.filter('open')
|
||||
.filter(issue => issue.commentCount > 3)
|
||||
.sortBy('sentimentScore')
|
||||
.slice(0, MAX)
|
||||
.map(issue => {
|
||||
return {
|
||||
'#': issue.linkedNumber,
|
||||
title: issue.linkedTitle,
|
||||
words: issue.negativeWords,
|
||||
comments: issue.commentCount,
|
||||
sentiment: issue.sentimentScore
|
||||
}
|
||||
})
|
||||
.value()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче