diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 3c800760dda..ce3d120693b 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -11,7 +11,8 @@ def summary @net_worth_series = snapshot[:net_worth_series] @asset_series = snapshot[:asset_series] @liability_series = snapshot[:liability_series] - @account_groups = Current.family.accounts.by_group(period: @period, currency: Current.family.currency) + @accounts = Current.family.accounts + @account_groups = @accounts.by_group(period: @period, currency: Current.family.currency) end def list diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 1fd81196c5d..ba584e9f4f5 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -17,7 +17,8 @@ def dashboard @top_earners = snapshot_account_transactions[:top_earners] @top_savers = snapshot_account_transactions[:top_savers] - @account_groups = Current.family.accounts.by_group(period: @period, currency: Current.family.currency) + @accounts = Current.family.accounts + @account_groups = @accounts.by_group(period: @period, currency: Current.family.currency) @transactions = Current.family.transactions.limit(5).order(date: :desc) # TODO: Placeholders for trendlines diff --git a/app/views/accounts/index.html.erb b/app/views/accounts/index.html.erb index f844067d8d9..a940c82ab48 100644 --- a/app/views/accounts/index.html.erb +++ b/app/views/accounts/index.html.erb @@ -4,7 +4,7 @@

Accounts

- <%= link_to new_account_path, class: "flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2", data: { turbo_frame: "modal" } do %> + <%= link_to new_account_path, class: "flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2 pr-3", data: { turbo_frame: "modal" } do %> <%= lucide_icon("plus", class: "w-5 h-5") %> <%= t(".new_account") %> <% end %> @@ -14,7 +14,7 @@

No accounts yet

Add an account either via connection, importing or entering manually.

- <%= link_to new_account_path, class: "w-fit flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2", data: { turbo_frame: "modal" } do %> + <%= link_to new_account_path, class: "w-fit flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2 pr-3", data: { turbo_frame: "modal" } do %> <%= lucide_icon("plus", class: "w-5 h-5") %> <%= t(".new_account") %> <% end %> diff --git a/app/views/accounts/summary.html.erb b/app/views/accounts/summary.html.erb index ed5190943e8..6ad213adcc7 100644 --- a/app/views/accounts/summary.html.erb +++ b/app/views/accounts/summary.html.erb @@ -1,76 +1,81 @@

Accounts

- <%= link_to new_account_path, class: "flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2", data: { turbo_frame: "modal" } do %> + <%= link_to new_account_path, class: "flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2 pr-3", data: { turbo_frame: "modal" } do %> <%= lucide_icon("plus", class: "w-5 h-5") %> <%= t(".new") %> <% end %>
-
-
-
- <%= render partial: "shared/value_heading", locals: { - label: "Assets", - period: @period, - value: Current.family.assets, - trend: @asset_series.trend - } %> + + <% if @accounts.empty? %> + <%= render "shared/no_account_empty_state" %> + <% else %> +
+
+
+ <%= render partial: "shared/value_heading", locals: { + label: "Assets", + period: @period, + value: Current.family.assets, + trend: @asset_series.trend + } %> +
+
-
-
-
-
- <%= render partial: "shared/value_heading", locals: { - label: "Liabilities", - period: @period, - size: "md", - value: Current.family.liabilities, - trend: @liability_series.trend - } %> +
+
+ <%= render partial: "shared/value_heading", locals: { + label: "Liabilities", + period: @period, + size: "md", + value: Current.family.liabilities, + trend: @liability_series.trend + } %> +
+
-
-
-
-
-

Assets

-
- <%= link_to new_account_path, class: "flex items-center gap-1 p-2 text-gray-900 text-sm font-medium bg-gray-50 rounded-lg hover:bg-gray-100", data: { turbo_frame: "modal" } do %> - <%= lucide_icon("plus", class: "w-5 h-5 text-gray-500") %> -

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

- <% end %> - <%= form_with url: summary_accounts_path, method: :get, class: "flex items-center gap-4", data: { controller: "auto-submit-form" } do %> - <%= render partial: "shared/period_select", locals: { value: @period.name } %> - <% end %> +
+
+

Assets

+
+ <%= link_to new_account_path, class: "flex items-center gap-1 p-2 pr-3 text-gray-900 text-sm font-medium bg-gray-50 rounded-lg hover:bg-gray-100", data: { turbo_frame: "modal" } do %> + <%= lucide_icon("plus", class: "w-5 h-5 text-gray-500") %> +

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

+ <% end %> + <%= form_with url: summary_accounts_path, method: :get, class: "flex items-center gap-4", data: { controller: "auto-submit-form" } do %> + <%= render partial: "shared/period_select", locals: { value: @period.name } %> + <% end %> +
+ <%= render partial: "pages/account_percentages_bar", locals: { account_groups: @account_groups[:assets].children } %> + <%= render partial: "pages/account_percentages_table", locals: { account_groups: @account_groups[:assets].children } %>
- <%= render partial: "pages/account_percentages_bar", locals: { account_groups: @account_groups[:assets].children } %> - <%= render partial: "pages/account_percentages_table", locals: { account_groups: @account_groups[:assets].children } %> -
-
-
-

Liabilities

