Skip to content

Commit f6265b3

Browse files
committed
provider_dashboard_fix: Modified ProviderDashboard Component and fixed charts
1 parent db32d61 commit f6265b3

File tree

1 file changed

+70
-26
lines changed

1 file changed

+70
-26
lines changed

amp-client/src/Pages/ProviderPages/ProviderDashboard/ProviderDashboard.jsx

Lines changed: 70 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)