@@ -62,24 +62,54 @@ export default function ExperienceDonutChart() {
6262 setActiveIndex ( null ) ;
6363
6464 try {
65- const randomMultiplier =
66- ( appliedFilters . roles ?. length || 1 ) +
67- ( appliedFilters . startDate ? 1 : 0 ) +
68- ( appliedFilters . endDate ? 1 : 0 ) ;
69-
70- const dummy = EXPERIENCE_LABELS . map ( ( label , idx ) => ( {
71- name : label ,
72- value : secureRandomInt ( 5 , 5 + 50 * randomMultiplier ) , // ✅ secure random
73- color : SEGMENT_COLORS [ idx % SEGMENT_COLORS . length ] ,
74- } ) ) ;
75-
76- const filtered = dummy . filter ( d => d . value > 0 ) ;
77- const totalCount = filtered . reduce ( ( sum , d ) => sum + d . value , 0 ) ;
78-
79- setChartData ( filtered ) ;
80- setTotal ( totalCount ) ;
81- } catch {
82- setError ( 'Failed to load dummy data' ) ;
65+ const token = localStorage . getItem ( 'token' ) ;
66+ if ( ! token ) throw new Error ( 'No token found. Please log in.' ) ;
67+
68+ const url = `${ process . env . REACT_APP_APIENDPOINT } /experience-breakdown` ;
69+ const params = { } ;
70+
71+ if ( filterStartDate && filterEndDate ) {
72+ params . startDate = filterStartDate ;
73+ params . endDate = filterEndDate ;
74+ } else if ( filterRoles && filterRoles . length > 0 ) {
75+ params . roles = filterRoles . join ( ',' ) ;
76+ }
77+
78+ // const response = await axios.get(url, { params });
79+ const response = await axios . get ( url , {
80+ headers : { Authorization : token } ,
81+ params,
82+ } ) ;
83+
84+ const { data } = response ;
85+
86+ if ( ! data || data . length === 0 ) {
87+ setChartData ( null ) ;
88+ setLoading ( false ) ;
89+ return ;
90+ }
91+
92+ const counts = experienceLabels . map ( label => {
93+ const found = data . find ( d => d . experience === label ) ;
94+ return found ? found . count : 0 ;
95+ } ) ;
96+
97+ const totalCount = counts . reduce ( ( a , b ) => a + b , 0 ) ;
98+
99+ const chart = {
100+ labels : experienceLabels ,
101+ datasets : [
102+ {
103+ data : counts ,
104+ backgroundColor : segmentColors ,
105+ hoverOffset : 20 ,
106+ } ,
107+ ] ,
108+ } ;
109+
110+ setChartData ( { chart, totalCount } ) ;
111+ } catch ( err ) {
112+ setError ( err . response ?. data ?. message || err . message || 'Error fetching data.' ) ;
83113 setChartData ( null ) ;
84114 setTotal ( 0 ) ;
85115 } finally {
0 commit comments