diff --git a/app/assets/javascripts/forms.js.coffee b/app/assets/javascripts/forms.js.coffee index a7d26cc02..fab812400 100644 --- a/app/assets/javascripts/forms.js.coffee +++ b/app/assets/javascripts/forms.js.coffee @@ -1,12 +1,25 @@ App.Forms = - initialize: -> + disableEnter: -> + $('form.js-enter-disabled').on('keyup keypress', (event) -> + if event.which == 13 + e.preventDefault() + ) + + submitOnChange: -> $('.js-submit-on-change').unbind('change').on('change', -> $(this).closest('form').submit() false - ) + ) + toggleLink: -> $('.js-toggle-link').unbind('click').on('click', -> $($(this).data('toggle-selector')).toggle("down") false ) + + initialize: -> + App.Forms.disableEnter() + App.Forms.submitOnChange() + App.Forms.toggleLink() + false \ No newline at end of file diff --git a/app/controllers/admin/spending_proposals_controller.rb b/app/controllers/admin/spending_proposals_controller.rb index b758bd10d..ebe466355 100644 --- a/app/controllers/admin/spending_proposals_controller.rb +++ b/app/controllers/admin/spending_proposals_controller.rb @@ -5,7 +5,7 @@ class Admin::SpendingProposalsController < Admin::BaseController load_and_authorize_resource def index - @spending_proposals = @spending_proposals.includes([:geozone], [administrator: :user]).order(created_at: :desc).page(params[:page]) + @spending_proposals = @spending_proposals.includes(:geozone, administrator: :user, valuators: :user).order(created_at: :desc).page(params[:page]) end def show diff --git a/app/views/admin/spending_proposals/index.html.erb b/app/views/admin/spending_proposals/index.html.erb index a0ed583cc..295fb5e76 100644 --- a/app/views/admin/spending_proposals/index.html.erb +++ b/app/views/admin/spending_proposals/index.html.erb @@ -9,6 +9,27 @@ <%= spending_proposal.id %> - <%= link_to spending_proposal.title, admin_spending_proposal_path(spending_proposal) %> + + <% if spending_proposal.administrator.present? %> + <%= spending_proposal.administrator.name %> + <% else %> + <%= t("admin.spending_proposals.index.no_admin_assigned") %> + <% end %> + + + <% case spending_proposal.valuators.size %> + <% when 0 %> + <%= t("admin.spending_proposals.index.no_valuators_assigned") %> + <% when 1 %> + + <%= spending_proposal.valuators.first.name %> + + <% else %> + + <%= t('admin.spending_proposals.index.valuators_assigned', count: spending_proposal.valuators.size) %> + + <% end %> + <%= geozone_name(spending_proposal) %> diff --git a/app/views/admin/spending_proposals/show.html.erb b/app/views/admin/spending_proposals/show.html.erb index 008921ffe..88342f912 100644 --- a/app/views/admin/spending_proposals/show.html.erb +++ b/app/views/admin/spending_proposals/show.html.erb @@ -44,7 +44,7 @@ diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml index 7d3aef540..b777a2c26 100755 --- a/config/locales/admin.en.yml +++ b/config/locales/admin.en.yml @@ -143,7 +143,13 @@ en: accepted: Accepted rejected: Rejected unresolved: Unresolved - title: Spending proposals for participatory budgeting + title: Investment projects for participatory budgeting + admin_assigned: Assigned administrator + no_admin_assigned: No admin assigned + valuators_assigned: + one: Assigned valuator + other: "%{count} valuators assigned" + no_valuators_assigned: No valuators assigned show: heading: Investment project info: Author info @@ -164,6 +170,7 @@ en: assigned_admin: Assigned admin assigned_valuators: Assigned valuators assign_valuators: Assign valuators + no_valuators: There is not any valuator user assign: Assign stats: show: diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml index 8d2815423..ef7eaec37 100644 --- a/config/locales/admin.es.yml +++ b/config/locales/admin.es.yml @@ -143,7 +143,13 @@ es: accepted: Aceptadas rejected: Rechazadas unresolved: Sin resolver - title: Propuestas de gasto para presupuestos participativos + title: Propuestas de inversión para presupuestos participativos + admin_assigned: Administrador asignado + no_admin_assigned: Sin admin asignado + valuators_assigned: + one: Evaluador asignado + other: "%{count} evaluadores asignados" + no_valuators_assigned: Sin evaluador show: heading: Propuesta de inversión info: Datos de envío @@ -164,6 +170,7 @@ es: assigned_admin: Administrador asignado assigned_valuators: Evaluadores asignados assign_valuators: Asignar evaluadores + no_valuators: No hay ningún usuario evaluador assign: Asignar stats: show: diff --git a/spec/features/admin/spending_proposals_spec.rb b/spec/features/admin/spending_proposals_spec.rb index a3a844d94..e1a58d378 100644 --- a/spec/features/admin/spending_proposals_spec.rb +++ b/spec/features/admin/spending_proposals_spec.rb @@ -19,6 +19,37 @@ feature 'Admin spending proposals' do expect(page).to have_content(spending_proposal.title) end + scenario 'Index shows assignments info' do + spending_proposal1 = create(:spending_proposal) + spending_proposal2 = create(:spending_proposal) + spending_proposal3 = create(:spending_proposal) + + valuator1 = create(:valuator, user: create(:user, username: 'Olga')) + valuator2 = create(:valuator, user: create(:user, username: 'Miriam')) + admin = create(:administrator, user: create(:user, username: 'Gema')) + + spending_proposal1.valuators << valuator1 + spending_proposal2.valuator_ids = [valuator1.id, valuator2.id] + spending_proposal3.update({administrator_id: admin.id}) + + visit admin_spending_proposals_path + + within("#spending_proposal_#{spending_proposal1.id}") do + expect(page).to have_content("No admin assigned") + expect(page).to have_content("Olga") + end + + within("#spending_proposal_#{spending_proposal2.id}") do + expect(page).to have_content("No admin assigned") + expect(page).to have_content("2 valuators assigned") + end + + within("#spending_proposal_#{spending_proposal3.id}") do + expect(page).to have_content("Gema") + expect(page).to have_content("No valuators assigned") + end + end + scenario 'Show' do administrator = create(:administrator, user: create(:user, username: 'Ana', email: 'ana@admins.org')) valuator = create(:valuator, user: create(:user, username: 'Rachel', email: 'rachel@valuators.org')) @@ -59,6 +90,7 @@ feature 'Admin spending proposals' do expect(page).to have_select('spending_proposal[administrator_id]', selected: 'Undefined') select 'Ana (ana@admins.org)', from: 'spending_proposal[administrator_id]' + expect(page).to have_select('spending_proposal[administrator_id]', selected: 'Ana (ana@admins.org)') visit admin_spending_proposal_path(spending_proposal)