-
- <%= link_to new_account_path, class: "flex items-center gap-1 p-2 text-gray-900 text-sm font-medium bg-gray-50 rounded-lg hover:bg-gray-100", data: { turbo_frame: "modal" } do %> - <%= lucide_icon("plus", class: "w-5 h-5 text-gray-500") %> -

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

- <% end %> - <%= form_with url: summary_accounts_path, method: :get, class: "flex items-center gap-4", data: { controller: "auto-submit-form" } do %> - <%= render partial: "shared/period_select", locals: { value: @period.name } %> - <% end %> +
+
+

Liabilities

+
+ <%= link_to new_account_path, class: "flex items-center gap-1 p-2 pr-3 text-gray-900 text-sm font-medium bg-gray-50 rounded-lg hover:bg-gray-100", data: { turbo_frame: "modal" } do %> + <%= lucide_icon("plus", class: "w-5 h-5 text-gray-500") %> +

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

+ <% end %> + <%= form_with url: summary_accounts_path, method: :get, class: "flex items-center gap-4", data: { controller: "auto-submit-form" } do %> + <%= render partial: "shared/period_select", locals: { value: @period.name } %> + <% end %> +
+ <%= render partial: "pages/account_percentages_bar", locals: { account_groups: @account_groups[:liabilities].children } %> + <%= render partial: "pages/account_percentages_table", locals: { account_groups: @account_groups[:liabilities].children } %>
- <%= render partial: "pages/account_percentages_bar", locals: { account_groups: @account_groups[:liabilities].children } %> - <%= render partial: "pages/account_percentages_table", locals: { account_groups: @account_groups[:liabilities].children } %> -
+ <% end %>
diff --git a/app/views/pages/dashboard.html.erb b/app/views/pages/dashboard.html.erb index 53d658f4c61..8c527050d95 100644 --- a/app/views/pages/dashboard.html.erb +++ b/app/views/pages/dashboard.html.erb @@ -3,13 +3,18 @@

Dashboard

<%= t(".greeting", name: Current.user.first_name ) %>

-

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

+ <% if !@accounts.blank? %> +

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

+ <% end %>
- <%= link_to new_account_path, class: "flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2", data: { turbo_frame: "modal" } do %> + <%= link_to new_account_path, class: "flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2 pr-3", data: { turbo_frame: "modal" } do %> <%= lucide_icon("plus", class: "w-5 h-5") %> <%= t(".new") %> <% end %> + <% if @accounts.empty? %> + <%= render "shared/no_account_empty_state" %> + <% else %>
@@ -177,4 +182,5 @@
+ <% end %>
diff --git a/app/views/shared/_no_account_empty_state.html.erb b/app/views/shared/_no_account_empty_state.html.erb new file mode 100644 index 00000000000..061e6af821d --- /dev/null +++ b/app/views/shared/_no_account_empty_state.html.erb @@ -0,0 +1,10 @@ +
+
+

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

+

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

+ <%= link_to new_account_path, class: "w-fit flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2 pr-3", data: { turbo_frame: "modal" } do %> + <%= lucide_icon("plus", class: "w-5 h-5") %> + <%= t(".new_account") %> + <% end %> +
+
diff --git a/app/views/transactions/merchants/index.html.erb b/app/views/transactions/merchants/index.html.erb index 46469559ad6..f26bdfc272d 100644 --- a/app/views/transactions/merchants/index.html.erb +++ b/app/views/transactions/merchants/index.html.erb @@ -4,7 +4,7 @@

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

- <%= link_to new_transaction_merchant_path, class: "flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2", data: { turbo_frame: "modal" } do %> + <%= link_to new_transaction_merchant_path, class: "flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2 pr-3", data: { turbo_frame: "modal" } do %> <%= lucide_icon("plus", class: "w-5 h-5") %> <%= t(".new_short") %> <% end %> @@ -14,7 +14,7 @@

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

- <%= link_to new_transaction_merchant_path, class: "w-fit flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2", data: { turbo_frame: "modal" } do %> + <%= link_to new_transaction_merchant_path, class: "w-fit flex text-white text-sm font-medium items-center gap-1 bg-gray-900 rounded-lg p-2 pr-3", data: { turbo_frame: "modal" } do %> <%= lucide_icon("plus", class: "w-5 h-5") %> <%= t(".new_long") %> <% end %> diff --git a/config/environments/test.rb b/config/environments/test.rb index 04a682d51b5..e7e507b7aa8 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -52,6 +52,8 @@ # Tell Active Support which deprecation messages to disallow. config.active_support.disallowed_deprecation_warnings = [] + config.active_job.queue_adapter = :test + # Raises error for missing translations. # config.i18n.raise_on_missing_translations = true diff --git a/config/locales/views/shared/en.yml b/config/locales/views/shared/en.yml index 7b78ab73a79..1e22ea1e1a5 100644 --- a/config/locales/views/shared/en.yml +++ b/config/locales/views/shared/en.yml @@ -6,6 +6,11 @@ en: body_html: "

You will not be able to undo this decision

" cancel: Cancel title: Are you sure? + no_account_empty_state: + new_account: New account + no_account_subtitle: Since no accounts have been added, there's no data to display. + Add your first accounts to start viewing dashboard data. + no_account_title: No accounts yet notification: dismiss: Dismiss upgrade_notification: