[ENH] Add duration in Charge table

- Add 2 new columns duration (string + min) in Charge tab
- Data calculated on the fly to display in the table (No fields in DB)
This commit is contained in:
Mikado8231
2023-11-25 13:06:45 +01:00
committed by Florian BEZANNIER
parent d9799726a5
commit 26df9f35a9
3 changed files with 26 additions and 4 deletions
@@ -20,10 +20,10 @@ class Charging:
@staticmethod
def get_chargings() -> List[dict]:
conn = Database.get_db()
res = conn.execute("select * from battery ORDER BY start_at").fetchall()
conn.close()
return list(map(dict, res))
charge_db = Database.get_all_charge()
charge_list = list(map(dict, charge_db))
Charging._calculated_fields(charge_list)
return charge_list
@staticmethod
def get_battery_curve(conn, charge, car) -> List[BatteryChargeCurve]:
@@ -97,3 +97,15 @@ class Charging:
Charging.update_chargings(conn, last_charge, car)
conn.commit()
conn.close()
@staticmethod
def _calculated_fields(charge_list: list):
for c in charge_list:
if c.get("stop_at") and c.get("start_at"):
c.update(
{
"duration_min": (c.get("stop_at") - c.get("start_at")).seconds
/ 60,
"duration_str": str((c.get("stop_at") - c.get("start_at"))),
}
)
@@ -321,6 +321,13 @@ class Database:
charges.append(Charge(**dict_key_to_lower_case(**row)))
return charges
@staticmethod
def get_all_charge() -> List[Charge]:
conn = Database.get_db()
res = conn.execute("select * from battery ORDER BY start_at").fetchall()
conn.close()
return res
@staticmethod
def update_charge(charge: Charge):
# we don't need to update mileage, since it should be inserted at beginning of charge,
+3
View File
@@ -139,6 +139,9 @@ def get_figures(car: Car):
sort_by=[{'column_id': 'start_at_str', 'direction': 'desc'}],
columns=[{'id': 'start_at_str', 'name': 'start at', 'type': 'datetime'},
{'id': 'stop_at_str', 'name': 'stop at', 'type': 'datetime'},
{'id': 'duration_str', 'name': 'duration', 'type': 'text'},
{'id': 'duration_min', 'name': 'duration (min)', 'type': 'numeric',
'format': deepcopy(nb_format).symbol_suffix(" min").precision(0)},
{'id': 'start_level', 'name': 'start level', 'type': 'numeric'},
{'id': 'end_level', 'name': 'end level', 'type': 'numeric'},
{'id': 'co2', 'name': 'CO2', 'type': 'numeric',