Class: RailsPulse::Routes::Charts::AverageResponseTimes
- Inherits:
-
Object
- Object
- RailsPulse::Routes::Charts::AverageResponseTimes
- Defined in:
- app/models/rails_pulse/routes/charts/average_response_times.rb
Instance Method Summary collapse
-
#initialize(ransack_query:, group_by: :group_by_day, route: nil) ⇒ AverageResponseTimes
constructor
A new instance of AverageResponseTimes.
- #to_rails_chart ⇒ Object
Constructor Details
#initialize(ransack_query:, group_by: :group_by_day, route: nil) ⇒ AverageResponseTimes
Returns a new instance of AverageResponseTimes.
5 6 7 8 9 |
# File 'app/models/rails_pulse/routes/charts/average_response_times.rb', line 5 def initialize(ransack_query:, group_by: :group_by_day, route: nil) @ransack_query = ransack_query @group_by = group_by @route = route end |
Instance Method Details
#to_rails_chart ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/models/rails_pulse/routes/charts/average_response_times.rb', line 11 def to_rails_chart # Get actual data using existing logic actual_data = if @route # These are the requests for the specific route so it will just be a collection of Requests that we can # filter and sort using the attributes on each Request @ransack_query.result(distinct: false) .public_send(@group_by, "occurred_at", series: true, time_zone: "UTC") .average(:duration) else # Use the existing query structure with left_joins from ransack @ransack_query.result(distinct: false) .left_joins(:requests) .public_send( @group_by, "rails_pulse_requests.occurred_at", series: true, time_zone: "UTC" ) .average("rails_pulse_requests.duration") end # Create full time range and fill in missing periods fill_missing_periods(actual_data) end |