micalender 0.0.1
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 +7 -0
- data/lib/micalender/railtie.rb +9 -0
- data/lib/micalender/version.rb +3 -0
- data/lib/micalender/view_helpers.rb +150 -0
- data/lib/micalender.rb +8 -0
- metadata +104 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 88cbadbf2982860f10b64e81633aa89c1bbec4e7
|
4
|
+
data.tar.gz: b46bbe0ec0b7500b89ae2dc8d3457910ec1a697e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b116e4c9ce55412b60d7d5d5ddc058bbcc0e10c209a4c150fcdb963e17c285f310c59291c647de7be4c9758f24701e049f924716051cbb0f8a00426bb61b034d
|
7
|
+
data.tar.gz: d6bb41bb59cb0774cdbf66f49e0b5c66a268173a6c685d7e2e4c44b9afab6a567412996d03db0c3007c903822d03428220cdb1ddb4c12325c73c2c73bc332f75
|
@@ -0,0 +1,150 @@
|
|
1
|
+
module Micalender
|
2
|
+
module ViewHelpers
|
3
|
+
def month_calendar(param_name=:start_date, options={}, &block)
|
4
|
+
start_date = (params[param_name] || Time.zone.now).to_date
|
5
|
+
|
6
|
+
options.reverse_merge!(
|
7
|
+
td: day_classes,
|
8
|
+
prev_link: ->(range) { link_to raw("«"), param_name => range.first - 1.day },
|
9
|
+
header: month_header,
|
10
|
+
next_link: ->(range) { link_to raw("»"), param_name => range.last + 1.day },
|
11
|
+
start_date: start_date,
|
12
|
+
)
|
13
|
+
render_calendar month_range(start_date), options, &block
|
14
|
+
end
|
15
|
+
|
16
|
+
def week_calendar(param_name=:start_date, options={}, &block)
|
17
|
+
start_date = (params[param_name] || Time.zone.now).to_date
|
18
|
+
number_of_weeks = options.fetch(:number_of_weeks, 1)
|
19
|
+
|
20
|
+
options.reverse_merge!(
|
21
|
+
td: day_classes,
|
22
|
+
prev_link: ->(range) { link_to raw("«"), param_name => range.first - 1.day },
|
23
|
+
header: false,
|
24
|
+
next_link: ->(range) { link_to raw("»"), param_name => range.last + 1.day },
|
25
|
+
start_date: start_date,
|
26
|
+
)
|
27
|
+
render_calendar week_range(start_date, number_of_weeks), options, &block
|
28
|
+
end
|
29
|
+
|
30
|
+
def calendar(param_name=:start_date, options={}, &block)
|
31
|
+
start_date = (params[param_name] || Time.zone.now).to_date
|
32
|
+
number_of_days_to_advance = options.fetch(:number_of_days, 4) - 1
|
33
|
+
|
34
|
+
options.reverse_merge!(
|
35
|
+
td: day_classes,
|
36
|
+
prev_link: ->(range) { link_to raw("«"), param_name => range.first - 1.day },
|
37
|
+
header: false,
|
38
|
+
next_link: ->(range) { link_to raw("»"), param_name => range.last + 1.day },
|
39
|
+
start_date: start_date,
|
40
|
+
)
|
41
|
+
render_calendar calendar_range(start_date, number_of_days_to_advance), options, &block
|
42
|
+
end
|
43
|
+
|
44
|
+
def month_range(start_date)
|
45
|
+
start_date.beginning_of_month.beginning_of_week.to_date..start_date.end_of_month.end_of_week.to_date
|
46
|
+
end
|
47
|
+
|
48
|
+
def week_range(start_date, number_of_weeks)
|
49
|
+
number_of_days_to_advance = (number_of_weeks * 7) - 1
|
50
|
+
starting_day = start_date.beginning_of_week.to_date
|
51
|
+
ending_day = starting_day + number_of_days_to_advance.days
|
52
|
+
starting_day..ending_day
|
53
|
+
end
|
54
|
+
|
55
|
+
def calendar_range(start_date, number_of_days_to_advance)
|
56
|
+
start_date..(start_date + number_of_days_to_advance.days)
|
57
|
+
end
|
58
|
+
|
59
|
+
def render_calendar(range, options, &block)
|
60
|
+
raise 'SimpleCalendar requires a block' unless block_given?
|
61
|
+
|
62
|
+
@block = block
|
63
|
+
@options = options.reverse_merge default_options
|
64
|
+
@start_date = options.fetch(:start_date)
|
65
|
+
|
66
|
+
capture do
|
67
|
+
concat render_header(@start_date, range)
|
68
|
+
concat render_table(range)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def render_header(start_date, range)
|
73
|
+
capture do
|
74
|
+
content_tag :div do
|
75
|
+
concat get_options(@options[:prev_link], range)
|
76
|
+
concat get_options(@options[:header], start_date)
|
77
|
+
concat get_options(@options[:next_link], range)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def render_table(range)
|
83
|
+
content_tag(:table, get_options(@options[:table])) do
|
84
|
+
content_tag(:tbody) do
|
85
|
+
render_weeks(range)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
def render_weeks(range)
|
92
|
+
weeks = []
|
93
|
+
range.each_slice(7) do |week|
|
94
|
+
weeks << content_tag(:tr, get_options(@options[:tr], week)) do
|
95
|
+
render_week(week)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
safe_join weeks
|
99
|
+
end
|
100
|
+
|
101
|
+
def render_week(week)
|
102
|
+
results = week.map do |day|
|
103
|
+
content_tag :td, get_options(@options[:td], @start_date, day) do
|
104
|
+
@block.call(day)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
safe_join results
|
108
|
+
end
|
109
|
+
|
110
|
+
def get_options(options, *params)
|
111
|
+
case options
|
112
|
+
when Hash
|
113
|
+
options
|
114
|
+
when String
|
115
|
+
send(options, *params)
|
116
|
+
when Symbol
|
117
|
+
send(options, *params)
|
118
|
+
else
|
119
|
+
options.call(*params) if options.respond_to? :call
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def default_options
|
124
|
+
{ table: {}, tr: {}, td: {}, }
|
125
|
+
end
|
126
|
+
|
127
|
+
def day_classes
|
128
|
+
->(start_date, current_calendar_date) {
|
129
|
+
today = Time.zone.now.to_date
|
130
|
+
td_class = ["day"]
|
131
|
+
|
132
|
+
td_class << "today" if today == current_calendar_date
|
133
|
+
td_class << "past" if today > current_calendar_date
|
134
|
+
td_class << "future" if today < current_calendar_date
|
135
|
+
td_class << "prev-month" if start_date.month != current_calendar_date.month && current_calendar_date < start_date
|
136
|
+
td_class << "next-month" if start_date.month != current_calendar_date.month && current_calendar_date > start_date
|
137
|
+
td_class << "current-month" if start_date.month == current_calendar_date.month
|
138
|
+
td_class << "wday-#{current_calendar_date.wday.to_s}"
|
139
|
+
|
140
|
+
{ class: td_class.join(" ") }
|
141
|
+
}
|
142
|
+
end
|
143
|
+
|
144
|
+
def month_header
|
145
|
+
->(start_date) {
|
146
|
+
content_tag :span, "#{I18n.t("date.month_names")[start_date.month]} #{start_date.year}", class: "calendar-header"
|
147
|
+
}
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
data/lib/micalender.rb
ADDED
metadata
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: micalender
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mukesh Kumar
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-03-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
description: calender.
|
70
|
+
email:
|
71
|
+
- karanraj9042@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- lib/micalender.rb
|
77
|
+
- lib/micalender/railtie.rb
|
78
|
+
- lib/micalender/version.rb
|
79
|
+
- lib/micalender/view_helpers.rb
|
80
|
+
homepage: https://github.com/karanraj9042/holiday_calender
|
81
|
+
licenses:
|
82
|
+
- MIT
|
83
|
+
metadata: {}
|
84
|
+
post_install_message:
|
85
|
+
rdoc_options: []
|
86
|
+
require_paths:
|
87
|
+
- lib
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
requirements: []
|
99
|
+
rubyforge_project:
|
100
|
+
rubygems_version: 2.6.8
|
101
|
+
signing_key:
|
102
|
+
specification_version: 4
|
103
|
+
summary: calender gem.
|
104
|
+
test_files: []
|