in lib/@uncharted.software/stories-facets/src/components/facet/facetHistogramFilter.js [126:224]
FacetHistogramFilter.prototype._initializeDragging = function () {
var calculateFrom = function (range, offset, barWidth, totalWidth) {
range.from = Math.max(0, range.from + offset);
if (range.from > range.to - barWidth) {
if (range.from + barWidth < totalWidth) {
range.to = range.from + barWidth;
} else {
range.from = totalWidth - barWidth;
range.to = totalWidth;
}
}
};
var calculateTo = function (range, offset, barWidth, totalWidth) {
range.to = Math.min(totalWidth, range.to + offset);
if (range.to < range.from + barWidth) {
if (range.to - barWidth > 0) {
range.from = range.to - barWidth;
} else {
range.from = 0;
range.to = barWidth;
}
}
};
var barWidth = this._histogram.barWidth;
var totalWidth = this._histogram.totalWidth;
var endDragging = function (event) {
if (this._draggingLeft || this._draggingRight) {
event.preventDefault();
var range = {
from: this._pixelRange.from,
to: this._pixelRange.to
};
if (this._draggingLeft) {
this._canDragLeft = false;
this._draggingLeft = false;
calculateFrom(range, (event.clientX - this._draggingLeftX), barWidth, totalWidth);
}
if (this._draggingRight) {
this._canDragRight = false;
this._draggingRight = false;
calculateTo(range, (event.clientX - this._draggingRightX), barWidth, totalWidth);
}
this.setFilterPixelRange(range, true);
return false;
}
return true;
}.bind(this);
this._element.mouseleave(endDragging);
this._element.mouseup(endDragging);
this._element.mousemove(function(event) {
if (this._canDragLeft || this._canDragRight) {
var range = {
from: this._pixelRange.from,
to: this._pixelRange.to
};
if (this._canDragLeft) {
if (!this._draggingLeft) {
this._draggingLeft = true;
}
calculateFrom(range, (event.clientX - this._draggingLeftX), barWidth, totalWidth);
}
if (this._canDragRight) {
if (!this._draggingRight) {
this._draggingRight = true;
}
calculateTo(range, (event.clientX - this._draggingRightX), barWidth, totalWidth);
}
var barRange = this._histogram.pixelRangeToBarRange(range);
this.updateUI(barRange, range);
}
}.bind(this));
this._leftHandle.mousedown(function (event) {
event.preventDefault();
this._canDragLeft = true;
this._draggingLeft = false;
this._draggingLeftX = event.clientX;
return false;
}.bind(this));
this._rightHandle.mousedown(function (event) {
event.preventDefault();
this._canDragRight = true;
this._draggingRight = false;
this._draggingRightX = event.clientX;
return false;
}.bind(this));
};