forked from saurabh/orbit4-5
fixed sorting problem for memebers
This commit is contained in:
parent
ddb457baab
commit
947da85563
|
@ -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']
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Dir.glob("#{Rails.root}/lib/core_extension/*.rb").each do |l|
|
||||
require l
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
class String
|
||||
def is_i?
|
||||
!!(self =~ /\A[-+]?[0-9]+\z/)
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue