Sha256: 6d2192788542cc230be452cb914b1efe494331ad83bb1486ab37b316ea28640e

Contents?: true

Size: 1.05 KB

Versions: 36

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

module LinkedRails
  class Collection
    module Sortable
      attr_accessor :sort
      attr_writer :sort_options

      def default_before_value
        sortings.map do |sorting|
          {
            key: sorting.key,
            value: sorting.default_value
          }
        end
      end

      def parsed_sort_values
        sortings.map(&:sort_value)
      end

      def primary_key_sorting
        [
          {
            key: Vocab.ontola[:primaryKey],
            direction: :asc
          }
        ]
      end

      def sort_options
        @sort_options || association_class.try(:sort_options, self)
      end

      def sorted_association(scope)
        scope.respond_to?(:reorder) ? scope.reorder(parsed_sort_values) : scope
      end

      def sorted?
        sort.present?
      end

      def sortings
        @sortings ||= LinkedRails.collection_sorting_class.from_array(
          association_class,
          (sort || default_sortings) + primary_key_sorting,
          self
        )
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
linked_rails-0.0.4.pre.g3aeec2263 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.gacd5f04d4 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.gb0b6aea40 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g792a1b887 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g58af47992 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g0ec6e30ca app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g9e3bcac55 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g222bfeeca app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.gb254a2893 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g2c6c26e86 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.ge881247c3 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.gfabf7e9f5 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g8c045be3a app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g8d7195543 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.gfe77aae19 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.gc866c1806 app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g3e8f5731a app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g58e27be7f app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g96885856b app/models/linked_rails/collection/sortable.rb
linked_rails-0.0.4.pre.g1faca9643 app/models/linked_rails/collection/sortable.rb