Browse Source

Fix to Core.js to updated Core.js

codeClimate
Yotam Berkowitz 8 years ago
parent
commit
4b6a0d7f74
2 changed files with 28 additions and 45 deletions
  1. +28
    -23
      lib/timeline/Core.js
  2. +0
    -22
      lib/timeline/Timeline.js

+ 28
- 23
lib/timeline/Core.js View File

@ -112,7 +112,7 @@ Core.prototype._create = function (container) {
} }
}.bind(this)); }.bind(this));
this.on('touch', this._onTouch.bind(this)); this.on('touch', this._onTouch.bind(this));
this.on('pan', this._onDrag.bind(this));
this.on('panmove', this._onDrag.bind(this));
var me = this; var me = this;
this.on('_change', function (properties) { this.on('_change', function (properties) {
@ -191,8 +191,13 @@ Core.prototype._create = function (container) {
var current = this.props.scrollTop; var current = this.props.scrollTop;
var adjusted = current + delta * 120; var adjusted = current + delta * 120;
if (this.isActive()) { if (this.isActive()) {
this._setScrollTop(adjusted); this._setScrollTop(adjusted);
if (this.options.verticalScroll) {
this.dom.left.parentNode.scrollTop = -adjusted;
this.dom.right.parentNode.scrollTop = -adjusted;
}
this._redraw(); this._redraw();
this.emit('scroll', event); this.emit('scroll', event);
} }
@ -202,29 +207,29 @@ Core.prototype._create = function (container) {
event.preventDefault(); event.preventDefault();
} }
if (this.dom.root.addEventListener) {
if (this.dom.center.addEventListener) {
// IE9, Chrome, Safari, Opera // IE9, Chrome, Safari, Opera
this.dom.root.addEventListener("mousewheel", onMouseWheel.bind(this), false);
this.dom.center.addEventListener("mousewheel", onMouseWheel.bind(this), false);
// Firefox // Firefox
this.dom.root.addEventListener("DOMMouseScroll", onMouseWheel.bind(this), false);
this.dom.center.addEventListener("DOMMouseScroll", onMouseWheel.bind(this), false);
} else { } else {
// IE 6/7/8 // IE 6/7/8
this.dom.root.attachEvent("onmousewheel", onMouseWheel.bind(this));
this.dom.center.attachEvent("onmousewheel", onMouseWheel.bind(this));
} }
function onMouseScrollSide(event) { function onMouseScrollSide(event) {
var current = this.scrollTop;
var adjusted = -current;
if (!me.options.verticalScroll) return;
event.preventDefault();
if (me.isActive()) { if (me.isActive()) {
var adjusted = -event.target.scrollTop;
me._setScrollTop(adjusted); me._setScrollTop(adjusted);
me._redraw(); me._redraw();
me.emit('scroll', event);
me.emit('scrollSide', event);
} }
} }
this.dom.left.parentNode.addEventListener('scroll', onMouseScrollSide);
this.dom.right.parentNode.addEventListener('scroll', onMouseScrollSide);
this.dom.left.parentNode.addEventListener('scroll', onMouseScrollSide.bind(this));
this.dom.right.parentNode.addEventListener('scroll', onMouseScrollSide.bind(this));
this.customTimes = []; this.customTimes = [];
@ -362,9 +367,7 @@ Core.prototype.setOptions = function (options) {
} }
// propagate options to all components // propagate options to all components
this.components.forEach(component => {
component.setOptions(options)
});
this.components.forEach(component => component.setOptions(options));
// enable/disable configure // enable/disable configure
if ('configure' in options) { if ('configure' in options) {
@ -822,10 +825,9 @@ Core.prototype._redraw = function() {
// update the scrollTop, feasible range for the offset can be changed // update the scrollTop, feasible range for the offset can be changed
// when the height of the Core or of the contents of the center changed // when the height of the Core or of the contents of the center changed
this._updateScrollTop();
var offset = this._updateScrollTop();
// reposition the scrollable contents // reposition the scrollable contents
var offset = this.props.scrollTop;
if (options.orientation.item != 'top') { if (options.orientation.item != 'top') {
offset += Math.max(this.props.centerContainer.height - this.props.center.height - offset += Math.max(this.props.centerContainer.height - this.props.center.height -
this.props.border.top - this.props.border.bottom, 0); this.props.border.top - this.props.border.bottom, 0);
@ -846,12 +848,10 @@ Core.prototype._redraw = function() {
dom.shadowBottomRight.style.visibility = visibilityBottom; dom.shadowBottomRight.style.visibility = visibilityBottom;
if (this.options.verticalScroll) { if (this.options.verticalScroll) {
this.dom.shadowTopRight.style.visibility = "hidden";
this.dom.shadowBottomRight.style.visibility = "hidden";
this.dom.shadowTopLeft.style.visibility = "hidden";
this.dom.shadowBottomLeft.style.visibility = "hidden";
document.getElementsByClassName('vis-left')[0].scrollTop = -offset;
document.getElementsByClassName('vis-right')[0].scrollTop = -offset;
dom.shadowTopRight.style.visibility = "hidden";
dom.shadowBottomRight.style.visibility = "hidden";
dom.shadowTopLeft.style.visibility = "hidden";
dom.shadowBottomLeft.style.visibility = "hidden";
} else { } else {
dom.left.style.top = offset + 'px'; dom.left.style.top = offset + 'px';
dom.right.style.top = offset + 'px'; dom.right.style.top = offset + 'px';
@ -1072,6 +1072,7 @@ Core.prototype._onPinch = function (event) {
* @private * @private
*/ */
Core.prototype._onDrag = function (event) { Core.prototype._onDrag = function (event) {
if (!event) return
// refuse to drag when we where pinching to prevent the timeline make a jump // refuse to drag when we where pinching to prevent the timeline make a jump
// when releasing the fingers in opposite order from the touch screen // when releasing the fingers in opposite order from the touch screen
if (!this.touch.allowDragging) return; if (!this.touch.allowDragging) return;
@ -1081,6 +1082,10 @@ Core.prototype._onDrag = function (event) {
var oldScrollTop = this._getScrollTop(); var oldScrollTop = this._getScrollTop();
var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta); var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta);
if (this.options.verticalScroll) {
this.dom.left.parentNode.scrollTop = -this.props.scrollTop;
this.dom.right.parentNode.scrollTop = -this.props.scrollTop;
}
if (newScrollTop != oldScrollTop) { if (newScrollTop != oldScrollTop) {
this.emit("verticalDrag"); this.emit("verticalDrag");
@ -1141,4 +1146,4 @@ Core.prototype._createConfigurator = function () {
throw new Error('Cannot invoke abstract method _createConfigurator'); throw new Error('Cannot invoke abstract method _createConfigurator');
}; };
module.exports = Core;
module.exports = Core;

+ 0
- 22
lib/timeline/Timeline.js View File

@ -105,7 +105,6 @@ function Timeline (container, items, groups, options) {
this.components.push(this.currentTime); this.components.push(this.currentTime);
// item set // item set
var itemSetOptions =
this.itemSet = new ItemSet(this.body, this.options); this.itemSet = new ItemSet(this.body, this.options);
this.components.push(this.itemSet); this.components.push(this.itemSet);
@ -544,25 +543,4 @@ Timeline.prototype.getEventProperties = function (event) {
} }
}; };
/**
* Extend the drag event handler from Core, move the timeline vertically
* @param {Event} event
* @private
*/
Timeline.prototype._onDrag = function (event) {
// refuse to drag when we where pinching to prevent the timeline make a jump
// when releasing the fingers in opposite order from the touch screen, and refuse
// to drag when an item is already being dragged
if (!this.touch.allowDragging || this.itemSet.touchParams.itemIsDragging) return;
var delta = event.deltaY;
var oldScrollTop = this._getScrollTop();
var newScrollTop = this._setScrollTop(this.touch.initialScrollTop + delta);
if (newScrollTop != oldScrollTop) {
this.emit("verticalDrag");
}
};
module.exports = Timeline; module.exports = Timeline;

Loading…
Cancel
Save