diff --git a/src/infrastructure/repositories/bags.rs b/src/infrastructure/repositories/bags.rs index 91f5778..f7b58ab 100644 --- a/src/infrastructure/repositories/bags.rs +++ b/src/infrastructure/repositories/bags.rs @@ -42,7 +42,9 @@ impl SqlBagRepository { BagSortKey::UpdatedAt => format!("b.updated_at {dir_sql}, b.id DESC"), BagSortKey::Roaster => format!("LOWER(rr.name) {dir_sql}, b.created_at DESC"), BagSortKey::Roast => format!("LOWER(r.name) {dir_sql}, b.created_at DESC"), - BagSortKey::Status => format!("b.closed {dir_sql}, b.created_at DESC"), + BagSortKey::Status => format!( + "CASE WHEN b.closed THEN 10000 ELSE b.remaining END {dir_sql}, b.created_at DESC" + ), BagSortKey::FinishedAt => format!("b.finished_at {dir_sql}, b.created_at DESC"), } } diff --git a/src/presentation/web/views/bags.rs b/src/presentation/web/views/bags.rs index 1b9329a..dedd516 100644 --- a/src/presentation/web/views/bags.rs +++ b/src/presentation/web/views/bags.rs @@ -15,10 +15,17 @@ pub struct BagView { pub roaster_name: String, pub roast_slug: String, pub roaster_slug: String, + pub used_percent: u8, } impl BagView { pub fn from_domain(bag: BagWithRoast) -> Self { + let used_percent = if bag.bag.amount > 0.0 { + (((bag.bag.amount - bag.bag.remaining) / bag.bag.amount) * 100.0).clamp(0.0, 100.0) + as u8 + } else { + 0 + }; Self { id: bag.bag.id.to_string(), roast_id: bag.bag.roast_id.to_string(), @@ -36,6 +43,7 @@ impl BagView { roaster_name: bag.roaster_name, roast_slug: bag.roast_slug, roaster_slug: bag.roaster_slug, + used_percent, } } } diff --git a/static/css/input.css b/static/css/input.css index 28dbfc0..eb6dac9 100644 --- a/static/css/input.css +++ b/static/css/input.css @@ -445,6 +445,18 @@ a { display: none; } + /* Progress bar: full-width above footer */ + .responsive-table td.card-progress { + order: 98; + display: block; + margin: 0.25rem 0 0 !important; + padding: 0 !important; + } + + .responsive-table td.card-progress::before { + display: none; + } + .pagination-controls { display: none; } diff --git a/templates/partials/bag_card.html b/templates/partials/bag_card.html index 8d0a2f9..813100d 100644 --- a/templates/partials/bag_card.html +++ b/templates/partials/bag_card.html @@ -5,10 +5,10 @@ {{ bag.roast_name }}

{{ bag.roaster_name }}

-

- {{ bag.remaining }}g - of {{ bag.amount }}g remaining -

+
+
+
+

{{ bag.remaining }} / {{ bag.amount }}g

{% if is_authenticated %}
diff --git a/templates/partials/lists/bag_list.html b/templates/partials/lists/bag_list.html index 8c6c7ed..04123cb 100644 --- a/templates/partials/lists/bag_list.html +++ b/templates/partials/lists/bag_list.html @@ -26,7 +26,6 @@ {% call table::sortable_header("Added", "created-at", navigator, "#bag-list") %} {% call table::sortable_header("Roaster", "roaster", navigator, "#bag-list") %} {% call table::sortable_header("Roast", "roast", navigator, "#bag-list") %} - Weight {% call table::sortable_header("Status", "status", navigator, "#bag-list") %} {% call table::sortable_header("Finished", "finished-at", navigator, "#bag-list") %} {% if is_authenticated %} @@ -49,21 +48,34 @@ {{ bag.roast_name }} - {{ bag.amount }}g - + {% if bag.closed %} Closed {% else %} - Open -
{{ bag.remaining }}g left
+
+
+
+
+
{{ bag.remaining }} / {{ bag.amount }}g
+
{% endif %} {% if !bag.closed %} - {{ bag.remaining }}g left + +
+
+
+
{{ bag.remaining }} / {{ bag.amount }}g
+ {% endif %} - +
{{ bag.finished_date }}
+ {% if bag.closed %} + +
{{ bag.finished_date }}
+ + {% endif %} {% if is_authenticated %}
@@ -86,8 +98,6 @@ {% if bag.closed %} Closed - {% else %} - Open {% endif %}