Module: MegaBar::DatesHelper
- Defined in:
- app/helpers/mega_bar/dates_helper.rb
Instance Method Summary collapse
-
#date_picker_field(form_builder, field_name, date_options = {}) ⇒ Object
New helper for Rails form builders.
- #format_date_field(obj, field_name, date_options, form_builder = nil) ⇒ Object
Instance Method Details
#date_picker_field(form_builder, field_name, date_options = {}) ⇒ Object
New helper for Rails form builders
60 61 62 63 64 65 66 |
# File 'app/helpers/mega_bar/dates_helper.rb', line 60 def date_picker_field(form_builder, field_name, = {}) obj = form_builder.object date_record = .is_a?(MegaBar::Date) ? : nil = date_record ? date_record.attributes : format_date_field(obj, field_name, , form_builder) end |
#format_date_field(obj, field_name, date_options, form_builder = nil) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'app/helpers/mega_bar/dates_helper.rb', line 3 def format_date_field(obj, field_name, , form_builder = nil) # Handle different ways date_options might be passed = .is_a?(Hash) ? : .try(:attributes) || {} value = obj.respond_to?(:read_attribute) ? obj.read_attribute(field_name) : obj.send(field_name) rescue nil # Format for datepicker display formatted_value = "" if value.present? begin date_value = value.is_a?(String) ? DateTime.parse(value) : value include_time = [:include_time] || ['include_time'] formatted_value = include_time ? date_value.strftime('%Y-%m-%dT%H:%M') : date_value.strftime('%Y-%m-%d') rescue => e formatted_value = value.to_s end end format = [:format] || ['format'] if format == 'datepicker' || format == 'date' # Generate proper form input input_name = form_builder ? "#{form_builder.object_name}[#{field_name}]" : "#{obj.class.name.underscore}[#{field_name}]" input_id = form_builder ? "#{form_builder.object_name}_#{field_name}" : "#{obj.class.name.underscore}_#{field_name}" include_time = [:include_time] || ['include_time'] input_type = include_time ? 'datetime-local' : 'date' content_tag(:input, '', type: input_type, name: input_name, id: input_id, class: 'datepicker-input form-control', value: formatted_value, data: { include_time: include_time, min_date: [:picker_min_date] || ['picker_min_date'], max_date: [:picker_max_date] || ['picker_max_date'], default_view: [:picker_default_view] || ['picker_default_view'] || 'month', format: format } ) else # Handle other display formats (non-editable) return '' if value.nil? begin date_value = value.is_a?(String) ? DateTime.parse(value) : value base_format = format_date_value(date_value, ) apply_date_transformation(date_value, base_format, ) rescue => e value.to_s end end end |