Take queries out of aspect contacts pane on home page
This commit is contained in:
parent
57485e7093
commit
366734ca5e
3 changed files with 48 additions and 7 deletions
|
|
@ -11,7 +11,10 @@ class AspectsController < ApplicationController
|
||||||
def index
|
def index
|
||||||
@posts = current_user.visible_posts(:_type => "StatusMessage").paginate :page => params[:page], :per_page => 15, :order => 'created_at DESC'
|
@posts = current_user.visible_posts(:_type => "StatusMessage").paginate :page => params[:page], :per_page => 15, :order => 'created_at DESC'
|
||||||
@post_hashes = hashes_for_posts @posts
|
@post_hashes = hashes_for_posts @posts
|
||||||
|
@aspect_hashes = hashes_for_aspects @aspects.all, @contacts
|
||||||
|
pp @aspect_hashes
|
||||||
|
pp @aspects.all
|
||||||
|
pp @contacts
|
||||||
@aspect = :all
|
@aspect = :all
|
||||||
|
|
||||||
if current_user.getting_started == true
|
if current_user.getting_started == true
|
||||||
|
|
@ -135,6 +138,17 @@ class AspectsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
def hashes_for_aspects aspects, contacts
|
||||||
|
aspects.map do |a|
|
||||||
|
hash = {:aspect => a}
|
||||||
|
aspect_contacts = contacts.select{|c|
|
||||||
|
c.aspect_ids.include?(a.id)}
|
||||||
|
hash[:contact_count] = aspect_contacts.count
|
||||||
|
person_ids = aspect_contacts.map{|c| c.person_id}
|
||||||
|
hash[:people] = Person.all(:id.in => person_ids, :limit => 8)
|
||||||
|
hash
|
||||||
|
end
|
||||||
|
end
|
||||||
def hashes_for_posts posts
|
def hashes_for_posts posts
|
||||||
post_ids = posts.map{|p| p.id}
|
post_ids = posts.map{|p| p.id}
|
||||||
comment_hash = Comment.hash_from_post_ids post_ids
|
comment_hash = Comment.hash_from_post_ids post_ids
|
||||||
|
|
|
||||||
|
|
@ -43,16 +43,16 @@
|
||||||
= link_to t('.add_aspect'), '#add_aspect_pane', :class => "add_aspect_button"
|
= link_to t('.add_aspect'), '#add_aspect_pane', :class => "add_aspect_button"
|
||||||
|
|
||||||
%ul
|
%ul
|
||||||
- for user_aspect in @aspects
|
- for a_hash in @aspect_hashes
|
||||||
%li
|
%li
|
||||||
%h4
|
%h4
|
||||||
= link_to user_aspect, user_aspect
|
= link_to a_hash[:aspect], a_hash[:aspect]
|
||||||
%span
|
%span
|
||||||
= t('contacts', :count=>user_aspect.contacts.count)
|
= t('contacts', :count=>a_hash[:contact_count])
|
||||||
|
|
||||||
- if user_aspect.contacts.count > 0
|
- if a_hash[:contact_count] > 0
|
||||||
- for aspect_contact in user_aspect.contacts[0..7]
|
- for person in a_hash[:people]
|
||||||
= person_image_link(aspect_contact.person)
|
= person_image_link(person)
|
||||||
.section
|
.section
|
||||||
%h3= t('.invites')
|
%h3= t('.invites')
|
||||||
= render "shared/invitations", :invites => @invites
|
= render "shared/invitations", :invites => @invites
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,33 @@ describe AspectsController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#hashes_for_aspects" do
|
||||||
|
before do
|
||||||
|
@people = []
|
||||||
|
10.times {@people << Factory.create(:person)}
|
||||||
|
@people.each{|p| @user.reload.activate_contact(p, @user.aspects.first.reload)}
|
||||||
|
@user.reload
|
||||||
|
@hashes = @controller.send(:hashes_for_aspects, @user.aspects, @user.contacts)
|
||||||
|
@hash = @hashes.first
|
||||||
|
@aspect = @user.aspects.first
|
||||||
|
end
|
||||||
|
it 'has aspects' do
|
||||||
|
@hashes.length.should == 2
|
||||||
|
@hash[:aspect].should == @aspect
|
||||||
|
end
|
||||||
|
it 'has a contact count' do
|
||||||
|
@hash[:contact_count].should == 11
|
||||||
|
end
|
||||||
|
it 'has people' do
|
||||||
|
desired_people = @aspect.contacts.map{|c| c.person.diaspora_handle}
|
||||||
|
gotten_people = @hash[:people].map{|p| p.diaspora_handle}
|
||||||
|
gotten_people.each{|p| desired_people.should include p}
|
||||||
|
end
|
||||||
|
it 'has at most 8 people' do
|
||||||
|
@hash[:people].length.should == 8
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "#update" do
|
describe "#update" do
|
||||||
before do
|
before do
|
||||||
@aspect = @user.aspects.create(:name => "Bruisers")
|
@aspect = @user.aspects.create(:name => "Bruisers")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue