Updated: Removed LIMIT for all refuel records, fixed fuel consumption calculation on dashboard
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 12s

This commit is contained in:
Filip Rojek 2025-02-01 22:56:32 +01:00
parent 652b04bfa1
commit 4576800e27
3 changed files with 42 additions and 26 deletions

View File

@ -12,7 +12,7 @@ class DashboardController extends Controller {
"mileage" => [], "mileage" => [],
"liters" => [] "liters" => []
]; ];
$raw_data = $default_car ? $refuel->latest_data($default_car['id'], 5) : []; $raw_data = $default_car ? $refuel->latest_data($default_car['id'], 0) : [];
foreach($raw_data as $one) { foreach($raw_data as $one) {
array_push($data['date'], date('d. m.', strtotime($one['created_at']))); array_push($data['date'], date('d. m.', strtotime($one['created_at'])));
array_push($data['price'], $one['price_per_liter']); array_push($data['price'], $one['price_per_liter']);

View File

@ -38,15 +38,24 @@ class Refuel {
public function latest_data($vehicle_id, $record_count) { public function latest_data($vehicle_id, $record_count) {
try { try {
$stmt = $this->db->prepare(" $sql = "
SELECT `liters`, `price_per_liter`, `total_price`, `mileage`, `created_at` SELECT `liters`, `price_per_liter`, `total_price`, `mileage`, `created_at`
FROM `refueling_records` FROM `refueling_records`
WHERE `vehicle_id` = ? WHERE `vehicle_id` = ?
ORDER BY created_at DESC ORDER BY created_at DESC";
LIMIT ?;
");
if ($record_count > 0) {
$sql .= " LIMIT ?";
}
$stmt = $this->db->prepare($sql);
if ($record_count > 0) {
$stmt->bind_param("ii", $vehicle_id, $record_count); $stmt->bind_param("ii", $vehicle_id, $record_count);
} else {
$stmt->bind_param("i", $vehicle_id);
}
if ($stmt->execute()) { if ($stmt->execute()) {
$result = $stmt->get_result(); $result = $stmt->get_result();
$data = $result->fetch_all(MYSQLI_ASSOC); $data = $result->fetch_all(MYSQLI_ASSOC);
@ -62,7 +71,7 @@ class Refuel {
public function latest_one($vehicle_id, $record_count = 1) { public function latest_one($vehicle_id, $record_count = 1) {
try { try {
$stmt = $this->db->prepare(" $sql = "
SELECT SELECT
`r`.`vehicle_id`, `r`.`vehicle_id`,
`v`.`name` AS `vehicle_name`, `v`.`name` AS `vehicle_name`,
@ -75,11 +84,20 @@ class Refuel {
FROM `refueling_records` AS `r` FROM `refueling_records` AS `r`
JOIN `vehicles` AS `v` ON `r`.`vehicle_id` = `v`.`id` JOIN `vehicles` AS `v` ON `r`.`vehicle_id` = `v`.`id`
WHERE `r`.`vehicle_id` = ? WHERE `r`.`vehicle_id` = ?
ORDER BY `r`.`created_at` DESC ORDER BY `r`.`created_at` DESC";
LIMIT ?;
");
if ($record_count > 0) {
$sql .= " LIMIT ?";
}
$stmt = $this->db->prepare($sql);
if ($record_count > 0) {
$stmt->bind_param("ii", $vehicle_id, $record_count); $stmt->bind_param("ii", $vehicle_id, $record_count);
} else {
$stmt->bind_param("i", $vehicle_id);
}
if ($stmt->execute()) { if ($stmt->execute()) {
$result = $stmt->get_result(); $result = $stmt->get_result();
$data = $result->fetch_all(MYSQLI_ASSOC); $data = $result->fetch_all(MYSQLI_ASSOC);

View File

@ -98,24 +98,22 @@
<script> <script>
const data2 = <?= json_encode($data['date_price_data']); ?>; const data2 = <?= json_encode($data['date_price_data']); ?>;
let cnt_ltr = 0 let cnt_ltr = 0;
let cnt_km = 0 let last_ltr = 0;
let first_km = 0 let last_km = 0;
console.log(data2) console.log(data2);
for(let i = 0; i < data2['liters'].length; i++) { for (let i = 0; i < data2['liters'].length; i++) {
if(i == 0) {
first_km = data2['mileage'][i]
}
cnt_ltr += data2['liters'][i] cnt_ltr += data2['liters'][i]
cnt_km =+ data2['mileage'][i] last_ltr = data2['liters'][i]
last_km = data2['mileage'][i]
} }
console.log("Liters", cnt_ltr, cnt_km, first_km) cnt_ltr -= last_ltr
console.log("Avg", (cnt_km - first_km) / cnt_ltr)
document.querySelector("#avg-fl-cnsmp").textContent = Math.floor((cnt_km - first_km) / cnt_ltr) + " l/100km" document.querySelector("#avg-fl-cnsmp").textContent =
(cnt_ltr/last_km*100).toFixed(1) + " l/100km";
</script> </script>