fixed sorting problem for memebers

This commit is contained in:
Harry Bomrah 2014-10-09 18:02:42 +08:00
parent ddb457baab
commit 947da85563
3 changed files with 17 additions and 5 deletions

View File

@ -2,7 +2,6 @@ class MembersController < ApplicationController
def index
page_roles = OrbitHelper.page_categories
page_role_status = OrbitHelper.page_role_status
fields_to_show = [
{"key"=>"job_title", "type"=>"role","sort_order"=>1},
{"key"=>"name", "type"=>"profile","sort_order"=>2,"link_to_show"=>true},
@ -22,7 +21,6 @@ class MembersController < ApplicationController
sort = '[('+sort.join('),(')+')]'
end
if page_roles.include?("all")
roles = Role.all.collect do |role|
{ "title" => role.title, "id" => role.id }
@ -31,8 +29,9 @@ class MembersController < ApplicationController
page_role_status.each do |status_id|
page_roles << RoleStatus.find(status_id).role.id.to_s
end
roles = Role.find(page_roles.uniq).collect do |role|
{ "title" => role.title, "id" => role.id, "status" => RoleStatus.where(:role_id=>role, :_id.in=>page_role_status) }
{ "title" => role.title, "id" => role.id, "status" => RoleStatus.where(:role_id=>role, :_id.in=>page_role_status).to_a }
end
end
@ -48,17 +47,19 @@ class MembersController < ApplicationController
# Members with status
role_status = RoleStatus.order_by(:id=>"asc").where(:role_id=>role['id'])
role_status_ids = role_status.collect{|status| status.id.to_s}
role_status.each do |status|
member_profiles = get_members_by_status(status, sort, fields_to_show)
next if member_profiles.blank?
status_list << { "status-title" => status.title, "members" => member_profiles }
end
# Members without status
member_profiles = []
MemberProfile.not_in(:role_status_ids.in=>role_status_ids).where(:role_ids.in=>[role['id']]).collect do |profile|
member_profiles << get_member_data(profile, fields_to_show)
end
member_profiles = member_profiles.sort_by{|data| eval(sort)}
member_profiles = member_profiles.sort_by{|data| eval(sort)} rescue member_profiles
status_list << { "status-title" => role['title'], "members" => member_profiles } if !member_profiles.blank?
end
role_list << { "role-title" => role['title'], "status-list" => status_list }
@ -73,10 +74,12 @@ class MembersController < ApplicationController
def get_members_by_status(status, sort, fields_to_show)
member_profiles = []
status.member_profiles.each do |member|
member_profiles<<get_member_data(member, fields_to_show)
end
return member_profiles.sort_by{|data| eval(sort)}
return member_profiles.sort_by{|data| eval(sort)} rescue member_profiles
end
def get_member_data(member, fields_to_show)
@ -166,6 +169,7 @@ class MembersController < ApplicationController
if field['sort_order']
field_data['sort_value'] = field_data['val'].blank? ? field_data['value'] : field_data['val']
field_data['sort_value'] = (field_data['sort_value'].is_i? ? field_data['sort_value'].to_i : field_data['sort_value'] rescue field_data['sort_value'])
end
if field['link_to_show']

View File

@ -0,0 +1,3 @@
Dir.glob("#{Rails.root}/lib/core_extension/*.rb").each do |l|
require l
end

View File

@ -0,0 +1,5 @@
class String
def is_i?
!!(self =~ /\A[-+]?[0-9]+\z/)
end
end