@@ -102,20 +102,24 @@ const ProviderDashboard = () => {
102102 const totalPowerUsageResponse = await axiosBaseUrl . get (
103103 `/providers/totalPowerUsage/${ userId } `
104104 ) ;
105- setTotalPowerUsage (
106- Array . isArray ( totalPowerUsageResponse ?. data ?. data )
107- ? totalPowerUsageResponse . data . data
108- : [ ]
109- ) ;
105+ const totalPowerUsageArray = Object . entries (
106+ totalPowerUsageResponse . data . data
107+ ) . map ( ( [ date , power ] ) => ( {
108+ timestamp : new Date ( date ) . toISOString ( ) ,
109+ total_power : power ,
110+ } ) ) ;
111+ setTotalPowerUsage ( totalPowerUsageArray ) ;
110112
111113 const averageVoltageResponse = await axiosBaseUrl . get (
112114 `/providers/averageVoltage/${ userId } `
113115 ) ;
114- setAverageVoltage (
115- Array . isArray ( averageVoltageResponse ?. data ?. data )
116- ? averageVoltageResponse . data . data
117- : [ ]
118- ) ;
116+ const averageVoltageArray = Object . entries (
117+ averageVoltageResponse . data . data
118+ ) . map ( ( [ date , voltage ] ) => ( {
119+ timestamp : new Date ( date ) . toISOString ( ) ,
120+ average_voltage : voltage ,
121+ } ) ) ;
122+ setAverageVoltage ( averageVoltageArray ) ;
119123
120124 const usersResponse = await axiosBaseUrl . get (
121125 `/providers/getAllUsers/${ userId } `
@@ -134,9 +138,14 @@ const ProviderDashboard = () => {
134138 const linesResponse = await axiosBaseUrl . get (
135139 `/providers/getAllLines/${ userId } `
136140 ) ;
137- setTotalLines ( usersResponse ?. data ?. data ?. length ) ;
141+ setTotalLines ( linesResponse ?. data ?. data ?. length ) ;
138142 } catch ( err ) {
139- setError ( err . message || "Failed to fetch dashboard data for charts" ) ;
143+ if ( err . code === "ECONNABORTED" ) {
144+ setError ( "Request timed out. Please try again." ) ;
145+ } else {
146+ setError ( err . message || "Failed to fetch dashboard data for charts" ) ;
147+ }
148+ // setError(err.message || "Failed to fetch dashboard data for charts");
140149 console . error ( "Error fetching dashboard data for charts:" , err ) ;
141150 } finally {
142151 setLoading ( false ) ;
@@ -171,6 +180,28 @@ const ProviderDashboard = () => {
171180 const chartOptions = {
172181 responsive : true ,
173182 maintainAspectRatio : true ,
183+ plugins : {
184+ legend : {
185+ position : "bottom" ,
186+ } ,
187+ title : {
188+ display : true ,
189+ text : "Chart" ,
190+ font : {
191+ size : 14 ,
192+ } ,
193+ } ,
194+ } ,
195+ scales : {
196+ y : {
197+ beginAtZero : true ,
198+ } ,
199+ } ,
200+ } ;
201+
202+ const voltageLineChartOptions = {
203+ responsive : true ,
204+ maintainAspectRatio : false ,
174205 plugins : {
175206 legend : {
176207 position : "bottom" ,
@@ -185,6 +216,8 @@ const ProviderDashboard = () => {
185216 scales : {
186217 y : {
187218 beginAtZero : true ,
219+ min : 200 ,
220+ max : 250 ,
188221 } ,
189222 } ,
190223 } ;
@@ -206,6 +239,7 @@ const ProviderDashboard = () => {
206239 scales : {
207240 y : {
208241 beginAtZero : true ,
242+ // min: 100,
209243 } ,
210244 } ,
211245 } ;
@@ -243,7 +277,7 @@ const ProviderDashboard = () => {
243277 {
244278 label : "Frequency" ,
245279 data : voltageDistribution . map ( ( v ) => v [ 1 ] ) ,
246- backgroundColor : "rgba(201, 203, 207 , 0.8)" ,
280+ backgroundColor : "rgba(3, 60, 173 , 0.8)" ,
247281 borderColor : "rgb(201, 203, 207)" ,
248282 borderWidth : 1 ,
249283 } ,
@@ -307,7 +341,9 @@ const ProviderDashboard = () => {
307341 const totalPowerUsageData = {
308342 labels : Array . isArray ( totalPowerUsage )
309343 ? totalPowerUsage . map ( ( item ) =>
310- new Date ( item . timestamp ) . toLocaleDateString ( )
344+ item . timestamp
345+ ? new Date ( item . timestamp ) . toLocaleDateString ( )
346+ : "Invalid"
311347 )
312348 : [ ] ,
313349 datasets : [
@@ -367,7 +403,7 @@ const ProviderDashboard = () => {
367403 < Bar
368404 key = "powerByClientChart"
369405 data = { powerByClientData }
370- options = { chartOptions }
406+ options = { lineChartOptions }
371407 ref = { powerByClientChartRef }
372408 />
373409 ) : (
@@ -382,6 +418,7 @@ const ProviderDashboard = () => {
382418 key = "voltageDistributionChart"
383419 data = { voltageDistributionData }
384420 options = { lineChartOptions }
421+ // options={chartOptions}
385422 ref = { voltageDistributionChartRef }
386423 />
387424 ) : (
@@ -419,11 +456,11 @@ const ProviderDashboard = () => {
419456
420457 < div className = "chart-widget" >
421458 < h3 > Total Power Usage Over Time</ h3 >
422- { totalPowerUsage . length > 0 ? (
459+ { totalPowerUsage !== null && totalPowerUsage !== undefined ? (
423460 < Line
424461 key = "totalPowerUsageChart"
425462 data = { totalPowerUsageData }
426- options = { chartOptions }
463+ options = { lineChartOptions }
427464 ref = { totalPowerUsageChartRef }
428465 />
429466 ) : (
@@ -433,11 +470,12 @@ const ProviderDashboard = () => {
433470
434471 < div className = "chart-widget" >
435472 < h3 > Average Voltage Over Time</ h3 >
436- { averageVoltage . length > 0 ? (
473+ { averageVoltage !== null && averageVoltage !== undefined ? (
437474 < Line
438475 key = "averageVoltageChart"
439476 data = { averageVoltageData }
440- options = { chartOptions }
477+ options = { voltageLineChartOptions }
478+ // options={chartOptions}
441479 ref = { averageVoltageChartRef }
442480 />
443481 ) : (
@@ -461,21 +499,27 @@ const ProviderDashboard = () => {
461499
462500 < div className = "chart-widget all-metrics-widget" >
463501 < h3 > All Metrics</ h3 >
464- { allMetrics . length > 0 ? (
502+ { allMetrics && Object . keys ( allMetrics ) . length > 0 ? (
465503 < table >
466504 < thead >
467505 < tr >
468- < th > Metric</ th >
469- < th > Value</ th >
506+ < th > ID</ th >
507+ < th > Voltage</ th >
508+ < th > Current</ th >
509+ < th > Power</ th >
510+ < th > Energy</ th >
470511 < th > Timestamp</ th >
471512 </ tr >
472513 </ thead >
473514 < tbody >
474515 { allMetrics . map ( ( metric , index ) => (
475- < tr key = { index } >
476- < td > { metric . metric_name } </ td >
477- < td > { metric . metric_value } </ td >
478- < td > { new Date ( metric . timestamp ) . toLocaleString ( ) } </ td >
516+ < tr key = { metric . id } >
517+ < td > { metric . id } </ td >
518+ < td > { metric . voltage } </ td >
519+ < td > { metric . current } </ td >
520+ < td > { metric . power } </ td >
521+ < td > { metric . energy } </ td >
522+ < td > { new Date ( metric . created_at ) . toLocaleString ( ) } </ td >
479523 </ tr >
480524 ) ) }
481525 </ tbody >
0 commit comments