def add_to_sortable_columns(sortable_name, *args)
if args.size >= 1
if args.first.kind_of?(Class)
model = args.first
if args.size >= 2
field = args[1].to_s
if args.size == 2
data_name = model.table_name+'.'+field
self.sortable_column_header_data[assemble_sort_key(sortable_name, data_name)] = data_name
else args.size == 3
col_alias = args[2].to_s
col_alias.chop! if (col_alias[-1].chr == '!')
data_name = model.table_name+'.'+field
self.sortable_column_header_data[assemble_sort_key(sortable_name, col_alias)] = data_name
end
else
model.columns.each do |c|
data_name = model.table_name+'.'+c.name
self.sortable_column_header_data[assemble_sort_key(sortable_name, data_name)] = data_name
end
end
elsif args.first.kind_of?(Hash)
if !args.first[:model].blank? && args.first[:model].kind_of?(Class)
model = args.first[:model]
if !args.first[:field].blank?
field = args.first[:field].to_s
if args.first[:alias].blank?
data_name = model.table_name+'.'+field
self.sortable_column_header_data[assemble_sort_key(sortable_name, data_name)] = data_name
prestore_sort(sortable_name, data_name, self.sortable_column_header_data, *args) unless args.first[:sort_direction].blank?
else
col_alias = args.first[:alias].to_s
col_alias.chop! if (col_alias[-1].chr == '!')
data_name = model.table_name+'.'+field
self.sortable_column_header_data[assemble_sort_key(sortable_name, col_alias)] = data_name
prestore_sort(sortable_name, col_alias, self.sortable_column_header_data, *args) unless args.first[:sort_direction].blank?
end
else
model.columns.each do |c|
data_name = model.table_name+'.'+c.name
self.sortable_column_header_data[assemble_sort_key(sortable_name, data_name)] = data_name
prestore_sort(sortable_name, data_name, self.sortable_column_header_data, *args) unless args.first[:sort_direction].blank?
end
end
elsif !args.first[:field].blank?
field = args.first[:field].to_s
if !args.first[:alias].blank?
col_alias = args.first[:alias].to_s
col_alias.chop! if (col_alias[-1].chr == '!')
self.sortable_column_header_data[assemble_sort_key(sortable_name, col_alias)] = field
prestore_sort(sortable_name, col_alias, self.sortable_column_header_data, *args) unless args.first[:sort_direction].blank?
else
self.sortable_column_header_data[assemble_sort_key(sortable_name, field)] = field
prestore_sort(sortable_name, data_name, self.sortable_column_header_data, *args) unless args.first[:sort_direction].blank?
end
else
raise sch_err_msg
end
else
field = args.first.to_s
if args.size == 1
self.sortable_column_header_data[assemble_sort_key(sortable_name, field)] = field
else
col_alias = args[1].to_s
col_alias.chop! if (col_alias[-1].chr == '!')
self.sortable_column_header_data[assemble_sort_key(sortable_name, col_alias)] = field
end
end
else
raise sch_err_msg
end
end