11import { useState , useEffect } from 'react' ;
22import { useSelector , useDispatch } from 'react-redux' ;
33import Select from 'react-select' ;
4- import './ReviewsInsight.css' ;
4+ import styles from './ReviewsInsight.module .css' ;
55import ActionDoneGraph from './ActionDoneGraph' ;
66import PRQualityGraph from './PRQualityGraph' ;
77import { fetchReviewsInsights } from '../../../actions/prAnalytics/reviewsInsightsAction' ;
@@ -12,6 +12,7 @@ function ReviewsInsight() {
1212 const [ selectedTeams , setSelectedTeams ] = useState ( [ ] ) ;
1313 const [ teamData , setTeamData ] = useState ( { } ) ;
1414 const [ qualityData , setQualityData ] = useState ( { } ) ;
15+ const [ dataViewActive , setDataViewActive ] = useState ( false ) ;
1516 const dispatch = useDispatch ( ) ;
1617
1718 const { loading, data, error } = useSelector ( state => state . reviewsInsights ) ;
@@ -93,22 +94,43 @@ function ReviewsInsight() {
9394 ] ;
9495
9596 return (
96- < div className = { `reviews-insight-container ${ darkMode ? 'dark-mode' : '' } ` } >
97- < h1 > PR Reviews Insights</ h1 >
97+ < div
98+ className = { `${ styles . reviewsInsightContainer } ${ darkMode ? styles . darkModeForeground : '' } ${
99+ darkMode ? styles . darkModeBackground : ''
100+ } `}
101+ >
102+ < h1 className = { darkMode ? styles . darkModeForeground : styles . heading } > PR Reviews Insights</ h1 >
98103
99- < div className = "ri-filters" >
100- < div className = "ri-filter-item" >
101- < label htmlFor = "ri-duration-filter" > Duration:</ label >
102- < select id = "ri-duration-filter" value = { duration } onChange = { handleDurationChange } >
104+ < div className = { `${ styles . riFilters } ${ darkMode ? styles . darkModeForeground : '' } ` } >
105+ < div className = { `${ styles . riFilterItem } ${ darkMode ? styles . darkModeForeground : '' } ` } >
106+ < label
107+ htmlFor = "ri-duration-filter"
108+ className = { `${ styles . riFilterItemLabel } ${ darkMode ? styles . darkModeForeground : '' } ` }
109+ >
110+ Duration:
111+ </ label >
112+ < select
113+ id = "ri-duration-filter"
114+ value = { duration }
115+ onChange = { handleDurationChange }
116+ className = { `${ styles . riDurationFilter } ${
117+ darkMode ? styles . riDurationFilterDarkMode : ''
118+ } `}
119+ >
103120 < option value = "Last Week" > Last Week</ option >
104121 < option value = "Last 2 weeks" > Last 2 weeks</ option >
105122 < option value = "Last Month" > Last Month</ option >
106123 < option value = "All Time" > All Time</ option >
107124 </ select >
108125 </ div >
109126
110- < div className = "ri-filter-item" >
111- < label htmlFor = "team-filter" > Team Code:</ label >
127+ < div className = { `${ styles . riFilterItem } ${ darkMode ? styles . darkModeForeground : '' } ` } >
128+ < label
129+ htmlFor = "team-filter"
130+ className = { `${ styles . riFilterItemLabel } ${ darkMode ? styles . darkModeForeground : '' } ` }
131+ >
132+ Team Code:
133+ </ label >
112134 < Select
113135 id = "team-filter"
114136 isMulti
@@ -173,24 +195,58 @@ function ReviewsInsight() {
173195 } }
174196 />
175197 </ div >
198+
199+ < div className = { `${ styles . riFilterItem } ${ darkMode ? styles . darkModeForeground : '' } ` } >
200+ < span className = { styles . riDataviewTitle } > Data View</ span >
201+ < div className = { styles . riToggleWrap } >
202+ < label className = { styles . riSwitch } >
203+ < input
204+ type = "checkbox"
205+ checked = { dataViewActive }
206+ onChange = { ( ) => setDataViewActive ( v => ! v ) }
207+ aria-label = "Toggle data view: Percent vs Number"
208+ className = { styles . riSwitchInput }
209+ />
210+ < span className = { `${ styles . riSlider } ${ darkMode ? styles . riSliderDarkMode : '' } ` } />
211+ </ label >
212+
213+ < span className = { `${ styles . modeLabel } ${ darkMode ? styles . darkModeForeground : '' } ` } >
214+ { dataViewActive ? 'PERCENT' : 'NUMBER' }
215+ </ span >
216+ </ div >
217+ </ div >
176218 </ div >
177219
178- < div className = "ri-selected-teams" >
220+ < div >
179221 { selectedTeams . length === 0 ? (
180- < p > No teams selected</ p >
222+ < p className = { `${ styles . riSelectedTeams } ${ darkMode ? styles . darkModeForeground : '' } ` } >
223+ No teams selected
224+ </ p >
181225 ) : selectedTeams . some ( team => team . value === 'All' ) ? (
182- < p > Selected Teams: All Teams</ p >
226+ < p className = { `${ styles . riSelectedTeams } ${ darkMode ? styles . darkModeForeground : '' } ` } >
227+ Selected Teams: All Teams
228+ </ p >
183229 ) : (
184- < p > Selected Teams: { selectedTeams . map ( team => team . label ) . join ( ', ' ) } </ p >
230+ < p className = { `${ styles . riSelectedTeams } ${ darkMode ? styles . darkModeForeground : '' } ` } >
231+ Selected Teams: { selectedTeams . map ( team => team . label ) . join ( ', ' ) }
232+ </ p >
185233 ) }
186234 </ div >
187235
188- { loading && < div className = "ri-loading" > Loading...</ div > }
189- { error && < div className = "ri-error" > { error } </ div > }
236+ { loading && (
237+ < div className = { `${ styles . riLoading } ${ darkMode ? styles . darkModeForeground : '' } ` } >
238+ Loading...
239+ </ div >
240+ ) }
241+ { error && < div className = { `${ styles . riError } ` } > { error } </ div > }
190242 { ! loading && ! error && (
191- < div className = "ri-graphs" >
243+ < div className = { ` ${ styles . riGraphs } ${ darkMode ? styles . darkModeForeground : '' } ` } >
192244 < ActionDoneGraph selectedTeams = { selectedTeams } teamData = { teamData } />
193- < PRQualityGraph selectedTeams = { selectedTeams } qualityData = { qualityData } />
245+ < PRQualityGraph
246+ selectedTeams = { selectedTeams }
247+ qualityData = { qualityData }
248+ isDataViewActive = { dataViewActive }
249+ />
194250 </ div >
195251 ) }
196252 </ div >
0 commit comments