Merge pull request #3364 from LextrendIT/3357_add_admin_investments_advanced_filter_for_max_supports
Add on admin budget investments an advanced filter for max supports
This commit is contained in:
@@ -1,7 +1,13 @@
|
||||
module AdminBudgetInvestmentsHelper
|
||||
|
||||
def advanced_menu_visibility
|
||||
(params[:advanced_filters].empty? && params["min_total_supports"].blank?) ? "hide" : ""
|
||||
if params[:advanced_filters].empty? &&
|
||||
params["min_total_supports"].blank? &&
|
||||
params["max_total_supports"].blank?
|
||||
"hide"
|
||||
else
|
||||
""
|
||||
end
|
||||
end
|
||||
|
||||
def init_advanced_menu
|
||||
|
||||
@@ -118,6 +118,8 @@ class Budget
|
||||
|
||||
results = results.where("cached_votes_up + physical_votes >= ?",
|
||||
params[:min_total_supports]) if params[:min_total_supports].present?
|
||||
results = results.where("cached_votes_up + physical_votes <= ?",
|
||||
params[:max_total_supports]) if params[:max_total_supports].present?
|
||||
results = results.where(group_id: params[:group_id]) if params[:group_id].present?
|
||||
results = results.by_tag(params[:tag_name]) if params[:tag_name].present?
|
||||
results = results.by_heading(params[:heading_id]) if params[:heading_id].present?
|
||||
|
||||
@@ -17,8 +17,15 @@
|
||||
<%= t("admin.budget_investments.index.filters.#{option}") %>
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="filter">
|
||||
<%= text_field_tag :min_total_supports, params["min_total_supports"], placeholder: t("admin.budget_investments.index.filters.min_total_supports") %>
|
||||
<div>
|
||||
<div class="filter">
|
||||
<%= label_tag :min_total_supports, t("admin.budget_investments.index.filters.min_total_supports") %>
|
||||
<%= text_field_tag :min_total_supports, params["min_total_supports"] %>
|
||||
</div>
|
||||
<div class="filter">
|
||||
<%= label_tag :max_total_supports, t("admin.budget_investments.index.filters.max_total_supports") %>
|
||||
<%= text_field_tag :max_total_supports, params["max_total_supports"] %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
filter: params[:filter],
|
||||
sort_by: params[:sort_by],
|
||||
min_total_supports: params[:min_total_supports],
|
||||
max_total_supports: params[:max_total_supports],
|
||||
advanced_filters: params[:advanced_filters],
|
||||
page: params[:page]),
|
||||
method: :patch,
|
||||
@@ -69,6 +70,7 @@
|
||||
filter: params[:filter],
|
||||
sort_by: params[:sort_by],
|
||||
min_total_supports: params[:min_total_supports],
|
||||
max_total_supports: params[:max_total_supports],
|
||||
advanced_filters: params[:advanced_filters],
|
||||
page: params[:page]),
|
||||
method: :patch,
|
||||
|
||||
@@ -193,6 +193,7 @@ en:
|
||||
undecided: Undecided
|
||||
unfeasible: Unfeasible
|
||||
min_total_supports: Minimum supports
|
||||
max_total_supports: Maximum supports
|
||||
winners: Winners
|
||||
one_filter_html: "Current applied filters: <b><em>%{filter}</em></b>"
|
||||
two_filters_html: "Current applied filters: <b><em>%{filter}, %{advanced_filters}</em></b>"
|
||||
|
||||
@@ -193,6 +193,7 @@ es:
|
||||
undecided: Sin decidir
|
||||
unfeasible: Inviables
|
||||
min_total_supports: Apoyos mínimos
|
||||
max_total_supports: Apoyos máximos
|
||||
winners: Ganadores
|
||||
one_filter_html: "Filtros en uso: <b><em>%{filter}</em></b>"
|
||||
two_filters_html: "Filtros en uso: <b><em>%{filter}, %{advanced_filters}</em></b>"
|
||||
|
||||
@@ -439,6 +439,42 @@ feature "Admin budget investments" do
|
||||
expect(page).not_to have_link("Road 100 supports")
|
||||
end
|
||||
|
||||
scenario "Filtering by maximum number of votes", :js do
|
||||
group_1 = create(:budget_group, budget: budget)
|
||||
group_2 = create(:budget_group, budget: budget)
|
||||
parks = create(:budget_heading, group: group_1)
|
||||
roads = create(:budget_heading, group: group_2)
|
||||
streets = create(:budget_heading, group: group_2)
|
||||
|
||||
create(:budget_investment, heading: parks, cached_votes_up: 40, title: "Park 40 supports")
|
||||
create(:budget_investment, heading: parks, cached_votes_up: 99, title: "Park 99 supports")
|
||||
create(:budget_investment, heading: roads, cached_votes_up: 100, title: "Road 100 supports")
|
||||
create(:budget_investment, heading: roads, cached_votes_up: 199, title: "Road 199 supports")
|
||||
create(:budget_investment, heading: streets, cached_votes_up: 200, title: "St. 200 supports")
|
||||
create(:budget_investment, heading: streets, cached_votes_up: 300, title: "St. 300 supports")
|
||||
|
||||
visit admin_budget_budget_investments_path(budget)
|
||||
|
||||
expect(page).to have_link("Park 40 supports")
|
||||
expect(page).to have_link("Park 99 supports")
|
||||
expect(page).to have_link("Road 100 supports")
|
||||
expect(page).to have_link("Road 199 supports")
|
||||
expect(page).to have_link("St. 200 supports")
|
||||
expect(page).to have_link("St. 300 supports")
|
||||
|
||||
click_link "Advanced filters"
|
||||
fill_in "max_total_supports", with: 180
|
||||
click_button "Filter"
|
||||
|
||||
expect(page).to have_content("There are 3 investments")
|
||||
expect(page).not_to have_link("Road 199 supports")
|
||||
expect(page).not_to have_link("St. 200 supports")
|
||||
expect(page).not_to have_link("St. 300 supports")
|
||||
expect(page).to have_link("Park 40 supports")
|
||||
expect(page).to have_link("Park 99 supports")
|
||||
expect(page).to have_link("Road 100 supports")
|
||||
end
|
||||
|
||||
scenario "Combination of checkbox with text search", :js do
|
||||
user = create(:user, username: "Admin 1")
|
||||
administrator = create(:administrator, user: user)
|
||||
|
||||
Reference in New Issue
Block a user