From 41905078df23bd405de6f8516c7fc779dd2cdc38 Mon Sep 17 00:00:00 2001 From: Alberto-Audrix Date: Wed, 2 Sep 2026 15:26:06 +0700 Subject: [PATCH] add feed out to manual input form --- backend/apps/operations/serializers.py | 4 ++++ .../apps/operations/services/manual_input.py | 1 + .../dashboard/DashboardManualInputForm.tsx | 17 ++++++++++++++++- .../__tests__/DashboardManualInputForm.test.tsx | 4 ++++ types/api.ts | 1 + 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/backend/apps/operations/serializers.py b/backend/apps/operations/serializers.py index 66c1edb..17a68bb 100644 --- a/backend/apps/operations/serializers.py +++ b/backend/apps/operations/serializers.py @@ -41,6 +41,7 @@ class ManualInputSerializer(PkAsIdMixin, CycleContextMixin, serializers.ModelSer "mortality_manual_total", "feed_in_manual_total", "feed_use_manual_total", + "feed_out_manual_total", "harvest_manual_total", "harvest_weight_manual_total", "average_harvest_day_manual", @@ -72,6 +73,9 @@ class ManualInputSerializer(PkAsIdMixin, CycleContextMixin, serializers.ModelSer "feed_use_manual": validated_data.get( "feed_use_manual", instance.feed_use_manual if instance else 0 ), + "feed_out_manual": validated_data.get( + "feed_out_manual", instance.feed_out_manual if instance else 0 + ), "harvest_manual": validated_data.get( "harvest_manual", instance.harvest_manual if instance else 0 ), diff --git a/backend/apps/operations/services/manual_input.py b/backend/apps/operations/services/manual_input.py index e7eb98e..c7b867d 100644 --- a/backend/apps/operations/services/manual_input.py +++ b/backend/apps/operations/services/manual_input.py @@ -7,6 +7,7 @@ DAILY_TO_TOTAL = ( ("mortality_manual", "mortality_manual_total"), ("feed_in_manual", "feed_in_manual_total"), ("feed_use_manual", "feed_use_manual_total"), + ("feed_out_manual", "feed_out_manual_total"), ("harvest_manual", "harvest_manual_total"), ("harvest_weight_manual", "harvest_weight_manual_total"), ) diff --git a/components/dashboard/DashboardManualInputForm.tsx b/components/dashboard/DashboardManualInputForm.tsx index e7a1023..39be394 100644 --- a/components/dashboard/DashboardManualInputForm.tsx +++ b/components/dashboard/DashboardManualInputForm.tsx @@ -19,6 +19,7 @@ type FormState = { mortality_manual: number; feed_in_manual: number; feed_use_manual: number; + feed_out_manual: number; harvest_manual: number; harvest_weight_manual: number; manual_weight: number; @@ -30,6 +31,7 @@ const emptyForm = (currentDay: number): FormState => ({ mortality_manual: 0, feed_in_manual: 0, feed_use_manual: 0, + feed_out_manual: 0, harvest_manual: 0, harvest_weight_manual: 0, manual_weight: 0, @@ -42,6 +44,7 @@ function toForm(row: ManualInput): FormState { mortality_manual: row.mortality_manual, feed_in_manual: row.feed_in_manual, feed_use_manual: row.feed_use_manual, + feed_out_manual: row.feed_out_manual, harvest_manual: row.harvest_manual, // Database dalam gram, form selalu dalam kg. harvest_weight_manual: row.harvest_weight_manual / 1000, @@ -121,6 +124,7 @@ const DashboardManualInputForm: React.FC = ({ cycleId, currentDay, readOn mortality_manual: form.mortality_manual, feed_in_manual: form.feed_in_manual, feed_use_manual: form.feed_use_manual, + feed_out_manual: form.feed_out_manual, harvest_manual: form.harvest_manual, // Form dalam kg, disimpan ke database dalam gram. harvest_weight_manual: form.harvest_weight_manual * 1000, @@ -201,6 +205,16 @@ const DashboardManualInputForm: React.FC = ({ cycleId, currentDay, readOn onChange={(e) => setForm((f) => ({ ...f, feed_use_manual: Number(e.target.value) }))} /> +