diff --git a/app/controllers/quantities_controller.rb b/app/controllers/quantities_controller.rb index 043d3fa..443df62 100644 --- a/app/controllers/quantities_controller.rb +++ b/app/controllers/quantities_controller.rb @@ -1,7 +1,7 @@ class QuantitiesController < ApplicationController before_action :init_session_filters before_action :find_project_by_project_id, only: [:index, :create, :filter] - before_action :find_quantity, only: [:destroy, :toggle, :up, :down, :left, :right] + before_action :find_quantity, only: [:destroy, :toggle, :move] before_action :authorize def index @@ -40,26 +40,19 @@ class QuantitiesController < ApplicationController render :toggle end - def up - @quantity.move_left if @quantity.left_sibling.present? - prepare_quantities - render :toggle - end + def move + direction = params[:direction].to_sym + case direction + when :up + @quantity.move_left + when :down + @quantity.move_right + when :left + @quantity.move_to_right_of(@quantity.parent) + when :right + @quantity.move_to_child_of(@quantity.left_sibling) + end if @quantity.movable?(direction) - def down - @quantity.move_right if @quantity.right_sibling.present? - prepare_quantities - render :toggle - end - - def left - @quantity.move_to_right_of(@quantity.parent) if @quantity.parent.present? - prepare_quantities - render :toggle - end - - def right - @quantity.move_to_child_of(@quantity.left_sibling) if @quantity.left_sibling.present? prepare_quantities render :toggle end diff --git a/app/models/quantity.rb b/app/models/quantity.rb index 7e6afe1..2124ae4 100644 --- a/app/models/quantity.rb +++ b/app/models/quantity.rb @@ -23,6 +23,22 @@ class Quantity < ActiveRecord::Base end end + def movable?(direction) + case direction + when :up + self.left_sibling.present? + when :down + self.right_sibling.present? + when :left + self.parent.present? + when :right + left = self.left_sibling + left.present? && (left.domain == self.domain) + else + false + end + end + def toggle_primary! self.toggle!(:primary) end diff --git a/app/views/quantities/_list.html.erb b/app/views/quantities/_list.html.erb index a546dba..160d583 100644 --- a/app/views/quantities/_list.html.erb +++ b/app/views/quantities/_list.html.erb @@ -32,50 +32,19 @@ <%= q.name %>