$ = jQuery context = window context.JK ||= {}; context.JK.WebcamViewer = class WebcamViewer constructor: (@root) -> @client = context.jamClient @logger = context.JK.logger @initialScan = false @toggleBtn = null @webcamSelect = null @resolutionSelect = null @videoShared=false @resolution=null init: (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) @toggleBtn.on 'click', @toggleWebcam beforeShow:() => this.loadWebCams() this.selectWebcam() this.loadResolutions() this.selectResolution() @initialScan = true @client.SessStopVideoSharing() #client.SessSetInsetPosition(5) #client.SessSetInsetSize(1) #client.FTUESetAutoSelectVideoLayout(false) #client.SessSelectVideoDisplayLayoutGroup(1) selectWebcam:(e, data) => 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? @logger.debug 'Selecting res: ', @resolution @client.FTUESetVideoEncodeResolution @resolution # if @isVideoShared # this.setVideoOff() # this.toggleWebcam() setVideoOff:() => if this.isVideoShared() @client.SessStopVideoSharing() isVideoShared:() => @videoShared setToggleState:() => available = @webcamSelect.find('option').size() > 0 shared = this.isVideoShared() @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 = this.selectedDeviceName() selectControl = @webcamSelect context._.each devices, (device) -> selected = device == selectedDevice option = $('