Sha256: 45be23a760b06834366a663a8d9770ab47272eaaad8e48d120e879c5ce0f6f48

Contents?: true

Size: 1.03 KB

Versions: 9

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module Decidim
  # A general presenter to render statistics in participatory spaces.
  class StatsPresenter < SimpleDelegator
    def comments_stats(name)
      comments = Decidim.component_manifests.map do |component_manifest|
        component_manifest.stats.only([:comments_count])
                          .filter({ tag: :comments })
                          .with_context(published_components)
                          .map { |_name, value| value }.sum
      end
      comments_count = comments.inject(0, :+) { |sum, value| sum + value }
      [[name, :comments_count, comments_count]]
    end

    def statistics(grouped_stats)
      statistics = {}

      grouped_stats.each do |_manifest_name, stats|
        stats.each do |_space_manifest, component_manifest, count|
          next if count.zero?

          statistics[component_manifest] ||= 0
          statistics[component_manifest] += count
        end
      end
      statistics.map { |key, number| { stat_title: key, stat_number: number } }
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
decidim-core-0.27.9 app/presenters/decidim/stats_presenter.rb
decidim-core-0.27.8 app/presenters/decidim/stats_presenter.rb
decidim-core-0.27.7 app/presenters/decidim/stats_presenter.rb
decidim-core-0.27.6 app/presenters/decidim/stats_presenter.rb
decidim-core-0.27.5 app/presenters/decidim/stats_presenter.rb
decidim-core-0.27.4 app/presenters/decidim/stats_presenter.rb
decidim-core-0.27.3 app/presenters/decidim/stats_presenter.rb
decidim-core-0.27.2 app/presenters/decidim/stats_presenter.rb
decidim-core-0.27.1 app/presenters/decidim/stats_presenter.rb