Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Andrew <mail@timothyandrew.net>2016-09-20 16:20:48 +0300
committerTimothy Andrew <mail@timothyandrew.net>2016-09-20 16:20:48 +0300
commita4a0ce95001b93c2ed65a18946542f3eecdf564e (patch)
treef6a18dafdcfedb46477382055eafd15ef2a91bf5 /app/controllers/projects/cycle_analytics_controller.rb
parentc9247c05eb4988687b1fe85e39a6ea30b5437c40 (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.rb36
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