Investments are now aggregated when using more than 1 advanced filter

This commit is contained in:
Angel Perez
2018-01-30 12:04:49 -04:00
parent 0d64f51b78
commit a5159672d4
4 changed files with 19 additions and 14 deletions

View File

@@ -15,7 +15,7 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
def index
respond_to do |format|
format.html
format.js { render layout: false }
format.js
format.csv do
send_data Budget::Investment.to_csv(@investments, headers: true),
filename: 'budget_investments.csv'
@@ -48,6 +48,7 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
def toggle_selection
@investment.toggle :selected
@investment.save
load_investments
end
private

View File

@@ -104,17 +104,21 @@ class Budget
results = results.by_heading(params[:heading_id]) if params[:heading_id].present?
results = results.by_valuator(params[:valuator_id]) if params[:valuator_id].present?
results = results.by_admin(params[:administrator_id]) if params[:administrator_id].present?
# Advanced filters
results = results.valuation_finished_feasible if params[:second_filter] == 'feasible'
results = results.where(selected: true) if params[:second_filter] == 'selected'
results = results.undecided if params[:second_filter] == 'undecided'
results = results.unfeasible if params[:second_filter] == 'unfeasible'
results = advanced_filters(params, results) if params[:advanced_filters].present?
results = results.send(current_filter) if current_filter.present?
results.includes(:heading, :group, :budget, administrator: :user, valuators: :user)
end
def self.advanced_filters(params, results)
ids = []
ids += results.valuation_finished_feasible.pluck(:id) if params[:advanced_filters].include?('feasible')
ids += results.where(selected: true).pluck(:id) if params[:advanced_filters].include?('selected')
ids += results.undecided.pluck(:id) if params[:advanced_filters].include?('undecided')
ids += results.unfeasible.pluck(:id) if params[:advanced_filters].include?('unfeasible')
results.where("budget_investments.id IN (?)", ids)
end
def self.limit_results(budget, params, results)
max_per_heading = params[:max_per_heading].to_i
return results if max_per_heading <= 0

View File

@@ -8,27 +8,27 @@
<%= form_tag(admin_budget_budget_investments_path(budget: @budget,
filter: params[:filter],
sort_by: params[:sort_by],
second_filter: params[:second_filter],
max_per_heading: params[:max_per_heading],
advanced_filters: params[:advanced_filters],
page: 1), method: :get, remote: true, enforce_utf8: false) do %>
<div class="small-12 medium-8 large-10 column">
<span class="filter">
<%= check_box_tag :second_filter, "feasible" %>
<%= check_box_tag "advanced_filters[]", "feasible" %>
<%= t("#{i18n_namespace}.filters.feasible") %>
</span>
<span class="filter">
<%= check_box_tag :second_filter, "selected" %>
<%= check_box_tag "advanced_filters[]", "selected" %>
<%= t("#{i18n_namespace}.filters.selected") %>
</span>
<span class="filter">
<%= check_box_tag :second_filter, "undecided" %>
<%= check_box_tag "advanced_filters[]", "undecided" %>
<%= t("#{i18n_namespace}.filters.undecided") %>
</span>
<span class="filter">
<%= check_box_tag :second_filter, "unfeasible" %>
<%= check_box_tag "advanced_filters[]", "unfeasible" %>
<%= t("#{i18n_namespace}.filters.unfeasible") %>
</span>

View File

@@ -84,8 +84,8 @@
investment,
filter: params[:filter],
sort_by: params[:sort_by],
second_filter: params[:second_filter],
max_per_heading: params[:max_per_heading],
advanced_filters: params[:advanced_filters],
page: params[:page]),
method: :patch,
remote: true,
@@ -97,8 +97,8 @@
investment,
filter: params[:filter],
sort_by: params[:sort_by],
second_filter: params[:second_filter],
max_per_heading: params[:max_per_heading],
advanced_filters: params[:advanced_filters],
page: params[:page]),
method: :patch,
remote: true,