*wip
This commit is contained in:
parent
c86aa6a5d7
commit
f53c5c9612
2
build
2
build
|
|
@ -66,7 +66,7 @@ DEB_SERVER=http://localhost:9010/apt-`uname -p`
|
|||
GEM_SERVER=http://localhost:9000/gems
|
||||
|
||||
# if still going, then push all debs up
|
||||
if [[ "$GIT_BRANCH" == *develop* || "$GIT_BRANCH" == *master* || "$GIT_BRANCH" == *release* ]]; then
|
||||
if [[ "$GIT_BRANCH" == *develop* || "$GIT_BRANCH" == *master* || "$GIT_BRANCH" == *release* || "$GIT_BRANCH" == *feature* || "$GIT_BRANCH" == *hotfix* ]]; then
|
||||
|
||||
echo ""
|
||||
echo "PUSHING DB ARTIFACTS"
|
||||
|
|
|
|||
|
|
@ -77,19 +77,8 @@
|
|||
// tell the server we are about to start a recording
|
||||
rest.openJamTrack({id: context.JK.CurrentSessionModel.id(), jam_track_id: jamTrack.id})
|
||||
.done(function(response) {
|
||||
|
||||
context.jamClient.JamTrackStopPlay();
|
||||
var result = context.jamClient.JamTrackPlay(jamTrack.id);
|
||||
|
||||
logger.debug("JamTrackPlay response: %o", result);
|
||||
|
||||
if(result) {
|
||||
app.layout.closeDialog('open-jam-track-dialog');
|
||||
}
|
||||
else {
|
||||
logger.error("unable to open jam track")
|
||||
}
|
||||
|
||||
$dialog.data('result', {success:true, jamTrack: jamTrack})
|
||||
app.layout.closeDialog('open-jam-track-dialog');
|
||||
})
|
||||
.fail(function(jqXHR) {
|
||||
app.notifyServerError(jqXHR, "Unable to Open JamTrack For Playback");
|
||||
|
|
|
|||
|
|
@ -58,7 +58,10 @@ context.JK.DownloadJamTrack = class DownloadJamTrack
|
|||
}
|
||||
|
||||
context.JK.DownloadJamTracks[@jamTrackId] = this
|
||||
downloadJamTrackTemplate = $('#template-download-jamtrack')
|
||||
throw "no download jamtrack template" if not downloadJamTrackTemplate.exists()
|
||||
|
||||
@root = $(downloadJamTrackTemplate.html())
|
||||
|
||||
# after you've created the DownloadJamTrack widget, call synchronize which will begin ensuring that the jamtrack
|
||||
# is downloaded and ready to open
|
||||
|
|
@ -66,10 +69,8 @@ context.JK.DownloadJamTrack = class DownloadJamTrack
|
|||
@active = true
|
||||
this.reset()
|
||||
|
||||
downloadJamTrackTemplate = $('#template-download-jamtrack')
|
||||
throw "no download jamtrack template" if not downloadJamTrackTemplate.exists()
|
||||
|
||||
@root = $(downloadJamTrackTemplate.html())
|
||||
@root.on('remove', this.destroy) # automatically destroy self when removed from DOM
|
||||
@stateHolder = @root.find('.state')
|
||||
|
||||
# populate in template and visual transition functions
|
||||
|
|
@ -281,7 +282,7 @@ context.JK.DownloadJamTrack = class DownloadJamTrack
|
|||
|
||||
@state.show()
|
||||
|
||||
$(this).triggerHandler(@EVENTS.JAMTRACK_DOWNLOADER_STATE_CHANGED, {state: @state.name})
|
||||
$(this).triggerHandler(@EVENTS.JAMTRACK_DOWNLOADER_STATE_CHANGED, {state: @state})
|
||||
|
||||
checkState: () =>
|
||||
# check for the success state against the local state of the client... if it's playable, then we should be OK
|
||||
|
|
|
|||
|
|
@ -679,6 +679,8 @@
|
|||
|
||||
function TrackSetInstrument(track, instrumentId) {}
|
||||
|
||||
function JamTrackStopPlay() {}
|
||||
function JamTrackPlay(){return true; }
|
||||
function JamTrackIsPlayable() {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -981,6 +983,8 @@
|
|||
this.TrackGetChatUsesMusic = TrackGetChatUsesMusic;
|
||||
this.TrackSetChatUsesMusic = TrackSetChatUsesMusic;
|
||||
|
||||
this.JamTrackStopPlay = JamTrackStopPlay;
|
||||
this.JamTrackPlay = JamTrackPlay;
|
||||
this.JamTrackIsPlayable = JamTrackIsPlayable;
|
||||
this.JamTrackGetTrackDetail = JamTrackGetTrackDetail;
|
||||
this.JamTrackKeysRequest = JamTrackKeysRequest;
|
||||
|
|
|
|||
|
|
@ -47,6 +47,10 @@
|
|||
var $screen = null;
|
||||
var $mixModeDropdown = null;
|
||||
var $templateMixerModeChange = null;
|
||||
var $otherAudioContainer = null;
|
||||
var $myTracksContainer = null;
|
||||
var $liveTracksContainer = null;
|
||||
var downloadJamTrack = null;
|
||||
|
||||
var rest = context.JK.Rest();
|
||||
var RENDER_SESSION_DELAY = 750; // When I need to render a session, I have to wait a bit for the mixers to be there.
|
||||
|
|
@ -98,7 +102,7 @@
|
|||
window.location = '/client#/home';
|
||||
}
|
||||
promptLeave = true;
|
||||
$('#session-mytracks-container').empty();
|
||||
$myTracksContainer.empty();
|
||||
displayDoneRecording(); // assumption is that you can't join a recording session, so this should be safe
|
||||
|
||||
var shareDialog = new JK.ShareDialog(context.JK.app, sessionId, "session");
|
||||
|
|
@ -500,7 +504,7 @@
|
|||
}
|
||||
|
||||
function renderSession() {
|
||||
$('#session-mytracks-container').empty();
|
||||
$myTracksContainer.empty();
|
||||
$('.session-track').remove(); // Remove previous tracks
|
||||
var $voiceChat = $('#voice-chat');
|
||||
$voiceChat.hide();
|
||||
|
|
@ -514,7 +518,7 @@
|
|||
if ($('.session-livetracks .track').length === 0) {
|
||||
$('.session-livetracks .when-empty').show();
|
||||
}
|
||||
if ($('.session-recordings .track').length === 0) {
|
||||
if ($('.session-recordings .track').length === 0 && $('.session-recordings .download-jamtrack').length === 0) {
|
||||
$('.session-recordings .when-empty').show();
|
||||
$('.session-recording-name-wrapper').hide();
|
||||
$('.session-recordings .recording-controls').hide();
|
||||
|
|
@ -884,7 +888,7 @@
|
|||
}
|
||||
|
||||
function renderJamTracks(jamTrackMixers) {
|
||||
log.debug("rendering jam tracks")
|
||||
logger.debug("rendering jam tracks")
|
||||
var jamTracks = sessionModel.jamTracks();
|
||||
|
||||
// pluck the 1st mixer, and assume that all other mixers in this group are of the same type (between JamTrack vs Peer)
|
||||
|
|
@ -1433,11 +1437,9 @@
|
|||
|
||||
function _addTrack(allowDelete, trackData, mixer, oppositeMixer) {
|
||||
|
||||
var parentSelector = '#session-mytracks-container';
|
||||
var $destination = $(parentSelector);
|
||||
var $destination = $myTracksContainer;
|
||||
if (trackData.clientId !== app.clientId) {
|
||||
parentSelector = '#session-livetracks-container';
|
||||
$destination = $(parentSelector);
|
||||
$destination = $liveTracksContainer
|
||||
$('.session-livetracks .when-empty').hide();
|
||||
}
|
||||
var template = $('#template-session-track').html();
|
||||
|
|
@ -1451,7 +1453,7 @@
|
|||
$destination.append(newTrack);
|
||||
|
||||
// Render VU meters and gain fader
|
||||
var trackSelector = parentSelector + ' .session-track[track-id="' + trackData.trackId + '"]';
|
||||
var trackSelector = $destination.selector + ' .session-track[track-id="' + trackData.trackId + '"]';
|
||||
var gainPercent = trackData.gainPercent || 0;
|
||||
connectTrackToMixer(trackSelector, trackData, trackData.mixerId, gainPercent, trackData.group_id);
|
||||
|
||||
|
|
@ -1467,24 +1469,27 @@
|
|||
tracks[trackData.trackId] = new context.JK.SessionTrack(trackData.clientId);
|
||||
}
|
||||
|
||||
|
||||
// something is being shown now in the other audio area
|
||||
function otherAudioFilled() {
|
||||
$('.session-recordings .when-empty').hide();
|
||||
$('.session-recording-name-wrapper').show();
|
||||
}
|
||||
|
||||
function _addRecordingTrack(trackData) {
|
||||
var parentSelector = '#session-recordedtracks-container';
|
||||
var $destination = $(parentSelector);
|
||||
$('.session-recordings .when-empty').hide();
|
||||
$('.session-recording-name-wrapper').show();
|
||||
|
||||
otherAudioFilled();
|
||||
|
||||
$('.session-recordings .recording-controls').show();
|
||||
|
||||
var template = $('#template-session-track').html();
|
||||
var newTrack = $(context.JK.fillTemplate(template, trackData));
|
||||
$destination.append(newTrack);
|
||||
$otherAudioContainer.append(newTrack);
|
||||
if(trackData.preMasteredClass) {
|
||||
context.JK.helpBubble($('.track-instrument', newTrack), 'pre-processed-track', {}, {offsetParent: newTrack.closest('.content-body')});
|
||||
}
|
||||
|
||||
// Render VU meters and gain fader
|
||||
var trackSelector = parentSelector + ' .session-track[track-id="' + trackData.trackId + '"]';
|
||||
var trackSelector = $otherAudioContainer.selector + ' .session-track[track-id="' + trackData.trackId + '"]';
|
||||
var gainPercent = trackData.gainPercent || 0;
|
||||
var $track = connectTrackToMixer(trackSelector, trackData, trackData.mixerId, gainPercent, null);
|
||||
var $trackIconMute = $track.find('.track-icon-mute')
|
||||
|
|
@ -1921,7 +1926,59 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
app.layout.showDialog('open-jam-track-dialog');
|
||||
app.layout.showDialog('open-jam-track-dialog').one(EVENTS.DIALOG_CLOSED, function(e, data) {
|
||||
|
||||
// once the dialog is closed, see if the user has a jamtrack selected
|
||||
if(!data.canceled && data.result.jamTrack) {
|
||||
|
||||
var jamTrack = data.result.jamTrack;
|
||||
|
||||
logger.debug("JamTrack INFO", jamTrack.id, jamTrack.jam_track_right_id)
|
||||
|
||||
// hide 'other audio' placeholder
|
||||
otherAudioFilled();
|
||||
|
||||
if(downloadJamTrack) {
|
||||
// if there was one showing before somehow, destroy it.
|
||||
logger.warn("destroying existing JamTrack")
|
||||
downloadJamTrack.root.remove();
|
||||
downloadJamTrack.destroy();
|
||||
downloadJamTrack = null
|
||||
}
|
||||
|
||||
downloadJamTrack = new context.JK.DownloadJamTrack(app, jamTrack.id, jamTrack.jam_track_right_id);
|
||||
|
||||
// the widget indicates when it gets to any transition; we can hide it once it reaches completion
|
||||
$(downloadJamTrack).on(EVENTS.JAMTRACK_DOWNLOADER_STATE_CHANGED, function(e, data) {
|
||||
|
||||
if(data.state == downloadJamTrack.states.synchronized) {
|
||||
logger.debug("jamtrack synchronized; hide widget and show tracks")
|
||||
downloadJamTrack.root.remove();
|
||||
downloadJamTrack.destroy();
|
||||
downloadJamTrack = null;
|
||||
|
||||
context.jamClient.JamTrackStopPlay();
|
||||
var result = context.jamClient.JamTrackPlay(jamTrack.id);
|
||||
|
||||
if(!result) {
|
||||
app.notify(
|
||||
{ title: "JamTrack Can Not Open",
|
||||
text: "Unable to open your JamTrack. Please contact support@jamkazam.com"
|
||||
}, null, true);
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// show it on the page
|
||||
$otherAudioContainer.append(downloadJamTrack.root)
|
||||
|
||||
// kick off the download jamtrack process
|
||||
downloadJamTrack.init()
|
||||
}
|
||||
else {
|
||||
logger.debug("OpenJamTrack dialog closed with no selection; ignoring", data)
|
||||
}
|
||||
})
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
@ -2093,6 +2150,9 @@
|
|||
$screen = $('#session-screen');
|
||||
$mixModeDropdown = $screen.find('select.monitor-mode')
|
||||
$templateMixerModeChange = $('#template-mixer-mode-change');
|
||||
$otherAudioContainer = $('#session-recordedtracks-container');
|
||||
$myTracksContainer = $('#session-mytracks-container')
|
||||
$liveTracksContainer = $('#session-livetracks-container');
|
||||
events();
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -66,4 +66,5 @@
|
|||
*= require jquery.Jcrop
|
||||
*= require icheck/minimal/minimal
|
||||
*= require users/syncViewer
|
||||
*= require ./downloadJamTrack
|
||||
*/
|
||||
|
|
@ -14,6 +14,10 @@
|
|||
margin-top:10px;
|
||||
}
|
||||
|
||||
.msg {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.spinner-large {
|
||||
margin:20px auto 0;
|
||||
text-align:center;
|
||||
|
|
|
|||
|
|
@ -133,6 +133,10 @@
|
|||
margin-bottom:8px;
|
||||
font-size:16px;
|
||||
}
|
||||
|
||||
.download-jamtrack {
|
||||
margin-top:50px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,10 @@ object @jam_track
|
|||
|
||||
attributes :id, :name, :description, :initial_play_silence, :original_artist
|
||||
|
||||
node :jam_track_right_id do |jam_track|
|
||||
jam_track.right_for_user(current_user).id
|
||||
end
|
||||
|
||||
child(:jam_track_tracks => :tracks) {
|
||||
attributes :id, :part, :instrument
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,10 +31,11 @@ script type="text/template" id="template-download-jamtrack-state-keying"
|
|||
script type="text/template" id="template-download-jamtrack-state-initial"
|
||||
.state-initial
|
||||
.msg
|
||||
| Initializing...
|
||||
| Initializing JamTrack...
|
||||
.spinner-large
|
||||
|
||||
script type="text/template" id="template-download-jamtrack-state-errored"
|
||||
.state-errored
|
||||
.msg
|
||||
.retry
|
||||
.a.button-orange.retry-button RETRY
|
||||
a.button-orange.retry-button RETRY
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
require 'factory_girl'
|
||||
require 'open-uri'
|
||||
|
||||
require './spec/factories.rb' # useful when run on a server
|
||||
|
||||
namespace :db do
|
||||
desc "Add a simple one track recording to the database"
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ describe ApiJamTracksController do
|
|||
response.should be_success
|
||||
json = JSON.parse(response.body)
|
||||
json['jamtracks'].length.should eq(1)
|
||||
json['jamtracks'][0]['jam_track_right_id'].should eq(right.id)
|
||||
json['next'].should be_nil
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue