Refactor app in to its own slice
This commit is contained in:
9
slices/main/views/blogroll/index.rb
Normal file
9
slices/main/views/blogroll/index.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
module Main
|
||||
module Views
|
||||
module Blogroll
|
||||
class Index< Main::View
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
27
slices/main/views/blogroll/list.rb
Normal file
27
slices/main/views/blogroll/list.rb
Normal file
@@ -0,0 +1,27 @@
|
||||
module Main
|
||||
module Views
|
||||
module Blogroll
|
||||
class List< Main::View
|
||||
config.layout = false
|
||||
|
||||
include Deps[blogroll_list: "queries.blogroll.index"]
|
||||
|
||||
expose :blogroll do |blogroll_result|
|
||||
JSON.parse(blogroll_result)["subscriptions"].map do |feed|
|
||||
{
|
||||
title: feed["title"],
|
||||
url: feed["url"],
|
||||
html_url: feed["htmlUrl"],
|
||||
icon: feed["iconUrl"],
|
||||
categories: feed["categories"].map {|cat| cat["label"]}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
private_expose :blogroll_result do
|
||||
blogroll_list.call
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
25
slices/main/views/blogroll/opml.rb
Normal file
25
slices/main/views/blogroll/opml.rb
Normal file
@@ -0,0 +1,25 @@
|
||||
module Main
|
||||
module Views
|
||||
module Blogroll
|
||||
class Opml< Main::View
|
||||
include Deps[blogroll_list: "queries.blogroll.index"]
|
||||
|
||||
expose :blogroll do |blogroll_result|
|
||||
JSON.parse(blogroll_result)["subscriptions"].map do |feed|
|
||||
{
|
||||
title: feed["title"],
|
||||
url: feed["url"],
|
||||
html_url: feed["htmlUrl"],
|
||||
icon: feed["iconUrl"],
|
||||
categories: feed["categories"].map {|cat| cat["label"]}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
private_expose :blogroll_result do
|
||||
blogroll_list.call
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
19
slices/main/views/bookmarks/index.rb
Normal file
19
slices/main/views/bookmarks/index.rb
Normal file
@@ -0,0 +1,19 @@
|
||||
module Main
|
||||
module Views
|
||||
module Bookmarks
|
||||
class Index< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
expose :bookmarks do |query:|
|
||||
post_repo.bookmark_listing(query: query).map do |bookmark|
|
||||
Decorators::Bookmarks::Decorator.new bookmark
|
||||
end
|
||||
end
|
||||
|
||||
expose :q do |query:|
|
||||
query
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
30
slices/main/views/bookmarks/metadata.rb
Normal file
30
slices/main/views/bookmarks/metadata.rb
Normal file
@@ -0,0 +1,30 @@
|
||||
require "ogpr"
|
||||
|
||||
module Main
|
||||
module Views
|
||||
module Bookmarks
|
||||
class Metadata< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
config.layout = nil
|
||||
|
||||
expose :description do |og_data|
|
||||
og_data.description
|
||||
end
|
||||
|
||||
expose :title do |og_data|
|
||||
og_data.title
|
||||
end
|
||||
|
||||
expose :image do |og_data|
|
||||
og_data.image
|
||||
end
|
||||
|
||||
private_expose :og_data do |id:|
|
||||
url = post_repo.find!(id).url
|
||||
Ogpr.fetch(url)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
13
slices/main/views/bookmarks/show.rb
Normal file
13
slices/main/views/bookmarks/show.rb
Normal file
@@ -0,0 +1,13 @@
|
||||
module Main
|
||||
module Views
|
||||
module Bookmarks
|
||||
class Show< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
expose :bookmark do |slug:|
|
||||
Decorators::Bookmarks::Decorator.new(post_repo.fetch!(slug))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
31
slices/main/views/books/index.rb
Normal file
31
slices/main/views/books/index.rb
Normal file
@@ -0,0 +1,31 @@
|
||||
module Main
|
||||
module Views
|
||||
module Books
|
||||
class Index< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
private_expose :books do
|
||||
post_repo.books_listing.group_by { |book| book.book_status }
|
||||
end
|
||||
|
||||
expose :read do |books|
|
||||
books["read"].map do |book|
|
||||
Decorators::Books::Decorator.new book
|
||||
end
|
||||
end
|
||||
|
||||
expose :to_read do |books|
|
||||
books["to-read"].map do |book|
|
||||
Decorators::Books::Decorator.new book
|
||||
end
|
||||
end
|
||||
|
||||
expose :reading do |books|
|
||||
books["reading"].map do |book|
|
||||
Decorators::Books::Decorator.new book
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
6
slices/main/views/error.rb
Normal file
6
slices/main/views/error.rb
Normal file
@@ -0,0 +1,6 @@
|
||||
module Main
|
||||
module Views
|
||||
class Error< Main::View
|
||||
end
|
||||
end
|
||||
end
|
25
slices/main/views/feeds/rss.rb
Normal file
25
slices/main/views/feeds/rss.rb
Normal file
@@ -0,0 +1,25 @@
|
||||
require "builder"
|
||||
|
||||
module Main
|
||||
module Views
|
||||
module Feeds
|
||||
class Rss< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
expose :posts do
|
||||
post_repo.for_rss.map do |post|
|
||||
(post.post_type == "bookmark") ?
|
||||
Decorators::Bookmarks::Decorator.new(post) :
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
|
||||
expose :xml, decorate: false
|
||||
|
||||
def xml
|
||||
Builder::XmlMarkup.new(indent: 2)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
23
slices/main/views/feeds/statuses_rss.rb
Normal file
23
slices/main/views/feeds/statuses_rss.rb
Normal file
@@ -0,0 +1,23 @@
|
||||
require "builder"
|
||||
|
||||
module Main
|
||||
module Views
|
||||
module Feeds
|
||||
class StatusesRss< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
expose :posts do
|
||||
post_repo.statuses_for_rss.map do |post|
|
||||
Decorators::Posts::Decorator.new post
|
||||
end
|
||||
end
|
||||
|
||||
expose :xml, decorate: false, layout: true
|
||||
|
||||
def xml
|
||||
Builder::XmlMarkup.new(indent: 2)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
8
slices/main/views/more/index.rb
Normal file
8
slices/main/views/more/index.rb
Normal file
@@ -0,0 +1,8 @@
|
||||
module Main
|
||||
module Views
|
||||
module More
|
||||
class Index< Main::View
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
13
slices/main/views/movies/index.rb
Normal file
13
slices/main/views/movies/index.rb
Normal file
@@ -0,0 +1,13 @@
|
||||
module Main
|
||||
module Views
|
||||
module Movies
|
||||
class Index< Main::View
|
||||
include Deps["repos.movie_repo"]
|
||||
|
||||
expose :movies do
|
||||
movie_repo.listing
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
6
slices/main/views/not_found.rb
Normal file
6
slices/main/views/not_found.rb
Normal file
@@ -0,0 +1,6 @@
|
||||
module Main
|
||||
module Views
|
||||
class NotFound< Main::View
|
||||
end
|
||||
end
|
||||
end
|
21
slices/main/views/pages/show.rb
Normal file
21
slices/main/views/pages/show.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
module Main
|
||||
module Views
|
||||
module Pages
|
||||
class Show< Main::View
|
||||
include Deps["repos.page_repo", renderer: "renderers.markdown"]
|
||||
|
||||
expose :page_content do |page|
|
||||
renderer.call(content: page.content)
|
||||
end
|
||||
|
||||
expose :page_name do |page|
|
||||
page.name
|
||||
end
|
||||
|
||||
private_expose :page do |slug:|
|
||||
page_repo.fetch!(slug: slug)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
15
slices/main/views/photos/index.rb
Normal file
15
slices/main/views/photos/index.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
module Main
|
||||
module Views
|
||||
module Photos
|
||||
class Index< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
expose :photos do
|
||||
post_repo.photo_listing.map do |post|
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
15
slices/main/views/places/index.rb
Normal file
15
slices/main/views/places/index.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
module Main
|
||||
module Views
|
||||
module Places
|
||||
class Index< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
expose :places do
|
||||
post_repo.places_listing.map do |post|
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
18
slices/main/views/places/map_page.rb
Normal file
18
slices/main/views/places/map_page.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
module Main
|
||||
module Views
|
||||
module Places
|
||||
class MapPage< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
config.layout = "map"
|
||||
|
||||
expose :places do
|
||||
post_repo.places_listing.map do |post|
|
||||
p = Decorators::Posts::Decorator.new(post)
|
||||
[p.lon, p.lat]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
17
slices/main/views/podcasts/index.rb
Normal file
17
slices/main/views/podcasts/index.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
module Main
|
||||
module Views
|
||||
module Podcasts
|
||||
class Index< Main::View
|
||||
include Deps["repos.podcast_repo", "repos.podcast_scrobble_repo"]
|
||||
|
||||
expose :podcasts do
|
||||
podcast_repo.listing
|
||||
end
|
||||
|
||||
expose :listens do
|
||||
podcast_scrobble_repo.listing
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
21
slices/main/views/posts/archive.rb
Normal file
21
slices/main/views/posts/archive.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
module Main
|
||||
module Views
|
||||
module Posts
|
||||
class Archive< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
expose :year do |year:|
|
||||
year
|
||||
end
|
||||
|
||||
expose :posts do |year:|
|
||||
post_repo.by_year(year: year).map { |post| Decorators::Posts::Decorator.new(post) }
|
||||
end
|
||||
|
||||
expose :post_years do
|
||||
post_repo.post_years.map { |py| py[:year].to_i }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
31
slices/main/views/posts/index.rb
Normal file
31
slices/main/views/posts/index.rb
Normal file
@@ -0,0 +1,31 @@
|
||||
module Main
|
||||
module Views
|
||||
module Posts
|
||||
class Index< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
expose :posts do |post_query|
|
||||
post_query.map do |post|
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
|
||||
private_expose :post_query do |query|
|
||||
if query
|
||||
post_repo.search(term: query)
|
||||
else
|
||||
post_repo.post_listing
|
||||
end
|
||||
end
|
||||
|
||||
expose :query do |query:|
|
||||
(query == "") ? nil : query
|
||||
end
|
||||
|
||||
expose :post_years do
|
||||
post_repo.post_years.map { |py| py[:year].to_i }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
41
slices/main/views/posts/show.rb
Normal file
41
slices/main/views/posts/show.rb
Normal file
@@ -0,0 +1,41 @@
|
||||
require "time_math"
|
||||
|
||||
module Main
|
||||
module Views
|
||||
module Posts
|
||||
class Show< Main::View
|
||||
include Deps["repos.post_repo", "repos.movie_repo"]
|
||||
|
||||
expose :post do |slug:|
|
||||
Decorators::Posts::Decorator.new(post_repo.fetch!(slug))
|
||||
end
|
||||
|
||||
expose :past_posts do |post|
|
||||
start_date = TimeMath.week.floor(post.published_at)
|
||||
end_date = TimeMath.week.ceil(post.published_at)
|
||||
posts = post_repo.from_the_archives(start_date: start_date, end_date: end_date)
|
||||
posts.map { |p| Decorators::Posts::Decorator.new(p) }
|
||||
end
|
||||
|
||||
expose :past_movies do |post|
|
||||
start_date = TimeMath.week.floor(post.published_at)
|
||||
end_date = TimeMath.week.ceil(post.published_at)
|
||||
movies = movie_repo.from_the_archives(start_date: start_date, end_date: end_date)
|
||||
movies.map { |p| Decorators::Movies::Decorator.new(p) }
|
||||
end
|
||||
|
||||
expose :text_posts do |past_posts|
|
||||
past_posts.reject(&:photos?)
|
||||
end
|
||||
|
||||
expose :photo_posts do |past_posts|
|
||||
past_posts.select(&:photos?)
|
||||
end
|
||||
|
||||
expose :trip do |post|
|
||||
post.trips.first
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
21
slices/main/views/posts/top_tracks.rb
Normal file
21
slices/main/views/posts/top_tracks.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
module Main
|
||||
module Views
|
||||
module Posts
|
||||
class TopTracks< Main::View
|
||||
config.layout = false
|
||||
|
||||
expose :name do |track:|
|
||||
track.name
|
||||
end
|
||||
|
||||
expose :artist do |track:|
|
||||
track.artist
|
||||
end
|
||||
|
||||
expose :url do |track:|
|
||||
track.url
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
27
slices/main/views/recently_played/index.rb
Normal file
27
slices/main/views/recently_played/index.rb
Normal file
@@ -0,0 +1,27 @@
|
||||
module Main
|
||||
module Views
|
||||
module RecentlyPlayed
|
||||
class Index< Main::View
|
||||
config.layout = false
|
||||
|
||||
include Deps["queries.posts.recently_played"]
|
||||
|
||||
expose :recently_played_music do |recently_played_result|
|
||||
# raise recently_played_result["data"].inspect
|
||||
JSON.parse(recently_played_result)["data"].reject { |a| a["type"] != "albums" }.map do |album|
|
||||
{
|
||||
artist: album["attributes"]["artistName"],
|
||||
name: album["attributes"]["name"],
|
||||
image: album["attributes"]["artwork"]["url"].gsub("{w}", "512").gsub("{h}", "512"),
|
||||
href: album["attributes"]["url"]
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
private_expose :recently_played_result do
|
||||
recently_played.call
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
41
slices/main/views/site/home.rb
Normal file
41
slices/main/views/site/home.rb
Normal file
@@ -0,0 +1,41 @@
|
||||
module Main
|
||||
module Views
|
||||
module Site
|
||||
class Home< Main::View
|
||||
include Deps["repos.post_repo", renderer: "renderers.markdown"]
|
||||
|
||||
expose :home_content do
|
||||
markdown_content = File.read("slices/main/content/home.md")
|
||||
|
||||
renderer.call(content: markdown_content)
|
||||
end
|
||||
|
||||
expose :week_posts do
|
||||
post_repo.week_posts(limit: 10).map do |post|
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
|
||||
expose :posts do
|
||||
post_repo.home_post_listing(limit: 5).map do |post|
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
|
||||
expose :photo_posts do
|
||||
post_repo.photo_listing(limit: 12).map do |post|
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
|
||||
expose :latest_status do
|
||||
post_repo.latest_status ? Decorators::Posts::Decorator.new(post_repo.latest_status) : nil
|
||||
end
|
||||
|
||||
expose :last_location do
|
||||
post_repo.last_location ? Decorators::Posts::Decorator.new(post_repo.last_location) : nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
15
slices/main/views/statuses/index.rb
Normal file
15
slices/main/views/statuses/index.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
module Main
|
||||
module Views
|
||||
module Statuses
|
||||
class Index< Main::View
|
||||
include Deps["repos.post_repo"]
|
||||
|
||||
expose :posts do
|
||||
post_repo.statuses_listing.map do |post|
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
20
slices/main/views/tags/index.rb
Normal file
20
slices/main/views/tags/index.rb
Normal file
@@ -0,0 +1,20 @@
|
||||
module Main
|
||||
module Views
|
||||
module Tags
|
||||
class Index< Main::View
|
||||
include Deps["repos.tag_repo"]
|
||||
|
||||
expose :tag_groups do
|
||||
tag_repo
|
||||
.list
|
||||
.group_by { |tag|
|
||||
grouper = tag.label.strip[0].downcase
|
||||
/[a-z]/.match?(grouper) ? grouper : "#"
|
||||
}
|
||||
.sort
|
||||
.map { |group, tags| {group: group, tags: tags.map { |tag| {tag: tag, count: tag.posts.count} }} }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
24
slices/main/views/tags/show.rb
Normal file
24
slices/main/views/tags/show.rb
Normal file
@@ -0,0 +1,24 @@
|
||||
module Main
|
||||
module Views
|
||||
module Tags
|
||||
class Show< Main::View
|
||||
include Deps[
|
||||
"repos.post_tag_repo",
|
||||
"repos.tag_repo"
|
||||
]
|
||||
|
||||
expose :posts do |slug:|
|
||||
post_tag_repo.posts_tagged(tag: slug).map do |post|
|
||||
post.url ?
|
||||
Decorators::Bookmarks::Decorator.new(post) :
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
|
||||
expose :post_tag do |slug:|
|
||||
tag_repo.fetch!(slug)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
86
slices/main/views/timemachine/show.rb
Normal file
86
slices/main/views/timemachine/show.rb
Normal file
@@ -0,0 +1,86 @@
|
||||
require "time_math"
|
||||
|
||||
module Main
|
||||
module Views
|
||||
module Timemachine
|
||||
class Show< Main::View
|
||||
include Deps[
|
||||
"repos.post_repo",
|
||||
"repos.movie_repo",
|
||||
"repos.podcast_scrobble_repo",
|
||||
"repos.trip_repo"
|
||||
]
|
||||
|
||||
expose :posts do |date|
|
||||
post_repo.posts_for_timemachine(date: date.value).map do |post|
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
|
||||
expose :bookmarks do |date|
|
||||
post_repo.bookmarks_for_timemachine(date: date.value).map do |post|
|
||||
Decorators::Bookmarks::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
|
||||
expose :podcasts do |date|
|
||||
podcast_scrobble_repo.for_timemachine(date: date.value)
|
||||
end
|
||||
|
||||
expose :display_date do |date|
|
||||
date.strftime("%A, %d %B, %Y")
|
||||
end
|
||||
|
||||
expose :next_date do |date|
|
||||
today_to_tomorrow = TimeMath.measure(TimeMath(date.value).advance(:day, +1).call, Time.now)
|
||||
|
||||
unless today_to_tomorrow[:hours] < 0
|
||||
TimeMath.day.advance(date.value, +1)
|
||||
.strftime("%Y/%m/%d")
|
||||
end
|
||||
end
|
||||
|
||||
expose :today do
|
||||
Time.now
|
||||
.strftime("%Y/%m/%d")
|
||||
end
|
||||
|
||||
expose :current_date do |year:, month:, day:|
|
||||
"#{year}/#{month}/#{day}"
|
||||
end
|
||||
|
||||
expose :prev_date do |date|
|
||||
TimeMath.day.advance(date.value, -1)
|
||||
.strftime("%Y/%m/%d")
|
||||
end
|
||||
|
||||
expose :posts_by_month do
|
||||
post_tally = {}
|
||||
posts = post_repo.all_posts
|
||||
|
||||
(DateTime.parse("01-01-#{posts.last.published_at.year}")...DateTime.parse("31-12-#{posts.first.published_at.year}")).each do |date|
|
||||
post_tally[date.year] ||= {}
|
||||
post_tally[date.year][date.strftime("%m")] ||= {}
|
||||
post_tally[date.year][date.strftime("%m")][date.strftime("%d")] = 0
|
||||
end
|
||||
|
||||
post_stats = posts.each_with_object(post_tally) do |post, memo|
|
||||
year = post.published_at.year
|
||||
date = post.published_at
|
||||
memo[year][date.strftime("%m")][date.strftime("%d")] += 1
|
||||
end
|
||||
|
||||
podcast_scrobble_repo.listing.each do |scrobble|
|
||||
post_stats[scrobble.listened_at.year][scrobble.listened_at.strftime("%m")][scrobble.listened_at.strftime("%d")] += 1
|
||||
end
|
||||
|
||||
post_stats.sort_by { |k, _| -k }
|
||||
end
|
||||
|
||||
private_expose :date do |year:, month:, day:|
|
||||
DateTime.parse("#{year}-#{month}-#{day}")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
15
slices/main/views/trips/index.rb
Normal file
15
slices/main/views/trips/index.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
module Main
|
||||
module Views
|
||||
module Trips
|
||||
class Index< Main::View
|
||||
include Deps["repos.trip_repo"]
|
||||
|
||||
expose :trip_years do
|
||||
trip_repo
|
||||
.list
|
||||
.group_by { |trip| trip.start_date.year }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
29
slices/main/views/trips/show.rb
Normal file
29
slices/main/views/trips/show.rb
Normal file
@@ -0,0 +1,29 @@
|
||||
module Main
|
||||
module Views
|
||||
module Trips
|
||||
class Show< Main::View
|
||||
include Deps[
|
||||
"repos.trip_repo"
|
||||
]
|
||||
|
||||
expose :posts do |trip|
|
||||
trip.posts.sort { |p, x| p.published_at.to_i <=> x.published_at.to_i }.map do |post|
|
||||
Decorators::Posts::Decorator.new(post)
|
||||
end
|
||||
end
|
||||
|
||||
expose :places do |posts|
|
||||
posts.map do |post|
|
||||
next if post.location.nil?
|
||||
p = Decorators::Posts::Decorator.new(post)
|
||||
[p.lon, p.lat]
|
||||
end.compact
|
||||
end
|
||||
|
||||
expose :trip do |id:|
|
||||
trip_repo.fetch!(id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
18
slices/main/views/workouts/index.rb
Normal file
18
slices/main/views/workouts/index.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
module Main
|
||||
module Views
|
||||
module Workouts
|
||||
class Index< Main::View
|
||||
include Deps["repos.workout_repo"]
|
||||
|
||||
expose :workouts_by_year do
|
||||
workout_repo
|
||||
.list
|
||||
.group_by { |wo|
|
||||
wo.published_at.year
|
||||
}
|
||||
.sort
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user