vrfs-774: added orderby for plays/playing; ui tweaks
This commit is contained in:
parent
a8160cca5c
commit
555d4f1139
|
|
@ -132,12 +132,21 @@ module JamRuby
|
|||
sel_str = 'users.*'
|
||||
case ordering = self.musician_order_param(params)
|
||||
when :plays
|
||||
sel_str = "COUNT(records)+COUNT(sessions) AS play_count, #{sel_str}"
|
||||
rel = rel.joins("LEFT JOIN music_sessions AS sessions ON sessions.user_id = users.id")
|
||||
rel = rel.joins("LEFT JOIN recordings AS records ON records.owner_id = users.id")
|
||||
rel = rel.group("users.id")
|
||||
rel = rel.order("play_count DESC, users.created_at DESC")
|
||||
when :followed
|
||||
sel_str = "COUNT(follows) AS search_follow_count, #{sel_str}"
|
||||
rel = rel.joins("LEFT JOIN users_followers AS follows ON follows.user_id = users.id")
|
||||
rel = rel.group("users.id")
|
||||
rel = rel.order("COUNT(follows) DESC, users.created_at DESC")
|
||||
when :playing
|
||||
rel = rel.joins("LEFT JOIN connections ON connections.user_id = users.id")
|
||||
.where(['connections.aasm_state != ? AND connections.music_session_id IS NOT NULL',
|
||||
'expired'])
|
||||
.order("users.created_at DESC")
|
||||
end
|
||||
|
||||
rel = rel.select(sel_str)
|
||||
|
|
|
|||
|
|
@ -72,19 +72,24 @@ describe User do
|
|||
results.is_friend?(@user1).should == true
|
||||
end
|
||||
|
||||
it "should have recording counter " do
|
||||
connection = FactoryGirl.create(:connection, :user => @user1)
|
||||
def make_recording(uu)
|
||||
connection = FactoryGirl.create(:connection, :user => uu)
|
||||
instrument = FactoryGirl.create(:instrument, :description => 'a great instrument')
|
||||
track = FactoryGirl.create(:track, :connection => connection, :instrument => instrument)
|
||||
music_session = FactoryGirl.create(:music_session, :creator => @user1, :musician_access => true)
|
||||
music_session = FactoryGirl.create(:music_session, :creator => uu, :musician_access => true)
|
||||
music_session.connections << connection
|
||||
music_session.save
|
||||
recording = Recording.start(music_session.id, @user1)
|
||||
recording = Recording.start(music_session.id, uu)
|
||||
recording.stop
|
||||
recording.reload
|
||||
genre = FactoryGirl.create(:genre)
|
||||
recording.claim(@user1, "name", genre, true, true)
|
||||
recording.claim(uu, "name", genre, true, true)
|
||||
recording.reload
|
||||
recording
|
||||
end
|
||||
|
||||
it "should have recording counter " do
|
||||
recording = make_recording(@user1)
|
||||
recording.users.length.should == 1
|
||||
recording.users.first.should == @user1
|
||||
@user1.reload
|
||||
|
|
@ -101,12 +106,35 @@ describe User do
|
|||
results.session_count(uu).should == 1
|
||||
end
|
||||
|
||||
it "should find all musicians sorted by plays " do
|
||||
pending
|
||||
it "should find musicians sorted by plays" do
|
||||
make_recording(@user1)
|
||||
results = Search.musician_search({ :orderby => 'plays' }, @user2)
|
||||
results.musicians[0].id.should == @user1.id
|
||||
make_recording(@user2)
|
||||
make_recording(@user2)
|
||||
results = Search.musician_search({ :orderby => 'plays' }, @user2)
|
||||
results.musicians[0].id.should == @user2.id
|
||||
end
|
||||
|
||||
it "should find all musicians sorted by now playing" do
|
||||
pending
|
||||
connection = FactoryGirl.create(:connection, :user => @user3)
|
||||
music_session = FactoryGirl.create(:music_session, :creator => @user3, :musician_access => true)
|
||||
music_session.connections << connection
|
||||
music_session.save
|
||||
results = Search.musician_search({ :orderby => 'playing' }, @user2)
|
||||
results.musicians.count.should == 1
|
||||
connection = FactoryGirl.create(:connection, :user => @user4)
|
||||
music_session = FactoryGirl.create(:music_session, :creator => @user4, :musician_access => true)
|
||||
music_session.connections << connection
|
||||
music_session.save
|
||||
results = Search.musician_search({ :orderby => 'playing' }, @user2)
|
||||
results.musicians.count.should == 2
|
||||
connection = FactoryGirl.create(:connection, :user => @user1)
|
||||
music_session = FactoryGirl.create(:music_session, :creator => @user1, :musician_access => true)
|
||||
music_session.connections << connection
|
||||
music_session.save
|
||||
results = Search.musician_search({ :orderby => 'playing' }, @user2)
|
||||
results.musicians.count.should == 3
|
||||
end
|
||||
|
||||
it "should find musicians with an instrument" do
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<div class="" style="padding-top:3px; float:left">Instrument:</div>
|
||||
<div id="find-musician-instrument" class="" style="float:left">
|
||||
<%= select_tag(:instrument,
|
||||
options_for_select([['Select Instrument', '']].concat(JamRuby::Instrument.all.collect { |ii| [ii.description, ii.id] })),
|
||||
options_for_select([['Any', '']].concat(JamRuby::Instrument.all.collect { |ii| [ii.description, ii.id] })),
|
||||
{:class => 'instrument-list'} ) %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
<div style="float:left">
|
||||
<div style="float:left">Within</div>
|
||||
<div class="query-distance-params" style="height:25px; ">
|
||||
<input id="musician_query_distance" type="text" name="query_distance" value="100" placeholder="100" />
|
||||
<input id="musician_query_distance" type="text" name="query_distance" value="500" placeholder="500" />
|
||||
</div>
|
||||
<div style="float:left">miles of <span id="musician-filter-city"><%= current_user.current_city(request.remote_ip) %></span></div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue