From c3134d81775fd618d38753ef56ac4106dcb594d8 Mon Sep 17 00:00:00 2001 From: Steven Miers Date: Tue, 21 Apr 2015 18:30:02 -0500 Subject: [PATCH] VRFS-3070 : Webcam selection & state fixes * Hook up test webcam button * Handle object vs. string from client method. --- web/app/assets/javascripts/accounts.js | 11 +++-- .../javascripts/webcam_viewer.js.coffee | 32 +++++++----- web/app/views/clients/_account.html.erb | 49 +++++++++---------- web/app/views/clients/_webcam.html.slim | 6 +-- 4 files changed, 53 insertions(+), 45 deletions(-) diff --git a/web/app/assets/javascripts/accounts.js b/web/app/assets/javascripts/accounts.js index a3b75f9b9..dfb28a59f 100644 --- a/web/app/assets/javascripts/accounts.js +++ b/web/app/assets/javascripts/accounts.js @@ -45,9 +45,12 @@ var invalidProfiles = prettyPrintAudioProfiles(context.JK.getBadConfigMap()); var sessionSummary = summarizeSession(userDetail); - var webcam = context.jamClient.FTUECurrentSelectedVideoDevice - if (webcam==null || typeof(webcam)=="undefined" || webcam.length==0) { - webcam = "None Configured" + var webcamName; + var webcam = context.jamClient.FTUECurrentSelectedVideoDevice() + if (webcam==null || typeof(webcam)=="undefined" || Object.keys(webcam).length==0) { + webcamName = "None Configured" + } else { + webcamName = _.values(webcam)[0] } var $template = $(context._.template($('#template-account-main').html(), { @@ -63,7 +66,7 @@ invalidProfiles : invalidProfiles, isNativeClient: gon.isNativeClient, musician: context.JK.currentUserMusician, - webcamName: webcam, + webcamName: webcamName, sales_count: userDetail.sales_count } , { variable: 'data' })); diff --git a/web/app/assets/javascripts/webcam_viewer.js.coffee b/web/app/assets/javascripts/webcam_viewer.js.coffee index 6986d35ba..f19e5ebd9 100644 --- a/web/app/assets/javascripts/webcam_viewer.js.coffee +++ b/web/app/assets/javascripts/webcam_viewer.js.coffee @@ -14,13 +14,12 @@ context.JK.WebcamViewer = class WebcamViewer @resolution=null init: (root) => - @logger.debug 'root', root @root = root @toggleBtn = @root.find(".webcam-test-btn") @webcamSelect = @root.find(".webcam-select-container select") @resolutionSelect = @root.find(".webcam-resolution-select-container select") @webcamSelect.on("change", this.selectWebcam) - @logger.debug 'webcamSelect', @webcamSelect + @toggleBtn.on 'click', @toggleWebcam beforeShow:() => this.loadWebCams() @@ -35,17 +34,21 @@ context.JK.WebcamViewer = class WebcamViewer selectWebcam:(e, data) => - @logger.debug 'Selecting control: ', @webcamSelect - device = @webcamSelect.val() - if device != null and device != '' - @logger.debug 'Selecting webcam: ', device + device = @webcamSelect.val() + if device? + caps = @client.FTUEGetVideoCaptureDeviceCapabilities(device) + @logger.debug("Got capabilities from device", caps, device) + @client.FTUESelectVideoCaptureDevice(device, caps) selectResolution:() => @logger.debug 'Selecting res control: ', @resolutionSelect @resolution = @resolutionSelect.val() - if @resolution != null and @resolution != '' + if @resolution? @logger.debug 'Selecting res: ', @resolution @client.FTUESetVideoEncodeResolution @resolution + if @isVideoShared + this.setVideoOff() + this.toggleWebcam() setVideoOff:() => if this.isVideoShared() @@ -57,22 +60,31 @@ context.JK.WebcamViewer = class WebcamViewer setToggleState:() => available = @webcamSelect.find('option').size() > 0 shared = this.isVideoShared() - @logger.debug 'Setting toggle from : ', shared @toggleBtn.prop 'disabled', true @toggleBtn.prop 'disabled', !available toggleWebcam:() => @logger.debug 'Toggling webcam from: ', this.isVideoShared() if this.isVideoShared() + @toggleBtn.removeClass("selected") @client.SessStopVideoSharing() @videoShared = false else + @toggleBtn.addClass("selected") @client.SessStartVideoSharing 0 @videoShared = true + + selectedDeviceName:() => + webcamName="None Configured" + webcam = @client.FTUECurrentSelectedVideoDevice() + if (webcam? && Object.keys(webcam).length>0) + webcamName = _.values(webcam)[0] + + webcamName loadWebCams:() => devices = @client.FTUEGetVideoCaptureDeviceNames() - selectedDevice = @client.FTUECurrentSelectedVideoDevice() + selectedDevice = this.selectedDeviceName() selectControl = @webcamSelect context._.each devices, (device) -> selected = device == selectedDevice @@ -80,7 +92,6 @@ context.JK.WebcamViewer = class WebcamViewer id: device value: device text: device) - @logger.debug("Appending to: ", selectControl, option) selectControl.append option selectControl.val selectedDevice @@ -94,7 +105,6 @@ context.JK.WebcamViewer = class WebcamViewer selectControl = @resolutionSelect @logger.debug 'FOUND THESE RESOLUTIONS', resolutions, selectControl context._.each resolutions, (value, key, obj) -> - @logger.debug 'RRR', key, value option = $('