@@ -126,26 +126,25 @@ export const genListChange = <T extends DisplayableObejct>(
126126 defaultValue : string ,
127127 originalValues : T [ ] ,
128128 newValues : T [ ] ,
129- comparator : ( a : T , b : T ) => boolean
129+ comparator : ( a : T | undefined , b : T | undefined ) => boolean
130130) : ComparableLine => {
131- const isOriginalLarger = originalValues . length > newValues . length ;
132131 return {
133132 original : {
134133 key,
135134 changed : false ,
136- value : ( isOriginalLarger ? newValues : originalValues ) . map ( ( _ , i ) => ( {
135+ value : originalValues . map ( ( db , i ) => ( {
137136 key,
138- changed : comparator ( originalValues [ i ] , newValues [ i ] ) ,
139- value : originalValues [ i ] . value ?? defaultValue
137+ changed : comparator ( db , newValues [ i ] ) ,
138+ value : db . value ?? defaultValue
140139 } ) )
141140 } ,
142141 new : {
143142 key,
144143 changed : false ,
145- value : ( isOriginalLarger ? newValues : originalValues ) . map ( ( _ , i ) => ( {
144+ value : newValues . map ( ( db , i ) => ( {
146145 key,
147- changed : comparator ( originalValues [ i ] , newValues [ i ] ) ,
148- value : newValues [ i ] . value ?? defaultValue
146+ changed : comparator ( originalValues [ i ] , db ) ,
147+ value : db . value ?? defaultValue
149148 } ) )
150149 }
151150 } ;
@@ -160,9 +159,6 @@ export const getWbsChanges = (
160159 const namesChanged = originalElement ?. name !== proposedChanges ?. name ;
161160 lines . push ( genChange ( 'Title' , namesChanged , originalElement ?. name ?? '' , proposedChanges ?. name ?? '' ) ) ;
162161
163- const statusChanged = originalElement ?. status !== proposedChanges ?. status ;
164- lines . push ( genChange ( 'Status' , statusChanged , originalElement ?. status ?? '' , proposedChanges ?. status ?? '' ) ) ;
165-
166162 const leadChanged = originalElement ?. lead ?. userId !== proposedChanges ?. lead ?. userId ;
167163 lines . push ( genChange ( 'Lead' , leadChanged , fullNamePipe ( originalElement ?. lead ) , fullNamePipe ( proposedChanges ?. lead ) ) ) ;
168164
@@ -175,19 +171,27 @@ export const getWbsChanges = (
175171 genListChange (
176172 'Links' ,
177173 '' ,
178- originalElement ?. links . map ( ( link ) => ( { ...link , value : link . url } ) ) ?? [ ] ,
179- proposedChanges ?. links . map ( ( link ) => ( { ...link , value : link . url } ) ) ?? [ ] ,
180- ( a , b ) => a . linkId === b . linkId
174+ ( originalElement ?. links . map ( ( link ) => ( { ...link , value : link . linkType . name + ' - ' + link . url } ) ) ?? [ ] ) . sort (
175+ ( a , b ) => a . value . localeCompare ( b . value )
176+ ) ,
177+ ( proposedChanges ?. links . map ( ( link ) => ( { ...link , value : link . linkType . name + ' - ' + link . url } ) ) ?? [ ] ) . sort (
178+ ( a , b ) => a . value . localeCompare ( b . value )
179+ ) ,
180+ ( a , b ) => a ?. url !== b ?. url || a ?. linkType . name !== b ?. linkType . name
181181 )
182182 ) ;
183183
184184 lines . push (
185185 genListChange (
186186 'Description Bullets' ,
187187 '' ,
188- originalElement ?. descriptionBullets . map ( ( db ) => ( { ...db , value : db . detail } ) ) ?? [ ] ,
189- proposedChanges ?. descriptionBullets . map ( ( db ) => ( { ...db , value : db . detail } ) ) ?? [ ] ,
190- ( a , b ) => a . id === b . id
188+ ( originalElement ?. descriptionBullets . map ( ( db ) => ( { ...db , value : db . type + ' - ' + db . detail } ) ) ?? [ ] ) . sort ( ( a , b ) =>
189+ a . value . localeCompare ( b . value )
190+ ) ,
191+ ( proposedChanges ?. descriptionBullets . map ( ( db ) => ( { ...db , value : db . type + ' - ' + db . detail } ) ) ?? [ ] ) . sort ( ( a , b ) =>
192+ a . value . localeCompare ( b . value )
193+ ) ,
194+ ( a , b ) => a ?. value !== b ?. value
191195 )
192196 ) ;
193197
@@ -222,9 +226,13 @@ export const getChangesForProject = (
222226 genListChange (
223227 'Teams' ,
224228 '' ,
225- originalProject . teams . map ( ( team ) => ( { ...team , value : team . teamName } ) ) ,
226- proposedChanges . teams . map ( ( team ) => ( { ...team , value : team . teamName } ) ) ,
227- ( a , b ) => a . teamId === b . teamId
229+ originalProject . teams
230+ . map ( ( team ) => ( { ...team , value : team . teamName } ) )
231+ . sort ( ( a , b ) => a . teamName . localeCompare ( b . teamName ) ) ,
232+ proposedChanges . teams
233+ . map ( ( team ) => ( { ...team , value : team . teamName } ) )
234+ . sort ( ( a , b ) => a . teamName . localeCompare ( b . teamName ) ) ,
235+ ( a , b ) => a ?. teamId !== b ?. teamId
228236 )
229237 ) ;
230238
@@ -273,6 +281,9 @@ export const getChangesForWorkPackage = (
273281 )
274282 ) ;
275283
284+ const statusChanged = originalWorkPackage ?. status !== proposedChanges ?. status ;
285+ lines . push ( genChange ( 'Status' , statusChanged , originalWorkPackage ?. status ?? '' , proposedChanges ?. status ?? '' ) ) ;
286+
276287 let proposedChangesEndDate ;
277288
278289 if ( proposedChanges ) {
@@ -297,7 +308,7 @@ export const getChangesForWorkPackage = (
297308 '' ,
298309 originalWorkPackage ?. blockedBy . map ( ( wbsNum ) => ( { ...wbsNum , value : wbsPipe ( wbsNum ) } ) ) ?? [ ] ,
299310 proposedChanges ?. blockedBy . map ( ( wbsNum ) => ( { ...wbsNum , value : wbsPipe ( wbsNum ) } ) ) ?? [ ] ,
300- ( a , b ) => equalsWbsNumber ( a , b )
311+ ( a , b ) => a !== undefined && b !== undefined && equalsWbsNumber ( a , b )
301312 )
302313 ) ;
303314
0 commit comments