Sha256: 4a0d0c04ab509b5cfdefa666c65bdbb8265785067cc47fc70dc923f3b2cec558

Contents?: true

Size: 1.63 KB

Versions: 17

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

module Decidim
  module Budgets
    # This cell renders the budgets list of a Budget component
    class BudgetsListCell < BaseCell
      AVAILABLE_ORDERS = %w(random highest_cost lowest_cost).freeze

      include Decidim::CellsPaginateHelper
      include Decidim::OrdersHelper
      include Decidim::Orderable
      include Cell::ViewModel::Partial

      alias current_workflow model

      delegate :allowed, :budgets, :highlighted, :voted, to: :current_workflow
      delegate :voting_open?, :voting_finished?, to: :controller

      def show
        return unless budgets

        render
      end

      def main_list = render

      private

      def highlighted?
        current_user && highlighted.any?
      end

      def voted?
        current_user && voted.any?
      end

      def finished?
        return unless budgets.any?

        current_user && (allowed - voted).none?
      end

      def i18n_scope
        "decidim.budgets.budgets_list"
      end

      def budget_paginate
        @budget_paginate ||= Kaminari.paginate_array(budgets).page(params[:page]).per(10)
      end

      def reordered_highlighted_budgets
        return highlighted if highlighted.length < 2

        reorder(budgets.where(id: highlighted.map(&:id)))
      end

      def reorder(budgets)
        case order
        when "highest_cost"
          budgets.order(total_budget: :desc)
        when "lowest_cost"
          budgets.order(total_budget: :asc)
        when "random"
          budgets.order_randomly(random_seed)
        else
          budgets
        end
      end

      def available_orders = AVAILABLE_ORDERS
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
decidim-budgets-0.30.0.rc2 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.30.0.rc1 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.29.2 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.28.5 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.29.1 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.28.4 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.29.0 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.28.3 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.29.0.rc4 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.29.0.rc3 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.29.0.rc2 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.29.0.rc1 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.28.2 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.28.1 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.28.0 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.28.0.rc5 app/cells/decidim/budgets/budgets_list_cell.rb
decidim-budgets-0.28.0.rc4 app/cells/decidim/budgets/budgets_list_cell.rb