class ExtJs::Postgres

Public Class Methods

db_opts(params, opts = {}) click to toggle source
# File lib/ruby-ext-js.rb, line 5
def self.db_opts(params, opts = {}); raise NotImplementedError; end

Protected Class Methods

allowed_filters() click to toggle source

Filtering

# File lib/ruby-ext-js.rb, line 54
def self.allowed_filters
  []
end
get_filter_data( params ) click to toggle source
# File lib/ruby-ext-js.rb, line 58
def self.get_filter_data( params )
  return unless params["filter"] && params["filter"]["0"]
  if allowed_filters.include?( params["filter"]["0"]["field"] )
    {
      :field => params["filter"]["0"]["field"],
      :values => Array( params["filter"]["0"]["data"]["value"] )
    }
  end
end
limit_param( params, max_limit ) click to toggle source

Given Ext.js params hash, returns a Datamapper limit param

# File lib/ruby-ext-js.rb, line 48
def self.limit_param( params, max_limit )
  [( params["limit"] && params["limit"].to_i ) || 25, max_limit].min
end
offset_param( params, max_offset ) click to toggle source

Given Ext.js params hash, returns a Datamapper offset param

# File lib/ruby-ext-js.rb, line 43
def self.offset_param( params, max_offset )
  [( params["start"] && params["start"].to_i ) || 0, max_offset].min
end
order_param( params ) click to toggle source

Given Ext.js params hash, returns a Datamapper sort param

# File lib/ruby-ext-js.rb, line 32
def self.order_param( params )
  sort = case params["sort"]
    when "created_at"
      :id
    else
      params["sort"] ? params["sort"].to_sym : :id
  end
  params["dir"] =~ /desc/i ? sort.desc : sort.asc
end
pagination_opts(params, opts = {}) click to toggle source

Converts Ext.js’ wacky params structure into a Postgres db query opts hash for pagination.

# File lib/ruby-ext-js.rb, line 11
def self.pagination_opts(params, opts = {})
  opts = {
    :max_offset => 10000,
    :max_limit => 100
  }.merge opts
  
  # Pagination
  offset = offset_param( params, opts[:max_offset] )
  limit = limit_param( params, opts[:max_limit] )
  
  # Sort order
  order = order_param( params )
  
  {
    :order => [order],
    :offset => offset,
    :limit => limit
  }
end