1 IriSP.Widgets.JwpPlayer = function(player, config) { |
1 // JwpPlayer |
2 IriSP.Widgets.Widget.call(this, player, config); |
|
3 }; |
|
4 |
2 |
5 IriSP.Widgets.JwpPlayer.prototype = new IriSP.Widgets.Widget(); |
3 import { Player } from "jwplayer"; |
6 |
4 |
7 IriSP.Widgets.JwpPlayer.prototype.defaults = { |
5 const JwpPlayerWidget = function (ns) { |
8 }; |
6 return class extends ns.Widgets.Widget { |
|
7 constructor(player, config) { |
|
8 super(player, config); |
|
9 } |
9 |
10 |
10 IriSP.Widgets.JwpPlayer.prototype.draw = function() { |
11 static defaults = {}; |
11 |
12 |
12 var _opts = {}, |
13 draw() { |
13 _player = jwplayer(this.$[0]), |
14 var _opts = {}, |
|
15 _player = Player(this.$[0]), |
14 _seekPause = false, |
16 _seekPause = false, |
15 _pauseState = true; |
17 _pauseState = true; |
16 |
18 |
17 if (typeof this.video === "undefined") { |
19 if (typeof this.video === "undefined") { |
18 this.video = this.media.video; |
20 this.video = this.media.video; |
19 } |
21 } |
20 |
22 |
21 _opts.file = this.video; |
23 _opts.file = this.video; |
22 _opts.flashplayer = IriSP.getLib("jwPlayerSWF"); |
24 _opts.primary = "flash"; |
23 _opts.primary = "flash"; |
25 _opts.fallback = false; |
24 _opts.fallback = false; |
26 _opts.controls = false; |
25 _opts.controls = false; |
27 _opts.width = this.width; |
26 _opts.width = this.width; |
28 if (this.height) { |
27 if (this.height) { |
|
28 _opts.height = this.height; |
29 _opts.height = this.height; |
29 } |
30 } |
30 |
31 |
31 if (this.autostart) { // There seems to be an autostart bug |
32 if (this.autostart) { |
|
33 // There seems to be an autostart bug |
32 //_opts.autostart = true; |
34 //_opts.autostart = true; |
33 //_pauseState = false; |
35 //_pauseState = false; |
34 //this.media.trigger("play"); |
36 //this.media.trigger("play"); |
35 } |
37 } |
36 |
38 |
37 if (this.url_transform) { |
39 if (this.url_transform) { |
38 _opts.file = this.url_transform(_opts.file); |
40 _opts.file = this.url_transform(_opts.file); |
39 } |
41 } |
40 |
42 |
41 // Binding functions to jwplayer |
43 // Binding functions to jwplayer |
42 |
44 |
43 var _media = this.media; |
45 var _media = this.media; |
44 |
46 |
45 _media.on("setcurrenttime", function(_milliseconds) { |
47 _media.on("setcurrenttime", function (_milliseconds) { |
46 _seekPause = _pauseState; |
48 _seekPause = _pauseState; |
47 _player.seek(_milliseconds / 1000); |
49 _player.seek(_milliseconds / 1000); |
48 }); |
50 }); |
49 |
51 |
50 _media.on("setvolume", function(_vol) { |
52 _media.on("setvolume", function (_vol) { |
51 _player.setVolume(Math.floor(_vol*100)); |
53 _player.setVolume(Math.floor(_vol * 100)); |
52 _media.volume = _vol; |
54 _media.volume = _vol; |
53 }); |
55 }); |
54 |
56 |
55 _media.on("setmuted", function(_muted) { |
57 _media.on("setmuted", function (_muted) { |
56 _player.setMute(_muted); |
58 _player.setMute(_muted); |
57 _media.muted = _muted; |
59 _media.muted = _muted; |
58 }); |
60 }); |
59 |
61 |
60 _media.on("setplay", function() { |
62 _media.on("setplay", function () { |
61 _player.play(true); |
63 _player.play(true); |
62 _media.paused = false; |
64 _media.paused = false; |
63 }); |
65 }); |
64 |
66 |
65 _media.on("setpause", function() { |
67 _media.on("setpause", function () { |
66 _player.pause(true); |
68 _player.pause(true); |
67 _media.paused = true; |
69 _media.paused = true; |
68 }); |
70 }); |
69 |
71 |
70 // Binding jwplater events to media |
72 // Binding jwplater events to media |
71 |
73 |
72 function getVolume() { |
74 function getVolume() { |
73 _media.muted = _player.getMute(); |
75 _media.muted = _player.getMute(); |
74 _media.volume = _player.getVolume() / 100; |
76 _media.volume = _player.getVolume() / 100; |
|
77 } |
|
78 |
|
79 _opts.events = { |
|
80 onReady: function () { |
|
81 getVolume(); |
|
82 _media.currentTime = new ns.Model.Time( |
|
83 1000 * _player.getPosition() || 0 |
|
84 ); |
|
85 _media.trigger("loadedmetadata"); |
|
86 }, |
|
87 onTime: function (_progress) { |
|
88 if (_seekPause) { |
|
89 _player.pause(true); |
|
90 _seekPause = false; |
|
91 } else { |
|
92 if (_pauseState && _player.getState() === "PLAYING") { |
|
93 _pauseState = false; |
|
94 _media.trigger("play"); |
|
95 } |
|
96 } |
|
97 _media.trigger( |
|
98 "timeupdate", |
|
99 new ns.Model.Time(_progress.position * 1000) |
|
100 ); |
|
101 }, |
|
102 onPlay: function () { |
|
103 if (!_seekPause) { |
|
104 _pauseState = false; |
|
105 _media.trigger("play"); |
|
106 } |
|
107 }, |
|
108 onPause: function () { |
|
109 _pauseState = true; |
|
110 _media.trigger("pause"); |
|
111 }, |
|
112 onSeek: function () { |
|
113 _media.trigger("seeked"); |
|
114 }, |
|
115 onMute: function (_event) { |
|
116 _media.muted = _event.mute; |
|
117 _media.trigger("volumechange"); |
|
118 }, |
|
119 onVolume: function (_event) { |
|
120 _media.volume = _event.volume / 100; |
|
121 _media.trigger("volumechange"); |
|
122 }, |
|
123 }; |
|
124 |
|
125 _player = _player.setup(_opts); |
|
126 |
|
127 this.jwplayer = _player; |
75 } |
128 } |
76 |
129 }; |
77 _opts.events = { |
|
78 onReady: function() { |
|
79 getVolume(); |
|
80 _media.currentTime = new IriSP.Model.Time(1000*_player.getPosition() || 0); |
|
81 _media.trigger("loadedmetadata"); |
|
82 }, |
|
83 onTime: function(_progress) { |
|
84 if (_seekPause) { |
|
85 _player.pause(true); |
|
86 _seekPause = false; |
|
87 } else { |
|
88 if (_pauseState && _player.getState() === "PLAYING") { |
|
89 _pauseState = false; |
|
90 _media.trigger("play"); |
|
91 } |
|
92 } |
|
93 _media.trigger("timeupdate", new IriSP.Model.Time(_progress.position * 1000)); |
|
94 }, |
|
95 onPlay: function() { |
|
96 if (!_seekPause) { |
|
97 _pauseState = false; |
|
98 _media.trigger("play"); |
|
99 } |
|
100 }, |
|
101 onPause: function() { |
|
102 _pauseState = true; |
|
103 _media.trigger("pause"); |
|
104 }, |
|
105 onSeek: function() { |
|
106 _media.trigger("seeked"); |
|
107 }, |
|
108 onMute: function(_event) { |
|
109 _media.muted = _event.mute; |
|
110 _media.trigger("volumechange"); |
|
111 }, |
|
112 onVolume: function(_event) { |
|
113 _media.volume = _event.volume / 100; |
|
114 _media.trigger("volumechange"); |
|
115 } |
|
116 }; |
|
117 |
|
118 _player = _player.setup(_opts); |
|
119 |
|
120 this.jwplayer = _player; |
|
121 |
|
122 }; |
130 }; |
|
131 |
|
132 export { JwpPlayerWidget as JwpPlayer }; |