mirror of https://github.com/calzoneman/sync.git
Start working on player rewrite
This commit is contained in:
parent
dd48da19c0
commit
f0c75211fb
|
@ -0,0 +1,37 @@
|
|||
class Player
|
||||
constructor: (data) ->
|
||||
@load(data)
|
||||
@paused = false
|
||||
|
||||
load: (data) ->
|
||||
@mediaId = data.id
|
||||
@mediaType = data.type
|
||||
|
||||
play: ->
|
||||
@paused = false
|
||||
|
||||
pause: ->
|
||||
@paused = true
|
||||
|
||||
seekTo: (time) ->
|
||||
|
||||
setVolume: (volume) ->
|
||||
|
||||
getTime: (cb) ->
|
||||
cb(0)
|
||||
|
||||
isPaused: (cb) ->
|
||||
cb(@paused)
|
||||
|
||||
getVolume: (cb) ->
|
||||
cb(VOLUME)
|
||||
|
||||
window.Player = Player
|
||||
|
||||
window.removeOld = (replace) ->
|
||||
$('#sc_volume').remove()
|
||||
replace ?= $('<div/>').addClass('embed-responsive-item')
|
||||
old = $('#ytapiplayer')
|
||||
replace.insertBefore(old)
|
||||
old.remove()
|
||||
replace.attr('id', 'ytapiplayer')
|
|
@ -0,0 +1,6 @@
|
|||
class VideoJSPlayer extends Player
|
||||
constructor: (data) ->
|
||||
|
||||
load: (data) ->
|
||||
video = $('<video/>')
|
||||
.addClass('video-js vjs-default-skin embed-responsive-item')
|
|
@ -0,0 +1,27 @@
|
|||
class YouTubePlayer extends Player
|
||||
constructor: (data) ->
|
||||
super()
|
||||
waitUntilDefined(window, 'YT', =>
|
||||
removeOld()
|
||||
|
||||
wmode = if USEROPTS.wmode_transparent then 'transparent' else 'opaque'
|
||||
@yt = new YT.Player('ytapiplayer',
|
||||
videoId: data.id
|
||||
playerVars:
|
||||
autohide: 1
|
||||
autoplay: 1
|
||||
controls: 1
|
||||
iv_load_policy: 3
|
||||
rel: 0
|
||||
wmode: wmode
|
||||
events:
|
||||
onReady: @onReady.bind(this)
|
||||
onStateChange: @onStateChange.bind(this)
|
||||
)
|
||||
)
|
||||
|
||||
onReady: ->
|
||||
@yt.setVolume(VOLUME)
|
||||
|
||||
onStateChange: (ev) ->
|
||||
|
|
@ -1,4 +1,112 @@
|
|||
(function() {
|
||||
var Player, VideoJSPlayer, YouTubePlayer,
|
||||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||
hasProp = {}.hasOwnProperty;
|
||||
|
||||
Player = (function() {
|
||||
function Player(data) {
|
||||
this.load(data);
|
||||
this.paused = false;
|
||||
}
|
||||
|
||||
Player.prototype.load = function(data) {
|
||||
this.mediaId = data.id;
|
||||
return this.mediaType = data.type;
|
||||
};
|
||||
|
||||
Player.prototype.play = function() {
|
||||
return this.paused = false;
|
||||
};
|
||||
|
||||
Player.prototype.pause = function() {
|
||||
return this.paused = true;
|
||||
};
|
||||
|
||||
Player.prototype.seekTo = function(time) {};
|
||||
|
||||
Player.prototype.setVolume = function(volume) {};
|
||||
|
||||
Player.prototype.getTime = function(cb) {
|
||||
return cb(0);
|
||||
};
|
||||
|
||||
Player.prototype.isPaused = function(cb) {
|
||||
return cb(this.paused);
|
||||
};
|
||||
|
||||
Player.prototype.getVolume = function(cb) {
|
||||
return cb(VOLUME);
|
||||
};
|
||||
|
||||
return Player;
|
||||
|
||||
})();
|
||||
|
||||
window.Player = Player;
|
||||
|
||||
window.removeOld = function(replace) {
|
||||
var old;
|
||||
$('#sc_volume').remove();
|
||||
if (replace == null) {
|
||||
replace = $('<div/>').addClass('embed-responsive-item');
|
||||
}
|
||||
old = $('#ytapiplayer');
|
||||
replace.insertBefore(old);
|
||||
old.remove();
|
||||
return replace.attr('id', 'ytapiplayer');
|
||||
};
|
||||
|
||||
VideoJSPlayer = (function(superClass) {
|
||||
extend(VideoJSPlayer, superClass);
|
||||
|
||||
function VideoJSPlayer(data) {}
|
||||
|
||||
VideoJSPlayer.prototype.load = function(data) {
|
||||
var video;
|
||||
return video = $('<video/>').addClass('video-js vjs-default-skin embed-responsive-item');
|
||||
};
|
||||
|
||||
return VideoJSPlayer;
|
||||
|
||||
})(Player);
|
||||
|
||||
YouTubePlayer = (function(superClass) {
|
||||
extend(YouTubePlayer, superClass);
|
||||
|
||||
function YouTubePlayer(data) {
|
||||
YouTubePlayer.__super__.constructor.call(this);
|
||||
waitUntilDefined(window, 'YT', (function(_this) {
|
||||
return function() {
|
||||
var wmode;
|
||||
removeOld();
|
||||
wmode = USEROPTS.wmode_transparent ? 'transparent' : 'opaque';
|
||||
return _this.yt = new YT.Player('ytapiplayer', {
|
||||
videoId: data.id,
|
||||
playerVars: {
|
||||
autohide: 1,
|
||||
autoplay: 1,
|
||||
controls: 1,
|
||||
iv_load_policy: 3,
|
||||
rel: 0,
|
||||
wmode: wmode
|
||||
},
|
||||
events: {
|
||||
onReady: _this.onReady.bind(_this),
|
||||
onStateChange: _this.onStateChange.bind(_this)
|
||||
}
|
||||
});
|
||||
};
|
||||
})(this));
|
||||
}
|
||||
|
||||
YouTubePlayer.prototype.onReady = function() {
|
||||
return this.yt.setVolume(VOLUME);
|
||||
};
|
||||
|
||||
YouTubePlayer.prototype.onStateChange = function(ev) {};
|
||||
|
||||
return YouTubePlayer;
|
||||
|
||||
})(Player);
|
||||
|
||||
}).call(this);
|
||||
|
|
Loading…
Reference in New Issue