summaryrefslogtreecommitdiff
path: root/app/helpers
diff options
context:
space:
mode:
authorMarius Peter <marius.peter@tutanota.com>2025-08-24 20:29:54 +0200
committerMarius Peter <marius.peter@tutanota.com>2025-08-24 20:29:54 +0200
commit52b044d6a4278c229992404ad5801769c2d13363 (patch)
treeb30b34da58f26117c035391d09366b190350b1e3 /app/helpers
First commit.
Vive le Castel Peter !
Diffstat (limited to 'app/helpers')
-rw-r--r--app/helpers/application_helper.rb2
-rw-r--r--app/helpers/dashboard_helper.rb8
-rw-r--r--app/helpers/nutrients_helper.rb21
-rw-r--r--app/helpers/recipes_helper.rb16
4 files changed, 47 insertions, 0 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
new file mode 100644
index 0000000..de6be79
--- /dev/null
+++ b/app/helpers/application_helper.rb
@@ -0,0 +1,2 @@
+module ApplicationHelper
+end
diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb
new file mode 100644
index 0000000..5d64d17
--- /dev/null
+++ b/app/helpers/dashboard_helper.rb
@@ -0,0 +1,8 @@
+module DashboardHelper
+ def fmt2(v) = number_with_precision(v, precision: 2)
+
+ # Total nitrogen (NO3-N + NH4-N)
+ def total_n(measurement)
+ (measurement.nno3.to_f) + (measurement.nnh4.to_f)
+ end
+end
diff --git a/app/helpers/nutrients_helper.rb b/app/helpers/nutrients_helper.rb
new file mode 100644
index 0000000..de98dc3
--- /dev/null
+++ b/app/helpers/nutrients_helper.rb
@@ -0,0 +1,21 @@
+module NutrientsHelper
+ NUTRIENTS = %i[nno3 p k ca mg s na cl si fe zn b mn cu mo nnh4].freeze
+
+ def percent_delta(measured, target)
+ return 0.0 if target.to_f.zero?
+ ((measured.to_f - target.to_f) / target.to_f) * 100.0
+ end
+
+ def fmt(v)
+ number_with_precision(v, precision: 2, strip_insignificant_zeros: true)
+ end
+
+ def delta_badge_class(delta)
+ d = delta.abs
+ case d
+ when d < 0 then "bg-info"
+ when 0..5 then "bg-secondary"
+ else "bg-warning"
+ end
+ end
+end
diff --git a/app/helpers/recipes_helper.rb b/app/helpers/recipes_helper.rb
new file mode 100644
index 0000000..02cb1a7
--- /dev/null
+++ b/app/helpers/recipes_helper.rb
@@ -0,0 +1,16 @@
+module RecipesHelper
+ def commercial_name_for(component)
+ # Try to find a FertilizerProduct via a join, but gracefully fallback.
+ if defined?(FertilizerProduct) && defined?(FertilizerComposition)
+ prod = FertilizerProduct.joins(:fertilizer_compositions)
+ .where(fertilizer_compositions: { fertilizer_component_id: component.id })
+ .first
+ return prod.name if prod&.name.present?
+ end
+ component.name.presence || component.formula
+ end
+
+ def fmt_kg(v)
+ number_with_precision(v.to_f, precision: 2, strip_insignificant_zeros: true)
+ end
+end
Copyright 2019--2025 Marius PETER