-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
So now we've got a component receiving records (goals or targets) and a related model (Debate, Proposal, ...), with optionally a link to see more tags. This way we simplify some logic since the `TagList` classes were dealing with too many cases (a record is passed, a class name is passed, a limit is passed), ... Now `TagList` only deal with the natural `TagList` case, which is listing the tags for a record. The case where a class name is passed is used in the `TagCloud` class.
- Loading branch information
Showing
13 changed files
with
92 additions
and
114 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,31 @@ | ||
module SDG::TagList | ||
extend ActiveSupport::Concern | ||
attr_reader :record_or_name, :limit | ||
delegate :link_list, to: :helpers | ||
attr_reader :record, :limit | ||
|
||
def initialize(record_or_name, limit: nil) | ||
@record_or_name = record_or_name | ||
def initialize(record, limit: nil) | ||
@record = record | ||
@limit = limit | ||
end | ||
|
||
def render? | ||
process.enabled? | ||
SDG::ProcessEnabled.new(record).enabled? | ||
end | ||
|
||
def see_more_link(association_name) | ||
render Shared::SeeMoreLinkComponent.new(record, association_name, limit: limit) | ||
end | ||
def tag_records | ||
tags = record.send(association_name) | ||
|
||
def filter_text(goal_or_target) | ||
t("sdg.#{i18n_namespace}.filter.link", | ||
resources: model.model_name.human(count: :other), | ||
code: goal_or_target.code) | ||
if tags.respond_to?(:limit) | ||
tags.limit(limit).order(:code) | ||
else | ||
tags.sort[0..(limit.to_i - 1)] | ||
end | ||
end | ||
|
||
def index_by(advanced_search) | ||
polymorphic_path(model, advanced_search: advanced_search) | ||
end | ||
|
||
def process | ||
@process ||= SDG::ProcessEnabled.new(record_or_name) | ||
def see_more_link | ||
render Shared::SeeMoreLinkComponent.new(record, association_name, limit: limit) | ||
end | ||
|
||
def model | ||
process.name.constantize | ||
def association_name | ||
raise NotImplementedError, "method must be implemented in the included class" | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
<%= link_list(*links, class: "sdg-#{parameter_name}-tag-list") %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
class SDG::FilterLinksComponent < ApplicationComponent | ||
attr_reader :records, :related_model, :see_more_link | ||
delegate :link_list, to: :helpers | ||
|
||
def initialize(records, related_model, see_more_link: nil) | ||
@records = records | ||
@related_model = related_model | ||
@see_more_link = see_more_link | ||
end | ||
|
||
def links | ||
[*sdg_links, see_more_link] | ||
end | ||
|
||
private | ||
|
||
def sdg_links | ||
records.map do |goal_or_target| | ||
[ | ||
render(SDG::TagComponent.new(goal_or_target)), | ||
index_by(parameter_name => goal_or_target.code), | ||
title: filter_text(goal_or_target), | ||
data: { code: goal_or_target.code } | ||
] | ||
end | ||
end | ||
|
||
def filter_text(goal_or_target) | ||
t("sdg.#{i18n_namespace}.filter.link", | ||
resources: related_model.model_name.human(count: :other), | ||
code: goal_or_target.code) | ||
end | ||
|
||
def index_by(advanced_search) | ||
polymorphic_path(related_model, advanced_search: advanced_search) | ||
end | ||
|
||
def i18n_namespace | ||
parameter_name.pluralize | ||
end | ||
|
||
def parameter_name | ||
if records.first.is_a?(SDG::Goal) | ||
"goal" | ||
else | ||
"target" | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
<div class="sdg-goal-tag-cloud"> | ||
<div class="sidebar-divider"></div> | ||
<h2 class="sidebar-title"><%= heading %></h2> | ||
<%= render SDG::Goals::TagListComponent.new(class_name) %> | ||
<%= render SDG::FilterLinksComponent.new(goals, class_name.constantize) %> | ||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,4 +14,8 @@ def render? | |
def heading | ||
t("sdg.goals.filter.heading") | ||
end | ||
|
||
def goals | ||
SDG::Goal.order(:code) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
<%= link_list(*links, class: "sdg-goal-tag-list") %> | ||
<%= render SDG::FilterLinksComponent.new(tag_records, related_model, see_more_link: see_more_link) %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
<%= link_list(*links, class: "sdg-target-tag-list") %> | ||
<%= render SDG::FilterLinksComponent.new(tag_records, related_model, see_more_link: see_more_link) %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters