Class: RailsPulse::JobsController

Inherits:
ApplicationController show all
Includes:
TagFilterConcern, TimeRangeConcern
Defined in:
app/controllers/rails_pulse/jobs_controller.rb

Constant Summary collapse

TIME_RANGE_OPTIONS =
[
  [ "Recent", "recent" ],
  [ "Custom Range", "custom" ]
].freeze

Instance Method Summary collapse

Methods included from TimeRangeConcern

#setup_time_range

Methods inherited from ApplicationController

#set_global_filters, #set_pagination_limit

Instance Method Details

#indexObject



15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/controllers/rails_pulse/jobs_controller.rb', line 15

def index
  setup_metric_cards

  @ransack_query = RailsPulse::Job.ransack(params[:q])

  # Apply tag filters from session
  base_query = apply_tag_filters(@ransack_query.result)

  @pagination, @jobs = paginate(base_query.order(runs_count: :desc), limit: session_pagination_limit)
  @table_data = @jobs
  @available_queues = RailsPulse::Job.distinct.pluck(:queue_name).compact.sort
end

#showObject



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
58
59
# File 'app/controllers/rails_pulse/jobs_controller.rb', line 28

def show
  setup_metric_cards

  ransack_params = params[:q] || {}

  # Check if user explicitly selected a time range
  time_mode = params.dig(:q, :period_start_range) || "recent"

  # Apply time range filter only if custom mode is selected
  if time_mode == "custom"
    # Get time range from TimeRangeConcern which parses custom_date_range
    @start_time, @end_time, @selected_time_range, @time_diff_hours = setup_time_range

    # Apply time filters using parsed times from concern
    ransack_params = ransack_params.merge(
      occurred_at_gteq: Time.at(@start_time),
      occurred_at_lteq: Time.at(@end_time)
    )
  else
    # Recent mode - no time filters, just rely on sort + pagination
    @selected_time_range = "recent"
  end

  @ransack_query = @job.runs.ransack(ransack_params)
  @ransack_query.sorts = "occurred_at desc" if @ransack_query.sorts.empty?

  # Apply tag filters from session
  base_query = apply_tag_filters(@ransack_query.result)

  @pagination, @recent_runs = paginate(base_query, limit: session_pagination_limit)
  @table_data = @recent_runs
end