jam-cloud/web/app/assets/javascripts/dialog/singlePlayerProfileGuard.js...

81 lines
2.3 KiB
CoffeeScript

$ = jQuery
context = window
context.JK ||= {}
context.JK.SinglePlayerProfileGuardDialog = class SinglePlayerProfileGuardDialog
constructor: (@app) ->
@rest = context.JK.Rest()
@client = context.jamClient
@logger = context.JK.logger
@gearUtils = context.JK.GearUtilsInstance
@screen = null
@dialogId = 'single-player-profile-dialog';
@dialog = null;
initialize:() =>
dialogBindings = {
'beforeShow' : @beforeShow,
'afterShow' : @afterShow
}
@dialog = $('[layout-id="' + @dialogId + '"]');
@app.bindDialog(@dialogId, dialogBindings);
@content = @dialog.find(".dialog-inner")
@audioLatency = @dialog.find('.audio-latency')
@btnPrivateSession = @dialog.find('.btn-private-session')
@btnGearSetup = @dialog.find('.btn-gear-setup')
@btnRescan = @dialog.find('.btn-rescan')
@rescanningNotice = @dialog.find('.rescanning-notice')
@btnPrivateSession.on('click', @onPrivateSessionChoice)
@btnGearSetup.on('click', @onGearSetupChoice)
@btnRescan.on('click', @onRescan)
beforeShow:() =>
@dialog.data('result', { choice: null})
onRescan: () =>
@gearUtils.scheduleAudioRestart('single-player-guard', 1000, @beforeScan, @afterScan)
beforeScan: () =>
@dialog.find('.action-buttons a').addClass('disabled')
@rescanningNotice.show();
afterScan: (canceled) =>
@dialog.find('.action-buttons a').removeClass('disabled')
@rescanningNotice.hide();
if !canceled
result = context.jamClient.ReloadAudioSystem(true, true, true);
@refresh();
refresh:() =>
canPlayWithOthers = @gearUtils.canPlayWithOthers()
if canPlayWithOthers.isNoInputProfile
@content.removeClass('high-latency').addClass('has-no-inputs')
else
@content.removeClass('has-no-input').addClass('high-latency')
latency = '?'
if canPlayWithOthers.audioLatency?
latency = canPlayWithOthers.audioLatency.toFixed(2)
@audioLatency.text("#{latency} milliseconds.")
afterShow:() =>
@refresh()
onPrivateSessionChoice: () =>
@dialog.data('result', { choice: 'private_session'})
@app.layout.closeDialog(@dialogId)
return false
onGearSetupChoice: () =>
@dialog.data('result', { choice: 'gear_setup'})
@app.layout.closeDialog(@dialogId)
return false