le-player
Version:
The best HTML5 video player made for Lectoriy.
87 lines (71 loc) • 2.19 kB
JavaScript
'use strict';
/**
* @file TimeInfoControl.js
*/
import $ from 'jquery';
import Component from './Component';
import Control from './Control';
import ControlText from './ControlText';
import { secondsToTime } from '../utils';
/**
* @param {Player} player Main player
* @class TimeInfoControl
* @property {ControlText} currentTime Current time's text
* @property {ControlText} totalTime Total time
* @property {jQuery} line
* @extends Control
*/
class TimeInfoControl extends Control {
constructor (player, options={}) {
options = $.extend({}, {
className : 'timeline timeline-container',
name : 'time-info'
}, options);
super(player, options);
this.player.on('timeupdate', (e, data) => {
const time = this.player.currentTime;
this._currentTimeControl.text = secondsToTime(time);
});
this.player.on('durationchange', (e) => {
this._totalTimeControl.text = secondsToTime(this.player.video.duration);
});
}
/**
* @override
*/
createElement() {
const duration = this.player.video.duration;
const currentTime = this.player.video.currentTime;
this._currentTimeControl = new ControlText(this.player, { className : 'control-time__current'});
this._totalTimeControl = new ControlText(this.player, { className : 'control-time__total'});
if(isNaN(duration) || duration == null) {
this._totalTimeControl.text = '';
} else {
this._totalTimeControl.text = secondsToTime(duration);
}
if(currentTime == null) {
this._currentTimeControl.text = secondsToTime(0);
} else {
this._currentTimeControl.text = secondsToTime(currentTime);
}
this.element = $('<div/>').addClass('control-time');
this.element
.append(this._currentTimeControl.element)
.append(this._totalTimeControl.element)
return this.element;
}
/**
* @override
*/
onPlayerInited(e) {
let video = this.player.video;
this._currentTimeControl.text = secondsToTime(video.currentTime);
this._totalTimeControl.text = secondsToTime(video.duration);
}
onClick(e) {
e.preventDefault()
}
}
Component.registerComponent('TimeInfoControl', TimeInfoControl);
Control.registerControl('timeinfo', TimeInfoControl);
export default TimeInfoControl;