mirror of https://github.com/Chocobozzz/PeerTube
Fix player progress bar
parent
0bf1f26523
commit
77728efa62
|
@ -0,0 +1,36 @@
|
||||||
|
import * as Bitfield from 'bitfield'
|
||||||
|
import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
|
||||||
|
|
||||||
|
const Component: VideoJSComponentInterface = videojsUntyped.getComponent('Component')
|
||||||
|
|
||||||
|
class PeerTubeLoadProgressBar extends Component {
|
||||||
|
|
||||||
|
constructor (player, options) {
|
||||||
|
super(player, options)
|
||||||
|
this.partEls_ = []
|
||||||
|
this.on(player, 'progress', this.update)
|
||||||
|
}
|
||||||
|
|
||||||
|
createEl () {
|
||||||
|
return super.createEl('div', {
|
||||||
|
className: 'vjs-load-progress',
|
||||||
|
innerHTML: `<span class="vjs-control-text"><span>${this.localize('Loaded')}</span>: 0%</span>`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
dispose () {
|
||||||
|
this.partEls_ = null
|
||||||
|
|
||||||
|
super.dispose()
|
||||||
|
}
|
||||||
|
|
||||||
|
update () {
|
||||||
|
const torrent = this.player().peertube().getTorrent()
|
||||||
|
if (!torrent) return
|
||||||
|
|
||||||
|
this.el_.style.width = (torrent.progress * 100) + '%'
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.registerComponent('PeerTubeLoadProgressBar', PeerTubeLoadProgressBar)
|
|
@ -9,6 +9,7 @@ import './resolution-menu-button'
|
||||||
import './settings-menu-button'
|
import './settings-menu-button'
|
||||||
import './webtorrent-info-button'
|
import './webtorrent-info-button'
|
||||||
import './peertube-videojs-plugin'
|
import './peertube-videojs-plugin'
|
||||||
|
import './peertube-load-progress-bar'
|
||||||
import { videojsUntyped } from './peertube-videojs-typings'
|
import { videojsUntyped } from './peertube-videojs-typings'
|
||||||
import { buildVideoEmbed, buildVideoLink, copyToClipboard } from './utils'
|
import { buildVideoEmbed, buildVideoLink, copyToClipboard } from './utils'
|
||||||
|
|
||||||
|
@ -94,7 +95,16 @@ function getControlBarChildren (options: {
|
||||||
'liveDisplay': {},
|
'liveDisplay': {},
|
||||||
|
|
||||||
'flexibleWidthSpacer': {},
|
'flexibleWidthSpacer': {},
|
||||||
'progressControl': {},
|
'progressControl': {
|
||||||
|
children: {
|
||||||
|
'seekBar': {
|
||||||
|
children: {
|
||||||
|
'peerTubeLoadProgressBar': {},
|
||||||
|
'playProgressBar': {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
'webTorrentButton': {},
|
'webTorrentButton': {},
|
||||||
|
|
||||||
|
|
|
@ -272,6 +272,10 @@ class PeerTubePlugin extends Plugin {
|
||||||
return this.currentVideoFile
|
return this.currentVideoFile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getTorrent () {
|
||||||
|
return this.torrent
|
||||||
|
}
|
||||||
|
|
||||||
private tryToPlay (done?: Function) {
|
private tryToPlay (done?: Function) {
|
||||||
if (!done) done = function () { /* empty */ }
|
if (!done) done = function () { /* empty */ }
|
||||||
|
|
||||||
|
|
|
@ -130,39 +130,6 @@ $context-menu-width: 350px;
|
||||||
background-color: rgba($primary-background-color, 0.5);
|
background-color: rgba($primary-background-color, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.vjs-slider {
|
|
||||||
background-color: rgba(255, 255, 255, .3);
|
|
||||||
border-radius: 2px;
|
|
||||||
height: 5px;
|
|
||||||
|
|
||||||
.vjs-slider-bar {
|
|
||||||
background: $primary-foreground-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.vjs-play-progress {
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
top: -0.3em;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
top: -0.372em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.vjs-time-tooltip {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.vjs-load-progress {
|
|
||||||
background: rgba($slider-bg-color, 0.5);
|
|
||||||
|
|
||||||
div {
|
|
||||||
background: rgba($slider-bg-color, 0.75);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.vjs-poster {
|
.vjs-poster {
|
||||||
outline: none; /* Remove Blue Outline on Click*/
|
outline: none; /* Remove Blue Outline on Click*/
|
||||||
outline: 0;
|
outline: 0;
|
||||||
|
@ -197,6 +164,37 @@ $context-menu-width: 350px;
|
||||||
opacity: $primary-foreground-opacity;
|
opacity: $primary-foreground-opacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.vjs-slider {
|
||||||
|
background-color: rgba(255, 255, 255, .2);
|
||||||
|
border-radius: 2px;
|
||||||
|
height: 5px;
|
||||||
|
|
||||||
|
.vjs-slider-bar {
|
||||||
|
background: $primary-foreground-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.vjs-play-progress {
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
top: -0.3em;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
top: -0.372em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.vjs-time-tooltip {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.vjs-load-progress {
|
||||||
|
&, & div {
|
||||||
|
background: rgba(255, 255, 255, .2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.vjs-progress-control {
|
.vjs-progress-control {
|
||||||
bottom: 34px;
|
bottom: 34px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
Loading…
Reference in New Issue