CEC-4581 Show battery voltage in digital twin (#365)
* CEC-4581 Show battery voltage in digital twin * Fix warning
This commit is contained in:
@@ -55,6 +55,13 @@ exports[`DigitalTwinTab Render 1`] = `
|
|||||||
:
|
:
|
||||||
12000 km
|
12000 km
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>
|
||||||
|
Voltage
|
||||||
|
</b>
|
||||||
|
:
|
||||||
|
12.5 V
|
||||||
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<b>
|
<b>
|
||||||
Max Range
|
Max Range
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ let vehicleState = {
|
|||||||
battery: {
|
battery: {
|
||||||
total_mileage_odometer: 12000,
|
total_mileage_odometer: 12000,
|
||||||
percent: 95,
|
percent: 95,
|
||||||
|
battery_voltage: 12.5,
|
||||||
},
|
},
|
||||||
max_range: {
|
max_range: {
|
||||||
max_miles: 577,
|
max_miles: 577,
|
||||||
|
|||||||
@@ -8,6 +8,11 @@ const UNKNOWN = "unknown";
|
|||||||
const LOCKED = "Locked";
|
const LOCKED = "Locked";
|
||||||
const UNLOCKED = "Unlocked";
|
const UNLOCKED = "Unlocked";
|
||||||
|
|
||||||
|
const appendUnits = (value, units) => {
|
||||||
|
if (value || value === 0) return `${value}${units}`;
|
||||||
|
return UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
const keyValueTemplate = (key, value) => (
|
const keyValueTemplate = (key, value) => (
|
||||||
<p key={key}>
|
<p key={key}>
|
||||||
<b>{key}</b>: {value}
|
<b>{key}</b>: {value}
|
||||||
@@ -37,16 +42,17 @@ const DigitalTwin = (props) => {
|
|||||||
{(battery || max_range) && (
|
{(battery || max_range) && (
|
||||||
<div className={classes.popupSection}>
|
<div className={classes.popupSection}>
|
||||||
<h3>Battery</h3>
|
<h3>Battery</h3>
|
||||||
{keyValueTemplate("Percentage", `${battery?.percent || 0}%`)}
|
{keyValueTemplate("Percentage", appendUnits(battery?.percent || 0, "%"))}
|
||||||
{keyValueTemplate("Total Mileage", `${battery?.total_mileage_odometer} km` || UNKNOWN)}
|
{keyValueTemplate("Total Mileage", appendUnits(battery?.total_mileage_odometer, " km"))}
|
||||||
{keyValueTemplate("Max Range", `${max_range?.max_miles} km` || UNKNOWN)}
|
{keyValueTemplate("Voltage", appendUnits(battery?.battery_voltage, " V"))}
|
||||||
|
{keyValueTemplate("Max Range", appendUnits(max_range?.max_miles, " km"))}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{(vcu0x260 || charging_metrics) && (
|
{(vcu0x260 || charging_metrics) && (
|
||||||
<div className={classes.popupSection}>
|
<div className={classes.popupSection}>
|
||||||
<h3>Charging</h3>
|
<h3>Charging</h3>
|
||||||
{keyValueTemplate("Charge Type", vcu0x260?.charge_type || UNKNOWN)}
|
{keyValueTemplate("Charge Type", vcu0x260?.charge_type || UNKNOWN)}
|
||||||
{keyValueTemplate("Remaining Time", `${charging_metrics?.remaining_charging_time} min` || UNKNOWN)}
|
{keyValueTemplate("Remaining Time", appendUnits(charging_metrics?.remaining_charging_time, " min"))}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{doors && (
|
{doors && (
|
||||||
@@ -95,9 +101,9 @@ const DigitalTwin = (props) => {
|
|||||||
return keyValueTemplate(value[0], "Invalid")
|
return keyValueTemplate(value[0], "Invalid")
|
||||||
}
|
}
|
||||||
if (value[0] === "altitude") {
|
if (value[0] === "altitude") {
|
||||||
return keyValueTemplate(value[0], `${value[1]} m`);
|
return keyValueTemplate(value[0], appendUnits(value[1], " m"));
|
||||||
} else {
|
} else {
|
||||||
return keyValueTemplate(value[0], `${value[1]}°`);
|
return keyValueTemplate(value[0], appendUnits(value[1], "°"));
|
||||||
}
|
}
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
@@ -124,7 +130,7 @@ const DigitalTwin = (props) => {
|
|||||||
)}
|
)}
|
||||||
{vehicle_speed && (
|
{vehicle_speed && (
|
||||||
<div className={classes.popupSection}>
|
<div className={classes.popupSection}>
|
||||||
{keyValueTemplate("Vehicle Speed", `${vehicle_speed.speed} km/h`)}
|
{keyValueTemplate("Vehicle Speed", appendUnits(vehicle_speed?.speed, " km/h"))}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user