From 8ccea81cba048021ed9eded83db15b383ecd4a32 Mon Sep 17 00:00:00 2001 From: Timothy Andrew <mail@timothyandrew.net> Date: Wed, 24 Aug 2016 20:47:15 +0530 Subject: [PATCH] Display numbers for the "Issue (Tracker)" cycle analytics metric. 1. Code is messy and untested, but it is a start. --- .../projects/cycle_analytics_controller.rb | 32 +++++++++++++++++++ .../projects/cycle_analytics/show.html.haml | 1 + config/routes.rb | 2 ++ 3 files changed, 35 insertions(+) create mode 100644 app/controllers/projects/cycle_analytics_controller.rb create mode 100644 app/views/projects/cycle_analytics/show.html.haml diff --git a/app/controllers/projects/cycle_analytics_controller.rb b/app/controllers/projects/cycle_analytics_controller.rb new file mode 100644 index 00000000000..ed885729fbb --- /dev/null +++ b/app/controllers/projects/cycle_analytics_controller.rb @@ -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 diff --git a/app/views/projects/cycle_analytics/show.html.haml b/app/views/projects/cycle_analytics/show.html.haml new file mode 100644 index 00000000000..e9bdd71b30a --- /dev/null +++ b/app/views/projects/cycle_analytics/show.html.haml @@ -0,0 +1 @@ +%pre= @metrics diff --git a/config/routes.rb b/config/routes.rb index 24f9b44a53a..270c71f1a00 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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 -- GitLab