class DashOverlord::UseCases::V1::ChartConfigs::CacheAnswerValues::BuildCache
Public Instance Methods
perform()
click to toggle source
# File lib/dash_overlord/use_cases/v1/chart_configs/cache_answer_values/build_cache.rb, line 10 def perform chart_config.cached_answer_values = unique_answer_values.map { |key, value| { label: key, value: value } } chart_config.cached_answer_updated_at = cached_answer_updated_at end
Protected Instance Methods
cached_answer_updated_at()
click to toggle source
# File lib/dash_overlord/use_cases/v1/chart_configs/cache_answer_values/build_cache.rb, line 34 def cached_answer_updated_at return nil if chart_config.cached_answer_values.blank? # fucking Ebert, made me do this... fucker last_answer = chart_config.last_answer return DT.now if !last_answer || !last_answer.updated_at last_answer.updated_at end
calculate_values_occurences()
click to toggle source
# File lib/dash_overlord/use_cases/v1/chart_configs/cache_answer_values/build_cache.rb, line 45 def calculate_values_occurences raw_responses.each_with_object({}) do |raw_response, hash| hash[raw_response] = hash[raw_response] ? (hash[raw_response] + 1) : 1 end end
calculate_values_percentage()
click to toggle source
# File lib/dash_overlord/use_cases/v1/chart_configs/cache_answer_values/build_cache.rb, line 51 def calculate_values_percentage hash = calculate_values_occurences total = hash.values.reduce(:+) hash.each do |key, occurences| hash[key] = (occurences * 100).to_f / total end hash end
raw_responses()
click to toggle source
# File lib/dash_overlord/use_cases/v1/chart_configs/cache_answer_values/build_cache.rb, line 63 def raw_responses @raw_responses ||= chart_config.answers.map { |answer| Entities::Answer.new(answer.attributes).parsed_response } end
unique_answer_values()
click to toggle source
# File lib/dash_overlord/use_cases/v1/chart_configs/cache_answer_values/build_cache.rb, line 21 def unique_answer_values case chart_config.function when 'count' calculate_values_occurences when 'percentage' calculate_values_percentage else raw_responses.each_with_object({}) do |raw_response, hash| hash[raw_response.to_sym] = '-' end end end