twitter-bootstrap-calendar 0.0.3 → 0.0.4

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.
data/README.md CHANGED
@@ -57,6 +57,12 @@ But really you can do anything you want in there. There are no required models o
57
57
  / Do whatever you want here!
58
58
  ```
59
59
 
60
+ Now you can also send in options
61
+ ```haml
62
+ = bootstrap_calendar month, start_day: :monday do |date|
63
+ / Do whatever you want here!
64
+ ```
65
+
60
66
  Here's a sample app if you need to see this in action, thanks to Jeff Lunt.
61
67
  https://github.com/normalocity/tbc-heroku
62
68
 
@@ -1,52 +1,5 @@
1
1
  module BootstrapCalendarHelper
2
- def bootstrap_calendar(date = Date.today, &block)
3
- BootstrapCalendar.new(self, date, block).calendar_div
2
+ def bootstrap_calendar(date = Date.today, options={}, &block)
3
+ Twitter::Bootstrap::Calendar::BootstrapCalendar.new(self, date, options, block).calendar_div
4
4
  end
5
-
6
- BootstrapCalendar = Struct.new(:view, :date, :callback) do
7
- HEADER = %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday]
8
- START_DAY = :sunday
9
-
10
- delegate :content_tag, to: :view
11
-
12
- def calendar_div
13
- content_tag 'div', class: "calendar_grid" do
14
- header + week_rows
15
- end
16
- end
17
-
18
- def header
19
- content_tag 'div', class: 'month_header row-fluid' do
20
- HEADER.map { |day| content_tag :div, class: 'span1' do
21
- day
22
- end }.join.html_safe
23
- end
24
- end
25
-
26
- def week_rows
27
- weeks.map {|week|
28
- content_tag :div, class: 'row-fluid week' do
29
- week.map { |day| day_cell(day) }.join.html_safe
30
- end
31
- }.join.html_safe
32
- end
33
-
34
- def day_cell(day)
35
- content_tag :div, view.capture(day, &callback), class: day_classes(day)
36
- end
37
-
38
- def day_classes(day)
39
- classes = ['span1']
40
- classes << "today" if day == Date.today
41
- classes << "notmonth" if day.month != date.month
42
- classes << "month" if day.month == date.month
43
- classes.empty? ? nil : classes.join(" ")
44
- end
45
-
46
- def weeks
47
- first = date.beginning_of_month.beginning_of_week(START_DAY)
48
- last = date.end_of_month.end_of_week(START_DAY)
49
- (first..last).to_a.in_groups_of(7)
50
- end
51
- end
52
- end
5
+ end
@@ -1,2 +1,3 @@
1
1
  require "twitter/bootstrap/calendar/engine"
2
2
  require "twitter/bootstrap/calendar/version"
3
+ require "twitter/bootstrap/calendar/bootstrap_calendar"
@@ -0,0 +1,93 @@
1
+ require 'active_support/core_ext'
2
+ module Twitter
3
+ module Bootstrap
4
+ module Calendar
5
+ class BootstrapCalendar
6
+ DAY_NAMES = %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday]
7
+ MOBILE_DAY_NAMES = %w[Sun Mon Tues Wed Thur Fri Sat]
8
+ START_DAY = :sunday
9
+
10
+ attr_reader :view, :date, :callback, :options
11
+
12
+ def content_tag *args, &block
13
+ view.content_tag(*args, &block)
14
+ end
15
+
16
+ def initialize(view, date, options={}, callback)
17
+ @view = view
18
+ @date = date
19
+ @options = options.symbolize_keys
20
+ @callback = callback
21
+ end
22
+
23
+ def start_day
24
+ @start_day ||= (options[:start_day] && DAY_NAMES.include?(options[:start_day].to_s.humanize)) ? options[:start_day].to_s.downcase.to_sym : :sunday
25
+ end
26
+
27
+
28
+ def calendar_div
29
+ content_tag 'div', class: "calendar_grid" do
30
+ header + week_rows
31
+ end
32
+ end
33
+
34
+ def start_day_index
35
+ @start_day_index ||= DAY_NAMES.index {|n| n.downcase == start_day.to_s} || 0
36
+ end
37
+
38
+ def day_names
39
+ return DAY_NAMES if start_day_index.zero?
40
+ DAY_NAMES[start_day_index, DAY_NAMES.size - start_day_index] + DAY_NAMES[0, start_day_index]
41
+ end
42
+
43
+ def mobile_day_names
44
+ return MOBILE_DAY_NAMES if start_day_index.zero?
45
+ MOBILE_DAY_NAMES[start_day_index, MOBILE_DAY_NAMES.size - start_day_index] + MOBILE_DAY_NAMES[0, start_day_index]
46
+ end
47
+
48
+ def header
49
+ content_tag 'div', class: 'month_header row-fluid' do
50
+ standard = day_names.map { |day|
51
+ content_tag :div, class: 'span1 visible-desktop' do
52
+ day
53
+ end
54
+ }.join.html_safe
55
+ mobile = mobile_day_names.map { |day|
56
+ content_tag :div, class: 'span1 hidden-desktop', style: 'width: 14.1%' do
57
+ day
58
+ end
59
+ }.join.html_safe
60
+
61
+ standard + mobile
62
+ end
63
+ end
64
+
65
+ def week_rows
66
+ weeks.map {|week|
67
+ content_tag :div, class: 'row-fluid week' do
68
+ week.map { |day| day_cell(day) }.join.html_safe
69
+ end
70
+ }.join.html_safe
71
+ end
72
+
73
+ def day_cell(day)
74
+ content_tag :div, view.capture(day, &callback), class: day_classes(day)
75
+ end
76
+
77
+ def day_classes(day)
78
+ classes = ['span1']
79
+ classes << "today" if day == Date.today
80
+ classes << "notmonth" if day.month != date.month
81
+ classes << "month" if day.month == date.month
82
+ classes.empty? ? nil : classes.join(" ")
83
+ end
84
+
85
+ def weeks
86
+ first = date.beginning_of_month.beginning_of_week(start_day)
87
+ last = date.end_of_month.end_of_week(start_day)
88
+ (first..last).to_a.in_groups_of(7)
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -1,7 +1,7 @@
1
1
  module Twitter
2
2
  module Bootstrap
3
3
  module Calendar
4
- VERSION = "0.0.3"
4
+ VERSION = "0.0.4"
5
5
  end
6
6
  end
7
7
  end
@@ -10,10 +10,6 @@ function tbsCalendarSetMaxHeight(){
10
10
  });
11
11
  }
12
12
 
13
- $(document).on('page:load', function() {
14
- tbsCalendarSetMaxHeight();
15
- });
16
-
17
13
  $(document).ready(function() {
18
14
  tbsCalendarSetMaxHeight();
19
15
  });
@@ -17,25 +17,11 @@
17
17
  background-color: #D7F2FF;
18
18
  }
19
19
  .month {
20
- a {
21
- color: gray;
22
- }
23
20
  background-color: #ededed;
24
21
  border: 1px solid whitesmoke;
25
22
  }
26
23
  .week .span1 {
27
24
  padding: 2px;
28
- // height: 100px;
29
- ul.event_summary {
30
- margin: 0;
31
- li {
32
- list-style: none;
33
- padding: 2px;
34
- -moz-border-radius:4px;
35
- -webkit-border-radius:4px;
36
- border-radius:4px;
37
- }
38
- }
39
25
  }
40
26
  /*!
41
27
  * Bootstrap v2.2.1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter-bootstrap-calendar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-11 00:00:00.000000000 Z
12
+ date: 2013-05-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sass
@@ -83,6 +83,7 @@ extensions: []
83
83
  extra_rdoc_files: []
84
84
  files:
85
85
  - lib/twitter/bootstrap/calendar/bootstrap.rb
86
+ - lib/twitter/bootstrap/calendar/bootstrap_calendar.rb
86
87
  - lib/twitter/bootstrap/calendar/engine.rb
87
88
  - lib/twitter/bootstrap/calendar/version.rb
88
89
  - lib/twitter-bootstrap-calendar.rb
@@ -120,4 +121,3 @@ summary: Bootstrap based responsive calendar
120
121
  test_files:
121
122
  - test/bootstrap_calendar_helper_test.rb
122
123
  - test/test_helper.rb
123
- has_rdoc: