@@ -9,14 +9,18 @@ import Collapsible from "./Collapsable";
9
9
import Loading from "./Loading" ;
10
10
import { ComparatorDiff } from "./ComparatorDiff" ;
11
11
import { ScoreElement , ConsolidatedScoreElement } from "../types" ;
12
+ import { getRefinedChecks } from "../utils/comparator/getRefinedChecks" ;
13
+ import { areEqualElements } from "../utils/comparator/areEqualElements" ;
12
14
13
15
import "../styles/ProjectDetails.css" ;
14
16
15
17
function ProjectComparator ( ) {
16
18
const params = useParams ( ) ;
17
19
const { platform, org, repo, prevCommitHash, currentCommitHash } = params ;
18
20
19
- const [ state , setState ] = useState ( [ ] ) ;
21
+ const [ consolidatedData , setConsolidatedData ] = useState <
22
+ ConsolidatedScoreElement [ ]
23
+ > ( [ ] ) ;
20
24
21
25
const prevCommitQuery = useQuery ( {
22
26
queryKey : [ "prevCommit" ] ,
@@ -54,40 +58,33 @@ function ProjectComparator() {
54
58
if ( ! previousData ?. checks || ! previousData ?. score ) {
55
59
return ;
56
60
}
57
- consolidatedData = currentData ?. checks ?. map (
58
- ( e1 : ScoreElement , index : number ) => {
59
- if (
60
- JSON . stringify ( e1 . details ) !==
61
- JSON . stringify ( previousData ?. checks [ index ] . details ) ||
62
- JSON . stringify ( e1 . reason ) !==
63
- JSON . stringify ( previousData ?. checks [ index ] . reason )
64
- ) {
65
- return {
66
- areEqual : false ,
67
- name : previousData . checks [ index ] . name ,
68
- details : e1 . details ,
69
- reason : e1 . reason ,
70
- score : e1 . score ,
71
- short : e1 . documentation . short ,
72
- url : e1 . documentation . url ,
73
- prevDetails : previousData . checks [ index ] . details ,
74
- prevReason : previousData . checks [ index ] . reason ,
75
- prevScore : previousData . checks [ index ] . score ,
76
- } ;
77
- } else {
78
- return {
79
- areEqual : true ,
80
- name : e1 . name ,
81
- details : e1 . details ,
82
- reason : e1 . reason ,
83
- score : e1 . score ,
84
- short : e1 . documentation . short ,
85
- url : e1 . documentation . url ,
86
- } ;
87
- }
88
- } ,
61
+
62
+ const { common } = getRefinedChecks (
63
+ previousData ?. checks ,
64
+ currentData ?. checks ,
89
65
) ;
90
- setState ( consolidatedData ) ;
66
+
67
+ consolidatedData = common . map ( ( name : string ) => {
68
+ const previousElement = previousData ?. checks ?. filter (
69
+ ( el : ScoreElement ) => el . name === name ,
70
+ ) [ 0 ] ;
71
+ const currentElement = currentData ?. checks ?. filter (
72
+ ( el : ScoreElement ) => el . name === name ,
73
+ ) [ 0 ] ;
74
+ return {
75
+ areEqual : areEqualElements ( currentElement , previousElement ) ,
76
+ name : previousElement . name ,
77
+ details : currentElement . details ,
78
+ reason : currentElement . reason ,
79
+ score : currentElement . score ,
80
+ short : currentElement . documentation . short ,
81
+ url : currentElement . documentation . url ,
82
+ prevDetails : previousElement . details ,
83
+ prevReason : previousElement . reason ,
84
+ prevScore : previousElement . score ,
85
+ } ;
86
+ } ) ;
87
+ setConsolidatedData ( consolidatedData ) ;
91
88
} ;
92
89
areEqualDetails ( ) ;
93
90
} , [ currentData , previousData ] ) ;
@@ -140,8 +137,8 @@ function ProjectComparator() {
140
137
</ a >
141
138
</ p >
142
139
< hr />
143
- { Array . isArray ( state ) &&
144
- state . map ( ( element :ConsolidatedScoreElement ) => (
140
+ { Array . isArray ( consolidatedData ) &&
141
+ consolidatedData . map ( ( element : ConsolidatedScoreElement ) => (
145
142
< >
146
143
< div key = { element . name } className = "card__wrapper" >
147
144
< div data-testid = { element . name } className = "heading__wrapper" >
@@ -157,10 +154,8 @@ function ProjectComparator() {
157
154
See documentation
158
155
</ a >
159
156
</ p >
160
- { ( element . prevDetails || element . prevReason ) && (
161
- < h4 > Additional details / variations</ h4 >
162
- ) }
163
- { element . prevReason && element . reason ? (
157
+ { ! element . areEqual && < h4 > Additional details / variations</ h4 > }
158
+ { ! element . areEqual ? (
164
159
< p >
165
160
Reasoning:{ " " }
166
161
< ComparatorDiff
0 commit comments