26 lines
1.3 KiB
Ruby
26 lines
1.3 KiB
Ruby
# DateTime picker using bootstrap-datepicker for the time part.
|
|
#
|
|
# Requires +date_time_attribute+ gem (+workaround) and active on the attribute.
|
|
# @see DateTimeAttributeValidate
|
|
# @see http://stackoverflow.com/a/20317763/2866660
|
|
# @see https://github.com/einzige/date_time_attribute
|
|
class DatePickerTimeInput < SimpleForm::Inputs::StringInput
|
|
def input(wrapper_options)
|
|
options = merge_wrapper_options(input_html_options, wrapper_options)
|
|
# Date format must match datepicker's, see app/assets/application.js .
|
|
# And for html5 inputs, match RFC3339, see http://dev.w3.org/html5/markup/datatypes.html#form.data.date .
|
|
# In the future, use html5 date&time inputs. This needs modernizr or equiv. to avoid
|
|
# double widgets, and perhaps conditional css to adjust input width (chrome).
|
|
value = @builder.object.send attribute_name
|
|
date_options = { as: :string, class: 'input-small datepicker' }
|
|
time_options = { as: :string, class: 'input-mini' }
|
|
@builder.input_field("#{attribute_name}_date_value", options.merge(date_options)) + ' ' +
|
|
@builder.input_field("#{attribute_name}_time_value", options.merge(time_options))
|
|
# time_select requires a date_select
|
|
# @builder.time_select("#{attribute_name}_time", {ignore_date: true}, input_html_options.merge(time_options))
|
|
end
|
|
|
|
def label_target
|
|
"#{attribute_name}_date_value"
|
|
end
|
|
end
|