| <%= link_to_investments_sorted_by :id %> |
- <%= link_to_investments_sorted_by :title %> |
- <%= link_to_investments_sorted_by :supports %> |
- <%= t("admin.budget_investments.index.list.admin") %> |
-
- <%= t("admin.budget_investments.index.list.valuation_group") %>
+ | <%= link_to_investments_sorted_by :title %> |
+ <%= link_to_investments_sorted_by :supports %> |
+ <%= t("admin.budget_investments.index.list.admin") %> |
+
+ <%= t("admin.budget_investments.index.list.author") %>
+ |
+
+ <%= t("admin.budget_investments.index.list.valuation_group") %> /
<%= t("admin.budget_investments.index.list.valuator") %>
|
- <%= t("admin.budget_investments.index.list.geozone") %> |
- <%= t("admin.budget_investments.index.list.feasibility") %> |
- <%= t("admin.budget_investments.index.list.price") %> |
- <%= t("admin.budget_investments.index.list.valuation_finished") %> |
- <%= t("admin.budget_investments.index.list.visible_to_valuators") %> |
- <%= t("admin.budget_investments.index.list.selected") %> |
- <% if params[:filter] == "selected" %>
- <%= t("admin.budget_investments.index.list.incompatible") %> |
+ <%= t("admin.budget_investments.index.list.geozone") %> |
+ <%= t("admin.budget_investments.index.list.feasibility") %> |
+ <%= t("admin.budget_investments.index.list.price") %> |
+
+ <%= t("admin.budget_investments.index.list.valuation_finished") %>
+ |
+
+ <%= t("admin.budget_investments.index.list.visible_to_valuators") %>
+ |
+ <%= t("admin.budget_investments.index.list.selected") %> |
+ <% if params[:advanced_filters]&.include?("selected") %>
+ <%= t("admin.budget_investments.index.list.incompatible") %> |
<% end %>
diff --git a/app/views/admin/budget_investments/_select_investment.html.erb b/app/views/admin/budget_investments/_select_investment.html.erb
index 2da7a3817..b54efda68 100644
--- a/app/views/admin/budget_investments/_select_investment.html.erb
+++ b/app/views/admin/budget_investments/_select_investment.html.erb
@@ -1,45 +1,56 @@
-
+ |
<%= investment.id %>
|
-
+
+ |
<%= link_to investment.title,
admin_budget_budget_investment_path(budget_id: @budget.id,
id: investment.id,
params: Budget::Investment.filter_params(params).to_h),
target: "_blank" %>
|
-
+
+ |
<%= investment.total_votes %>
|
-
+
+ |
<% if investment.administrator.present? %>
">
<%= investment.administrator.description_or_name %>
<% else %>
- <%= t("admin.budget_investments.index.no_admin_assigned") %>
+ <%= t("admin.budget_investments.index.no_admin_assigned") %>
<% end %>
|
-
- <% no_valuation_groups = t("admin.budget_investments.index.no_valuation_groups") %>
- <%= investment.assigned_valuation_groups || no_valuation_groups %>
-
- <% no_valuators_assigned = t("admin.budget_investments.index.no_valuators_assigned") %>
- <%= investment.assigned_valuators || no_valuators_assigned %>
+
+ |
+ <%= investment.author.name %>
|
-
+
+ |
+ <% valuators = [investment.assigned_valuation_groups, investment.assigned_valuators].compact %>
+ <% no_valuators_assigned = t("admin.budget_investments.index.no_valuators_assigned") %>
+ <%= raw valuators.present? ? valuators.join(", ") : no_valuators_assigned %>
+ |
+
+
<%= investment.heading.name %>
|
-
+
+ |
<%= t("admin.budget_investments.index.feasibility.#{investment.feasibility}") %>
|
-
+
+ |
<%= investment.formatted_price %>
|
-
+
+ |
<%= investment.valuation_finished? ? t("shared.yes"): t("shared.no") %>
|
-
+
+ |
<%= form_for [:admin, investment.budget, investment], remote: true do |f| %>
<%= f.check_box :visible_to_valuators,
label: false,
@@ -47,7 +58,8 @@
id: "budget_investment_visible_to_valuators" %>
<% end %>
|
-
+
+ |
<% if investment.selected? %>
<%= link_to_unless investment.budget.finished?,
t("admin.budget_investments.index.selected"),
@@ -79,8 +91,9 @@
<% end %>
<% end %>
|
-<% if params[:filter] == "selected" %>
-
- <%= investment.incompatible? ? t("shared.yes"): t("shared.no") %>
- |
+
+<% if params[:advanced_filters]&.include?("selected") %>
+
+ <%= investment.incompatible? ? t("shared.yes"): t("shared.no") %>
+ |
<% end %>
diff --git a/app/views/admin/shared/_columns_selector.html.erb b/app/views/admin/shared/_columns_selector.html.erb
new file mode 100644
index 000000000..a48a17f3f
--- /dev/null
+++ b/app/views/admin/shared/_columns_selector.html.erb
@@ -0,0 +1,11 @@
+">
+
+ Columns
+
+
+
diff --git a/config/locales/ar/admin.yml b/config/locales/ar/admin.yml
index 8601e856e..b3e1367a9 100644
--- a/config/locales/ar/admin.yml
+++ b/config/locales/ar/admin.yml
@@ -217,7 +217,6 @@ ar:
assigned_admin: المدير الذي تم تعيينه
no_admin_assigned: لم يتم تعيين أي مدير
no_valuators_assigned: لم يتم تعيين مقيّمين
- no_valuation_groups: لم يتم تعيين مجموعات المقيّمين
feasibility:
feasible: "مجدي (%{price})"
unfeasible: "غير مجدي"
diff --git a/config/locales/de-DE/admin.yml b/config/locales/de-DE/admin.yml
index 4618c4aa7..8b2288f23 100644
--- a/config/locales/de-DE/admin.yml
+++ b/config/locales/de-DE/admin.yml
@@ -202,7 +202,6 @@ de:
assigned_admin: Zugewiesene*r Administrator*in
no_admin_assigned: Kein*e Administrator*in zugewiesen
no_valuators_assigned: Kein*e Begutacher*in zugewiesen
- no_valuation_groups: Keine Begutachtungsgruppe zugewiesen
feasibility:
feasible: "Durchführbar (%{price})"
unfeasible: "Undurchführbar"
diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml
index fd472c7f1..619e825a8 100644
--- a/config/locales/en/admin.yml
+++ b/config/locales/en/admin.yml
@@ -208,7 +208,6 @@ en:
assigned_admin: Assigned administrator
no_admin_assigned: No admin assigned
no_valuators_assigned: No valuators assigned
- no_valuation_groups: No valuation groups assigned
feasibility:
feasible: "Feasible"
unfeasible: "Unfeasible"
@@ -230,6 +229,7 @@ en:
author_username: Author username
incompatible: Incompatible
price: Price
+ author: Author
cannot_calculate_winners: The budget has to stay on phase "Balloting projects", "Reviewing Ballots" or "Finished budget" in order to calculate winners projects
see_results: "See results"
show:
diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml
index 907fc15c7..9d116d4d4 100644
--- a/config/locales/es/admin.yml
+++ b/config/locales/es/admin.yml
@@ -208,7 +208,6 @@ es:
assigned_admin: Administrador asignado
no_admin_assigned: Sin admin asignado
no_valuators_assigned: Sin evaluador
- no_valuation_groups: Sin grupos evaluadores
feasibility:
feasible: "Viable"
unfeasible: "Inviable"
@@ -230,6 +229,7 @@ es:
author_username: Usuario autor
incompatible: Incompatible
price: Precio
+ author: Autor
cannot_calculate_winners: El presupuesto debe estar en las fases "Votación final", "Votación finalizada" o "Resultados" para poder calcular las propuestas ganadoras
see_results: "Ver resultados"
show:
diff --git a/config/locales/fa-IR/admin.yml b/config/locales/fa-IR/admin.yml
index 498d1f83a..25bf66255 100644
--- a/config/locales/fa-IR/admin.yml
+++ b/config/locales/fa-IR/admin.yml
@@ -157,7 +157,6 @@ fa:
assigned_admin: سرپرست تعیین شده
no_admin_assigned: بدون تعیین مدیر
no_valuators_assigned: بدون تعیین ارزیاب
- no_valuation_groups: بدون تعیین گروه ارزیاب
feasibility:
feasible: "امکان پذیر %{price}\n"
unfeasible: "غیر قابل پیش بینی"
@@ -350,7 +349,7 @@ fa:
all: همه
new:
back: برگشت
- title: ایجاد یک پروسه جدید قانون مشارکتی
+ title: ایجاد یک پروسه جدید قانون مشارکتی
submit_button: فرآیند را ایجاد کنید
proposals:
select_order: مرتب سازی بر اساس
@@ -506,7 +505,7 @@ fa:
homepage: صفحه اصلی
pages: صفحه سفارشی
images: صفحات سفارشی
- content_blocks: محتوای بلوکهای سفارشی
+ content_blocks: محتوای بلوکهای سفارشی
information_texts_menu:
debates: "مباحثه"
community: "جامعه"
@@ -630,7 +629,7 @@ fa:
title: خلاصه ارزشیابی برای پروژه های سرمایه گذاری
valuator_name: ارزیابی
finished_and_feasible_count: تمام شده و امکان پذیر است
- finished_and_unfeasible_count: تمام شده و غیر قابل پیش بینی
+ finished_and_unfeasible_count: تمام شده و غیر قابل پیش بینی
finished_count: به پایان رسید
in_evaluation_count: در ارزیابی
total_count: "جمع\n"
@@ -697,7 +696,7 @@ fa:
remove_shift: "حذف"
search_officer_button: جستجو
search_officer_placeholder: جستجو افسر
- search_officer_text: جستجو برای افسر برای اختصاص شیفت جدید
+ search_officer_text: جستجو برای افسر برای اختصاص شیفت جدید
select_date: "انتخاب روز"
select_task: "وظیفه را انتخاب کنید"
table_shift: "تغییر "
@@ -887,7 +886,7 @@ fa:
no_officials: هیچ مقام رسمی وجود ندارد
name: نام
official_position: موضع رسمی
- official_level: سطح
+ official_level: سطح
level_0: رسمی نیست
level_1: سطح 1
level_2: سطح 2
@@ -980,7 +979,7 @@ fa:
placeholder: جستجوی غرفه با نام
poll_officers_search:
button: جستجو
- placeholder: جستجو افسران نظرسنجی
+ placeholder: جستجو افسران نظرسنجی
poll_questions_search:
button: جستجو
placeholder: جستجو پرسش های نظرسنجی
@@ -1056,7 +1055,7 @@ fa:
title_proposals_with_supports: خلاصه ای برای پروژه های سرمایه گذاری با پشتیبانی
geozone_name: دامنه
finished_and_feasible_count: تمام شده و امکان پذیر است
- finished_and_unfeasible_count: تمام شده و غیر قابل پیش بینی
+ finished_and_unfeasible_count: تمام شده و غیر قابل پیش بینی
finished_count: به پایان رسید
in_evaluation_count: در ارزیابی
total_count: "جمع\n"
@@ -1115,7 +1114,7 @@ fa:
loading: " امضاتوسط سرشماری تایید شده است، لطفا این صفحه را رفرش کنید"
stats:
show:
- stats_title: آمار
+ stats_title: آمار
summary:
comment_votes: نظر رای
comments: توضیحات
@@ -1148,7 +1147,7 @@ fa:
total: "جمع\n"
proposals_with_notifications: طرح با اعلان ها
polls:
- title: وضعیت نظرسنجی ها
+ title: وضعیت نظرسنجی ها
all: نظر سنجی ها
web_participants: وب سایت شرکت کنندگان
total_participants: کل شرکت کنندگان
@@ -1178,7 +1177,7 @@ fa:
title: کاربر
no_users: هیچ کاربری وجود ندارد.
search:
- placeholder: جستجوی کاربر توسط ایمیل و نام یا شماره سند
+ placeholder: جستجوی کاربر توسط ایمیل و نام یا شماره سند
search: جستجو
verifications:
index:
diff --git a/config/locales/fr/admin.yml b/config/locales/fr/admin.yml
index 3c1c92d68..a15c4480c 100644
--- a/config/locales/fr/admin.yml
+++ b/config/locales/fr/admin.yml
@@ -205,7 +205,6 @@ fr:
assigned_admin: Administrateur affecté
no_admin_assigned: Aucun administrateur affecté
no_valuators_assigned: Aucun évaluateur affecté
- no_valuation_groups: Aucun groupe d’évaluation assignés
feasibility:
feasible: "Réalisable (%{price})"
unfeasible: "Infaisable"
diff --git a/config/locales/gl/admin.yml b/config/locales/gl/admin.yml
index 27f9738b7..1c4fc1893 100644
--- a/config/locales/gl/admin.yml
+++ b/config/locales/gl/admin.yml
@@ -202,7 +202,6 @@ gl:
assigned_admin: Administrador asignado
no_admin_assigned: Sen administrador asignado
no_valuators_assigned: Sen avaliador
- no_valuation_groups: Grupos asignados sen valoración
feasibility:
feasible: "Viable (%{price})"
unfeasible: "Non viables"
diff --git a/config/locales/it/admin.yml b/config/locales/it/admin.yml
index 4fe3ae6a2..3ca6ee044 100644
--- a/config/locales/it/admin.yml
+++ b/config/locales/it/admin.yml
@@ -169,7 +169,6 @@ it:
assigned_admin: Amministratore assegnato
no_admin_assigned: Nessun amministratore assegnato
no_valuators_assigned: Nessun valutatore assegnato
- no_valuation_groups: Nessun gruppo di stima assegnato
feasibility:
feasible: "Fattibile (%{price})"
unfeasible: "Irrealizzabile"
diff --git a/config/locales/pl-PL/admin.yml b/config/locales/pl-PL/admin.yml
index 52cca88dc..a02c9eaba 100644
--- a/config/locales/pl-PL/admin.yml
+++ b/config/locales/pl-PL/admin.yml
@@ -208,7 +208,6 @@ pl:
assigned_admin: Przypisany administrator
no_admin_assigned: Nie przypisano administratora
no_valuators_assigned: Brak przypisanych wyceniających
- no_valuation_groups: Nie przypisano żadnych grup wyceny
feasibility:
feasible: "Wykonalne (%{price})"
unfeasible: "Niewykonalne"
diff --git a/config/locales/pt-BR/admin.yml b/config/locales/pt-BR/admin.yml
index 5a0c12006..d768c45d8 100644
--- a/config/locales/pt-BR/admin.yml
+++ b/config/locales/pt-BR/admin.yml
@@ -165,7 +165,6 @@ pt-BR:
assigned_admin: Administrador designado
no_admin_assigned: Não há administrador designado
no_valuators_assigned: Não há avaliadores designados
- no_valuation_groups: Não há grupos de avaliação atribuídos
feasibility:
feasible: "Factível (%{price})"
unfeasible: "Inviável"
diff --git a/config/locales/ru/admin.yml b/config/locales/ru/admin.yml
index 2e5d6c302..5aa939e19 100644
--- a/config/locales/ru/admin.yml
+++ b/config/locales/ru/admin.yml
@@ -209,7 +209,6 @@ ru:
assigned_admin: Назначенный администратор
no_admin_assigned: Ни один администратор не назначен
no_valuators_assigned: Ни один оценщик не назначен
- no_valuation_groups: Не назначено ни одной группы оценки
feasibility:
feasible: "Приемлемая (%{price})"
unfeasible: "Неприемлемая"
diff --git a/config/locales/so-SO/admin.yml b/config/locales/so-SO/admin.yml
index 4250acbac..2b82569d5 100644
--- a/config/locales/so-SO/admin.yml
+++ b/config/locales/so-SO/admin.yml
@@ -165,7 +165,6 @@ so:
assigned_admin: Mamulaha lamagcaabay
no_admin_assigned: Mamule lama magcabin
no_valuators_assigned: Majiraan Qimeeyayaal loo qondeyey
- no_valuation_groups: Majiraan koox qimeyayala o loo qondeyey
feasibility:
feasible: "Suurto gal %{price}"
unfeasible: "An surtgak ahayn"
diff --git a/config/locales/sq-AL/admin.yml b/config/locales/sq-AL/admin.yml
index 12f96b9dc..ae2d38dc3 100644
--- a/config/locales/sq-AL/admin.yml
+++ b/config/locales/sq-AL/admin.yml
@@ -165,7 +165,6 @@ sq:
assigned_admin: Administrator i caktuar
no_admin_assigned: Asnjë admin i caktuar
no_valuators_assigned: Asnjë vlerësues nuk është caktuar
- no_valuation_groups: Asnjë grup vlerësimi nuk është caktuar
feasibility:
feasible: "I mundshëm%{price}"
unfeasible: "Parealizueshme"
diff --git a/config/locales/sv-SE/admin.yml b/config/locales/sv-SE/admin.yml
index b6c8afbf5..899e2003f 100644
--- a/config/locales/sv-SE/admin.yml
+++ b/config/locales/sv-SE/admin.yml
@@ -170,7 +170,6 @@ sv:
assigned_admin: Ansvarig administratör
no_admin_assigned: Saknar ansvarig administratör
no_valuators_assigned: Inga ansvariga bedömare
- no_valuation_groups: Inga ansvariga bedömningsgrupper
feasibility:
feasible: "Genomförbart (%{price})"
unfeasible: "Ej genomförbart"
diff --git a/config/locales/val/admin.yml b/config/locales/val/admin.yml
index 8cd1596cb..f9ccc3b9e 100644
--- a/config/locales/val/admin.yml
+++ b/config/locales/val/admin.yml
@@ -202,7 +202,6 @@ val:
assigned_admin: Administrador asignat
no_admin_assigned: Sense admin assignat
no_valuators_assigned: Sense avaluador asignat
- no_valuation_groups: Sense grups avaluadors
feasibility:
feasible: "Viable (%{price})"
unfeasible: "Inviable"
diff --git a/config/locales/zh-CN/admin.yml b/config/locales/zh-CN/admin.yml
index b4152a1a9..335e56030 100644
--- a/config/locales/zh-CN/admin.yml
+++ b/config/locales/zh-CN/admin.yml
@@ -165,7 +165,6 @@ zh-CN:
assigned_admin: 指定的管理员
no_admin_assigned: 没有指定管理员
no_valuators_assigned: 没有指定评估员
- no_valuation_groups: 没有指定评估组
feasibility:
feasible: "可行 (%{price})"
unfeasible: "不可行"
diff --git a/config/locales/zh-TW/admin.yml b/config/locales/zh-TW/admin.yml
index 0a4696675..5ee610792 100644
--- a/config/locales/zh-TW/admin.yml
+++ b/config/locales/zh-TW/admin.yml
@@ -164,7 +164,6 @@ zh-TW:
assigned_admin: 指定的管理員
no_admin_assigned: 未分配管理員
no_valuators_assigned: 未分配評估員
- no_valuation_groups: 未分配評估組
feasibility:
feasible: "可行 (%{price})"
unfeasible: "不可行"
diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb
index 8e870fa5a..7ff12954f 100644
--- a/spec/features/admin/budget_investments_spec.rb
+++ b/spec/features/admin/budget_investments_spec.rb
@@ -95,25 +95,26 @@ describe "Admin budget investments" do
miriam = create(:user, username: "Miriam")
valuator1 = create(:valuator, user: olga, description: "Valuator Olga")
valuator2 = create(:valuator, user: miriam, description: "Valuator Miriam")
+ valuator_group = create(:valuator_group, name: "Health")
admin = create(:administrator, user: create(:user, username: "Gema"))
budget_investment1.valuators << valuator1
budget_investment2.valuators << valuator1
budget_investment2.valuators << valuator2
+ budget_investment2.valuator_groups << valuator_group
visit admin_budget_budget_investments_path(budget_id: budget.id)
within("#budget_investment_#{budget_investment1.id}") do
expect(page).to have_content("No admin assigned")
expect(page).to have_content("Valuator Olga")
- expect(page).to have_content("No valuation groups assigned")
end
within("#budget_investment_#{budget_investment2.id}") do
expect(page).to have_content("No admin assigned")
expect(page).to have_content("Valuator Olga")
expect(page).to have_content("Valuator Miriam")
- expect(page).to have_content("No valuation groups assigned")
+ expect(page).to have_content("Health")
end
budget_investment3.update(administrator_id: admin.id)
@@ -1740,4 +1741,122 @@ describe "Admin budget investments" do
end
end
+ context "Columns chooser" do
+ let!(:investment) do
+ create(:budget_investment,
+ :winner,
+ budget: budget,
+ visible_to_valuators: true,
+ author: create(:user, username: "Jon Doe")
+ )
+ end
+ let(:default_columns) do
+ %w[id title supports admin valuator geozone feasibility price
+ valuation_finished visible_to_valuators selected]
+ end
+ let(:selectable_columns) do
+ %w[title supports admin author valuator geozone feasibility price
+ valuation_finished visible_to_valuators selected]
+ end
+
+ scenario "Display default columns", :js do
+ visit admin_budget_budget_investments_path(budget)
+
+ within("table.column-selecteable") do
+ default_columns.each do |default_column|
+ columns_header = I18n.t("admin.budget_investments.index.list.#{default_column}")
+ expect(page).to have_content(columns_header)
+ end
+
+ expect(page).to have_content(investment.title)
+ end
+ end
+
+ scenario "Display incompatible column as default if selected filter was set", :js do
+ visit admin_budget_budget_investments_path(budget, advanced_filters: ["selected"])
+
+ within("table.column-selecteable") do
+ expect(page).to have_content("Incompatible")
+ end
+
+ expect(page).to have_content(investment.title)
+ end
+
+ scenario "Set cookie with default columns value if undefined", :js do
+ visit admin_budget_budget_investments_path(budget)
+
+ cookies = page.driver.browser.manage.all_cookies
+ cookie = cookies.find{|cookie| cookie[:name] == "investments-columns"}
+ cookie_value = cookie[:value]
+
+ expect(cookie_value).to eq("id,title,supports,admin,valuator,geozone," +
+ "feasibility,price,valuation_finished,visible_to_valuators,selected,incompatible")
+ end
+
+ scenario "Use column selector to display visible columns", :js do
+ visit admin_budget_budget_investments_path(budget)
+
+ within("#js-columns-selector") do
+ find("strong", text: "Columns").click
+ end
+
+ within("#js-columns-selector-wrapper") do
+ selectable_columns.each do |column|
+ check_text = I18n.t("admin.budget_investments.index.list.#{column}")
+
+ expect(page).to have_content(check_text)
+ end
+ end
+
+ within("#js-columns-selector-wrapper") do
+ uncheck "Title"
+ uncheck "Price"
+ check "Author"
+ end
+
+ within("table.column-selecteable") do
+ expect(page).not_to have_content("Title")
+ expect(page).not_to have_content("Price")
+ expect(page).to have_content("Author")
+
+ expect(page).not_to have_content(investment.title)
+ expect(page).not_to have_content(investment.formatted_price)
+ expect(page).to have_content("Jon Doe")
+ end
+ end
+
+ scenario "Cookie will be updated after change columns selection", :js do
+ visit admin_budget_budget_investments_path(budget)
+
+ within("#js-columns-selector") do
+ find("strong", text: "Columns").click
+ end
+
+ within("#js-columns-selector-wrapper") do
+ uncheck "Title"
+ uncheck "Price"
+ uncheck "Valuation Group / Valuator"
+ check "Author"
+ end
+
+ cookies = page.driver.browser.manage.all_cookies
+ cookie = cookies.find{|cookie| cookie[:name] == "investments-columns"}
+ cookie_value = cookie[:value]
+
+ expect(cookie_value).to eq("id,supports,admin,geozone," +
+ "feasibility,valuation_finished,visible_to_valuators,selected,incompatible,author")
+
+
+ visit admin_budget_budget_investments_path(budget)
+
+ cookies = page.driver.browser.manage.all_cookies
+ cookie = cookies.find{|cookie| cookie[:name] == "investments-columns"}
+ cookie_value = cookie[:value]
+
+ expect(cookie_value).to eq("id,supports,admin,geozone,feasibility,valuation_finished," +
+ "visible_to_valuators,selected,incompatible,author")
+
+ end
+ end
+
end