From 477f333466d796a2d28c6736062fb68baeb4be53 Mon Sep 17 00:00:00 2001 From: TheDodger Date: Sun, 10 Mar 2024 18:12:02 +0100 Subject: [PATCH] Add userfields to battery charge cycle tracking (#2490) Co-authored-by: Manuel Worschech --- changelog/75_UNRELEASED_xxxx-xx-xx.md | 4 +++- controllers/BatteriesController.php | 7 +++++-- grocy.openapi.json | 9 ++++++--- public/viewjs/batterytracking.js | 22 +++++++++++++--------- views/batteriesjournal.blade.php | 9 +++++++++ views/batterytracking.blade.php | 5 +++++ 6 files changed, 41 insertions(+), 15 deletions(-) diff --git a/changelog/75_UNRELEASED_xxxx-xx-xx.md b/changelog/75_UNRELEASED_xxxx-xx-xx.md index ed5e0bcd..46a8bcc3 100644 --- a/changelog/75_UNRELEASED_xxxx-xx-xx.md +++ b/changelog/75_UNRELEASED_xxxx-xx-xx.md @@ -44,7 +44,9 @@ ### Batteries -- xxx +- It's now possible to track any addtional info on a battery charge cycle by using Userfields + - => Configure the desired Userfields for the entity `battery_charge_cycles` + - => On a battery charge cycle tracking entered information is then visible in the corresponding battery charge cycle journal entry ### Equipment diff --git a/controllers/BatteriesController.php b/controllers/BatteriesController.php index 9beaaac1..a409aa57 100644 --- a/controllers/BatteriesController.php +++ b/controllers/BatteriesController.php @@ -73,7 +73,9 @@ class BatteriesController extends BaseController return $this->renderPage($response, 'batteriesjournal', [ 'chargeCycles' => $this->getDatabase()->battery_charge_cycles()->where($where)->orderBy('tracked_time', 'DESC'), - 'batteries' => $this->getDatabase()->batteries()->where('active = 1')->orderBy('name', 'COLLATE NOCASE') + 'batteries' => $this->getDatabase()->batteries()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'), + 'userfields' => $this->getUserfieldsService()->GetFields('battery_charge_cycles'), + 'userfieldValues' => $this->getUserfieldsService()->GetAllValues('battery_charge_cycles') ]); } @@ -115,7 +117,8 @@ class BatteriesController extends BaseController public function TrackChargeCycle(Request $request, Response $response, array $args) { return $this->renderPage($response, 'batterytracking', [ - 'batteries' => $this->getDatabase()->batteries()->where('active = 1')->orderBy('name', 'COLLATE NOCASE') + 'batteries' => $this->getDatabase()->batteries()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'), + 'userfields' => $this->getUserfieldsService()->GetFields('battery_charge_cycles') ]); } diff --git a/grocy.openapi.json b/grocy.openapi.json index 57878c7b..03b0051d 100644 --- a/grocy.openapi.json +++ b/grocy.openapi.json @@ -5904,7 +5904,8 @@ "products_last_purchased", "products_average_price", "quantity_unit_conversions_resolved", - "recipes_pos_resolved" + "recipes_pos_resolved", + "battery_charge_cycles" ] }, "ExposedEntityNoListing": { @@ -5924,7 +5925,8 @@ "products_last_purchased", "products_average_price", "quantity_unit_conversions_resolved", - "recipes_pos_resolved" + "recipes_pos_resolved", + "battery_charge_cycles" ] }, "ExposedEntityNoDelete": { @@ -5937,7 +5939,8 @@ "products_last_purchased", "products_average_price", "quantity_unit_conversions_resolved", - "recipes_pos_resolved" + "recipes_pos_resolved", + "battery_charge_cycles" ] }, "ExposedEntityEditRequiresAdmin": { diff --git a/public/viewjs/batterytracking.js b/public/viewjs/batterytracking.js index 72d58d4e..0621e756 100644 --- a/public/viewjs/batterytracking.js +++ b/public/viewjs/batterytracking.js @@ -21,16 +21,20 @@ Grocy.Api.Post('batteries/' + jsonForm.battery_id + '/charge', { 'tracked_time': $('#tracked_time').find('input').val() }, function(result) { - Grocy.FrontendHelpers.EndUiBusy("batterytracking-form"); - toastr.success(__t('Tracked charge cycle of battery %1$s on %2$s', batteryDetails.battery.name, $('#tracked_time').find('input').val()) + '
' + __t("Undo") + ''); - Grocy.Components.BatteryCard.Refresh($('#battery_id').val()); + Grocy.EditObjectId = result.id; + Grocy.Components.UserfieldsForm.Save(function() + { + Grocy.FrontendHelpers.EndUiBusy("batterytracking-form"); + toastr.success(__t('Tracked charge cycle of battery %1$s on %2$s', batteryDetails.battery.name, $('#tracked_time').find('input').val()) + '
' + __t("Undo") + ''); + Grocy.Components.BatteryCard.Refresh($('#battery_id').val()); - $('#battery_id').val(''); - $('#battery_id_text_input').focus(); - $('#battery_id_text_input').val(''); - $('#tracked_time').find('input').val(moment().format('YYYY-MM-DD HH:mm:ss')); - $('#battery_id_text_input').trigger('change'); - Grocy.FrontendHelpers.ValidateForm('batterytracking-form'); + $('#battery_id').val(''); + $('#battery_id_text_input').focus(); + $('#battery_id_text_input').val(''); + $('#tracked_time').find('input').val(moment().format('YYYY-MM-DD HH:mm:ss')); + $('#battery_id_text_input').trigger('change'); + Grocy.FrontendHelpers.ValidateForm('batterytracking-form'); + }); }, function(xhr) { diff --git a/views/batteriesjournal.blade.php b/views/batteriesjournal.blade.php index 2f891658..6154e643 100644 --- a/views/batteriesjournal.blade.php +++ b/views/batteriesjournal.blade.php @@ -91,6 +91,10 @@ {{ $__t('Battery') }} {{ $__t('Tracked time') }} + + @include('components.userfields_thead', array( + 'userfields' => $userfields + )) @@ -121,6 +125,11 @@ + + @include('components.userfields_tbody', array( + 'userfields' => $userfields, + 'userfieldValues' => FindAllObjectsInArrayByPropertyValue($userfieldValues, 'object_id', $chargeCycleEntry->id) + )) @endforeach diff --git a/views/batterytracking.blade.php b/views/batterytracking.blade.php index 1c50ab08..60b3056f 100644 --- a/views/batterytracking.blade.php +++ b/views/batterytracking.blade.php @@ -44,6 +44,11 @@ 'invalidFeedback' => $__t('This can only be before now') )) + @include('components.userfieldsform', array( + 'userfields' => $userfields, + 'entity' => 'battery_charge_cycles' + )) +