diff -r 000000000000 -r 7f8907368bd5 web/lib/metadataplayer/Slider.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/metadataplayer/Slider.js Fri Oct 18 17:54:44 2013 +0200
@@ -0,0 +1,133 @@
+/*
+ The Slider Widget fits right under the video
+ */
+
+IriSP.Widgets.Slider = function(player, config) {
+ IriSP.Widgets.Widget.call(this, player, config);
+};
+
+IriSP.Widgets.Slider.prototype = new IriSP.Widgets.Widget();
+
+IriSP.Widgets.Slider.prototype.defaults = {
+ minimized_height : 4,
+ maximized_height : 10,
+ minimize_timeout : 1500 /* time before minimizing slider after mouseout,
+ set to zero for fixed slider */
+};
+
+IriSP.Widgets.Slider.prototype.template =
+ '
00:00
';
+
+IriSP.Widgets.Slider.prototype.draw = function() {
+
+ this.renderTemplate();
+
+ this.$time = this.$.find(".Ldt-Slider-Time");
+
+ this.$slider = this.$.find(".Ldt-Slider");
+
+ var _this = this;
+
+ this.$slider.slider({
+ range: "min",
+ value: 0,
+ min: 0,
+ max: this.source.getDuration().milliseconds,
+ slide: function(event, ui) {
+ _this.media.setCurrentTime(ui.value);
+ _this.player.trigger("Mediafragment.setHashToTime");
+ }
+ });
+
+ this.$handle = this.$slider.find('.ui-slider-handle');
+
+ this.onMediaEvent("timeupdate","onTimeupdate");
+ this.onMdpEvent("Player.MouseOver","onMouseover");
+ this.onMdpEvent("Player.MouseOut","onMouseout");
+
+ if (this.minimize_timeout) {
+ this.$slider.css(this.calculateSliderCss(this.minimized_height));
+ this.$handle.css(this.calculateHandleCss(this.minimized_height));
+
+ this.maximized = false;
+ this.timeoutId = false;
+ }
+
+ this.$
+ .mouseover(function() {
+ _this.$time.show();
+ _this.onMouseover();
+ })
+ .mouseout(this.functionWrapper("onMouseout"))
+ .mousemove(function(_e) {
+ var _x = _e.pageX - _this.$.offset().left,
+ _t = new IriSP.Model.Time(_this.media.duration * _x / _this.width);
+ _this.$time.text(_t.toString()).css("left",_x);
+ });
+};
+
+IriSP.Widgets.Slider.prototype.onTimeupdate = function(_time) {
+ this.$slider.slider("value",_time);
+ this.player.trigger("Arrow.updatePosition",{widget: this.type, time: _time});
+};
+
+IriSP.Widgets.Slider.prototype.onMouseover = function() {
+ if (this.minimize_timeout) {
+ if (this.timeoutId) {
+ window.clearTimeout(this.timeoutId);
+ this.timeoutId = false;
+ }
+ if (!this.maximized) {
+ this.animateToHeight(this.maximized_height);
+ this.maximized = true;
+ }
+ }
+};
+
+IriSP.Widgets.Slider.prototype.onMouseout = function() {
+ this.$time.hide();
+ if (this.minimize_timeout) {
+ if (this.timeoutId) {
+ window.clearTimeout(this.timeoutId);
+ this.timeoutId = false;
+ }
+ var _this = this;
+ this.timeoutId = window.setTimeout(function() {
+ if (_this.maximized) {
+ _this.animateToHeight(_this.minimized_height);
+ _this.maximized = false;
+ }
+ _this.timeoutId = false;
+ }, this.minimize_timeout);
+ }
+};
+
+IriSP.Widgets.Slider.prototype.animateToHeight = function(_height) {
+ this.$slider.stop().animate(
+ this.calculateSliderCss(_height),
+ 500,
+ function() {
+ IriSP.jQuery(this).css("overflow","visible");
+ });
+ this.$handle.stop().animate(
+ this.calculateHandleCss(_height),
+ 500,
+ function() {
+ IriSP.jQuery(this).css("overflow","visible");
+ });
+};
+
+IriSP.Widgets.Slider.prototype.calculateSliderCss = function(_size) {
+ return {
+ height: _size + "px",
+ "margin-top": (this.minimized_height - _size) + "px"
+ };
+};
+
+IriSP.Widgets.Slider.prototype.calculateHandleCss = function(_size) {
+ return {
+ height: (2 + _size) + "px",
+ width: (2 + _size) + "px",
+ "margin-left": -Math.ceil(2 + _size / 2) + "px"
+ };
+};
\ No newline at end of file