summaryrefslogtreecommitdiff
path: root/app/views/dashboard/_nutrient_target_table.html.erb
diff options
context:
space:
mode:
Diffstat (limited to 'app/views/dashboard/_nutrient_target_table.html.erb')
-rw-r--r--app/views/dashboard/_nutrient_target_table.html.erb74
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>
Copyright 2019--2025 Marius PETER