diff --git a/web/app/assets/javascripts/configureTracksHelper.js b/web/app/assets/javascripts/configureTracksHelper.js index e2beb0656..0d17ac918 100644 --- a/web/app/assets/javascripts/configureTracksHelper.js +++ b/web/app/assets/javascripts/configureTracksHelper.js @@ -153,7 +153,9 @@ .css('min-width', '') } - function loadChannels(forceInputsToUnassign) { + // inputChannelFilter is an optional argument that is used by the Gear Wizard. + // basically, if an input channel isn't in there, it's not going to be displayed + function loadChannels(forceInputsToUnassign, inputChannelFilter) { var musicPorts = jamClient.FTUEGetChannels(); $unassignedInputsHolder.empty(); @@ -172,6 +174,12 @@ //inputChannels = inputChannels.concat(inputChannels.concat(inputChannels.concat(inputChannels))) context._.each(inputChannels, function (inputChannel) { + + if(inputChannelFilter && !(inputChannelFilter.indexOf(inputChannel.id) > -1)) { + // skipping input channel because it's not in the filter + return; + } + var $channel = $(context._.template($templateAssignablePort.html(), inputChannel, { variable: 'data' })); $channel.hover( @@ -431,8 +439,8 @@ return saved; } - function reset(forceInputsToUnassign) { - loadChannels(forceInputsToUnassign); + function reset(forceInputsToUnassign, inputChannelFilter) { + loadChannels(forceInputsToUnassign, inputChannelFilter); loadTrackInstruments(forceInputsToUnassign); } diff --git a/web/app/assets/javascripts/wizard/gear/gear_wizard.js b/web/app/assets/javascripts/wizard/gear/gear_wizard.js index 2a052d2a9..74ecf668c 100644 --- a/web/app/assets/javascripts/wizard/gear/gear_wizard.js +++ b/web/app/assets/javascripts/wizard/gear/gear_wizard.js @@ -12,6 +12,7 @@ var $wizardSteps = null; var $templateSteps = null; var loopbackWizard = null; + var inputs = null; var self = this; @@ -42,6 +43,8 @@ } function newSession() { + inputs = null; + context._.each(STEPS, function(stepInfo, stepNumber) { if(stepInfo.newSession) { stepInfo.newSession.call(stepInfo); @@ -171,6 +174,13 @@ wizard.setBackState(enabled); } + function setChosenInputs(_inputs) { + inputs = _inputs; + } + + function getChosenInputs() { + return inputs; + } function initialize(_loopbackWizard) { @@ -190,20 +200,23 @@ $wizardSteps = $dialog.find('.wizard-step'); $templateSteps = $('#template-ftuesteps'); - stepUnderstandGear.initialize($wizardSteps.filter($('[layout-wizard-step=0]'))); - stepSelectGear.initialize($wizardSteps.filter($('[layout-wizard-step=1]'))); - stepConfigureTracks.initialize($wizardSteps.filter($('[layout-wizard-step=2]'))); - stepConfigureVoiceChat.initialize($wizardSteps.filter($('[layout-wizard-step=3]'))); - stepDirectMonitoring.initialize($wizardSteps.filter($('[layout-wizard-step=4]'))); - stepNetworkTest.initialize($wizardSteps.filter($('[layout-wizard-step=5]'))); - stepSuccess.initialize($wizardSteps.filter($('[layout-wizard-step=6]'))); - wizard = new context.JK.Wizard(app); + + stepUnderstandGear.initialize($wizardSteps.filter($('[layout-wizard-step=0]')), self); + stepSelectGear.initialize($wizardSteps.filter($('[layout-wizard-step=1]')), self); + stepConfigureTracks.initialize($wizardSteps.filter($('[layout-wizard-step=2]')), self); + stepConfigureVoiceChat.initialize($wizardSteps.filter($('[layout-wizard-step=3]')), self); + stepDirectMonitoring.initialize($wizardSteps.filter($('[layout-wizard-step=4]')), self); + stepNetworkTest.initialize($wizardSteps.filter($('[layout-wizard-step=5]')), self); + stepSuccess.initialize($wizardSteps.filter($('[layout-wizard-step=6]')), self); + wizard.initialize($dialog, $wizardSteps, STEPS); events(); } + this.setChosenInputs = setChosenInputs; // so step 2 can 'talk' to step 3 + this.getChosenInputs = getChosenInputs; this.setNextState = setNextState; this.setBackState = setBackState; this.initialize = initialize; diff --git a/web/app/assets/javascripts/wizard/gear/step_configure_tracks.js b/web/app/assets/javascripts/wizard/gear/step_configure_tracks.js index 9f31c4a0e..6114d32e9 100644 --- a/web/app/assets/javascripts/wizard/gear/step_configure_tracks.js +++ b/web/app/assets/javascripts/wizard/gear/step_configure_tracks.js @@ -14,6 +14,7 @@ var $step = null; var successfullyAssignedOnce = false; + var wizard = null; function handleHelp() { return "https://jamkazam.desk.com/customer/portal/articles/1599961-first-time-setup---step-3---configure-tracks"; @@ -37,11 +38,13 @@ function beforeShow() { var forceInputsToUnassigned = !successfullyAssignedOnce; - configureTracksHelper.reset(forceInputsToUnassigned) + console.log("wizard.getChosenInputs()", wizard.getChosenInputs()); + configureTracksHelper.reset(forceInputsToUnassigned, wizard.getChosenInputs()) } - function initialize(_$step) { + function initialize(_$step, _wizard) { $step = _$step; + wizard = _wizard; configureTracksHelper.initialize($step); } diff --git a/web/app/assets/javascripts/wizard/gear/step_select_gear.js b/web/app/assets/javascripts/wizard/gear/step_select_gear.js index 3f18d0054..00657da1f 100644 --- a/web/app/assets/javascripts/wizard/gear/step_select_gear.js +++ b/web/app/assets/javascripts/wizard/gear/step_select_gear.js @@ -19,6 +19,7 @@ var frameBuffers = new context.JK.FrameBuffers(app); var gearTest = new context.JK.GearTest(app); var loopbackShowing = false; + var wizard = null; // the goal of lastFailureAnalytics and trackedPass are to send only a single AudioTest 'Pass' or 'Failed' event, per FTUE wizard open/close var lastFailureAnalytics = {}; @@ -806,47 +807,48 @@ function handleNext() { + var $assignedInputs = $inputChannels.find('input[type="checkbox"]:checked'); + var $assignedOutputs = $outputChannels.find('input[type="checkbox"]:checked'); + + var errors = []; + if($assignedInputs.length == 0) { + errors.push("There must be at least one selected input ports."); + } + if($assignedInputs.length > 12) { + errors.push("There can only be up to 12 selected inputs ports."); + } + if($assignedOutputs.length != 2) { + errors.push("There must be exactly 2 selected output ports."); + } + var $errors = $('