Module: RailsPulse::FormHelper

Included in:
ApplicationHelper
Defined in:
app/helpers/rails_pulse/form_helper.rb

Instance Method Summary collapse

Instance Method Details

#time_range_selector(form, time_range_options:, selected_time_range:, mode: :preset) ⇒ String

Renders a time range selector that can switch between preset ranges and a custom datetime picker

Parameters:

  • form (ActionView::Helpers::FormBuilder)

    The form builder instance

  • time_range_options (Array)

    Array of [label, value] pairs for the select options

  • selected_time_range (Symbol, String)

    Currently selected time range

  • mode (Symbol) (defaults to: :preset)

    :preset (default) for preset time ranges, :recent_custom for Recent/Custom toggle

Returns:

  • (String)

    HTML for the time range selector



10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/helpers/rails_pulse/form_helper.rb', line 10

def time_range_selector(form, time_range_options:, selected_time_range:, mode: :preset)
  global_filters = session_global_filters
  has_global_date_range = global_filters["start_time"].present? && global_filters["end_time"].present?
  global_date_range = has_global_date_range ? "#{global_filters["start_time"]} to #{global_filters["end_time"]}" : ""
  show_custom_picker = selected_time_range.to_sym == :custom
  custom_date_value = params.dig(:q, :custom_date_range) || (show_custom_picker && has_global_date_range ? global_date_range : "")

  (:div, class: "time-range-selector", data: { mode: mode }) do
    concat time_range_select_wrapper(form, time_range_options, selected_time_range, mode)
    concat time_range_picker_wrapper(form, custom_date_value)
  end
end