From 3c815217f028e8c44d4dbfa1badb546af1781f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Wed, 16 Mar 2016 20:16:22 +0100 Subject: [PATCH] changes visible fields in dossier form depending on feasibility value --- app/assets/javascripts/application.js | 2 + ...valuation_spending_proposal_form.js.coffee | 32 +++++++++++ .../spending_proposals/edit.html.erb | 54 +++++++++++-------- .../valuation/spending_proposals_spec.rb | 54 +++++++++++++++++++ 4 files changed, 119 insertions(+), 23 deletions(-) create mode 100644 app/assets/javascripts/valuation_spending_proposal_form.js.coffee diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index aa27109d9..7fc81e03e 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -41,6 +41,7 @@ //= require registration_form //= require suggest //= require forms +//= require valuation_spending_proposal_form var initialize_modules = function() { App.Comments.initialize(); @@ -57,6 +58,7 @@ var initialize_modules = function() { App.RegistrationForm.initialize(); App.Suggest.initialize(); App.Forms.initialize(); + App.ValuationSpendingProposalForm.initialize(); }; $(function(){ diff --git a/app/assets/javascripts/valuation_spending_proposal_form.js.coffee b/app/assets/javascripts/valuation_spending_proposal_form.js.coffee new file mode 100644 index 000000000..fa0bc2106 --- /dev/null +++ b/app/assets/javascripts/valuation_spending_proposal_form.js.coffee @@ -0,0 +1,32 @@ +App.ValuationSpendingProposalForm = + + showFeasibleFields: -> + $('#valuation_spending_proposal_edit_form #not_feasible_fields').hide('down') + $('#valuation_spending_proposal_edit_form #feasible_fields').show() + + showNotFeasibleFields: -> + $('#valuation_spending_proposal_edit_form #feasible_fields').hide('down') + $('#valuation_spending_proposal_edit_form #not_feasible_fields').show() + + showAllFields: -> + $('#valuation_spending_proposal_edit_form #feasible_fields').show('down') + $('#valuation_spending_proposal_edit_form #not_feasible_fields').show('down') + + showFeasibilityFields: -> + feasible = $("#valuation_spending_proposal_edit_form input[type=radio][name='spending_proposal[feasible]']:checked").val() + if feasible == 'true' + App.ValuationSpendingProposalForm.showFeasibleFields() + else if feasible == 'false' + App.ValuationSpendingProposalForm.showNotFeasibleFields() + + + showFeasibilityFieldsOnChange: -> + $("#valuation_spending_proposal_edit_form input[type=radio][name='spending_proposal[feasible]']").change -> + App.ValuationSpendingProposalForm.showAllFields() + App.ValuationSpendingProposalForm.showFeasibilityFields() + + + initialize: -> + App.ValuationSpendingProposalForm.showFeasibilityFields() + App.ValuationSpendingProposalForm.showFeasibilityFieldsOnChange() + false \ No newline at end of file diff --git a/app/views/valuation/spending_proposals/edit.html.erb b/app/views/valuation/spending_proposals/edit.html.erb index 337f8fa16..edd17504d 100644 --- a/app/views/valuation/spending_proposals/edit.html.erb +++ b/app/views/valuation/spending_proposals/edit.html.erb @@ -1,7 +1,7 @@ <%= link_to "#{t('valuation.spending_proposals.show.heading')} #{@spending_proposal.id}", valuation_spending_proposal_path(@spending_proposal), class: 'back' %>

<%= t("valuation.spending_proposals.edit.dossier") %>

