Calculate carousel size.

This commit is contained in:
taitus
2017-07-24 19:59:25 +02:00
parent 9aeb5eb758
commit ee0a10855d
5 changed files with 100 additions and 22 deletions

View File

@@ -30,4 +30,29 @@ module WelcomeHelper
image_tag(image_path) if image_path.present?
end
def calculate_size(debates, proposals, budget_investments)
size = debates.any? && proposals.any? && budget_investments.any? ? 4 : 6
"medium-#{size} large-#{size}"
end
def calculate_centered(debates, proposals, budget_investments)
centered = ""
if debates.blank? && proposals.blank? ||
debates.blank? && budget_investments.blank? ||
proposals.blank? && budget_investments.blank?
centered = "medium-centered large-centered"
end
centered
end
def calculate_centered_and_size_class(debates, proposals, budget_investments)
size = calculate_size(debates, proposals, budget_investments)
centered = calculate_centered(debates, proposals, budget_investments)
"#{size} #{centered if centered.present?}"
end
def display_recommendeds(debates, proposals, budget_investments)
debates.any? || proposals.any? || budget_investments.any?
end
end

View File

@@ -3,26 +3,33 @@
<h2 class="text-center"><%= t("welcome.recommended.title") %></h2>
<div class="small-12 column carousel-image">
<%= render "recommended_carousel", recommendeds: recommended_debates,
key: "debates",
image_field: nil,
image_version: nil,
image_default: "https://dummyimage.com/600x400/000/fff",
klass: "large-offset-1" %>
<% centered_and_size_class = calculate_centered_and_size_class(recommended_debates, recommended_proposals, recommended_budget_investments) %>
<% if recommended_debates.any? %>
<%= render "recommended_carousel", recommendeds: recommended_debates,
key: "debates",
image_field: nil,
image_version: nil,
image_default: "https://dummyimage.com/600x400/000/fff",
dynamic_display: centered_and_size_class %>
<% end %>
<%= render "recommended_carousel", recommendeds: recommended_proposals,
key: "proposals",
image_field: nil,
image_version: nil,
image_default: "https://dummyimage.com/600x400/000/fff",
klass: "" %>
<% if recommended_proposals.any? %>
<%= render "recommended_carousel", recommendeds: recommended_proposals,
key: "proposals",
image_field: nil,
image_version: nil,
image_default: "https://dummyimage.com/600x400/000/fff",
dynamic_display: centered_and_size_class %>
<% end %>
<%= render "recommended_carousel", recommendeds: recommended_budget_investments,
key: "budget-investments",
image_field: nil, #example value :image (PR#1691)
image_version: nil, #example value :thumb (PR#1691)
image_default: "https://dummyimage.com/600x400/000/fff",
klass: "end" %>
<% if recommended_budget_investments.any? %>
<%= render "recommended_carousel", recommendeds: recommended_budget_investments,
key: "budget-investments",
image_field: nil, #example value :image (PR#1691)
image_version: nil, #example value :thumb (PR#1691)
image_default: "https://dummyimage.com/600x400/000/fff",
dynamic_display: centered_and_size_class %>
<% end %>
</div>
</div>

View File

@@ -1,4 +1,4 @@
<div class="small-12 medium-4 large-3 column text-center <%= key %> <%= klass if klass %> ">
<div class="small-12 <%= dynamic_display %> column text-center <%= key %> ">
<div class="card small-centered <%= key %>-inner">
<h4><%= t("welcome.recommended.#{key.underscore}.title") %></h4>

View File

@@ -47,7 +47,15 @@
<% end %>
<% if current_user.present? %>
<%= render "recommended", recommended_debates: current_user.recommended_debates,
recommended_proposals: current_user.recommended_proposals,
recommended_budget_investments: current_user.recommended_budget_investments %>
<% recommended_debates = current_user.recommended_debates %>
<% recommended_proposals = current_user.recommended_proposals %>
<% recommended_budget_investments = current_user.recommended_budget_investments %>
<% if display_recommendeds(recommended_debates, recommended_proposals, recommended_budget_investments) %>
<%= render "recommended", recommended_debates: recommended_debates,
recommended_proposals: recommended_proposals,
recommended_budget_investments: recommended_budget_investments %>
<% end %>
<% end %>

View File

@@ -81,6 +81,44 @@ feature "Home" do
expect(current_path).to eq debate_path(debate)
end
scenario 'Do not display recommended section when there are not debates, proposals and investments' do
visit root_path
expect(page).not_to have_content "Recommendations that may interest you"
end
feature 'Dynamic display' do
scenario 'Display debates centered when there are not proposals and investments' do
debate = create(:debate)
visit root_path
expect(page).to have_selector('.medium-6.large-6.medium-centered.large-centered')
end
scenario 'Correct display debates and proposals when there are not investments' do
proposal = create(:proposal)
budget_investment = create(:budget_investment)
visit root_path
expect(page).to have_selector('.medium-6.large-6')
expect(page).not_to have_selector('.medium-centered.large-centered')
end
scenario 'Correct display debates, proposals and investments' do
debate = create(:debate)
proposal = create(:proposal)
budget_investment = create(:budget_investment)
visit root_path
expect(page).to have_selector('.medium-4.large-4')
expect(page).not_to have_selector('.medium-centered.large-centered')
end
end
end
end