Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 20 additions & 17 deletions packages/victory-stack/src/helper-methods.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const fallbackProps = {
padding: 50,
};

// Assumes data in `datasets` is sorted by `Data.getData`.
// Not required now: Assumes data in `datasets` is sorted by `Data.getData`
function fillData(props, datasets) {
const { fillInMissingData } = props;
const xMap = datasets.reduce((prev, dataset) => {
Expand All @@ -22,28 +22,31 @@ function fillData(props, datasets) {
const xArr = orderBy(xKeys);

return datasets.map((dataset) => {
let indexOffset = 0;
const isDate = dataset[0] && dataset[0]._x instanceof Date;
const filledInData = xArr.map((x: number | Date, index) => {
const dataMap = new Map();
dataset.forEach((datum) => {
const key = datum._x instanceof Date ? datum._x.getTime() : datum._x;
const numKey = Number(key);
if (!dataMap.has(numKey)) {
dataMap.set(numKey, datum);
}
});
return xArr.map((x) => {
const existingDatum = dataMap.get(x);
let parsedX: number | Date = Number(x);
const datum = dataset[index - indexOffset];

if (datum) {
const x1 = isDate ? datum._x.getTime() : datum._x;
if (x1 === parsedX) {
return datum;
}
indexOffset++;
if (existingDatum) {
return existingDatum;
} else {
const y = fillInMissingData ? 0 : null;
parsedX = isDate ? new Date(parsedX) : parsedX;
return { x: parsedX, y, _x: parsedX, _y: y };
return {
x: parsedX,
y,
_x: parsedX,
_y: y,
};
}
const y = fillInMissingData ? 0 : null;
parsedX = isDate ? new Date(parsedX) : parsedX;
return { x: parsedX, y, _x: parsedX, _y: y };
});

return filledInData;
});
}

Expand Down