hellobase 0.1.9 → 0.1.14

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61c5d3e9cf754c5b79f4c40d8f81d386eefdd9b4d0cc5ac1e6e6d20c99750cba
4
- data.tar.gz: 54c85b5b7e21630f79bff2138663a7d4075495d55b5a35d31803ffcc66aa1351
3
+ metadata.gz: 925574afb7726175b0a972403d9e805692779cbbb8f6e87ff8fbe911a135df28
4
+ data.tar.gz: a2ca4330eca04f5b069e00f7c4fdcca8d245c394044c34eefd922c2619d3ce72
5
5
  SHA512:
6
- metadata.gz: 06263c3bf10883966e08359e07470355e587e62e35827c170f8b833b042a485f899672c135823a18333e7d2f719a67035c87d2d0dbf5a71ef7c8c8f38ee9df65
7
- data.tar.gz: a37f2ef4a5364b2e619e484b91dcd17650973eb9433e16c9dc486e0d6fcc599dca0fbd04bfb844fd633d3a5f14709fc9701250abbe97cb098d65b899b46cdda7
6
+ metadata.gz: 41a29344cdece20c0f7ec4485d7db02f7297775892032763083f62fc3d823cf0253efeb09266ae50866c715cf7e089ce9215ba14cdec494d1625c63b58a514d6
7
+ data.tar.gz: be6935db61dfb6320d9a3bcbb5a00b6326c27bcce4a7a850322e0aad7180fdb0fe5f49000d3791512a1a7ddc85b347e37dd21431f384f8d697b4dd4643a5177f
@@ -1,71 +1,101 @@
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 to_html
7
- init_object
10
+ def self.virtual_attributes(attr)
11
+ [:"_dpwt_#{attr}_d", :"_dpwt_#{attr}_h", :"_dpwt_#{attr}_m"]
12
+ end
8
13
 
9
- datepicker_html = ActiveAdmin::Inputs::DatepickerInput.new(builder, template, object, object_name, "#{method}_date", datepicker_options).to_html
10
- time_select_html = Formtastic::Inputs::SelectInput.new(builder, template, object, object_name, "#{method}_time", time_select_options).to_html
11
- zone_hidden_html = Formtastic::Inputs::HiddenInput.new(builder, template, object, object_name, "#{method}_tz", {}).to_html
12
- value_hidden_html = Formtastic::Inputs::HiddenInput.new(builder, template, object, object_name, method, {}).to_html
13
- zone_span_html = template.content_tag(:span, time_zone)
14
+ def self.define_virtual_attributes(klass, attr)
15
+ return if klass.respond_to? :_dpwt_defined
14
16
 
15
- wrapper_contents = [
16
- replace_li_tag(datepicker_html),
17
- replace_li_tag(time_select_html),
18
- replace_li_tag(zone_hidden_html),
19
- replace_li_tag(value_hidden_html),
20
- zone_span_html,
21
- error_html,
22
- hint_html,
23
- ].compact.join("\n").html_safe
17
+ klass.class_eval <<-RUBY
18
+ def self._dpwt_defined; end
24
19
 
25
- template.content_tag(:li, wrapper_contents, wrapper_html_options)
26
- end
20
+ def _dpwt_#{attr}_d
21
+ self.#{attr}&.strftime('%Y-%m-%d')
22
+ end
27
23
 
28
- private
24
+ def _dpwt_#{attr}_h
25
+ self.#{attr}&.strftime('%H')
26
+ end
29
27
 
30
- def init_object
31
- if value = object.send(method)
32
- object.send "#{method}=", value.in_time_zone(time_zone)
33
- end
28
+ def _dpwt_#{attr}_m
29
+ self.#{attr}&.strftime('%M')
30
+ end
31
+
32
+ def _dpwt_#{attr}_d=(val)
33
+ @_dpwt_#{attr}_d = val
34
+ _dpwt_set_#{attr}
34
35
 
35
- object.class_eval <<-RUBY
36
- define_method(:#{method}_buffer) do
37
- @#{method}_v ||= #{method}&.in_time_zone('#{time_zone}')
36
+ val
38
37
  end
39
38
 
40
- define_method(:#{method}_tz) do
41
- #{method}_buffer&.strftime('%z')
39
+ def _dpwt_#{attr}_h=(val)
40
+ @_dpwt_#{attr}_h = val
41
+ _dpwt_set_#{attr}
42
+
43
+ val
42
44
  end
43
45
 
44
- define_method(:#{method}_date) do
45
- #{method}_buffer&.strftime('%Y-%m-%d')
46
+ def _dpwt_#{attr}_m=(val)
47
+ @_dpwt_#{attr}_m = val
48
+ _dpwt_set_#{attr}
49
+
50
+ val
46
51
  end
47
52
 
48
- define_method(:#{method}_time) do
49
- #{method}_buffer&.strftime('%R')
53
+ private
54
+
55
+ def _dpwt_set_#{attr}
56
+ self.#{attr} = @_dpwt_#{attr}_d.blank? || @_dpwt_#{attr}_h.blank? || @_dpwt_#{attr}_m.blank? ? nil : [@_dpwt_#{attr}_d, [@_dpwt_#{attr}_h, @_dpwt_#{attr}_m].join(':')].join(' ')
50
57
  end
51
58
  RUBY
52
59
  end
53
60
 
61
+ def to_html
62
+ datepicker_html = ActiveAdmin::Inputs::DatepickerInput.new(builder, template, object, object_name, :"_dpwt_#{method}_d", datepicker_options).to_html
63
+ hour_select_html = Formtastic::Inputs::SelectInput.new(builder, template, object, object_name, :"_dpwt_#{method}_h", hour_select_options).to_html
64
+ minute_select_html = Formtastic::Inputs::SelectInput.new(builder, template, object, object_name, :"_dpwt_#{method}_m", minute_select_options).to_html
65
+ zone_display_html = options[:time_zone] ? template.content_tag(:span, options[:time_zone]) : nil
66
+
67
+ wrapper_contents = [
68
+ replace_li_tag(datepicker_html),
69
+ replace_li_tag(hour_select_html),
70
+ replace_li_tag(minute_select_html),
71
+ zone_display_html,
72
+ error_html,
73
+ hint_html,
74
+ ].compact.join("\n").html_safe
75
+
76
+ template.content_tag(:li, wrapper_contents, wrapper_html_options)
77
+ end
78
+
79
+ private
80
+
54
81
  def datepicker_options
55
82
  {
56
83
  label: label_text,
57
84
  }.merge(options[:datepicker_options] || {})
58
85
  end
59
86
 
60
- def time_select_options
87
+ def hour_select_options
61
88
  {
62
89
  label: false,
63
- collection: (0..23).map {|h| (0..59).select {|m| m % 5 == 0 }.map {|m| ['%02i' % h, '%02i' % m].join(':') } }.flatten,
64
- }.merge(options[:time_select_options] || {})
90
+ collection: (0..23).map {|i| '%02i' % i },
91
+ }.merge(options[:hour_select_options] || {})
65
92
  end
66
93
 
67
- def time_zone
68
- options[:time_zone] || 'UTC'
94
+ def minute_select_options
95
+ {
96
+ label: false,
97
+ collection: (0..59).map {|i| '%02i' % i },
98
+ }.merge(options[:minute_select_options] || {})
69
99
  end
70
100
 
71
101
  # formtastic inputs generate <li> with no way to override
@@ -1,3 +1,3 @@
1
1
  module Hellobase
2
- VERSION = '0.1.9'
2
+ VERSION = '0.1.14'
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.9
4
+ version: 0.1.14
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: 2020-11-14 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