hellobase 0.1.11 → 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 58d94618d33b35eb07fa61f5a1ec5dbffaf39184dd15ba53b952864ff87bc50a
4
- data.tar.gz: 26ab6624cbf12e1a09e31e2e9959130f91ebf6ee4f4c237ded77d6daecfcd585
3
+ metadata.gz: 2067b7cb6544fd57896f092063b337967e49c673e2ceed3ab5ae771b88b73278
4
+ data.tar.gz: b33677b0a39f2469aa0449e23a72ab86fb8ad09d8b6aec45f3506df7768be8b9
5
5
  SHA512:
6
- metadata.gz: a94d80712b33120f7697250b4efc2410c0669ae612f87c70fbf383f69f7026635f9ef1914b4c0943416c67cc33132532f520d5f99113e7cf9e388ca31000cd15
7
- data.tar.gz: a025c3bc76d3b544300087e2cfb5c2aa4c5c40ac8d0d84f7b65926f18568f899e6c5cc4d65956c0ad2cb1c0d8596b2a97d1c0ca58d0cbc47830e920f3b7e37b1
6
+ metadata.gz: e66d67ca7485ab940445ca39ef01355a89b82fb93b9cc95e61dd9b9ee394176339cb8e96b0d5658c5bf86c5fc9d368c06134bef57bef2eb40ce10ab28e386fb9
7
+ data.tar.gz: 54789c893f773116994819f9003eded25df02276663fade58b05cb432af0fbc4ac1f8e9964a24453f67c159b743b12354be9e3e2f51fb0db8e41dcd910a06926
@@ -20,7 +20,7 @@ Time.singleton_class.prepend(
20
20
 
21
21
  def new(*args)
22
22
  # only allow ActiveSupport::TimeZone to use Time.new
23
- unless caller_locations(1, 1)[0].path.end_with? 'active_support/values/time_zone.rb'
23
+ unless caller_locations.any? {|loc| loc.path.end_with? '/active_support/values/time_zone.rb' }
24
24
  raise Hellobase::Error.new(:datetime_new, nil)
25
25
  end
26
26
 
@@ -1,56 +1,70 @@
1
+ # require these here so we can load this as a standalone file - see formtastic.rb
2
+ require 'active_support'
3
+ require 'formtastic'
4
+
1
5
  require 'active_admin/inputs'
2
6
 
3
7
  class DatepickerWithTimeInput
4
8
  include ::Formtastic::Inputs::Base
5
9
 
6
- def self.virtual_attributes(attr)
7
- [:"_dpwt_#{attr}_d", :"_dpwt_#{attr}_t"]
10
+ def self.virtual_attributes(base)
11
+ [:"_dpwt_#{base}_d", :"_dpwt_#{base}_h", :"_dpwt_#{base}_m"]
8
12
  end
9
13
 
10
- def self.define_virtual_attributes(klass, attr)
11
- return if klass.respond_to? :_dpwt_defined
12
-
13
- klass.class_eval <<-RUBY
14
- def self._dpwt_defined; end
14
+ def self.define_virtual_attributes(klass, base)
15
+ attrs = virtual_attributes(base)
16
+ ivars = attrs.map {|a| :"@#{a}" }
17
+ method = :"_dpwt_set_#{base}"
15
18
 
16
- def _dpwt_#{attr}_d
17
- self.#{attr}&.strftime('%Y-%m-%d')
19
+ klass.class_eval do
20
+ define_method attrs[0] do
21
+ send(base)&.strftime('%Y-%m-%d')
18
22
  end
19
23
 
20
- def _dpwt_#{attr}_t
21
- self.#{attr}&.strftime('%R')
24
+ define_method attrs[1] do
25
+ send(base)&.strftime('%H')
22
26
  end
23
27
 
24
- def _dpwt_#{attr}_d=(val)
25
- @_dpwt_#{attr}_d = val
26
- _dpwt_set_#{attr}
27
-
28
- val
28
+ define_method attrs[2] do
29
+ send(base)&.strftime('%M')
29
30
  end
30
31
 
31
- def _dpwt_#{attr}_t=(val)
32
- @_dpwt_#{attr}_t = val
33
- _dpwt_set_#{attr}
32
+ attrs.each_with_index do |a, i|
33
+ define_method :"#{a}=" do |val|
34
+ instance_variable_set ivars[i], val
35
+ send(method)
34
36
 
35
- val
37
+ val
38
+ end
36
39
  end
37
40
 
38
- private
39
-
40
- def _dpwt_set_#{attr}
41
- self.#{attr} = @_dpwt_#{attr}_d.blank? || @_dpwt_#{attr}_t.blank? ? nil : [@_dpwt_#{attr}_d, @_dpwt_#{attr}_t].join(' ')
41
+ define_method method do
42
+ send :"#{base}=",
43
+ ivars.any? {|v| instance_variable_get(v).blank? } ?
44
+ nil :
45
+ [
46
+ instance_variable_get(ivars[0]),
47
+ [
48
+ instance_variable_get(ivars[1]),
49
+ instance_variable_get(ivars[2])
50
+ ].join(':')
51
+ ].join(' ')
42
52
  end
43
- RUBY
53
+
54
+ private method
55
+ end
44
56
  end
45
57
 
46
58
  def to_html
47
59
  datepicker_html = ActiveAdmin::Inputs::DatepickerInput.new(builder, template, object, object_name, :"_dpwt_#{method}_d", datepicker_options).to_html
48
- time_select_html = Formtastic::Inputs::SelectInput.new(builder, template, object, object_name, :"_dpwt_#{method}_t", time_select_options).to_html
60
+ hour_select_html = Formtastic::Inputs::SelectInput.new(builder, template, object, object_name, :"_dpwt_#{method}_h", hour_select_options).to_html
61
+ minute_select_html = Formtastic::Inputs::SelectInput.new(builder, template, object, object_name, :"_dpwt_#{method}_m", minute_select_options).to_html
49
62
  zone_display_html = options[:time_zone] ? template.content_tag(:span, options[:time_zone]) : nil
50
63
 
51
64
  wrapper_contents = [
52
65
  replace_li_tag(datepicker_html),
53
- replace_li_tag(time_select_html),
66
+ replace_li_tag(hour_select_html),
67
+ replace_li_tag(minute_select_html),
54
68
  zone_display_html,
55
69
  error_html,
56
70
  hint_html,
@@ -67,11 +81,18 @@ class DatepickerWithTimeInput
67
81
  }.merge(options[:datepicker_options] || {})
68
82
  end
69
83
 
70
- def time_select_options
84
+ def hour_select_options
85
+ {
86
+ label: false,
87
+ collection: (0..23).map {|i| '%02i' % i },
88
+ }.merge(options[:hour_select_options] || {})
89
+ end
90
+
91
+ def minute_select_options
71
92
  {
72
93
  label: false,
73
- collection: (0..23).map {|h| (0..59).select {|m| m % 5 == 0 }.map {|m| ['%02i' % h, '%02i' % m].join(':') } }.flatten,
74
- }.merge(options[:time_select_options] || {})
94
+ collection: (0..59).map {|i| '%02i' % i },
95
+ }.merge(options[:minute_select_options] || {})
75
96
  end
76
97
 
77
98
  # formtastic inputs generate <li> with no way to override
@@ -1,3 +1,3 @@
1
1
  module Hellobase
2
- VERSION = '0.1.11'
2
+ VERSION = '0.1.16'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hellobase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Wang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-19 00:00:00.000000000 Z
11
+ date: 2021-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeadmin
@@ -99,9 +99,6 @@ dependencies:
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '5.13'
104
- - - "<"
105
102
  - !ruby/object:Gem::Version
106
103
  version: '5.14'
107
104
  type: :development
@@ -109,9 +106,6 @@ dependencies:
109
106
  version_requirements: !ruby/object:Gem::Requirement
110
107
  requirements:
111
108
  - - "~>"
112
- - !ruby/object:Gem::Version
113
- version: '5.13'
114
- - - "<"
115
109
  - !ruby/object:Gem::Version
116
110
  version: '5.14'
117
111
  - !ruby/object:Gem::Dependency
@@ -184,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
178
  - !ruby/object:Gem::Version
185
179
  version: '0'
186
180
  requirements: []
187
- rubygems_version: 3.1.4
181
+ rubygems_version: 3.0.8
188
182
  signing_key:
189
183
  specification_version: 4
190
184
  summary: Ruby runtime environment for Hellobase