1
0

Added quantity filtering by domain

This commit is contained in:
cryptogopher
2019-11-21 01:28:03 +01:00
parent d3ba8579d6
commit 2ebbe9a306
12 changed files with 99 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
class IngredientsController < ApplicationController
require 'csv'
before_action :init_session_filters
before_action :find_project_by_project_id,
only: [:index, :nutrients, :create, :import, :filter, :filter_nutrients]
before_action :find_quantity, only: [:toggle_nutrient_column]
@@ -54,13 +55,13 @@ class IngredientsController < ApplicationController
end
def filter
session[:filters] = params[:filters]
session[:i_filters] = params[:filters]
prepare_ingredients
render :toggle
end
def filter_nutrients
session[:filters] = params[:filters]
session[:i_filters] = params[:filters]
prepare_nutrients
render :toggle_nutrient_column
end
@@ -167,6 +168,10 @@ class IngredientsController < ApplicationController
private
def init_session_filters
session[:i_filters] ||= {}
end
def ingredient_params
params.require(:ingredient).permit(
:name,
@@ -197,13 +202,13 @@ class IngredientsController < ApplicationController
def prepare_ingredients
@ingredients, @formula_q = @project.ingredients.includes(:ref_unit, :source)
.filter(@project, session[:filters])
.filter(@project, session[:i_filters])
end
def prepare_nutrients
@quantities = @project.quantities.where(primary: true)
ingredients, requested_n, extra_n, @formula_q = @project.ingredients
.filter(@project, session[:filters], @quantities)
.filter(@project, session[:i_filters], @quantities)
@nutrients = {}
@extra_nutrients = {}

View File

@@ -1,11 +1,12 @@
class QuantitiesController < ApplicationController
before_action :find_project_by_project_id, only: [:index, :create]
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 :authorize
def index
@quantity = @project.quantities.new
@quantities = @project.quantities
prepare_quantities
end
def create
@@ -14,7 +15,7 @@ class QuantitiesController < ApplicationController
flash[:notice] = 'Created new quantity'
redirect_to project_quantities_url(@project)
else
@quantities = @project.quantities
prepare_quantities
render :index
end
end
@@ -23,41 +24,51 @@ class QuantitiesController < ApplicationController
if @quantity.destroy
flash[:notice] = 'Deleted quantity'
end
@quantities = @project.quantities
prepare_quantities
render :toggle
end
def toggle
@quantity.toggle_primary!
@quantities = @project.quantities
prepare_quantities
end
def filter
session[:q_filters] = params[:filters]
prepare_quantities
render :toggle
end
def up
@quantity.move_left if @quantity.left_sibling.present?
@quantities = @project.quantities
prepare_quantities
render :toggle
end
def down
@quantity.move_right if @quantity.right_sibling.present?
@quantities = @project.quantities
prepare_quantities
render :toggle
end
def left
@quantity.move_to_right_of(@quantity.parent) if @quantity.parent.present?
@quantities = @project.quantities
prepare_quantities
render :toggle
end
def right
@quantity.move_to_child_of(@quantity.left_sibling) if @quantity.left_sibling.present?
@quantities = @project.quantities
prepare_quantities
render :toggle
end
private
def init_session_filters
session[:q_filters] ||= {}
end
def quantity_params
params[:quantity].delete(:formula) if params[:quantity][:formula].blank?
params.require(:quantity).permit(
@@ -69,4 +80,8 @@ class QuantitiesController < ApplicationController
:primary
)
end
def prepare_quantities
@quantities = @project.quantities.filter(@project, session[:q_filters])
end
end