* `helpers.indexOf`
* `helpers.min`
* `helpers.max`
+* `helpers.nextItem`
* `helpers.numberOfLabelLines`
+* `helpers.previousItem`
* `helpers.removeEvent`
* `helpers.scaleMerge`
* `Scale.getRightValue`
for (i = 0, ilen = points.length; i < ilen; ++i) {
model = points[i]._model;
controlPoints = helpers.splineCurve(
- helpers.previousItem(points, i)._model,
+ points[Math.max(0, i - 1)]._model,
model,
- helpers.nextItem(points, i)._model,
+ points[Math.min(i + 1, ilen - 1)]._model,
lineModel.tension
);
model.controlPointPreviousX = controlPoints.previous.x;
}
});
+function nextItem(collection, index) {
+ return index >= collection.length - 1 ? collection[0] : collection[index + 1];
+}
+
+function previousItem(collection, index) {
+ return index <= 0 ? collection[collection.length - 1] : collection[index - 1];
+}
+
module.exports = DatasetController.extend({
datasetElementType: elements.Line,
for (i = 0, ilen = points.length; i < ilen; ++i) {
model = points[i]._model;
controlPoints = helpers.splineCurve(
- helpers.previousItem(points, i, true)._model,
+ previousItem(points, i)._model,
model,
- helpers.nextItem(points, i, true)._model,
+ nextItem(points, i)._model,
model.tension
);
}
}
};
- helpers.nextItem = function(collection, index, loop) {
- if (loop) {
- return index >= collection.length - 1 ? collection[0] : collection[index + 1];
- }
- return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];
- };
- helpers.previousItem = function(collection, index, loop) {
- if (loop) {
- return index <= 0 ? collection[collection.length - 1] : collection[index - 1];
- }
- return index <= 0 ? collection[0] : collection[index - 1];
- };
// Implementation of the nice number algorithm used in determining where axis labels will go
helpers.niceNum = function(range, round) {
var exponent = Math.floor(helpers.math.log10(range));
if (me._loop) {
points = points.slice(); // clone array
for (index = 0; index < points.length; ++index) {
- previous = helpers.previousItem(points, index);
+ previous = points[Math.max(0, index - 1)];
// If the line has an open path, shift the point array
if (!points[index]._view.skip && previous._view.skip) {
points = points.slice(index).concat(points.slice(0, index));
// Stroke Line
ctx.beginPath();
- // First point moves to it's starting position no matter what
+ // First point moves to its starting position no matter what
currentVM = points[0]._view;
if (!currentVM.skip) {
ctx.moveTo(currentVM.x, currentVM.y);
for (index = 1; index < points.length; ++index) {
currentVM = points[index]._view;
- previous = lastDrawnIndex === -1 ? helpers.previousItem(points, index) : points[lastDrawnIndex];
+ previous = lastDrawnIndex === -1 ? points[index - 1] : points[lastDrawnIndex];
if (!currentVM.skip) {
if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {
}]);
});
- it('should get the next or previous item in an array', function() {
- var testData = [0, 1, 2];
-
- expect(helpers.nextItem(testData, 0, false)).toEqual(1);
- expect(helpers.nextItem(testData, 2, false)).toEqual(2);
- expect(helpers.nextItem(testData, 2, true)).toEqual(0);
- expect(helpers.nextItem(testData, 1, true)).toEqual(2);
- expect(helpers.nextItem(testData, -1, false)).toEqual(0);
-
- expect(helpers.previousItem(testData, 0, false)).toEqual(0);
- expect(helpers.previousItem(testData, 0, true)).toEqual(2);
- expect(helpers.previousItem(testData, 2, false)).toEqual(1);
- expect(helpers.previousItem(testData, 1, true)).toEqual(0);
- });
-
it('should return the width of the longest text in an Array and 2D Array', function() {
var context = window.createMockContext();
var font = "normal 12px 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif";