diff options
author | Timothy Andrew <mail@timothyandrew.net> | 2016-09-20 16:20:48 +0300 |
---|---|---|
committer | Timothy Andrew <mail@timothyandrew.net> | 2016-09-20 16:20:48 +0300 |
commit | a4a0ce95001b93c2ed65a18946542f3eecdf564e (patch) | |
tree | f6a18dafdcfedb46477382055eafd15ef2a91bf5 /app/controllers/projects/cycle_analytics_controller.rb | |
parent | c9247c05eb4988687b1fe85e39a6ea30b5437c40 (diff) |
Move JSON generation (cycle analytics) into a controller method.
Helper methods are meant for views
Diffstat (limited to 'app/controllers/projects/cycle_analytics_controller.rb')
-rw-r--r-- | app/controllers/projects/cycle_analytics_controller.rb | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/app/controllers/projects/cycle_analytics_controller.rb b/app/controllers/projects/cycle_analytics_controller.rb index dd0acc57425..7f0689306be 100644 --- a/app/controllers/projects/cycle_analytics_controller.rb +++ b/app/controllers/projects/cycle_analytics_controller.rb @@ -1,5 +1,5 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController - include CycleAnalyticsHelper + include ActionView::Helpers::DateHelper before_action :authorize_read_cycle_analytics! @@ -8,7 +8,7 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController respond_to do |format| format.html - format.json { render json: cycle_analytics_json(@cycle_analytics) } + format.json { render json: cycle_analytics_json } end end @@ -27,4 +27,36 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController { start_date: params[:cycle_analytics][:start_date] } end + + def cycle_analytics_json + cycle_analytics_view_data = [[:issue, "Issue", "Time before an issue gets scheduled"], + [:plan, "Plan", "Time before an issue starts implementation"], + [:code, "Code", "Time until first merge request"], + [:test, "Test", "Total test time for all commits/merges"], + [:review, "Review", "Time between merge request creation and merge/close"], + [:staging, "Staging", "From merge request merge until deploy to production"], + [:production, "Production", "From issue creation until deploy to production"]] + + stats = cycle_analytics_view_data.reduce([]) do |stats, (stage_method, stage_text, stage_description)| + value = @cycle_analytics.send(stage_method).presence + + stats << { + title: stage_text, + description: stage_description, + value: value && !value.zero? ? distance_of_time_in_words(value) : nil + } + stats + end + + summary = [ + { title: "New Issues", value: @cycle_analytics.summary.new_issues }, + { title: "Commits", value: @cycle_analytics.summary.commits }, + { title: "Deploys", value: @cycle_analytics.summary.deploys } + ] + + { + summary: summary, + stats: stats + } + end end |