Sha256: ce59722c958047ec075ab3c943df9cae6ba5c9dd467d06741662eb9987b7e2ce

Contents?: true

Size: 1.66 KB

Versions: 2

Compression:

Stored size: 1.66 KB

Contents

# frozen_string_literal: true

module AjaxDatatablesRails
  module Datatable

    class Datatable
      attr_reader :datatable, :options

      def initialize(datatable)
        @datatable = datatable
        @options   = datatable.params
      end

      # ----------------- ORDER METHODS --------------------

      def orderable?
        options[:order].present?
      end

      def orders
        @orders ||= get_param(:order).map do |_, order_options|
          SimpleOrder.new(self, order_options)
        end
      end

      def order_by(how, what)
        orders.find { |simple_order| simple_order.send(how) == what }
      end

      # ----------------- SEARCH METHODS --------------------

      def searchable?
        options[:search].present? && options[:search][:value].present?
      end

      def search
        @search ||= SimpleSearch.new(options[:search])
      end

      # ----------------- COLUMN METHODS --------------------

      def columns
        @columns ||= get_param(:columns).map do |index, column_options|
          Column.new(datatable, index, column_options)
        end
      end

      def column_by(how, what)
        columns.find { |simple_column| simple_column.send(how) == what }
      end

      # ----------------- OPTIONS METHODS --------------------

      def paginate?
        per_page != -1
      end

      def per_page
        options.fetch(:length, 10).to_i
      end

      def offset
        options.fetch(:start, 0).to_i
      end

      def page
        (offset / per_page) + 1
      end

      def get_param(param)
        return {} if options[param].nil?

        options[param].to_unsafe_h.with_indifferent_access
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ajax-datatables-rails-1.2.0 lib/ajax-datatables-rails/datatable/datatable.rb
ajax-datatables-rails-1.1.0 lib/ajax-datatables-rails/datatable/datatable.rb