Sha256: 73df316a9ae3198dade5caaef0f31b77cf38f849cce8822f7a59d057f22c882c

Contents?: true

Size: 1.65 KB

Versions: 6

Compression:

Stored size: 1.65 KB

Contents

# frozen_string_literal: true

require "cell/partial"

module Decidim
  module Accountability
    # This cell renders the highlighted results for a given component.
    # It is intended to be used in the `participatory_space_highlighted_elements`
    # view hook.
    class HighlightedResultsForComponentCell < Decidim::ViewModel
      include Decidim::Accountability::ApplicationHelper
      include Cell::ViewModel::Partial

      delegate :snippets, to: :controller

      def show
        render unless items_blank?
      end

      def items_blank?
        results_count.zero?
      end

      private

      def results_count
        @results_count ||= results.size
      end

      def results
        @results ||= case options[:order]
                     when "recent"
                       Decidim::Accountability::Result.where(component: model).order_by_most_recent
                     else
                       Decidim::Accountability::Result.where(component: model).order_randomly(random_seed)
                     end
      end

      def single_component?
        @single_component ||= model.is_a?(Decidim::Component)
      end

      def results_to_render
        @results_to_render ||= results.includes(:component, :status).limit(limit)
      end

      def cache_hash
        hash = []
        hash << "decidim/accountability/highlighted_results_for_component"
        hash << results.cache_key_with_version
        hash << I18n.locale.to_s
        hash.join(Decidim.cache_key_separator)
      end

      def cache_expiry_time
        10.minutes
      end

      def limit
        4
      end

      def random_seed
        (rand * 2) - 1
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
decidim-accountability-0.29.1 app/cells/decidim/accountability/highlighted_results_for_component_cell.rb
decidim-accountability-0.29.0 app/cells/decidim/accountability/highlighted_results_for_component_cell.rb
decidim-accountability-0.29.0.rc4 app/cells/decidim/accountability/highlighted_results_for_component_cell.rb
decidim-accountability-0.29.0.rc3 app/cells/decidim/accountability/highlighted_results_for_component_cell.rb
decidim-accountability-0.29.0.rc2 app/cells/decidim/accountability/highlighted_results_for_component_cell.rb
decidim-accountability-0.29.0.rc1 app/cells/decidim/accountability/highlighted_results_for_component_cell.rb