diff options
Diffstat (limited to 'app/helpers/dev_ops_report_helper.rb')
-rw-r--r-- | app/helpers/dev_ops_report_helper.rb | 74 |
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 |