Skip to content

Commit 9bb0366

Browse files
committed
events ページ作成
1 parent 56a5c61 commit 9bb0366

File tree

6 files changed

+56
-15
lines changed

6 files changed

+56
-15
lines changed

app/assets/stylesheets/custom.scss

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -561,9 +561,13 @@ a {
561561
text-decoration: none
562562
}
563563

564+
.event-region {
565+
font-weight: bold;
566+
}
567+
564568
#event-list {
565-
height: 200px;
566-
overflow: auto;
569+
width: 80%;
570+
margin: 0 auto;
567571
}
568572

569573
#event-list .event-date {

app/controllers/events_controller.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class EventsController < ApplicationController
2+
def show
3+
@url = request.url
4+
@upcoming_events = UpcomingEvent.group_by_region_and_date
5+
end
6+
end

app/models/upcoming_event.rb

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,18 @@ class UpcomingEvent < ApplicationRecord
1212
scope :until, ->(date) { where('event_at < ?', date.beginning_of_day) }
1313

1414
class << self
15-
def group_by_date
16-
eager_load(dojo_event_service: { dojo: :prefecture }).since(Time.zone.today).
17-
order(:event_at).map(&:catalog).group_by { |d| d[:event_date] }
15+
def group_by_region_and_date
16+
events_by_region = eager_load(dojo_event_service: { dojo: :prefecture }).since(Time.zone.today).
17+
merge(Dojo.default_order).
18+
group_by { |event| event.dojo_event_service.dojo.prefecture.region }
19+
20+
regions = Prefecture.pluck(:region).uniq
21+
result = {}
22+
regions.each do |region|
23+
events = events_by_region[region]
24+
result[region] = events ? events.sort_by(&:event_at).map(&:catalog).group_by { |d| d[:event_date] } : {}
25+
end
26+
result
1827
end
1928
end
2029

app/views/events/show.html.haml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
- provide(:title, 'イベント')
2+
- provide(:desc, 'もうすぐ開催のイベント情報をまとめています。')
3+
- provide(:url, @url)
4+
5+
/
6+
%section.cover{style: 'padding-top:40px; background-color: white;'}
7+
= image_tag "stats_cover.png"
8+
9+
%section#events.text-center
10+
%br
11+
%h1 もうすぐ開催のイベント
12+
%br
13+
%p{:style => "margin: 0 30px 40px 30px;"}
14+
開催予定のイベントをチェックしましょう!
15+
= render partial: 'shared/upcoming_events', locals: { upcoming_events: @upcoming_events }
16+
17+
%br
18+
%br
Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
%div#event-list
2-
- upcoming_events.each do |date, events|
3-
%p.event-date= "#{date.strftime('%Y/%m/%d')}"
4-
%ul
5-
- events.each do |event|
6-
%li
7-
%p
8-
%span.event-at= "#{event[:event_at].strftime('%k:%M')}"
9-
%a.event-url{ href: "#{event[:event_url]}" }
10-
%span= event[:event_title]
11-
%span= "#{event[:dojo_name]} (#{event[:dojo_prefecture_name]})"
2+
- upcoming_events.each do |region, events_by_date|
3+
%p.event-region= region
4+
- events_by_date.each do |date, events|
5+
%p.event-date= "#{date.strftime('%Y/%m/%d')}"
6+
%ul
7+
- events.each do |event|
8+
%li
9+
%p
10+
%span.event-at= "#{event[:event_at].strftime('%k:%M')}"
11+
%a.event-url{ href: "#{event[:event_url]}" }
12+
%span= event[:event_title]
13+
%span= "#{event[:dojo_name]} (#{event[:dojo_prefecture_name]})"

config/routes.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
# Hotfix with the code above that works correctly.
2626
#resources :stats, only: %i(show)
2727

28+
get "/events" => "events#show"
29+
2830
# Redirects
2931
get "/releases/2016/12/12/new-backend", to: redirect('/news/2016/12/12/new-backend')
3032
get "/blogs/2016/12/12/new-backend", to: redirect('/news/2016/12/12/new-backend')

0 commit comments

Comments
 (0)