Class: RailsPulse::Jobs::Cards::TotalRuns
- Defined in:
- app/models/rails_pulse/jobs/cards/total_runs.rb
Constant Summary
Constants inherited from Base
Base::RANGE_DAYS, Base::WINDOW_DAYS
Instance Method Summary collapse
-
#initialize(job: nil) ⇒ TotalRuns
constructor
A new instance of TotalRuns.
- #to_metric_card ⇒ Object
Constructor Details
#initialize(job: nil) ⇒ TotalRuns
Returns a new instance of TotalRuns.
5 6 7 |
# File 'app/models/rails_pulse/jobs/cards/total_runs.rb', line 5 def initialize(job: nil) @job = job end |
Instance Method Details
#to_metric_card ⇒ Object
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 |
# File 'app/models/rails_pulse/jobs/cards/total_runs.rb', line 9 def to_metric_card base_query = RailsPulse::Summary .where( summarizable_type: "RailsPulse::Job", period_type: "day", period_start: range_start..now ) base_query = base_query.where(summarizable_id: @job.id) if @job metrics = base_query.select( "SUM(count) AS total_count", "SUM(CASE WHEN period_start >= #{quote(current_window_start)} THEN count ELSE 0 END) AS current_count", "SUM(CASE WHEN period_start >= #{quote(range_start)} AND period_start < #{quote(current_window_start)} THEN count ELSE 0 END) AS previous_count" ).take total_runs = metrics&.total_count.to_i current_runs = metrics&.current_count.to_i previous_runs = metrics&.previous_count.to_i trend_icon, trend_amount = trend_for(current_runs, previous_runs) grouped_runs = base_query .group_by_date(:period_start) .sum(:count) { id: "jobs_total_runs", context: "jobs", title: "Job Runs", summary: "#{format_number(total_runs)} runs", chart_data: sparkline_from(grouped_runs), trend_icon: trend_icon, trend_amount: trend_amount, trend_text: "Compared to previous week" } end |