diff --git a/app/controllers/admin/budget_investments_controller.rb b/app/controllers/admin/budget_investments_controller.rb
index 8c45d7c9c..c2d5cbb75 100644
--- a/app/controllers/admin/budget_investments_controller.rb
+++ b/app/controllers/admin/budget_investments_controller.rb
@@ -53,8 +53,12 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
private
def load_investments
- @investments = Budget::Investment.scoped_filter(params, @current_filter)
- .order(cached_votes_up: :desc, created_at: :desc)
+ if params[:project_title].present?
+ @investments = Budget::Investment.where("title ILIKE ?", "%#{params[:project_title].strip}%")
+ else
+ @investments = Budget::Investment.scoped_filter(params, @current_filter)
+ .order(cached_votes_up: :desc, created_at: :desc)
+ end
@investments = @investments.page(params[:page]) unless request.format.csv?
end
diff --git a/app/views/admin/budget_investments/_search_form.html.erb b/app/views/admin/budget_investments/_search_form.html.erb
new file mode 100644
index 000000000..d11e80dc2
--- /dev/null
+++ b/app/views/admin/budget_investments/_search_form.html.erb
@@ -0,0 +1,12 @@
+
+ <%= form_for(Budget::Investment.new, url: admin_budget_budget_investments_path(budget: @budget),
+ method: :get,
+ remote: true) do |f| %>
+
+ <% end %>
+
diff --git a/app/views/admin/budget_investments/index.html.erb b/app/views/admin/budget_investments/index.html.erb
index b0eed56aa..c295b033d 100644
--- a/app/views/admin/budget_investments/index.html.erb
+++ b/app/views/admin/budget_investments/index.html.erb
@@ -1,5 +1,7 @@
<%= @budget.name %> - <%= t("admin.budget_investments.index.title") %>
+<%= render 'search_form', i18n_namespace: "admin.budget_investments.index" %>
+
<%= form_tag(admin_budget_budget_investments_path(budget: @budget), method: :get, enforce_utf8: false) do %>
<%= select_tag :administrator_id,
diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml
index 98a4b7fb6..92afd7ec9 100644
--- a/config/locales/en/admin.yml
+++ b/config/locales/en/admin.yml
@@ -138,6 +138,7 @@ en:
valuator_filter_all: All valuators
tags_filter_all: All tags
advanced_filters: Advanced filters
+ placeholder: Search projects
filters:
all: All
without_admin: Without assigned admin
@@ -153,6 +154,8 @@ en:
button: Filter
one_filter_html: "Current applied filter: %{filter}"
two_filters_html: "Current applied filters: %{filter}, %{second_filter}"
+ buttons:
+ search: Search
download_current_selection: "Download current selection"
no_budget_investments: "There are no investment projects."
title: Investment projects
diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml
index 03b945d5a..1d311074d 100644
--- a/config/locales/es/admin.yml
+++ b/config/locales/es/admin.yml
@@ -138,6 +138,7 @@ es:
valuator_filter_all: Todos los evaluadores
tags_filter_all: Todas las etiquetas
advanced_filters: Filtros avanzados
+ placeholder: Buscar proyectos
filters:
all: Todos
without_admin: Sin administrador
@@ -153,6 +154,8 @@ es:
button: Filtrar
one_filter_html: "Filtro en uso: %{filter}"
two_filters_html: "Filtros en uso: %{filter}, %{second_filter}"
+ buttons:
+ search: Buscar
download_current_selection: "Descargar selección actual"
no_budget_investments: "No hay proyectos de gasto."
title: Proyectos de gasto
diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb
index 14de19dfe..c9ad52a9b 100644
--- a/spec/features/admin/budget_investments_spec.rb
+++ b/spec/features/admin/budget_investments_spec.rb
@@ -338,6 +338,27 @@ feature 'Admin budget investments' do
end
+ context 'Search' do
+ background do
+ @budget = create(:budget)
+ @investment_1 = create(:budget_investment, title: "Some investment", budget: @budget)
+ @investment_2 = create(:budget_investment, title: "Some other investment", budget: @budget)
+ end
+
+ scenario "Search investments by title" do
+ visit admin_budget_budget_investments_path(@budget)
+
+ expect(page).to have_content(@investment_1.title)
+ expect(page).to have_content(@investment_2.title)
+
+ fill_in 'project_title', with: 'Some investment'
+ click_button 'Search'
+
+ expect(page).to have_content(@investment_1.title)
+ expect(page).to_not have_content(@investment_2.title)
+ end
+ end
+
context 'Show' do
background do
@administrator = create(:administrator, user: create(:user, username: 'Ana', email: 'ana@admins.org'))