diff --git a/app/assets/javascripts/legislation_admin.js.coffee b/app/assets/javascripts/legislation_admin.js.coffee
index 22c984c6e..c61d9cea1 100644
--- a/app/assets/javascripts/legislation_admin.js.coffee
+++ b/app/assets/javascripts/legislation_admin.js.coffee
@@ -1,45 +1,14 @@
App.LegislationAdmin =
initialize: ->
- $("input[type='checkbox']#debate_phase_active").on
+ $("input[type='checkbox'][data-disable-date]").on
change: ->
- if $("input[type='checkbox']#debate_phase_active").is(':checked')
- console.log("checked")
- $("input#debate_start_date").removeAttr("disabled")
- $("input#debate_end_date").removeAttr("disabled")
- else
- console.log("unchecked")
- $("input#debate_start_date").val("")
- $("input#debate_start_date").attr("disabled", true)
- $("input#debate_end_date").val("")
- $("input#debate_end_date").attr("disabled", true)
-
- $("input[type='checkbox']#allegations_phase_active").on
- change: ->
- if $("input[type='checkbox']#allegations_phase_active").is(':checked')
- $("input#allegations_start_date").removeAttr("disabled")
- $("input#allegations_end_date").removeAttr("disabled")
- else
- $("input#allegations_start_date").val("")
- $("input#allegations_start_date").prop( "disabled", true )
- $("input#allegations_end_date").val("")
- $("input#allegations_end_date").prop( "disabled", true )
-
- $("input[type='checkbox']#draft_publication_phase_active").on
- change: ->
- if $("input[type='checkbox']#draft_publication_phase_active").is(':checked')
- $("input#draft_publication_date").removeAttr("disabled")
- else
- $("input#draft_publication_date").val("")
- $("input#draft_publication_date").prop( "disabled", true )
-
- $("input[type='checkbox']#final_version_publication_phase_active").on
- change: ->
- if $("input[type='checkbox']#final_version_publication_phase_active").is(':checked')
- $("input#final_publication_date").removeAttr("disabled")
- else
- $("input#final_publication_date").val("")
- $("input#final_publication_date").prop( "disabled", true )
-
-
+ checkbox = $(this)
+ parent = $(this).parents('.row:eq(0)')
+ date_selector = $(this).data('disable-date')
+ parent.find("input[type='text'][id^='"+date_selector+"']").each ->
+ if checkbox.is(':checked')
+ $(this).removeAttr("disabled")
+ else
+ $(this).val("")
diff --git a/app/views/admin/legislation/processes/_form.html.erb b/app/views/admin/legislation/processes/_form.html.erb
index c85d2e1c1..d78675890 100644
--- a/app/views/admin/legislation/processes/_form.html.erb
+++ b/app/views/admin/legislation/processes/_form.html.erb
@@ -64,8 +64,8 @@
id: "debate_end_date" %>
- <%= check_box_tag :debate_phase_active, @process.active_phase?(:debate), @process.new_record? || @process.active_phase?(:debate) %>
- <%= t('admin.legislation.processes.form.active') %>
+ <%= check_box_tag :debate_phase_active, @process.active_phase?(:debate), @process.new_record? || @process.active_phase?(:debate), data: {disable_date: "debate"} %>
+ <%= label_tag :debate_phase_active, t('admin.legislation.processes.form.active') %>
@@ -92,8 +92,8 @@
id: "allegations_end_date" %>
- <%= check_box_tag :allegations_phase_active, @process.active_phase?(:allegations), @process.new_record? || @process.active_phase?(:allegations) %>
- <%= t('admin.legislation.processes.form.active') %>
+ <%= check_box_tag :allegations_phase_active, @process.active_phase?(:allegations), @process.new_record? || @process.active_phase?(:allegations), data: {disable_date: "allegations"} %>
+ <%= label_tag :allegations_phase_active, t('admin.legislation.processes.form.active') %>
@@ -109,8 +109,8 @@
id: "draft_publication_date" %>
- <%= check_box_tag :draft_publication_phase_active, @process.active_phase?(:draft_publication), @process.new_record? || @process.active_phase?(:draft_publication) %>
- <%= t('admin.legislation.processes.form.active') %>
+ <%= check_box_tag :draft_publication_phase_active, @process.active_phase?(:draft_publication), @process.new_record? || @process.active_phase?(:draft_publication), data: {disable_date: "draft_publication"} %>
+ <%= label_tag :draft_publication_phase_active, t('admin.legislation.processes.form.active') %>
@@ -126,8 +126,8 @@
id: "final_publication_date" %>
- <%= check_box_tag :final_version_publication_phase_active, @process.active_phase?(:final_version_publication), @process.new_record? || @process.active_phase?(:final_version_publication) %>
- <%= t('admin.legislation.processes.form.active') %>
+ <%= check_box_tag :final_version_publication_phase_active, @process.active_phase?(:final_version_publication), @process.new_record? || @process.active_phase?(:final_version_publication), data: {disable_date: "final_publication"} %>
+ <%= label_tag :final_version_publication_phase_active, t('admin.legislation.processes.form.active') %>
diff --git a/spec/features/admin/legislation/processes_spec.rb b/spec/features/admin/legislation/processes_spec.rb
index 0f1114f51..2218ae8d5 100644
--- a/spec/features/admin/legislation/processes_spec.rb
+++ b/spec/features/admin/legislation/processes_spec.rb
@@ -59,4 +59,27 @@ feature 'Admin legislation processes' do
expect(page).to have_content 'An example legislation process'
end
end
+
+ context 'Update' do
+ scenario 'Deactivate debate phase', js: true do
+ process = create(:legislation_process, title: 'An example legislation process')
+ visit admin_root_path
+
+ within('#side_menu') do
+ click_link "Collaborative Legislation"
+ end
+
+ click_link "An example legislation process"
+
+ expect(page).to have_selector("h1", text: "An example legislation process")
+ expect(find("#debate_phase_active")).to be_checked
+
+ uncheck "debate_phase_active"
+ click_button "Save changes"
+
+ expect(page).to have_content "Process updated successfully"
+ expect(find("#debate_start_date").value).to be_blank
+ expect(find("#debate_end_date").value).to be_blank
+ end
+ end
end