From ccaa2e1a77ea3208356fe251d20bbe0ffed8fd4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 10 Dec 2018 16:33:04 +0100 Subject: [PATCH] Remove duplication to calculate percentage --- app/helpers/stats_helper.rb | 5 ----- app/models/budget/stats.rb | 5 ----- app/models/concerns/statisticable.rb | 7 +++++++ app/models/poll/stats.rb | 1 - 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/app/helpers/stats_helper.rb b/app/helpers/stats_helper.rb index 5dabd3f82..1bacf1139 100644 --- a/app/helpers/stats_helper.rb +++ b/app/helpers/stats_helper.rb @@ -30,9 +30,4 @@ module StatsHelper opt[:data][:graph] = admin_api_stats_path(budget_investments: true) content_tag :div, "", opt end - - def calculate_percentage(fraction, total) - percent = fraction / total.to_f - percent.nan? ? 0.0 : (percent * 100).round(3) - end end diff --git a/app/models/budget/stats.rb b/app/models/budget/stats.rb index cbcde4703..6315ca50e 100644 --- a/app/models/budget/stats.rb +++ b/app/models/budget/stats.rb @@ -188,11 +188,6 @@ class Budget::Stats calculate_percentage(participants, population) end - def calculate_percentage(fraction, total) - percent = fraction / total.to_f - percent.nan? ? 0.0 : (percent * 100).round(3) - end - def supports(supportable) ActsAsVotable::Vote.where(votable_type: "Budget::Investment", votable_id: supportable.investments.pluck(:id)) end diff --git a/app/models/concerns/statisticable.rb b/app/models/concerns/statisticable.rb index 0a8032e3d..7759b631f 100644 --- a/app/models/concerns/statisticable.rb +++ b/app/models/concerns/statisticable.rb @@ -11,6 +11,13 @@ module Statisticable def generate self.class.stats_methods.map { |stat_name| [stat_name, send(stat_name)] }.to_h end + + private + + def calculate_percentage(fraction, total) + percent = fraction / total.to_f + percent.nan? ? 0.0 : (percent * 100).round(3) + end end class_methods do diff --git a/app/models/poll/stats.rb b/app/models/poll/stats.rb index 2b40f2daf..ebba64b35 100644 --- a/app/models/poll/stats.rb +++ b/app/models/poll/stats.rb @@ -1,6 +1,5 @@ class Poll::Stats include Statisticable - include StatsHelper alias_method :poll, :resource def self.stats_methods