* @param {number} start * @param {number} count
(start, count)
| 449 | * @param {number} count |
| 450 | */ |
| 451 | parse(start, count) { |
| 452 | const {_cachedMeta: meta, _data: data} = this; |
| 453 | const {iScale, _stacked} = meta; |
| 454 | const iAxis = iScale.axis; |
| 455 | |
| 456 | let sorted = start === 0 && count === data.length ? true : meta._sorted; |
| 457 | let prev = start > 0 && meta._parsed[start - 1]; |
| 458 | let i, cur, parsed; |
| 459 | |
| 460 | if (this._parsing === false) { |
| 461 | meta._parsed = data; |
| 462 | meta._sorted = true; |
| 463 | parsed = data; |
| 464 | } else { |
| 465 | if (isArray(data[start])) { |
| 466 | parsed = this.parseArrayData(meta, data, start, count); |
| 467 | } else if (isObject(data[start])) { |
| 468 | parsed = this.parseObjectData(meta, data, start, count); |
| 469 | } else { |
| 470 | parsed = this.parsePrimitiveData(meta, data, start, count); |
| 471 | } |
| 472 | |
| 473 | const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]); |
| 474 | for (i = 0; i < count; ++i) { |
| 475 | meta._parsed[i + start] = cur = parsed[i]; |
| 476 | if (sorted) { |
| 477 | if (isNotInOrderComparedToPrev()) { |
| 478 | sorted = false; |
| 479 | } |
| 480 | prev = cur; |
| 481 | } |
| 482 | } |
| 483 | meta._sorted = sorted; |
| 484 | } |
| 485 | |
| 486 | if (_stacked) { |
| 487 | updateStacks(this, parsed); |
| 488 | } |
| 489 | } |
| 490 | |
| 491 | /** |
| 492 | * Parse array of primitive values |
no test coverage detected