Display numbers for the "Issue (Tracker)" cycle analytics metric.

1. Code is messy and untested, but it is a start.
This commit is contained in:
Timothy Andrew 2016-08-24 20:47:15 +05:30
parent 516c838a18
commit 8ccea81cba
3 changed files with 35 additions and 0 deletions

View File

@ -0,0 +1,32 @@
class Projects::CycleAnalyticsController < Projects::ApplicationController
def show
@metrics = {
issue: issue
}
end
private
def issue
query = <<-HEREDOC
WITH ordered_data AS (
SELECT extract(milliseconds FROM (COALESCE(first_associated_with_milestone_at, first_added_to_board_at) - issues.created_at)) AS data_point,
row_number() over (order by (COALESCE(first_associated_with_milestone_at, first_added_to_board_at) - issues.created_at)) as row_id
FROM issues
INNER JOIN issue_metrics ON issue_metrics.issue_id = issues.id
WHERE COALESCE(first_associated_with_milestone_at, first_added_to_board_at) IS NOT NULL
),
ct AS (
SELECT count(1) AS ct
FROM ordered_data
)
SELECT avg(data_point) AS median
FROM ordered_data
WHERE row_id between (select ct from ct)/2.0 and (select ct from ct)/2.0 + 1;
HEREDOC
ActiveRecord::Base.connection.execute(query).to_a.first['median']
end
end

View File

@ -0,0 +1 @@
%pre= @metrics

View File

@ -779,6 +779,8 @@ Rails.application.routes.draw do
resources :environments
resource :cycle_analytics
resources :builds, only: [:index, :show], constraints: { id: /\d+/ } do
collection do
post :cancel_all