Skip to content

Commit 6f8171f

Browse files
authored
Merge pull request #55 from workgena/hotfix_value
Fix datetime H:M truncation
2 parents 41eff3d + ed0ac9f commit 6f8171f

File tree

5 files changed

+29
-10
lines changed

5 files changed

+29
-10
lines changed

Gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ group :test do
1919
gem 'capybara'
2020
gem 'selenium-webdriver'
2121
gem 'chromedriver-helper'
22+
gem 'byebug'
2223
end

lib/active_admin_datetimepicker/base.rb

+8-3
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,21 @@ def input_html_options(input_name = nil, placeholder = nil)
1818
options[:class] = [self.options[:class], html_class].compact.join(' ')
1919
options[:data] ||= input_html_data
2020
options[:data].merge!(datepicker_options: datetime_picker_options)
21-
options[:value] ||= input_value(input_name)
21+
options[:value] = input_value(input_name)
2222
options[:maxlength] = 19
2323
options[:placeholder] = placeholder unless placeholder.nil?
2424
end
2525
end
2626

2727
def input_value(input_name = nil)
2828
val = object.public_send(input_name || method)
29-
return DateTime.new(val.year, val.month, val.day, val.hour, val.min, val.sec).strftime(format) if val.is_a?(Time)
30-
val.to_s
29+
if val.nil?
30+
val
31+
elsif column.type == :date
32+
val
33+
else
34+
DateTime.new(val.year, val.month, val.day, val.hour, val.min, val.sec).strftime(format)
35+
end
3136
end
3237

3338
def datetime_picker_options

lib/active_admin_datetimepicker/inputs/filters/date_time_range_input.rb

-7
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,6 @@ def input_html_options(input_name = gt_input_name, placeholder = gt_input_placeh
1111
end
1212
end
1313

14-
def gt_input_name
15-
"#{method}_gteq"
16-
end
17-
18-
def lt_input_name
19-
"#{method}_lteq"
20-
end
2114
end
2215
end
2316
end

spec/filters_and_edit_form_spec.rb

+19
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,28 @@
3838

3939
expect(page.find('input#q_birthday_gteq').value).to start_with(date_from)
4040
expect(page.find('input#q_birthday_lteq').value).to start_with(date_to)
41+
4142
expect(page).to have_css('input#q_birthday_gteq[placeholder="From"]')
4243
expect(page).to have_css('input#q_birthday_lteq[placeholder="To"]')
4344
end
45+
46+
it 'submit filter form' do
47+
page.find('#q_created_at_gteq_datetime').click
48+
49+
page.find('.xdsoft_datetimepicker', visible: true)
50+
.find('.xdsoft_calendar td.xdsoft_date[data-date="1"]').click
51+
page.find('.xdsoft_datetimepicker', visible: true)
52+
.find('.xdsoft_timepicker.active .xdsoft_time.xdsoft_current').click
53+
54+
page.find('#sidebar input[type=submit]').click
55+
expect(page).to have_css('h4', text: 'Current filters:')
56+
57+
# should contain Hours:Minutes, as selected before submit
58+
expect(page.find('#q_created_at_gteq_datetime').value).to match(/\A\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}\z/)
59+
60+
# birthday is a Date column, should not contain H:M
61+
expect(page.find('#q_birthday_gteq').value).to match(/\A\d{4}-\d{2}-\d{2}\z/)
62+
end
4463
end
4564

4665

spec/support/admin.rb

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ def add_author_resource(options = {}, &block)
44
config.filters = true
55

66
filter :birthday, as: :date_time_range
7+
filter :created_at, as: :date_time_range
78

89
form do |f|
910
f.semantic_errors *f.object.errors.keys

0 commit comments

Comments
 (0)