diff options
author | Marius Peter <dev@marius-peter.com> | 2025-09-08 21:21:56 +0200 |
---|---|---|
committer | Marius Peter <dev@marius-peter.com> | 2025-09-08 21:21:56 +0200 |
commit | 7116826b854188604e21e2a613ac6672b6fd81f3 (patch) | |
tree | 33150bf2e04e69b8e1fa7d37901d2643b1955534 /app/views/dashboard/_nutrient_target_table.html.erb | |
parent | 8ba568ae0ebe715b5da453681eb141886f1977a8 (diff) |
Create Target and nutrient target table on dashboard.
Diffstat (limited to 'app/views/dashboard/_nutrient_target_table.html.erb')
-rw-r--r-- | app/views/dashboard/_nutrient_target_table.html.erb | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/app/views/dashboard/_nutrient_target_table.html.erb b/app/views/dashboard/_nutrient_target_table.html.erb new file mode 100644 index 0000000..7cf294c --- /dev/null +++ b/app/views/dashboard/_nutrient_target_table.html.erb @@ -0,0 +1,74 @@ +<div class="card shadow my-3"> + <div class="card-header d-flex justify-content-between align-items-center"> + <h4 class="mb-0">Complémentation</h4> + <div class="btn-group"> + <%= link_to "Nouvelle cible", new_target_path, class: "btn btn-sm btn-primary" %> + <%= link_to "Voir la recette", root_path, class: "btn btn-sm btn-secondary" %> + </div> + </div> + + <div class="card-body p-0"> + <div class="table-responsive"> + <table class="table table-sm table-striped table-hover align-middle mb-0"> + <thead class="table-light"> + <tr> + <th>Nutriment</th> + <th class="text-end">Relevé</th> + <th class="text-end">Cible</th> + <th class="text-end">Delta</th> + </tr> + </thead> + <tbody> + <% wr = @weighted || {} %> + <% lm = @latest_measurements || {} %> + + <% keys = (wr.keys + lm.keys).map(&:to_s).uniq.sort %> + <% keys.each do |nut| %> + <% measured = lm[nut] %> + <% target = wr[nut] %> + <% delta = (measured.to_f - target.to_f) if measured || target %> + <tr> + <td class="fw-semibold"><%= nut.upcase %></td> + + <td class="text-end"> + <% if measured.nil? %> + <span class="text-muted">—</span> + <% else %> + <%= number_with_precision(measured, precision: 2) %> + <% end %> + </td> + + <td class="text-end"> + <% if target.nil? %> + <span class="text-muted">—</span> + <% else %> + <%= number_with_precision(target, precision: 2) %> + <% end %> + </td> + + <td class="text-end"> + <% if measured.nil? && target.nil? %> + <span class="text-muted">—</span> + <% else %> + <% badge = + if delta.nil? + "text-bg-secondary" + elsif delta.abs <= 0.01 + "text-bg-success" + elsif delta > 0 + "text-bg-warning" + else + "text-bg-danger" + end %> + <span class="badge <%= badge %>"> + <%= number_with_precision(delta.to_f, precision: 2) %> + </span> + <% end %> + </td> + </tr> + <% end %> + </tbody> + </table> + </div> + </div> +</div> |