@@ -3,7 +3,7 @@ const configController = require('./configController');
3
3
const dayjs = require ( 'dayjs' ) ;
4
4
const path = require ( 'path' ) ;
5
5
6
- exports . getParentIssueColor = async function ( settings , req , issue ) {
6
+ exports . getParentIssueColor = async function ( settings , req , issue , newIssueColorKeys ) {
7
7
if ( issue . fields . parent ) {
8
8
const parentIssue = await jiraAPIController . getIssue ( req , issue . fields . parent . id ) ;
9
9
if ( parentIssue && parentIssue . fields ) {
@@ -13,46 +13,50 @@ exports.getParentIssueColor = async function(settings, req, issue) {
13
13
}
14
14
if ( settings . issueColors [ parentIssue . key . toLowerCase ( ) ] ) {
15
15
return settings . issueColors [ parentIssue . key . toLowerCase ( ) ] ;
16
- }
17
- if ( parentIssue . fields [ configController . loadConfig ( ) . issueColorField ] ) {
18
- const jiraColor = parentIssue . fields [ configController . loadConfig ( ) . issueColorField ] ;
19
- switch ( jiraColor ) {
20
- case 'purple' : return '#8777D9' ;
21
- case 'blue' : return '#2684FF' ;
22
- case 'green' : return '#57D9A3' ;
23
- case 'teal' : return '#00C7E6' ;
24
- case 'yellow' : return '#FFC400' ;
25
- case 'orange' : return '#FF7452' ;
26
- case 'grey' : return '#6B778C' ;
27
- case 'dark_purple' : return '#5243AA' ;
28
- case 'dark_blue' : return '#0052CC' ;
29
- case 'dark_green' : return '#00875A' ;
30
- case 'dark_teal' : return '#00A3BF' ;
31
- case 'dark_yellow' : return '#FF991F' ;
32
- case 'dark_orange' : return '#DE350B' ;
33
- case 'dark_grey' : return '#253858' ;
34
- default : return jiraColor ;
16
+ } else {
17
+ let color = process . env . DEFAULT_ISSUE_COLOR || '#2a75fe' ;
18
+ if ( parentIssue . fields [ settings . issueColorField ] ) {
19
+ const jiraColor = parentIssue . fields [ settings . issueColorField ] ;
20
+ switch ( jiraColor ) {
21
+ case 'purple' : color = '#8777D9' ; break ;
22
+ case 'blue' : color = '#2684FF' ; break ;
23
+ case 'green' : color = '#57D9A3' ; break ;
24
+ case 'teal' : color = '#00C7E6' ; break ;
25
+ case 'yellow' : color = '#FFC400' ; break ;
26
+ case 'orange' : color = '#FF7452' ; break ;
27
+ case 'grey' : color = '#6B778C' ; break ;
28
+ case 'dark_purple' : color = '#5243AA' ; break ;
29
+ case 'dark_blue' : color = '#0052CC' ; break ;
30
+ case 'dark_green' : color = '#00875A' ; break ;
31
+ case 'dark_teal' : color = '#00A3BF' ; break ;
32
+ case 'dark_yellow' : color = '#FF991F' ; break ;
33
+ case 'dark_orange' : color = '#DE350B' ; break ;
34
+ case 'dark_grey' : color = '#253858' ; break ;
35
+ default : color = jiraColor ; break ;
36
+ }
37
+ await configController . accumulateIssueColor ( parentIssue . key , color ) ;
38
+ settings . issueColors [ parentIssue . key . toLowerCase ( ) ] = color ;
39
+ return color ;
35
40
}
41
+
36
42
}
43
+
37
44
}
38
45
}
39
46
return null ;
40
47
}
41
48
42
- exports . determineIssueColor = async function ( req , issue ) {
43
- const settings = configController . loadConfig ( ) ;
49
+ exports . determineIssueColor = async function ( settings , req , issue ) {
44
50
const defaultColor = process . env . DEFAULT_ISSUE_COLOR || '#2a75fe' ;
45
51
46
52
let color = settings . issueColors [ issue . issueKey . toLowerCase ( ) ] ;
47
53
if ( ! color ) {
48
- // get the issue details
49
54
const issueDetails = await jiraAPIController . getIssue ( req , issue . issueId ) ;
50
55
color = await exports . getParentIssueColor ( settings , req , issueDetails ) ;
51
56
if ( ! color && issue . issueType ) {
52
57
const issueTypeLower = issue . issueType . toLowerCase ( ) ;
53
58
color = settings . issueColors [ issueTypeLower ] || defaultColor ;
54
59
}
55
- configController . setSetting ( 'issueColors' , { ...settings . issueColors , [ issue . issueKey . toLowerCase ( ) ] : color } ) ;
56
60
}
57
61
return color ;
58
62
}
@@ -73,8 +77,10 @@ exports.getUsersWorkLogsAsEvent = async function(req, start, end) {
73
77
const worklogs = await getFilteredWorklogs ( req , issue , filterStartTime , filterEndTime ) ;
74
78
return Promise . all ( worklogs ) ;
75
79
} ) ;
76
- const worklogs = await Promise . all ( worklogPromises ) ;
77
- return worklogs . flat ( ) ;
80
+ const worklogs = await Promise . all ( worklogPromises )
81
+ const flatLogs = worklogs . flat ( ) ;
82
+ await configController . saveAccumulatedIssueColors ( ) ;
83
+ return flatLogs ;
78
84
} ) ;
79
85
} ;
80
86
@@ -88,12 +94,13 @@ function extractIssues(issues) {
88
94
} ) ) ;
89
95
}
90
96
91
- function getFilteredWorklogs ( req , issue , filterStartTime , filterEndTime ) {
97
+ async function getFilteredWorklogs ( req , issue , filterStartTime , filterEndTime ) {
98
+ const settings = await configController . loadConfig ( ) ;
92
99
return jiraAPIController . getIssueWorklogs ( req , issue . issueId , filterEndTime . getTime ( ) , filterStartTime . getTime ( ) )
93
100
. then ( result => {
94
101
const worklogs = result . worklogs ;
95
102
const filteredLogs = worklogs . filter ( worklog => filterWorklog ( req , worklog , filterStartTime , filterEndTime ) ) ;
96
- const promises = filteredLogs . map ( worklog => exports . formatWorklog ( req , worklog , issue ) ) ;
103
+ const promises = filteredLogs . map ( worklog => exports . formatWorklog ( settings , req , worklog , issue ) ) ;
97
104
return promises ;
98
105
} ) ;
99
106
}
@@ -111,9 +118,8 @@ function filterWorklog(req, worklog, filterStartTime, filterEndTime) {
111
118
return condition ;
112
119
}
113
120
114
- exports . formatWorklog = async function ( req , worklog , issue ) {
115
- const color = await exports . determineIssueColor ( req , issue ) ;
116
- const settings = configController . loadConfig ( ) ;
121
+ exports . formatWorklog = async function ( settings , req , worklog , issue ) {
122
+ const color = await exports . determineIssueColor ( settings , req , issue ) ;
117
123
const showIssueTypeIcons = settings . showIssueTypeIcons || false ;
118
124
119
125
let title = `<b class="plywood-event-title">${ issue . issueKey } - ${ issue . summary } </b> <span class="comment">${ worklog . comment || '' } </span>` ;
0 commit comments