From 9c23135d3b08075ea20840bd421432b251e8f80c Mon Sep 17 00:00:00 2001 From: 7Ds7 <7Ds7@users.noreply.github.com> Date: Tue, 18 Feb 2020 19:00:13 +0100 Subject: [PATCH] More changes to videojs 7 - Make resolution hover - changed to handleTechSeeked_ - force resolution switch to change label --- lib/videojs-resolution-switcher.js | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/lib/videojs-resolution-switcher.js b/lib/videojs-resolution-switcher.js index f2a926d..0f281e3 100644 --- a/lib/videojs-resolution-switcher.js +++ b/lib/videojs-resolution-switcher.js @@ -31,16 +31,20 @@ MenuItem.call(this, player, options); this.src = options.src; - player.on('resolutionchange', videojs.bind(this, this.update)); + player.on('resolutionchange', videojs.bind(this, this.update)) } } ); ResolutionMenuItem.prototype.handleClick = function(event){ - MenuItem.prototype.handleClick.call(this,event); + MenuItem.prototype.handleClick.call(this, event); this.player_.currentResolution(this.options_.label); + // this.player_.updateSrc(this.player_.options_.sources) + // MenuButton.prototype.update.call(this); }; ResolutionMenuItem.prototype.update = function(){ - var selection = this.player_.currentResolution(); - this.selected(this.options_.label === selection.label); + var selection = (this.player_ && this.player_.currentResolution() ) ? this.player_.currentResolution() : null ; + if ( selection ) { + this.selected(this.options_.label === selection.label); + } }; MenuItem.registerComponent('ResolutionMenuItem', ResolutionMenuItem); @@ -56,7 +60,6 @@ MenuButton.call(this, player, options); this.el().setAttribute('aria-label','Quality'); this.controlText('Quality'); - if(options.dynamicLabel){ videojs.dom.addClass(this.label, 'vjs-resolution-button-label'); this.el().appendChild(this.label); @@ -65,6 +68,14 @@ videojs.dom.addClass(staticLabel, 'vjs-menu-icon'); this.el().appendChild(staticLabel); } + + // Make hover on resolution button + this.el().addEventListener('mouseover', function(e) { + videojs.dom.addClass(this, 'vjs-hover'); + }); + + // force update of resolution to change label + player.on('resolutionchange', videojs.bind(this, this.update)) player.on('updateSources', videojs.bind( this, this.update ) ); } } ); @@ -94,6 +105,7 @@ return MenuButton.prototype.update.call(this); }; ResolutionMenuButton.prototype.buildCSSClass = function(){ + videojs.dom.addClass(this.el(), 'vjs-resolution-button') return MenuButton.prototype.buildCSSClass.call( this ) + ' vjs-resolution-button'; }; MenuButton.registerComponent('ResolutionMenuButton', ResolutionMenuButton); @@ -151,7 +163,6 @@ */ player.currentResolution = function(label, customSourcePicker){ if(label == null) { return this.currentResolutionState; } - // Lookup sources for label if(!this.groupedSrc || !this.groupedSrc.label || !this.groupedSrc.label[label]){ return; @@ -181,7 +192,8 @@ player.handleTechSeeked_(); if(!isPaused){ // Start playing and hide loadingSpinner (flash issue ?) - player.play().handleTechSeeked_(); + player.play(); + player.handleTechSeeked_(); } player.trigger('resolutionchange'); });