Sha256: b0ff503e35b055f72c364f24444b1bd952d94103355cf11b584d003ea3d93b3a

Contents?: true

Size: 874 Bytes

Versions: 17

Compression:

Stored size: 874 Bytes

Contents

class ModelSortConfig < Array
		
	def initialize(*cols)
		cols.each do |col|
			if col.is_a? Hash
				opts_hash = col.fetch(col.keys.first)
				self << SortColumn.new(col.keys.first, opts_hash)
			else
				self << SortColumn.new(col)
			end

		end
		
	end

	def get_order(sort_by, dir, def_sort_col, base_class)
		if sort_column_obj = self.sortable_column(sort_by)
			# {sort_by => dir}
			ar_class = sort_column_obj.joined_table ? sort_column_obj.joined_table.to_s.classify.constantize : base_class
			ar_class.arel_table[sort_by].send(dir)
		else
			{def_sort_col => dir} if def_sort_col
		end
	end
 	
	def sortable_column(col)
		#returns nil if no matching sortable columns
		self.select { |model_sort_config| model_sort_config.send("column") == col.to_s }.first
	end

	def select_opts
		return self.inject([]) do |m, sort_col|
			m + sort_col.select_opts
		end 
	end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
sql_search_n_sort-3.0.3 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-3.0.2 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-3.0.1 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-3.0.0 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.16 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.15 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.14 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.13 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.11 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.10 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.9 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.8 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.7 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.6 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.5 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.4 lib/sql_search_n_sort/model_sort_config.rb
sql_search_n_sort-2.1.3 lib/sql_search_n_sort/model_sort_config.rb