Extract components for feeds

This commit is contained in:
Javi Martín
2020-12-19 20:31:11 +01:00
parent 3e7038d06c
commit 330efe5a41
14 changed files with 137 additions and 102 deletions

View File

@@ -30,3 +30,4 @@
@import "admin/*";
@import "sdg/**/*";
@import "sdg_management/*";
@import "widgets/**/*";

View File

@@ -2889,10 +2889,6 @@ table {
.feeds-list {
.proposal {
clear: both;
}
a {
&.see-all {
@@ -2906,22 +2902,6 @@ table {
}
}
.feed-image {
display: inline-block;
height: rem-calc(120);
overflow: hidden;
width: 100%;
@include breakpoint(medium) {
height: rem-calc(96);
}
img {
max-width: none;
width: 100%;
}
}
.feed-description {
p {

View File

@@ -0,0 +1,22 @@
.feed-proposals {
.proposal {
clear: both;
.feed-image {
display: inline-block;
height: rem-calc(120);
overflow: hidden;
width: 100%;
@include breakpoint(medium) {
height: rem-calc(96);
}
img {
max-width: none;
width: 100%;
}
}
}
}

View File

@@ -0,0 +1,14 @@
<div id="feed_debates" class="small-12 column margin-top
<%= "medium-4" if feed_debates_and_proposals_enabled? %>">
<div class="feed-content" data-equalizer-watch>
<h3 class="title"><%= t("welcome.feed.most_active.#{feed.kind}") %></h3>
<% feed.items.each do |item| %>
<div class="<%= item.class.to_s.parameterize(separator: "_") %>">
<strong><%= link_to item.title, url_for(item) %></strong>
</div>
<% end %>
</div>
<%= link_to t("welcome.feed.see_all_debates"), debates_path, class: "see-all" %>
</div>

View File

@@ -0,0 +1,8 @@
class Widgets::Feeds::DebatesComponent < ApplicationComponent
include FeedsHelper
attr_reader :feed
def initialize(feed)
@feed = feed
end
end

View File

@@ -0,0 +1,11 @@
<div class="row margin-bottom feeds-list feeds-participation" data-equalizer data-equalize-on="medium">
<% feeds.each do |feed| %>
<% if feed_proposals?(feed) %>
<%= render Widgets::Feeds::ProposalsComponent.new(feed) %>
<% end %>
<% if feed_debates?(feed) %>
<%= render Widgets::Feeds::DebatesComponent.new(feed) %>
<% end %>
<% end %>
</div>

View File

@@ -0,0 +1,17 @@
class Widgets::Feeds::ParticipationComponent < ApplicationComponent
attr_reader :feeds
def initialize(feeds)
@feeds = feeds
end
private
def feed_debates?(feed)
feed.kind == "debates"
end
def feed_proposals?(feed)
feed.kind == "proposals"
end
end

View File

@@ -0,0 +1,21 @@
<div class="card small-12 column margin-bottom">
<div class="feed-content">
<h3 class="title"><%= t("welcome.feed.most_active.#{feed.kind}") %></h3>
<% feed.items.each do |item| %>
<%= link_to url_for(item) do %>
<figure class="figure-card <%= item.class.to_s.parameterize(separator: "_") %>">
<%= image_tag("welcome_process.png", alt: "") %>
<figcaption>
<span><%= t("welcome.feed.process_label") %></span><br>
<h3><%= item.title %></h3>
</figcaption>
</figure>
<p class="description small"><%= item.summary %></p>
<p class="small"><%= t("welcome.feed.see_process") %></p>
<% end %>
<% end %>
<%= link_to t("welcome.feed.see_all_processes"), legislation_processes_path, class: "float-right see-all" %>
</div>
</div>

View File

@@ -0,0 +1,7 @@
class Widgets::Feeds::ProcessesComponent < ApplicationComponent
attr_reader :feed
def initialize(feed)
@feed = feed
end
end

View File

@@ -0,0 +1,26 @@
<div id="feed_proposals" class="feed-proposals small-12 column margin-top
<%= "medium-8" if feed_debates_and_proposals_enabled? %>">
<div class="feed-content" data-equalizer-watch>
<h3 class="title"><%= t("welcome.feed.most_active.#{feed.kind}") %></h3>
<% feed.items.each do |item| %>
<div class="<%= item.class.to_s.parameterize(separator: "_") %> row">
<div class="feed-description small-12 column
<%= "medium-6 large-9" if item.image.present? %>">
<strong><%= link_to item.title, url_for(item) %></strong><br>
<p><%= item.summary %></p>
</div>
<% if item.image.present? %>
<div class="small-12 medium-6 large-3 column">
<div class="feed-image">
<%= image_tag item.image_url(:thumb),
alt: item.image.title.unicode_normalize %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
<%= link_to t("welcome.feed.see_all_proposals"), proposals_path, class: "see-all" %>
</div>

View File

@@ -0,0 +1,8 @@
class Widgets::Feeds::ProposalsComponent < ApplicationComponent
include FeedsHelper
attr_reader :feed
def initialize(feed)
@feed = feed
end
end

View File

@@ -1,12 +1,4 @@
module FeedsHelper
def feed_debates?(feed)
feed.kind == "debates"
end
def feed_proposals?(feed)
feed.kind == "proposals"
end
def feed_processes?(feed)
feed.kind == "processes"
end

View File

@@ -1,51 +1 @@
<div class="row margin-bottom feeds-list" data-equalizer data-equalize-on="medium">
<% @feeds.each do |feed| %>
<% if feed_proposals?(feed) %>
<div id="feed_proposals" class="small-12 column margin-top
<%= "medium-8" if feed_debates_and_proposals_enabled? %>">
<div class="feed-content" data-equalizer-watch>
<h3 class="title"><%= t("welcome.feed.most_active.#{feed.kind}") %></h3>
<% feed.items.each do |item| %>
<div class="<%= item.class.to_s.parameterize(separator: "_") %> row">
<div class="feed-description small-12 column
<%= "medium-6 large-9" if item.image.present? %>">
<strong><%= link_to item.title, url_for(item) %></strong><br>
<p><%= item.summary %></p>
</div>
<% if item.image.present? %>
<div class="small-12 medium-6 large-3 column">
<div class="feed-image">
<%= image_tag item.image_url(:thumb),
alt: item.image.title.unicode_normalize %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
<%= link_to t("welcome.feed.see_all_proposals"), proposals_path, class: "see-all" %>
</div>
<% end %>
<% if feed_debates?(feed) %>
<div id="feed_debates" class="small-12 column margin-top
<%= "medium-4" if feed_debates_and_proposals_enabled? %>">
<div class="feed-content" data-equalizer-watch>
<h3 class="title"><%= t("welcome.feed.most_active.#{feed.kind}") %></h3>
<% feed.items.each do |item| %>
<div class="<%= item.class.to_s.parameterize(separator: "_") %>">
<strong><%= link_to item.title, url_for(item) %></strong>
</div>
<% end %>
</div>
<%= link_to t("welcome.feed.see_all_debates"), debates_path, class: "see-all" %>
</div>
<% end %>
<% end %>
</div>
<%= render Widgets::Feeds::ParticipationComponent.new(@feeds) %>

View File

@@ -1,29 +1,7 @@
<div class="feeds-list">
<% @feeds.each do |feed| %>
<% if feed_processes?(feed) %>
<div class="card small-12 column margin-bottom">
<div class="feed-content">
<h3 class="title"><%= t("welcome.feed.most_active.#{feed.kind}") %></h3>
<% feed.items.each do |item| %>
<%= link_to url_for(item) do %>
<figure class="figure-card <%= item.class.to_s.parameterize(separator: "_") %>">
<%= image_tag("welcome_process.png", alt: "") %>
<figcaption>
<span><%= t("welcome.feed.process_label") %></span><br>
<h3><%= item.title %></h3>
</figcaption>
</figure>
<p class="description small"><%= item.summary %></p>
<p class="small"><%= t("welcome.feed.see_process") %></p>
<% end %>
<% end %>
<%= link_to t("welcome.feed.see_all_processes"), legislation_processes_path, class: "float-right see-all" %>
</div>
</div>
<%= render Widgets::Feeds::ProcessesComponent.new(feed) %>
<% end %>
<% end %>
</div>