summaryrefslogtreecommitdiff
path: root/app/helpers/dev_ops_report_helper.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/helpers/dev_ops_report_helper.rb')
-rw-r--r--app/helpers/dev_ops_report_helper.rb74
1 files changed, 68 insertions, 6 deletions
diff --git a/app/helpers/dev_ops_report_helper.rb b/app/helpers/dev_ops_report_helper.rb
index ab7e56fc1a2..c2200a4c3da 100644
--- a/app/helpers/dev_ops_report_helper.rb
+++ b/app/helpers/dev_ops_report_helper.rb
@@ -1,18 +1,80 @@
# frozen_string_literal: true
module DevOpsReportHelper
+ def devops_score_metrics(metric)
+ return {} if metric.blank?
+
+ {
+ averageScore: average_score_data(metric),
+ cards: devops_score_card_data(metric),
+ createdAt: metric.created_at.strftime('%Y-%m-%d %H:%M')
+ }
+ end
+
+ private
+
+ def format_score(score)
+ precision = score < 1 ? 2 : 1
+ number_with_precision(score, precision: precision)
+ end
+
def score_level(score)
if score < 33.33
- 'low'
+ {
+ label: s_('DevopsReport|Low'),
+ variant: 'muted'
+ }
elsif score < 66.66
- 'average'
+ {
+ label: s_('DevopsReport|Moderate'),
+ variant: 'neutral'
+ }
else
- 'high'
+ {
+ label: s_('DevopsReport|High'),
+ variant: 'success'
+ }
end
end
- def format_score(score)
- precision = score < 1 ? 2 : 1
- number_with_precision(score, precision: precision)
+ def average_score_level(score)
+ if score < 33.33
+ {
+ label: s_('DevopsReport|Low'),
+ variant: 'danger',
+ icon: 'status-failed'
+ }
+ elsif score < 66.66
+ {
+ label: s_('DevopsReport|Moderate'),
+ variant: 'warning',
+ icon: 'status-alert'
+ }
+ else
+ {
+ label: s_('DevopsReport|High'),
+ variant: 'success',
+ icon: 'status_success_solid'
+ }
+ end
+ end
+
+ def average_score_data(metric)
+ {
+ value: format_score(metric.average_percentage_score),
+ scoreLevel: average_score_level(metric.average_percentage_score)
+ }
+ end
+
+ def devops_score_card_data(metric)
+ metric.cards.map do |card|
+ {
+ title: "#{card.title} #{card.description}",
+ usage: format_score(card.instance_score),
+ leadInstance: format_score(card.leader_score),
+ score: format_score(card.percentage_score),
+ scoreLevel: score_level(card.percentage_score)
+ }
+ end
end
end