just-datetime-picker 0.0.5 → 0.0.6

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.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = Introduction
2
2
 
3
- This is a simple gem for {Active Admin}[http://www.activeadmin.infp] that just
3
+ This is a simple gem for {Active Admin}[http://www.activeadmin.info] that just
4
4
  adds support for Date/Time picker.
5
5
 
6
6
  It supports both ActiveRecord for relational databases and {Mongoid}[http://www.mongoid.org]
@@ -12,9 +12,11 @@ Screenshot[https://raw.github.com/saepia/just-datetime-picker/master/doc/just-da
12
12
 
13
13
  == Code samples
14
14
 
15
- Here comes a quick code sample. Sorry, currently no docs.
15
+ Here comes a quick code sample. Sorry, currently no detailed docs.
16
16
 
17
- That should create nice date/time picker for User#born_at.
17
+ That should create nice date/time picker for User#born_at. Associated column in the DB should be nullable.
18
+
19
+ To delete previously stored date/time just make all fields blank (date, hour and minute).
18
20
 
19
21
  === Migration (if you use ActiveRecord)
20
22
 
@@ -96,13 +98,15 @@ Once you have the source, you can unpack it and use from wherever you downloaded
96
98
 
97
99
  === CSS
98
100
 
99
- If you use Rails >= 3.1 just add this line to active_admin.css.scss
101
+ If you use Rails >= 3.1 AND ActiveAdmin >= 0.5.0 just add this line to active_admin.css.scss
100
102
 
101
103
  @import "just_datetime_picker/base";
102
104
 
103
105
  Otherwise, just manually append the code from {this file}[https://raw.github.com/saepia/just-datetime-picker/master/app/assets/stylesheets/just_datetime_picker/base.css]
104
106
  to your CSS stylesheet.
105
107
 
108
+ In ActiveAdmin 0.4.x you must strip body.active_admin from CSS declarations.
109
+
106
110
  === JavaScript
107
111
 
108
112
  If you use nested set and dynamically create date or date/time pickers,
@@ -121,10 +125,10 @@ to your JS script.
121
125
 
122
126
  Code was tested with:
123
127
 
124
- * ruby[http://www.ruby-lang.org] 1.9.3-p194 [ amd64 ] under RVM[http://www.rvm.io],
125
- * ActiveAdmin[http://www.activeadmin.info] 0.4.4 and 0.5.0,
128
+ * ruby[http://www.ruby-lang.org] 1.9.3-p194 [ amd64 ] and 1.9.3p286 [ i386 ] under RVM[http://www.rvm.io],
129
+ * ActiveAdmin[http://www.activeadmin.info] 0.4.4, 0.5.0 and 0.5.1,
126
130
  * formtastic[https://github.com/justinfrench/formtastic] 2.2.1,
127
- * {Ruby on Rails}[http://www.rubyonrails.org] 3.2.8.
131
+ * {Ruby on Rails}[http://www.rubyonrails.org] 3.2.8, 3.2.11.
128
132
 
129
133
  == License
130
134
 
@@ -137,6 +141,11 @@ This code is licensed under GPLv3[http://www.gnu.org/licenses/gpl.html].
137
141
 
138
142
  == ChangeLog
139
143
 
144
+ === 0.0.6 (February 23, 2013)
145
+
146
+ * Fixed nested form workaround - do not use obsolete jQuery live() syntax ({Marcin Lewandowski}[https://github.com/saepia])
147
+ * Allow to set date time to null value (thanks to {yaoquan}[https://github.com/yaoquan] for pointing this out)
148
+
140
149
  === 0.0.5 (September 28, 2012)
141
150
 
142
151
  * Changed dependency of ActiveAdmin 0.5.0 to 0.4.4 ({Marcin Lewandowski}[https://github.com/saepia])
@@ -1,4 +1,11 @@
1
- $('body.active_admin a.button').live('click', function() {
1
+ // Workaround that enables date picker for fields in nested forms.
2
+ // By default ActiveAdmin enables date picker once, after the page
3
+ // has been loaded, so all datepicker fields created afterwards
4
+ // are dead by default.
5
+ //
6
+ // We attach to a.button to catch a moment where user can potentially
7
+ // add new field like this in a nested form.
8
+ $(document).on('click', 'body.active_admin a.button', function() {
2
9
  $('input.datepicker:not(.hasDatepicker)').datepicker();
3
10
  });
4
11
 
@@ -11,7 +11,7 @@ Gem::Specification.new do |gem|
11
11
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
12
12
  gem.name = "just-datetime-picker"
13
13
  gem.require_paths = ["lib"]
14
- gem.version = '0.0.5'
14
+ gem.version = '0.0.6'
15
15
  gem.add_dependency 'formtastic', '>= 2.0.0'
16
16
  gem.add_dependency 'activeadmin', '>= 0.4.4'
17
17
  end
@@ -69,33 +69,53 @@ module Just
69
69
  end
70
70
 
71
71
  define_method "#{field_name}_date=" do |v|
72
- return if v.to_s.empty?
72
+ if v.to_s.empty?
73
+ instance_variable_set("@#{field_name}_date", nil)
74
+ else
75
+ instance_variable_set("@#{field_name}_date", v)
76
+ end
73
77
 
74
- instance_variable_set("@#{field_name}_date", v)
75
78
  just_combine_datetime field_name
76
79
  end
77
80
 
78
81
  define_method "#{field_name}_time_hour=" do |v|
79
- return if v.to_s.empty?
80
-
81
- instance_variable_set("@#{field_name}_time_hour", v.to_i)
82
+ if v.to_s.empty?
83
+ instance_variable_set("@#{field_name}_time_hour", nil)
84
+ else
85
+ instance_variable_set("@#{field_name}_time_hour", v.to_i)
86
+ end
87
+
82
88
  just_combine_datetime field_name
83
89
  end
84
90
 
85
91
  define_method "#{field_name}_time_minute=" do |v|
86
- return if v.to_s.empty?
87
-
88
- instance_variable_set("@#{field_name}_time_minute", v.to_i)
92
+ if v.to_s.empty?
93
+ instance_variable_set("@#{field_name}_time_minute", nil)
94
+ else
95
+ instance_variable_set("@#{field_name}_time_minute", v.to_i)
96
+ end
97
+
89
98
  just_combine_datetime field_name
90
99
  end
91
100
 
92
-
93
101
  if options.has_key? :add_to_attr_accessible and options[:add_to_attr_accessible] == true
94
102
  attr_accessible "#{field_name}_date".to_sym, "#{field_name}_time_hour".to_sym, "#{field_name}_time_minute".to_sym
95
103
  end
96
104
  end # just_define_datetime_picker
97
105
 
98
106
  protected
107
+
108
+ # Combines values passed to individual fields (date, hour and minutes) into syntax acceptable by DB.
109
+ #
110
+ # It performs validation by trying to parse combined time. In case of error it just logs warning.
111
+ # In such case, stored date/time remains unchanged.
112
+ #
113
+ # It performs and tries to store the value only if all components (date, hour and minutes) are set.
114
+ # Otherwise it checks the opposite - if maybe all values are nil, and then sets NULL in the DB if
115
+ # this condition is true.
116
+ #
117
+ # * *Arguments* :
118
+ # - +field_name+ -> attribute that is used to represent +Just Date/Time Picker+ storage
99
119
  def just_combine_datetime(field_name)
100
120
  if not instance_variable_get("@#{field_name}_date").nil? and not instance_variable_get("@#{field_name}_time_hour").nil? and not instance_variable_get("@#{field_name}_time_minute").nil?
101
121
 
@@ -106,11 +126,11 @@ module Just
106
126
  rescue ArgumentError
107
127
  logger.warn "Just error while trying to set #{field_name} attribute: \"#{combined}\" is not valid date/time"
108
128
  end
129
+
130
+ elsif instance_variable_get("@#{field_name}_date").nil? and instance_variable_get("@#{field_name}_time_hour").nil? and instance_variable_get("@#{field_name}_time_minute").nil?
131
+ self.send("#{field_name}=", nil)
109
132
  end
110
-
111
- end
112
-
113
-
133
+ end
114
134
  end # included
115
135
 
116
136
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: just-datetime-picker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-28 00:00:00.000000000 Z
13
+ date: 2013-02-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: formtastic