diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 9c92da59..ece66263 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -7,6 +7,7 @@ class PagesController < ApplicationController @asset_series = snapshot[:asset_series] @liability_series = snapshot[:liability_series] @account_groups = Current.family.accounts.by_group(period: @period, currency: Current.family.currency) + @transactions = Current.family.transactions.limit(5).order(date: :desc) # TODO: Placeholders for trendlines placeholder_series_data = 10.times.map do |i| diff --git a/app/helpers/transactions_helper.rb b/app/helpers/transactions_helper.rb index d50ea4d1..7f270a1f 100644 --- a/app/helpers/transactions_helper.rb +++ b/app/helpers/transactions_helper.rb @@ -17,4 +17,8 @@ module TransactionsHelper def transaction_filter_by_name(name) transaction_filters.find { |filter| filter[:name] == name } end + + def full_width_transaction_row?(route) + route != "/" + end end diff --git a/app/views/accounts/_transactions.html.erb b/app/views/accounts/_transactions.html.erb index ad040ff7..ab72aa20 100644 --- a/app/views/accounts/_transactions.html.erb +++ b/app/views/accounts/_transactions.html.erb @@ -11,9 +11,7 @@

No transactions for this account yet.

<% else %>
- <% transactions.group_by { |transaction| transaction.date }.each do |date, grouped_transactions| %> - <%= render partial: "transactions/transaction_group", locals: { date: date, transactions: grouped_transactions } %> - <% end %> + <%= render partial: "transactions/transaction_group", collection: transactions.group_by(&:date), as: :transaction_group %>
<% end %> diff --git a/app/views/pages/dashboard.html.erb b/app/views/pages/dashboard.html.erb index fa6e16a9..afe7f277 100644 --- a/app/views/pages/dashboard.html.erb +++ b/app/views/pages/dashboard.html.erb @@ -106,14 +106,21 @@ -
-
+
+

<%= t(".transactions") %>

-
-

Coming soon...

-
+ <% if @transactions.empty? %> +
+

<%= t(".no_transactions") %>

+
+ <% else %> +
+ <%= render partial: "transactions/transaction_group", collection: @transactions.group_by(&:date), as: :transaction_group %> +

<%= link_to t(".view_all"), transactions_path %>

+
+ <% end %>
-
+

<%= t(".recurring") %>

diff --git a/app/views/transactions/_list.html.erb b/app/views/transactions/_list.html.erb index f2057b70..775f677b 100644 --- a/app/views/transactions/_list.html.erb +++ b/app/views/transactions/_list.html.erb @@ -20,9 +20,7 @@
- <% transactions.group_by { |transaction| transaction.date }.each do |date, grouped_transactions| %> - <%= render partial: "transactions/transaction_group", locals: { date: date, transactions: grouped_transactions } %> - <% end %> + <%= render partial: "transactions/transaction_group", collection: transactions.group_by(&:date), as: :transaction_group %>
<% end %> <% if pagy.pages > 1 %> diff --git a/app/views/transactions/_transaction.html.erb b/app/views/transactions/_transaction.html.erb index de5e06cd..811b9f17 100644 --- a/app/views/transactions/_transaction.html.erb +++ b/app/views/transactions/_transaction.html.erb @@ -1,17 +1,22 @@ +<%# locals: (transaction:) %> <%= turbo_frame_tag dom_id(transaction), class:"text-gray-900 flex items-center gap-6 py-4 text-sm font-medium px-4" do %> - <%= link_to transaction_path(transaction), data: { turbo_frame: "modal" }, class: "group", id: dom_id(transaction) do %> -
-
<%= transaction.name[0].upcase %>
-

<%= transaction.name %>

+ <% if full_width_transaction_row?(request.path) %> + <%= link_to transaction_path(transaction), data: { turbo_frame: "modal" }, class: "group" do %> + <%= render partial: "transactions/transaction_name", locals: { name: transaction.name } %> + <% end %> +
+ <%= render partial: "transactions/categories/menu", locals: { transaction: } %> +
+
+

<%= transaction.account.name %>

+
+ <% else %> + <%= render partial: "transactions/transaction_name", locals: { name: transaction.name } %> +
+ <%= render partial: "transactions/categories/badge", locals: transaction.category.nil? ? {} : { name: transaction.category.name, color: transaction.category.color } %>
<% end %> -
- <%= render partial: "transactions/categories/menu", locals: { transaction: } %> -
-
-

<%= transaction.account.name %>

-
-

"><%= format_money -transaction.amount_money %>

+ <%= content_tag :p, format_money(-transaction.amount_money), class: ["whitespace-nowrap", { "text-green-600": transaction.amount.negative? }] %>
<% end %> diff --git a/app/views/transactions/_transaction_group.html.erb b/app/views/transactions/_transaction_group.html.erb index f71b3486..5bfd9c04 100644 --- a/app/views/transactions/_transaction_group.html.erb +++ b/app/views/transactions/_transaction_group.html.erb @@ -1,5 +1,8 @@ -<%# locals: (date:, transactions:) %> -
+<%# locals: (transaction_group:) %> +<% date = transaction_group[0] %> +<% transactions = transaction_group[1] %> + +

<%= date.strftime("%b %d, %Y") %> · <%= transactions.size %>

<%= format_money -transactions.sum(&:amount_money) %> diff --git a/app/views/transactions/_transaction_name.html.erb b/app/views/transactions/_transaction_name.html.erb new file mode 100644 index 00000000..06fea69d --- /dev/null +++ b/app/views/transactions/_transaction_name.html.erb @@ -0,0 +1,10 @@ +<%# locals: (name:) %> + +<%= content_tag :div, class: ["flex items-center gap-2", { "w-40": !full_width_transaction_row?(request.path), "w-96": full_width_transaction_row?(request.path) }] do %> +
+ <%= name[0].upcase %> +
+

+ <%= name %> +

+<% end %> diff --git a/app/views/transactions/categories/_badge.html.erb b/app/views/transactions/categories/_badge.html.erb index 111593de..4d4825f1 100644 --- a/app/views/transactions/categories/_badge.html.erb +++ b/app/views/transactions/categories/_badge.html.erb @@ -1,4 +1,4 @@ <%# locals: (name: "Uncategorized", color: Transaction::Category::UNCATEGORIZED_COLOR) %> <% background_color = "color-mix(in srgb, #{color} 5%, white)" %> <% border_color = "color-mix(in srgb, #{color} 10%, white)" %> -<%= name %> +<%= name %> diff --git a/app/views/transactions/categories/_menu.html.erb b/app/views/transactions/categories/_menu.html.erb index 73a1e588..c78a10ab 100644 --- a/app/views/transactions/categories/_menu.html.erb +++ b/app/views/transactions/categories/_menu.html.erb @@ -1,6 +1,6 @@ <%# locals: (transaction:) %>
-