simple_calendar 2.0.6 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/app/views/simple_calendar/_calendar.html.erb +2 -2
- data/app/views/simple_calendar/_month_calendar.html.erb +2 -2
- data/app/views/simple_calendar/_week_calendar.html.erb +2 -2
- data/lib/simple_calendar/calendar.rb +16 -11
- data/lib/simple_calendar/version.rb +1 -1
- data/spec/calendar_spec.rb +22 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30f9a905897bec1f2aa6ca50db79a859af2e1620
|
4
|
+
data.tar.gz: 7f2e0f099aa7bdb9bb2630aaf28a3b8f5c58dcca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5665ddcfa19aca666994ec0dacbe3ad4fba3be565a5ace251fb104b829732e94c933d116d714664992fcb053e76a5edbb55d0389758bc88e677db0405e88675
|
7
|
+
data.tar.gz: 83b695471fc4da275e318c2575c608a7e458935ee991f67a8ad9c153637568455b413eb61fc1d7eb870070a4ca967c3ca372cdef151931dde28da10811b0ab30
|
data/.travis.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="simple-calendar">
|
2
|
-
<%= link_to "Previous",
|
2
|
+
<%= link_to "Previous", calendar.url_for_previous_view %>
|
3
3
|
<%= I18n.t("date.month_names")[start_date.month] %> <%= start_date.year %>
|
4
|
-
<%= link_to "Next",
|
4
|
+
<%= link_to "Next", calendar.url_for_next_view %>
|
5
5
|
|
6
6
|
<table class="table table-striped">
|
7
7
|
<thead>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="simple-calendar">
|
2
|
-
<%= link_to "Previous",
|
2
|
+
<%= link_to "Previous", calendar.url_for_previous_view %>
|
3
3
|
<%= I18n.t("date.month_names")[start_date.month] %> <%= start_date.year %>
|
4
|
-
<%= link_to "Next",
|
4
|
+
<%= link_to "Next", calendar.url_for_next_view %>
|
5
5
|
|
6
6
|
<table class="table table-striped">
|
7
7
|
<thead>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="simple-calendar">
|
2
|
-
<%= link_to "Previous",
|
2
|
+
<%= link_to "Previous", calendar.url_for_previous_view %>
|
3
3
|
Week <%= start_date.strftime("%U").to_i %>
|
4
|
-
<%= link_to "Next",
|
4
|
+
<%= link_to "Next", calendar.url_for_next_view %>
|
5
5
|
|
6
6
|
<table class="table table-striped">
|
7
7
|
<thead>
|
@@ -2,11 +2,17 @@ require 'rails'
|
|
2
2
|
|
3
3
|
module SimpleCalendar
|
4
4
|
class Calendar
|
5
|
+
PARAM_KEY_BLACKLIST = :authenticity_token, :commit, :utf8, :_method, :script_name
|
6
|
+
|
5
7
|
attr_accessor :view_context, :options
|
6
8
|
|
7
9
|
def initialize(view_context, opts={})
|
8
10
|
@view_context = view_context
|
9
11
|
@options = opts
|
12
|
+
|
13
|
+
@params = @view_context.params
|
14
|
+
@params = @params.to_unsafe_h if @params.respond_to?(:to_unsafe_h)
|
15
|
+
@params = @params.with_indifferent_access.except(*PARAM_KEY_BLACKLIST)
|
10
16
|
end
|
11
17
|
|
12
18
|
def render(&block)
|
@@ -39,6 +45,14 @@ module SimpleCalendar
|
|
39
45
|
td_class
|
40
46
|
end
|
41
47
|
|
48
|
+
def url_for_next_view
|
49
|
+
view_context.url_for(@params.merge(start_date: date_range.last + 1.day))
|
50
|
+
end
|
51
|
+
|
52
|
+
def url_for_previous_view
|
53
|
+
view_context.url_for(@params.merge(start_date: date_range.first - 1.day))
|
54
|
+
end
|
55
|
+
|
42
56
|
private
|
43
57
|
|
44
58
|
def partial_name
|
@@ -51,18 +65,9 @@ module SimpleCalendar
|
|
51
65
|
|
52
66
|
def sorted_events
|
53
67
|
events = options.fetch(:events, []).sort_by(&attribute)
|
54
|
-
sorted = {}
|
55
|
-
|
56
|
-
events.each do |event|
|
57
|
-
start_time = event.send(attribute)
|
58
|
-
if start_time.present?
|
59
|
-
date = start_time.to_date
|
60
|
-
sorted[date] ||= []
|
61
|
-
sorted[date] << event
|
62
|
-
end
|
63
|
-
end
|
64
68
|
|
65
|
-
|
69
|
+
scheduled = events.reject { |e| e.send(attribute).nil? }
|
70
|
+
scheduled.group_by { |e| e.send(attribute).to_date }
|
66
71
|
end
|
67
72
|
|
68
73
|
def start_date
|
data/spec/calendar_spec.rb
CHANGED
@@ -35,7 +35,28 @@ describe SimpleCalendar::Calendar do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
describe "#sorted_events" do
|
38
|
-
it 'converts an array of events to a hash sorted by days'
|
38
|
+
it 'converts an array of events to a hash sorted by days' do
|
39
|
+
today, tomorrow = Date.today, Date.tomorrow
|
40
|
+
|
41
|
+
event1 = double(start_time: today.at_midnight)
|
42
|
+
event2 = double(start_time: today.at_noon)
|
43
|
+
event3 = double(start_time: tomorrow.at_noon)
|
44
|
+
|
45
|
+
events = [event1, event2, event3].shuffle
|
46
|
+
calendar = SimpleCalendar::Calendar.new(nil, events: events)
|
47
|
+
|
48
|
+
sorted_events = calendar.send(:sorted_events)
|
49
|
+
|
50
|
+
expect(sorted_events[today]).to eq([event1, event2])
|
51
|
+
expect(sorted_events[tomorrow]).to eq([event3])
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'handles events without a start time' do
|
55
|
+
event = double(start_time: nil)
|
56
|
+
calendar = SimpleCalendar::Calendar.new(nil, events: [event])
|
57
|
+
|
58
|
+
expect{calendar.send(:sorted_events)}.not_to raise_error
|
59
|
+
end
|
39
60
|
end
|
40
61
|
|
41
62
|
describe "#start_date" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_calendar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Oliver
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
94
|
version: '0'
|
95
95
|
requirements: []
|
96
96
|
rubyforge_project: simple_calendar
|
97
|
-
rubygems_version: 2.
|
97
|
+
rubygems_version: 2.5.1
|
98
98
|
signing_key:
|
99
99
|
specification_version: 4
|
100
100
|
summary: A simple Rails 3 and Rails 4 calendar
|