Module: AbAdmin::Concerns::AdminAddition
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/ab_admin/concerns/admin_addition.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #for_input_token ⇒ Object
- #next_prev_by_url(scope, url, prev = false) ⇒ Object
- #token_data(method, options = {}) ⇒ Object
Instance Method Details
#for_input_token ⇒ Object
22 23 24 |
# File 'lib/ab_admin/concerns/admin_addition.rb', line 22 def for_input_token {:id => self.id, :text => self.name} end |
#next_prev_by_url(scope, url, prev = false) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/ab_admin/concerns/admin_addition.rb', line 43 def next_prev_by_url(scope, url, prev=false) predicates = {'>' => '<', '<' => '>', 'desc' => 'asc', 'asc' => 'desc'} query = Rack::Utils.parse_nested_query(URI.parse(url).query).symbolize_keys query[:q] ||= {} order_str = query[:q]['s'] || 'id desc' order_col, order_mode = order_str.split quoted_order_col = self.class.quote_column(order_col) if prev query[:q]['s'] = ["#{order_col} #{predicates[order_mode]}", 'id desc'] predicate = order_mode == 'desc' ? '>' : '<' id_predicate = '<' else query[:q]['s'] = ["#{order_col} #{order_mode}", 'id'] predicate = order_mode == 'desc' ? '<' : '>' id_predicate = '>' end sql = "(#{quoted_order_col} #{predicate} :val OR (#{quoted_order_col} = :val AND #{self.class.quote_column('id')} #{id_predicate} #{self.id}))" scope.where(sql, :val => self.send(order_col)).ransack(query[:q]).result(:distinct => true).first end |
#token_data(method, options = {}) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/ab_admin/concerns/admin_addition.rb', line 26 def token_data(method, ={}) assoc = self.class.reflect_on_association(method) records = self.send(method) data = Array(records).map(&:for_input_token) data = { :pre => data.to_json, :class => assoc.klass.name, :multi => assoc.collection?, :c => .delete(:c) } if [:geo_order] singular = self.class.model_name.singular data[:c] ||= {:with => {:lat => "#{singular}_lat", :lon => "#{singular}_lon"}}.to_json end .reverse_deep_merge!(:class => 'fancy_select', :data => data) end |