diff --git a/app/controllers/units_controller.rb b/app/controllers/units_controller.rb index 27ca5ac..a973e37 100644 --- a/app/controllers/units_controller.rb +++ b/app/controllers/units_controller.rb @@ -32,32 +32,29 @@ class UnitsController < ApplicationController def update if @unit.update(unit_params.except(:base_id)) flash.now[:notice] = t('.success', unit: @unit) - run_and_render :index else render :edit end end + # TODO: Avoid double table width change by first un-hiding table header, + # then displaying index, e.g. by re-displaying header in index def rebase permitted = params.require(:unit).permit(:base_id) permitted.merge!(multiplier: 1) if permitted[:base_id].blank? && @unit.multiplier != 1 + @previous_base = @unit.base @unit.update!(permitted) + @before = @unit.successive if @unit.multiplier_previously_changed? flash.now[:notice] = t(".multiplier_reset", unit: @unit) end - ensure - # TODO: Avoid double table width change by first un-hiding table header, - # then displaying index, e.g. by re-displaying header in index - run_and_render :index end def destroy @unit.destroy! flash.now[:notice] = t('.success', unit: @unit) - ensure - run_and_render :index end private diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 99f3d8c..c9f12ab 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -123,7 +123,7 @@ module ApplicationHelper def render_no_items tag.tr id: :no_items do - tag.td t('.no_items'), colspan: 10, class: 'hint' + tag.td t("#{controller_name}.no_items"), colspan: 10, class: 'hint' end end diff --git a/app/views/units/destroy.turbo_stream.erb b/app/views/units/destroy.turbo_stream.erb new file mode 100644 index 0000000..2923de8 --- /dev/null +++ b/app/views/units/destroy.turbo_stream.erb @@ -0,0 +1,3 @@ +<%= turbo_stream.replace @unit.base unless @unit.base.nil? %> +<%= turbo_stream.remove @unit %> +<%= turbo_stream.append(:units, render_no_items) if current_user.units.empty? %> diff --git a/app/views/units/rebase.turbo_stream.erb b/app/views/units/rebase.turbo_stream.erb index cf4f95a..bec908e 100644 --- a/app/views/units/rebase.turbo_stream.erb +++ b/app/views/units/rebase.turbo_stream.erb @@ -1 +1,4 @@ -<% render_errors @unit %> +<%= turbo_stream.remove @unit %> +<%= turbo_stream.replace @previous_base unless @previous_base.nil? %> +<%= turbo_stream.replace @unit.base unless @unit.base.nil? || @previous_base == @unit.base %> +<%= @before.nil? ? turbo_stream.append(:units, @unit) : turbo_stream.before(@before, @unit) %> diff --git a/app/views/units/update.turbo_stream.erb b/app/views/units/update.turbo_stream.erb new file mode 100644 index 0000000..3dd4b73 --- /dev/null +++ b/app/views/units/update.turbo_stream.erb @@ -0,0 +1,3 @@ +<%= turbo_stream.close_form dom_id(@unit, :edit) %> +<%= turbo_stream.replace @unit.base unless @unit.base.nil? %> +<%= turbo_stream.replace @unit %> diff --git a/config/locales/en.yml b/config/locales/en.yml index ae07695..2724e5f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -56,13 +56,13 @@ en: units: Units users: Users units: + no_items: There are no configured units. You can Add some or Import from defaults. unit: new_subunit: Subunit delete_unit: Delete index: new_unit: Add unit import_units: Import - no_items: There are no configured units. You can Add some or Import from defaults. top_level_drop: Drop here to reposition into top-level unit new: none: none