-<%= form_for(@spending_proposal, url: valuate_valuation_spending_proposal_path(@spending_proposal)) do |f| %> +<%= form_for(@spending_proposal, url: valuate_valuation_spending_proposal_path(@spending_proposal), html: {id: "valuation_spending_proposal_edit_form"}) do |f| %> <%= render 'shared/errors', resource: @spending_proposal %>
@@ -31,37 +31,45 @@
-
-
- <%= f.label :feasible_explanation, t("valuation.spending_proposals.edit.feasible_explanation_html") %> - <%= f.text_area :feasible_explanation, label: false, rows: 3 %> +
+ +
+
+ <%= f.label :feasible_explanation, t("valuation.spending_proposals.edit.feasible_explanation_html") %> + <%= f.text_area :feasible_explanation, label: false, rows: 3 %> +
+
-
-
- <%= f.label :price, "#{t('valuation.spending_proposals.edit.price_html', currency: t('valuation.spending_proposals.edit.currency'))}" %> - <%= f.number_field :price, label: false, max: 1000000000000000 %> +
+ +
+
+ <%= f.label :price, "#{t('valuation.spending_proposals.edit.price_html', currency: t('valuation.spending_proposals.edit.currency'))}" %> + <%= f.number_field :price, label: false, max: 1000000000000000 %> +
+ +
+ <%= f.label :price_first_year, "#{t('valuation.spending_proposals.edit.price_first_year_html', currency: t('valuation.spending_proposals.edit.currency'))}" %> + <%= f.number_field :price_first_year, label: false, max: 1000000000000000 %> +
-
- <%= f.label :price_first_year, "#{t('valuation.spending_proposals.edit.price_first_year_html', currency: t('valuation.spending_proposals.edit.currency'))}" %> - <%= f.number_field :price_first_year, label: false, max: 1000000000000000 %> +
+
+ <%= f.label :price_explanation, t("valuation.spending_proposals.edit.price_explanation_html") %> + <%= f.text_area :price_explanation, label: false, rows: 3 %> +
-
-
-
- <%= f.label :price_explanation, t("valuation.spending_proposals.edit.price_explanation_html") %> - <%= f.text_area :price_explanation, label: false, rows: 3 %> +
+
+ <%= f.label :time_scope, t("valuation.spending_proposals.edit.time_scope_html") %> + <%= f.text_field :time_scope, label: false %> +
-
-
-
- <%= f.label :time_scope, t("valuation.spending_proposals.edit.time_scope_html") %> - <%= f.text_field :time_scope, label: false %> -
diff --git a/spec/features/valuation/spending_proposals_spec.rb b/spec/features/valuation/spending_proposals_spec.rb index 7de8d9b66..8af416dc2 100644 --- a/spec/features/valuation/spending_proposals_spec.rb +++ b/spec/features/valuation/spending_proposals_spec.rb @@ -288,6 +288,60 @@ feature 'Valuation spending proposals' do expect(find "#spending_proposal_feasible_nil").to be_checked end + scenario 'Feasibility selection makes proper fields visible', :js do + feasible_true_fields = ['Price (€)','Cost during the first year (€)','Price explanation','Time scope'] + feasible_false_fields = ['Feasibility explanation'] + feasible_any_fields = ['Valuation finished','Internal comments'] + feasible_nil_fields = feasible_true_fields + feasible_false_fields + feasible_any_fields + + visit edit_valuation_spending_proposal_path(@spending_proposal) + + expect(find "#spending_proposal_feasible_nil").to be_checked + + feasible_nil_fields.each do |field| + expect(page).to have_content(field) + end + + choose 'spending_proposal_feasible_true' + + feasible_false_fields.each do |field| + expect(page).to_not have_content(field) + end + + (feasible_true_fields + feasible_any_fields).each do |field| + expect(page).to have_content(field) + end + + choose 'spending_proposal_feasible_false' + + feasible_true_fields.each do |field| + expect(page).to_not have_content(field) + end + + (feasible_false_fields + feasible_any_fields).each do |field| + expect(page).to have_content(field) + end + + click_button 'Save changes' + + visit edit_valuation_spending_proposal_path(@spending_proposal) + + expect(find "#spending_proposal_feasible_false").to be_checked + feasible_true_fields.each do |field| + expect(page).to_not have_content(field) + end + + (feasible_false_fields + feasible_any_fields).each do |field| + expect(page).to have_content(field) + end + + choose 'spending_proposal_feasible_nil' + + feasible_nil_fields.each do |field| + expect(page).to have_content(field) + end + end + scenario 'Finish valuation' do visit valuation_spending_proposal_path(@spending_proposal) click_link 'Edit dossier'