Fix unselecting all staff for a budget
We need to add a hidden field for each group of check boxes, so if we don't check anything, the hidden field is sent to the server, indicating nothing was selected. Without the hidden field, the server will not know anything has been done to the check boxes. The easiest way to do it is using `collection_check_boxes`, which also adds labels to every check box.
This commit is contained in:
@@ -2,13 +2,13 @@
|
||||
"use strict";
|
||||
App.BudgetEditAssociations = {
|
||||
initialize: function() {
|
||||
$(".js-budget-list-checkbox-user").on({
|
||||
click: function() {
|
||||
$(".js-budget-users-list [type='checkbox']").on({
|
||||
change: function() {
|
||||
var admin_count, tracker_count, valuator_count;
|
||||
|
||||
admin_count = $(".js-budget-list-checkbox-administrators:checkbox:checked").length;
|
||||
valuator_count = $(".js-budget-list-checkbox-valuators:checkbox:checked").length;
|
||||
tracker_count = $(".js-budget-list-checkbox-trackers:checkbox:checked").length;
|
||||
admin_count = $("#administrators_list :checked").length;
|
||||
valuator_count = $("#valuators_list :checked").length;
|
||||
tracker_count = $("#trackers_list :checked").length;
|
||||
|
||||
App.I18n.set_pluralize($(".js-budget-show-administrators-list"), admin_count);
|
||||
App.I18n.set_pluralize($(".js-budget-show-valuators-list"), valuator_count);
|
||||
|
||||
@@ -3,23 +3,9 @@
|
||||
<p><%= t("admin.budgets.edit.empty_#{assignable_type}") %></p>
|
||||
<% else %>
|
||||
<h3><%= t("admin.budgets.edit.#{assignable_type}", count: 0) %></h3>
|
||||
<table class="table-for-mobile">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="small-8"><%= t("admin.budgets.edit.name") %></th>
|
||||
<th class="small-4"><%= t("admin.budgets.edit.selected") %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% assignables.each do |assignable| %>
|
||||
<tr>
|
||||
<td class="small-8"><%= assignable.name %></td>
|
||||
<td class="small-4 text-center">
|
||||
<input type="checkbox" id="<%= assignable_type.singularize %>_<%= assignable.user.id %>" name="budget[<%= assignable_type.singularize %>_ids][]" value="<%= assignable.id %>" <%= "checked" if @budget.send(assignable_type).include? assignable %> class="js-budget-list-checkbox-<%= assignable_type %> js-budget-list-checkbox-user">
|
||||
</td>
|
||||
</tr>
|
||||
<% field = "#{assignable_type.chomp("s")}_ids" %>
|
||||
<%= form.collection_check_boxes field, assignables, :id, :name do |box| %>
|
||||
<%= box.label { box.check_box + box.text } %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
@@ -33,9 +33,9 @@
|
||||
</div>
|
||||
|
||||
<div class="margin-top">
|
||||
<%= render "/admin/budgets/association", assignable_type: "administrators", assignables: @admins, budget: @budget %>
|
||||
<%= render "/admin/budgets/association", assignable_type: "valuators", assignables: @valuators, budget: @budget %>
|
||||
<%= render "/admin/budgets/association", assignable_type: "trackers", assignables: @trackers, budget: @budget %>
|
||||
<%= render "/admin/budgets/association", assignable_type: "administrators", assignables: @admins, form: f %>
|
||||
<%= render "/admin/budgets/association", assignable_type: "valuators", assignables: @valuators, form: f %>
|
||||
<%= render "/admin/budgets/association", assignable_type: "trackers", assignables: @trackers, form: f %>
|
||||
</div>
|
||||
|
||||
<div class="margin-top">
|
||||
|
||||
@@ -109,8 +109,6 @@ en:
|
||||
empty_administrators: "There are no administrators"
|
||||
empty_valuators: "There are no valuators"
|
||||
empty_trackers: "There are no trackers"
|
||||
name: "Name"
|
||||
selected: "Selected"
|
||||
destroy:
|
||||
success_notice: Budget deleted successfully
|
||||
unable_notice: You cannot delete a budget that has associated investments
|
||||
|
||||
@@ -109,8 +109,6 @@ es:
|
||||
empty_administrators: "No hay administradores"
|
||||
empty_valuators: "No hay evaluadores"
|
||||
empty_trackers: "No hay gestores de seguimiento"
|
||||
name: "Nombre"
|
||||
selected: "Seleccionado"
|
||||
destroy:
|
||||
success_notice: Presupuesto eliminado correctamente
|
||||
unable_notice: No se puede eliminar un presupuesto con proyectos asociados
|
||||
|
||||
@@ -1086,14 +1086,15 @@ describe "Admin budget investments" do
|
||||
expect(page).not_to have_content "Mark as incompatible"
|
||||
end
|
||||
|
||||
scenario "Add administrator" do
|
||||
scenario "Add administrator", :js do
|
||||
budget_investment = create(:budget_investment)
|
||||
user = create(:user, username: "Marta", email: "marta@admins.org")
|
||||
create(:administrator, user: user, description: "Marta desc")
|
||||
|
||||
visit edit_admin_budget_path(budget_investment.budget)
|
||||
|
||||
check "administrator_#{user.id}"
|
||||
click_link "Select administrators"
|
||||
check "Marta"
|
||||
click_button "Update Budget"
|
||||
|
||||
visit admin_budget_budget_investment_path(budget_investment.budget, budget_investment)
|
||||
@@ -1119,8 +1120,8 @@ describe "Admin budget investments" do
|
||||
|
||||
visit edit_admin_budget_path(budget_investment.budget)
|
||||
|
||||
check "valuator_#{user1.id}"
|
||||
check "valuator_#{user3.id}"
|
||||
check "Valentina"
|
||||
check "Val"
|
||||
click_button "Update Budget"
|
||||
|
||||
visit admin_budget_budget_investment_path(budget_investment.budget, budget_investment)
|
||||
|
||||
@@ -232,13 +232,8 @@ describe "Admin budgets" do
|
||||
end
|
||||
|
||||
context "Update" do
|
||||
before do
|
||||
create(:budget)
|
||||
end
|
||||
|
||||
scenario "Update budget" do
|
||||
visit admin_budgets_path
|
||||
click_link "Edit budget"
|
||||
visit edit_admin_budget_path(create(:budget))
|
||||
|
||||
fill_in "Name", with: "More trees on the streets"
|
||||
click_button "Update Budget"
|
||||
@@ -246,6 +241,37 @@ describe "Admin budgets" do
|
||||
expect(page).to have_content("More trees on the streets")
|
||||
expect(page).to have_current_path(admin_budgets_path)
|
||||
end
|
||||
|
||||
scenario "Deselect all selected staff", :js do
|
||||
admin = Administrator.first
|
||||
valuator = create(:valuator)
|
||||
tracker = create(:tracker)
|
||||
|
||||
budget = create(:budget, administrators: [admin], valuators: [valuator], trackers: [tracker])
|
||||
|
||||
visit edit_admin_budget_path(budget)
|
||||
click_link "1 administrator selected"
|
||||
uncheck admin.name
|
||||
|
||||
expect(page).to have_link "Select administrators"
|
||||
|
||||
click_link "1 valuator selected"
|
||||
uncheck valuator.name
|
||||
|
||||
expect(page).to have_link "Select valuators"
|
||||
|
||||
click_link "1 tracker selected"
|
||||
uncheck tracker.name
|
||||
|
||||
expect(page).to have_link "Select trackers"
|
||||
|
||||
click_button "Update Budget"
|
||||
visit edit_admin_budget_path(budget)
|
||||
|
||||
expect(page).to have_link "Select administrators"
|
||||
expect(page).to have_link "Select valuators"
|
||||
expect(page).to have_link "Select trackers"
|
||||
end
|
||||
end
|
||||
|
||||
context "Calculate Budget's Winner Investments" do
|
||||
|
||||
Reference in New Issue
Block a user