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 |