Merge develop into this branch.
This commit is contained in:
parent
66feb39de8
commit
dffdb78f71
|
|
@ -215,5 +215,7 @@ fix_find_session_sorting_2216b.sql
|
||||||
fix_find_session_sorting_2216c.sql
|
fix_find_session_sorting_2216c.sql
|
||||||
entabulate_current_network_scores.sql
|
entabulate_current_network_scores.sql
|
||||||
discard_scores_changed.sql
|
discard_scores_changed.sql
|
||||||
|
emails_from_update.sql
|
||||||
|
add_active_feed.sql
|
||||||
video_sources.sql
|
video_sources.sql
|
||||||
recorded_videos.sql
|
recorded_videos.sql
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
alter table feeds add column active BOOLEAN DEFAULT FALSE;
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE email_batches ALTER from_email SET DEFAULT 'JamKazam <support@jamkazam.com>';
|
||||||
|
|
||||||
|
|
@ -31,7 +31,7 @@ gem 'sendgrid', '1.2.0'
|
||||||
gem 'aws-sdk' #, '1.29.1'
|
gem 'aws-sdk' #, '1.29.1'
|
||||||
gem 'carrierwave', '0.9.0'
|
gem 'carrierwave', '0.9.0'
|
||||||
gem 'aasm', '3.0.16'
|
gem 'aasm', '3.0.16'
|
||||||
gem 'devise', '>= 1.1.2'
|
gem 'devise', '3.3.0' # 3.4.0 causes: uninitialized constant ActionController::Metal (NameError)
|
||||||
gem 'postgres-copy'
|
gem 'postgres-copy'
|
||||||
gem 'geokit'
|
gem 'geokit'
|
||||||
gem 'geokit-rails'
|
gem 'geokit-rails'
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ module JamRuby
|
||||||
|
|
||||||
layout "user_mailer"
|
layout "user_mailer"
|
||||||
|
|
||||||
DEFAULT_SENDER = "noreply@jamkazam.com"
|
DEFAULT_SENDER = "JamKazam <noreply@jamkazam.com>"
|
||||||
|
|
||||||
default :from => DEFAULT_SENDER
|
default :from => DEFAULT_SENDER
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ module JamRuby
|
||||||
class InvitedUserMailer < ActionMailer::Base
|
class InvitedUserMailer < ActionMailer::Base
|
||||||
include SendGrid
|
include SendGrid
|
||||||
|
|
||||||
DEFAULT_SENDER = "noreply@jamkazam.com"
|
DEFAULT_SENDER = "JamKazam <noreply@jamkazam.com>"
|
||||||
|
|
||||||
default :from => DEFAULT_SENDER
|
default :from => DEFAULT_SENDER
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
layout "user_mailer"
|
layout "user_mailer"
|
||||||
|
|
||||||
DEFAULT_SENDER = "noreply@jamkazam.com"
|
DEFAULT_SENDER = "JamKazam <noreply@jamkazam.com>"
|
||||||
|
|
||||||
default :from => DEFAULT_SENDER
|
default :from => DEFAULT_SENDER
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
It’s still very early in our company’s development, so we don’t have zillions of users online on our service yet. If you click Find Session, you will often not find a good session to join, both due to the number of musicians online at any given time, and also because you won’t see private sessions where groups of musicians don’t want to be interrupted in their sessions.
|
It’s still very early in our company’s development, so we don’t have zillions of users online on our service yet. If you click Find Session, you will often not find a good session to join, both due to the number of musicians online at any given time, and also because you won’t see private sessions where groups of musicians don’t want to be interrupted in their sessions.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>If you are having trouble getting into sessions, we’d suggest you click the Musicians tile on the home screen of the app or the website: <a href="http://www.jamkazam.com/client#/musicians">Go To Musicians Page</a>
|
<p>If you are having trouble getting into sessions, we’d suggest you click the Musicians tile on the home screen of the app or the website: <a style="color: #588C98;" href="http://www.jamkazam.com/client#/musicians">Go To Musicians Page</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>This will display the JamKazam musicians sorted by latency to you - in other words, you can see which musicians have good network connections to you. Any musicians with green and yellow latency scores have good enough connections to support a play session with you. We recommend that read the profiles of these musicians to find others with shared musical interests and good network connections to you, and then use the Message button to say hi and see if they are interested in playing with you. If they are, use the Connect button to “friend” them on JamKazam, and use the Message button to set up a time to meet online for a session.
|
<p>This will display the JamKazam musicians sorted by latency to you - in other words, you can see which musicians have good network connections to you. Any musicians with green and yellow latency scores have good enough connections to support a play session with you. We recommend that read the profiles of these musicians to find others with shared musical interests and good network connections to you, and then use the Message button to say hi and see if they are interested in playing with you. If they are, use the Connect button to “friend” them on JamKazam, and use the Message button to set up a time to meet online for a session.
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>Find Other Musicians on JamKazam<br />
|
<p>Find Other Musicians on JamKazam<br />
|
||||||
To find and connect with other musicians who are already on JamKazam, we’d suggest you click the Musicians tile on the home screen of the app or the website: <a href="http://www.jamkazam.com/client#/musicians">Go To Musicians Page</a>
|
To find and connect with other musicians who are already on JamKazam, we’d suggest you click the Musicians tile on the home screen of the app or the website: <a style="color: #588C98;" href="http://www.jamkazam.com/client#/musicians">Go To Musicians Page</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>This will display the JamKazam musicians sorted by latency to you - in other words, you can see which musicians have good network connections to you. Any musicians with green and yellow latency scores have good enough connections to support a play session with you. We recommend that you read the profiles of these musicians to find others with shared musical interests and good network connections to you, and then use the Message button to say hi and see if they are interested in playing with you. If they are, use the Connect button to “friend” them on JamKazam, and use the Message button to set up a time to meet online for a session.
|
<p>This will display the JamKazam musicians sorted by latency to you - in other words, you can see which musicians have good network connections to you. Any musicians with green and yellow latency scores have good enough connections to support a play session with you. We recommend that you read the profiles of these musicians to find others with shared musical interests and good network connections to you, and then use the Message button to say hi and see if they are interested in playing with you. If they are, use the Connect button to “friend” them on JamKazam, and use the Message button to set up a time to meet online for a session.
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,4 @@
|
||||||
|
|
||||||
<p><%= @body %></p>
|
<p><%= @body %></p>
|
||||||
|
|
||||||
<p>To accept this friend request, <a href="<%= @url %>">click here</a>.</p>
|
<p>To accept this friend request, <a style="color: #588C98;" href="<%= @url %>">click here</a>.</p>
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ Hi <%= @user.first_name %>,
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</table>
|
||||||
</p>
|
</p>
|
||||||
<p>There are currently <%= @new_musicians.size%> musicians on JamKazam with low enough latency Internet connections to you to support a good online session. To see ALL the JamKazam musicians with whom you may want to connect and play, view our Musicians page at: <a href="http://www.jamkazam.com/client#/musicians">http://www.jamkazam.com/client#/musicians</a>.
|
<p>There are currently <%= @new_musicians.size%> musicians on JamKazam with low enough latency Internet connections to you to support a good online session. To see ALL the JamKazam musicians with whom you may want to connect and play, view our Musicians page at: <a style="color: #588C98;" href="http://www.jamkazam.com/client#/musicians">http://www.jamkazam.com/client#/musicians</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>Best Regards,</p>
|
<p>Best Regards,</p>
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Visit this link so that you can change your JamKazam password: <a href="<%= @password_reset_url %>">Reset Password</a>.
|
Visit this link so that you can change your JamKazam password: <%= @password_reset_url %>..
|
||||||
|
|
@ -68,7 +68,7 @@
|
||||||
<td><%= sess.genre.description %></td>
|
<td><%= sess.genre.description %></td>
|
||||||
<td>
|
<td>
|
||||||
<%= sess.name %><br/>
|
<%= sess.name %><br/>
|
||||||
<a href="<%= "http://www.jamkazam.com/sessions/#{sess.id}/details" %>">Details</a>
|
<a style="color: #588C98;" href="<%= "http://www.jamkazam.com/sessions/#{sess.id}/details" %>">Details</a>
|
||||||
</td>
|
</td>
|
||||||
<td><%= sess.description %></td>
|
<td><%= sess.description %></td>
|
||||||
<td style="text-align:center">
|
<td style="text-align:center">
|
||||||
|
|
@ -86,7 +86,7 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p>To see ALL the scheduled sessions that you might be interested in joining, view our <a href="http://www.jamkazam.com/client#/findSession">Find Session page</a>.</p>
|
<p>To see ALL the scheduled sessions that you might be interested in joining, view our <a style="color: #588C98;" href="http://www.jamkazam.com/client#/findSession">Find Session page</a>.</p>
|
||||||
|
|
||||||
<p>Best Regards,</p>
|
<p>Best Regards,</p>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,5 +4,5 @@
|
||||||
<% content_for :note do %>
|
<% content_for :note do %>
|
||||||
<%= @note %>
|
<%= @note %>
|
||||||
|
|
||||||
<p>To reply to this message, <a href="<%= @url %>">click here</a>.</p>
|
<p>To reply to this message, <a style="color: #588C98;" href="<%= @url %>">click here</a>.</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ module JamRuby
|
||||||
VAR_FIRST_NAME = '@FIRSTNAME'
|
VAR_FIRST_NAME = '@FIRSTNAME'
|
||||||
VAR_LAST_NAME = '@LASTNAME'
|
VAR_LAST_NAME = '@LASTNAME'
|
||||||
|
|
||||||
DEFAULT_SENDER = "noreply@jamkazam.com"
|
DEFAULT_SENDER = "JamKazam <noreply@jamkazam.com>"
|
||||||
BATCH_SIZE = 500
|
BATCH_SIZE = 500
|
||||||
|
|
||||||
BODY_TEMPLATE =<<FOO
|
BODY_TEMPLATE =<<FOO
|
||||||
|
|
|
||||||
|
|
@ -47,13 +47,13 @@ module JamRuby
|
||||||
# handle sort
|
# handle sort
|
||||||
if sort == 'date'
|
if sort == 'date'
|
||||||
query = query.where("feeds.id < #{start}")
|
query = query.where("feeds.id < #{start}")
|
||||||
query = query.order('feeds.id DESC')
|
query = query.order('feeds.active DESC, feeds.id DESC')
|
||||||
elsif sort == 'plays'
|
elsif sort == 'plays'
|
||||||
query = query.offset(start)
|
query = query.offset(start)
|
||||||
query = query.order("COALESCE(recordings.play_count, music_sessions.play_count) DESC ")
|
query = query.order("feeds.active DESC, COALESCE(recordings.play_count, music_sessions.play_count) DESC")
|
||||||
elsif sort == 'likes'
|
elsif sort == 'likes'
|
||||||
query = query.offset(start)
|
query = query.offset(start)
|
||||||
query = query.order("COALESCE(recordings.like_count, music_sessions.like_count) DESC ")
|
query = query.order("feeds.active DESC, COALESCE(recordings.like_count, music_sessions.like_count) DESC")
|
||||||
else
|
else
|
||||||
raise "sort not implemented: #{sort}"
|
raise "sort not implemented: #{sort}"
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,7 @@ module JamRuby
|
||||||
end
|
end
|
||||||
|
|
||||||
if rsvp_slot.chosen && r[:accept]
|
if rsvp_slot.chosen && r[:accept]
|
||||||
raise StateError, "The #{rsvp_slot.instrument_id} slot has already been approved for another user."
|
raise StateError, "All RSVP slots for the #{rsvp_slot.instrument_id} have been already approved."
|
||||||
end
|
end
|
||||||
|
|
||||||
if r[:accept]
|
if r[:accept]
|
||||||
|
|
|
||||||
|
|
@ -54,16 +54,16 @@ describe Feed do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "sorting" do
|
describe "sorting" do
|
||||||
it "sorts by index (date) DESC" do
|
it "sorts by active flag / index (date) DESC" do
|
||||||
claimed_recording = FactoryGirl.create(:claimed_recording)
|
claimed_recording = FactoryGirl.create(:claimed_recording)
|
||||||
|
|
||||||
feeds, start = Feed.index(user1)
|
feeds, start = Feed.index(user1)
|
||||||
feeds.length.should == 2
|
feeds.length.should == 2
|
||||||
feeds[0].recording.should == claimed_recording.recording
|
feeds[1].recording.should == claimed_recording.recording
|
||||||
feeds[1].music_session.should == claimed_recording.recording.music_session.music_session
|
feeds[0].music_session.should == claimed_recording.recording.music_session.music_session
|
||||||
end
|
end
|
||||||
|
|
||||||
it "sort by plays DESC" do
|
it "sort by active flag / plays DESC" do
|
||||||
claimed_recording1 = FactoryGirl.create(:claimed_recording)
|
claimed_recording1 = FactoryGirl.create(:claimed_recording)
|
||||||
claimed_recording2 = FactoryGirl.create(:claimed_recording)
|
claimed_recording2 = FactoryGirl.create(:claimed_recording)
|
||||||
|
|
||||||
|
|
@ -77,8 +77,8 @@ describe Feed do
|
||||||
|
|
||||||
feeds, start = Feed.index(user1, :sort => 'plays')
|
feeds, start = Feed.index(user1, :sort => 'plays')
|
||||||
feeds.length.should == 4
|
feeds.length.should == 4
|
||||||
feeds[0].recording.should == claimed_recording2.recording
|
feeds[2].recording.should == claimed_recording2.recording
|
||||||
feeds[1].recording.should == claimed_recording1.recording
|
feeds[3].recording.should == claimed_recording1.recording
|
||||||
|
|
||||||
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session, user: user1)
|
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session, user: user1)
|
||||||
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session, user: user2)
|
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session, user: user2)
|
||||||
|
|
@ -88,11 +88,11 @@ describe Feed do
|
||||||
feeds, start = Feed.index(user1, :sort => 'plays')
|
feeds, start = Feed.index(user1, :sort => 'plays')
|
||||||
feeds.length.should == 4
|
feeds.length.should == 4
|
||||||
feeds[0].music_session.should == claimed_recording1.recording.music_session.music_session
|
feeds[0].music_session.should == claimed_recording1.recording.music_session.music_session
|
||||||
feeds[1].recording.should == claimed_recording2.recording
|
feeds[2].recording.should == claimed_recording2.recording
|
||||||
feeds[2].recording.should == claimed_recording1.recording
|
feeds[3].recording.should == claimed_recording1.recording
|
||||||
end
|
end
|
||||||
|
|
||||||
it "sort by likes DESC" do
|
it "sort by active flag / likes DESC" do
|
||||||
claimed_recording1 = FactoryGirl.create(:claimed_recording)
|
claimed_recording1 = FactoryGirl.create(:claimed_recording)
|
||||||
claimed_recording2 = FactoryGirl.create(:claimed_recording)
|
claimed_recording2 = FactoryGirl.create(:claimed_recording)
|
||||||
|
|
||||||
|
|
@ -106,6 +106,7 @@ describe Feed do
|
||||||
|
|
||||||
feeds, start = Feed.index(user1, :sort => 'likes')
|
feeds, start = Feed.index(user1, :sort => 'likes')
|
||||||
feeds.length.should == 4
|
feeds.length.should == 4
|
||||||
|
feeds = feeds.where("feeds.music_session_id is null")
|
||||||
feeds[0].recording.should == claimed_recording2.recording
|
feeds[0].recording.should == claimed_recording2.recording
|
||||||
feeds[1].recording.should == claimed_recording1.recording
|
feeds[1].recording.should == claimed_recording1.recording
|
||||||
|
|
||||||
|
|
@ -116,8 +117,8 @@ describe Feed do
|
||||||
feeds, start = Feed.index(user1, :sort => 'likes')
|
feeds, start = Feed.index(user1, :sort => 'likes')
|
||||||
feeds.length.should == 4
|
feeds.length.should == 4
|
||||||
feeds[0].music_session.should == claimed_recording1.recording.music_session.music_session
|
feeds[0].music_session.should == claimed_recording1.recording.music_session.music_session
|
||||||
feeds[1].recording.should == claimed_recording2.recording
|
feeds[2].recording.should == claimed_recording2.recording
|
||||||
feeds[2].recording.should == claimed_recording1.recording
|
feeds[3].recording.should == claimed_recording1.recording
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -195,6 +196,8 @@ describe Feed do
|
||||||
it "supports date pagination" do
|
it "supports date pagination" do
|
||||||
claimed_recording = FactoryGirl.create(:claimed_recording)
|
claimed_recording = FactoryGirl.create(:claimed_recording)
|
||||||
|
|
||||||
|
MusicSession.removed_music_session(claimed_recording.recording.music_session.music_session.id)
|
||||||
|
|
||||||
options = {limit: 1}
|
options = {limit: 1}
|
||||||
feeds, start = Feed.index(user1, options)
|
feeds, start = Feed.index(user1, options)
|
||||||
feeds.length.should == 1
|
feeds.length.should == 1
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ else
|
||||||
gem 'jam_websockets', "0.1.#{ENV["BUILD_NUMBER"]}"
|
gem 'jam_websockets', "0.1.#{ENV["BUILD_NUMBER"]}"
|
||||||
ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] ||= "true"
|
ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] ||= "true"
|
||||||
end
|
end
|
||||||
gem 'oj'
|
gem 'oj', '2.10.2'
|
||||||
gem 'builder'
|
gem 'builder'
|
||||||
gem 'rails', '~>3.2.11'
|
gem 'rails', '~>3.2.11'
|
||||||
gem 'railties', '~>3.2.11'
|
gem 'railties', '~>3.2.11'
|
||||||
|
|
@ -55,7 +55,7 @@ gem 'carrierwave_direct'
|
||||||
gem 'fog'
|
gem 'fog'
|
||||||
gem 'haml-rails'
|
gem 'haml-rails'
|
||||||
gem 'unf' #optional fog dependency
|
gem 'unf' #optional fog dependency
|
||||||
gem 'devise', '>= 1.1.2'
|
gem 'devise', '3.3.0' #3.4.0 causes uninitialized constant ActionController::Metal (NameError)
|
||||||
gem 'postgres-copy'
|
gem 'postgres-copy'
|
||||||
#group :libv8 do
|
#group :libv8 do
|
||||||
# gem 'libv8', "~> 3.11.8"
|
# gem 'libv8', "~> 3.11.8"
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,18 @@
|
||||||
|
|
||||||
rest.updateRsvpRequest(rsvpId, params)
|
rest.updateRsvpRequest(rsvpId, params)
|
||||||
.done(refreshSessionDetail)
|
.done(refreshSessionDetail)
|
||||||
.fail(app.ajaxError);
|
.fail(function(jqXHR, textStatus, errorMessage) {
|
||||||
|
if (jqXHR.status === 400) {
|
||||||
|
app.notify(
|
||||||
|
{
|
||||||
|
title: "Unable to Approve RSVP",
|
||||||
|
text: jqXHR.responseJSON.message
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
app.ajaxError(jqXHR, textStatus, errorMessage);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function declineRsvpRequest(e) {
|
function declineRsvpRequest(e) {
|
||||||
|
|
@ -130,6 +141,11 @@
|
||||||
rsvpCancelDlg.initialize();
|
rsvpCancelDlg.initialize();
|
||||||
context.JK.app.layout.showDialog('rsvp-cancel-dialog');
|
context.JK.app.layout.showDialog('rsvp-cancel-dialog');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
context.JK.bindHoverEvents();
|
||||||
|
// context.JK.bindInstrumentHover($('#pendingRSVPs'));
|
||||||
|
// context.JK.bindInstrumentHover($('#session-rsvps'));
|
||||||
|
// context.JK.bindInstrumentHover($('#still-needed'));
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadSessionData() {
|
function loadSessionData() {
|
||||||
|
|
@ -241,7 +257,7 @@
|
||||||
$.each(pending_rsvp_request.instrument_list, function (index, instrument) {
|
$.each(pending_rsvp_request.instrument_list, function (index, instrument) {
|
||||||
var instrumentId = instrument == null ? null : instrument.id;
|
var instrumentId = instrument == null ? null : instrument.id;
|
||||||
var inst = context.JK.getInstrumentIcon24(instrumentId);
|
var inst = context.JK.getInstrumentIcon24(instrumentId);
|
||||||
instrumentLogoHtml += '<img data-instrument-id="' + instrumentId + '" src="' + inst + '" width="24" height="24" /> ';
|
instrumentLogoHtml += '<img title="' + instrumentId + '" hoveraction="instrument" data-instrument-id="' + instrumentId + '" src="' + inst + '" width="24" height="24" /> ';
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -279,7 +295,7 @@
|
||||||
$.each(approved_rsvp.instrument_list, function(index, instrument) {
|
$.each(approved_rsvp.instrument_list, function(index, instrument) {
|
||||||
var instrumentId = instrument == null ? null : instrument.id;
|
var instrumentId = instrument == null ? null : instrument.id;
|
||||||
var inst = context.JK.getInstrumentIcon24(instrumentId);
|
var inst = context.JK.getInstrumentIcon24(instrumentId);
|
||||||
instrumentLogoHtml += '<img src="' + inst + '" width="24" height="24" /> ';
|
instrumentLogoHtml += '<img title="' + instrumentId + '" hoveraction="instrument" data-instrument-id="' + instrumentId + '" src="' + inst + '" width="24" height="24" /> ';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -344,7 +360,7 @@
|
||||||
|
|
||||||
resultHtml += context._.template(
|
resultHtml += context._.template(
|
||||||
$("#template-account-invited").html(),
|
$("#template-account-invited").html(),
|
||||||
{avatar_url: avatar_url, user_id: invitation.reciever_id},
|
{avatar_url: avatar_url, user_id: invitation.receiver_id},
|
||||||
{variable: 'data'}
|
{variable: 'data'}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,9 @@
|
||||||
context.JK.bindHoverEvents();
|
context.JK.bindHoverEvents();
|
||||||
$ssSpinner.hide();
|
$ssSpinner.hide();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// context.JK.bindInstrumentHover($(CATEGORY.ACTIVE.id));
|
||||||
|
// context.JK.bindInstrumentHover($(CATEGORY.SCHEDULED.id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************** ACTIVE SESSIONS *****************/
|
/***************** ACTIVE SESSIONS *****************/
|
||||||
|
|
|
||||||
|
|
@ -123,11 +123,11 @@
|
||||||
*/
|
*/
|
||||||
function ajaxError(jqXHR, textStatus, errorMessage) {
|
function ajaxError(jqXHR, textStatus, errorMessage) {
|
||||||
|
|
||||||
if (jqXHR.status == 404) {
|
if (jqXHR.status === 404) {
|
||||||
logger.error("Unexpected ajax error: " + textStatus + ", msg:" + errorMessage);
|
logger.error("Unexpected ajax error: " + textStatus + ", msg:" + errorMessage);
|
||||||
app.notify({title: "Oops!", text: "What you were looking for is gone now."});
|
app.notify({title: "Oops!", text: "What you were looking for is gone now."});
|
||||||
}
|
}
|
||||||
else if (jqXHR.status = 422) {
|
else if (jqXHR.status === 422) {
|
||||||
logger.error("Unexpected ajax error: " + textStatus + ", msg: " + errorMessage + ", response: " + jqXHR.responseText);
|
logger.error("Unexpected ajax error: " + textStatus + ", msg: " + errorMessage + ", response: " + jqXHR.responseText);
|
||||||
// present a nicer message
|
// present a nicer message
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -369,7 +369,7 @@
|
||||||
var track = participant.tracks[j];
|
var track = participant.tracks[j];
|
||||||
logger.debug("Find:Finding instruments. Participant tracks:", participant.tracks);
|
logger.debug("Find:Finding instruments. Participant tracks:", participant.tracks);
|
||||||
var inst = context.JK.getInstrumentIcon24(track.instrument_id);
|
var inst = context.JK.getInstrumentIcon24(track.instrument_id);
|
||||||
instrumentLogoHtml += '<img src="' + inst + '" width="24" height="24" /> ';
|
instrumentLogoHtml += '<img title="' + track.instrument_id + '" hoveraction="instrument" data-instrument-id="' + track.instrument_id + '" src="' + inst + '" width="24" height="24" /> ';
|
||||||
}
|
}
|
||||||
|
|
||||||
var id = participant.user.id;
|
var id = participant.user.id;
|
||||||
|
|
@ -400,7 +400,7 @@
|
||||||
for (j=0; j < user.instrument_list.length; j++) {
|
for (j=0; j < user.instrument_list.length; j++) {
|
||||||
var instrument = user.instrument_list[j];
|
var instrument = user.instrument_list[j];
|
||||||
var inst = context.JK.getInstrumentIcon24(instrument.id);
|
var inst = context.JK.getInstrumentIcon24(instrument.id);
|
||||||
instrumentLogoHtml += '<img src="' + inst + '" width="24" height="24" /> ';
|
instrumentLogoHtml += '<img title="' + instrument.id + '" hoveraction="instrument" data-instrument-id="' + instrument.id + '" src="' + inst + '" width="24" height="24" /> ';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -232,6 +232,24 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context.JK.bindInstrumentHover = function($parent, options) {
|
||||||
|
context._.each($parent.find("[hoveraction='instrument']"), function(element) {
|
||||||
|
var $element = $(element);
|
||||||
|
|
||||||
|
var instrumentId = $element.attr('data-instrument-id');
|
||||||
|
|
||||||
|
if(instrumentId) {
|
||||||
|
if (instrumentId === "null") {
|
||||||
|
instrumentId = "not specified";
|
||||||
|
}
|
||||||
|
context.JK.hoverBubble($element, instrumentId, options);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
logger.warn("no instrument-id on hoveraction=instrument element")
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
context.JK.bindHoverEvents = function ($parent) {
|
context.JK.bindHoverEvents = function ($parent) {
|
||||||
var timeout = 300;
|
var timeout = 300;
|
||||||
var fadeoutValue = 100;
|
var fadeoutValue = 100;
|
||||||
|
|
|
||||||
|
|
@ -325,7 +325,6 @@
|
||||||
}
|
}
|
||||||
td.rsvp-buttons {
|
td.rsvp-buttons {
|
||||||
float:right;
|
float:right;
|
||||||
width:242px;
|
|
||||||
text-align:right;
|
text-align:right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
border: 1px solid $ColorScreenPrimary;
|
border: 1px solid $ColorScreenPrimary;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
min-width: 400px;
|
min-width: 400px;
|
||||||
min-height: 375px;
|
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@
|
||||||
%script{type: 'text/template', id: 'template-account-pending-rsvp'}
|
%script{type: 'text/template', id: 'template-account-pending-rsvp'}
|
||||||
%tr
|
%tr
|
||||||
%td.avatar-cell
|
%td.avatar-cell
|
||||||
%a{href: "#", 'user-id' => "{{data.user_id}}", 'hoveraction' => "musician", class: 'avatar-tiny'}
|
%a{href: "/client#/profile/{{data.user_id}}", 'user-id' => "{{data.user_id}}", 'hoveraction' => "musician", class: 'avatar-tiny'}
|
||||||
%img{src: "{{data.avatar_url}}"}
|
%img{src: "{{data.avatar_url}}"}
|
||||||
%td
|
%td
|
||||||
{{data.user_name}}
|
{{data.user_name}}
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
%script{type: 'text/template', id: 'template-account-session-rsvp'}
|
%script{type: 'text/template', id: 'template-account-session-rsvp'}
|
||||||
%tr
|
%tr
|
||||||
%td.avatar-cell
|
%td.avatar-cell
|
||||||
%a{href: "#", 'user-id' => "{{data.user_id}}", 'hoveraction' => "musician", class: 'avatar-tiny'}
|
%a{href: "/client#/profile/{{data.id}}", 'user-id' => "{{data.id}}", 'hoveraction' => "musician", class: 'avatar-tiny'}
|
||||||
%img{src: "{{data.avatar_url}}"}
|
%img{src: "{{data.avatar_url}}"}
|
||||||
%td
|
%td
|
||||||
{{data.user_name}}
|
{{data.user_name}}
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,8 @@ describe ApiFeedsController do
|
||||||
claimed_recording.recording.created_at = 3.days.ago
|
claimed_recording.recording.created_at = 3.days.ago
|
||||||
claimed_recording.recording.save!
|
claimed_recording.recording.save!
|
||||||
|
|
||||||
|
MusicSession.removed_music_session(claimed_recording.recording.music_session.music_session.id)
|
||||||
|
|
||||||
get :index, { limit: 1 }
|
get :index, { limit: 1 }
|
||||||
json = JSON.parse(response.body, :symbolize_names => true)
|
json = JSON.parse(response.body, :symbolize_names => true)
|
||||||
json[:entries].length.should == 1
|
json[:entries].length.should == 1
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ gem 'rb-readline'
|
||||||
gem 'aasm', '3.0.16'
|
gem 'aasm', '3.0.16'
|
||||||
gem 'carrierwave'
|
gem 'carrierwave'
|
||||||
gem 'fog'
|
gem 'fog'
|
||||||
gem 'devise'
|
gem 'devise', '3.3.0' # 3.4.0 causes uninitialized constant ActionController::Metal (NameError)
|
||||||
gem 'postgres-copy'
|
gem 'postgres-copy'
|
||||||
gem 'aws-sdk' #, '1.29.1'
|
gem 'aws-sdk' #, '1.29.1'
|
||||||
gem 'bugsnag'
|
gem 'bugsnag'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue