@@ -2,7 +2,7 @@ import { IssuesData } from "../components/issues/IssuesList";
22import { Settings } from "../provider/SettingsProvider" ;
33import { TIssue , TIssuesPriority , TReference , TVersion } from "../types/redmine" ;
44
5- type GroupType = "active" | "paused" | " pinned" | "version" | "no-version" ;
5+ type GroupType = "pinned" | "version" | "no-version" ;
66
77type IssueGroup = {
88 type : GroupType ;
@@ -11,7 +11,8 @@ type IssueGroup = {
1111} ;
1212
1313type GroupedIssues = {
14- project : TReference ;
14+ type : string ;
15+ project ?: TReference ;
1516 versions : TVersion [ ] ;
1617 groups : {
1718 type : GroupType ;
@@ -21,14 +22,11 @@ type GroupedIssues = {
2122} [ ] ;
2223
2324type GroupedIssuesHelper = Record <
24- number ,
25+ number | string ,
2526 {
27+ type : string ;
2628 // The project reference
27- project : TReference ;
28- // Pinned issues
29- activeIssues : TIssue [ ] ;
30- // Pinned issues
31- pausedIssues : TIssue [ ] ;
29+ project ?: TReference ;
3230 // Pinned issues
3331 pinnedIssues : TIssue [ ] ;
3432 // All versions of project
@@ -76,30 +74,49 @@ export const getSortedIssues = (issues: TIssue[], issuePriorities: TIssuesPriori
7674 */
7775export const getGroupedIssues = ( issues : TIssue [ ] , projectVersions : Record < number , TVersion [ ] > , issuesData : IssuesData , settings : Settings ) : GroupedIssues => {
7876 const grouped = issues . reduce ( ( result : GroupedIssuesHelper , issue ) => {
79- if ( ! ( issue . project . id in result ) ) {
80- result [ issue . project . id ] = {
81- project : issue . project ,
82- pinnedIssues : [ ] ,
83- activeIssues : [ ] ,
84- pausedIssues : [ ] ,
85- versions : { } ,
86- issues : [ ] ,
87- sort : Object . keys ( result ) . length ,
88- } ;
89- }
90-
9177 if ( settings . style . pinTrackedIssues ) {
9278 if ( issuesData [ issue . id ] ?. active ) {
93- result [ issue . project . id ] . activeIssues . push ( issue ) ;
79+ if ( ! ( "active" in result ) ) {
80+ result [ "active" ] = {
81+ type : "active" ,
82+ pinnedIssues : [ ] ,
83+ versions : { } ,
84+ issues : [ ] ,
85+ sort : - 2 ,
86+ } ;
87+ }
88+
89+ result [ "active" ] . issues . push ( issue ) ;
9490 return result ;
9591 }
9692
9793 if ( issuesData [ issue . id ] ?. time ) {
98- result [ issue . project . id ] . pausedIssues . push ( issue ) ;
94+ if ( ! ( "paused" in result ) ) {
95+ result [ "paused" ] = {
96+ type : "paused" ,
97+ pinnedIssues : [ ] ,
98+ versions : { } ,
99+ issues : [ ] ,
100+ sort : - 1 ,
101+ } ;
102+ }
103+
104+ result [ "paused" ] . issues . push ( issue ) ;
99105 return result ;
100106 }
101107 }
102108
109+ if ( ! ( issue . project . id in result ) ) {
110+ result [ issue . project . id ] = {
111+ type : issue . project . id . toString ( ) ,
112+ project : issue . project ,
113+ pinnedIssues : [ ] ,
114+ versions : { } ,
115+ issues : [ ] ,
116+ sort : Object . keys ( result ) . length ,
117+ } ;
118+ }
119+
103120 if ( issuesData [ issue . id ] ?. pinned ) {
104121 result [ issue . project . id ] . pinnedIssues . push ( issue ) ;
105122 return result ;
@@ -132,26 +149,11 @@ export const getGroupedIssues = (issues: TIssue[], projectVersions: Record<numbe
132149
133150 return Object . values ( grouped )
134151 . sort ( ( a , b ) => a . sort - b . sort )
135- . map ( ( { project, activeIssues, pausedIssues, pinnedIssues, versions, issues } ) => ( {
152+ . map ( ( { type, project, pinnedIssues, versions, issues } ) => ( {
153+ type,
136154 project : project ,
137- versions : projectVersions [ project . id ] ?? [ ] ,
155+ versions : ( project ? projectVersions [ project . id ] : undefined ) ?? [ ] ,
138156 groups : [
139- ...( activeIssues . length > 0
140- ? [
141- {
142- type : "active" ,
143- issues : activeIssues ,
144- } satisfies IssueGroup ,
145- ]
146- : [ ] ) ,
147- ...( pausedIssues . length > 0
148- ? [
149- {
150- type : "paused" ,
151- issues : pausedIssues ,
152- } satisfies IssueGroup ,
153- ]
154- : [ ] ) ,
155157 ...( pinnedIssues . length > 0
156158 ? [
157159 {
0 commit comments