From dd0652985f157de1c7a8b10ed029e11c9d29969e Mon Sep 17 00:00:00 2001 From: Nathan Kluth Date: Wed, 16 Oct 2024 12:30:59 -0600 Subject: [PATCH 1/3] demo: fix sorting --- packages/victory-core/src/victory-util/data.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/victory-core/src/victory-util/data.ts b/packages/victory-core/src/victory-util/data.ts index 6a207154c..890fdc8f5 100644 --- a/packages/victory-core/src/victory-util/data.ts +++ b/packages/victory-core/src/victory-util/data.ts @@ -311,7 +311,14 @@ export function formatData( return dataArr; }, []); - const sortedData = sortData(data, props.sortKey, props.sortOrder); + const sortedData = sortData(data, props.sortKey, props.sortOrder).map( + (datum, indexz) => { + return { + ...datum, + _x: indexz + 1, + }; + }, + ); const cleanedData = cleanData(sortedData, props); return addEventKeys(props, cleanedData); } From 28702d38935397c1933ab4bf38f0ad5f64f7ca92 Mon Sep 17 00:00:00 2001 From: Nathan Kluth Date: Wed, 16 Oct 2024 14:28:34 -0600 Subject: [PATCH 2/3] refactor: sorting --- .../victory-core/src/victory-util/data.ts | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/packages/victory-core/src/victory-util/data.ts b/packages/victory-core/src/victory-util/data.ts index 890fdc8f5..119de467a 100644 --- a/packages/victory-core/src/victory-util/data.ts +++ b/packages/victory-core/src/victory-util/data.ts @@ -282,43 +282,43 @@ export function formatData( const data = preformattedData ? dataset - : dataset.reduce((dataArr, datum, index) => { - // eslint-disable-line complexity - const parsedDatum = parseDatum(datum); - const fallbackValues = { x: index, y: parsedDatum }; - const processedValues = expectedKeys!.reduce((memo, type) => { - const processedValue = accessor[type](parsedDatum); - const value = - processedValue !== undefined - ? processedValue - : fallbackValues[type]; - if (value !== undefined) { - if (typeof value === "string" && stringMap[type]) { - memo[`${type}Name`] = value; - memo[`_${type}`] = stringMap[type][value]; - } else { - memo[`_${type}`] = value; + : sortData(dataset, props.sortKey, props.sortOrder).reduce( + (dataArr, datum, index) => { + // eslint-disable-line complexity + const parsedDatum = parseDatum(datum); + const fallbackValues = { x: index, y: parsedDatum }; + const processedValues = expectedKeys!.reduce((memo, type) => { + const processedValue = accessor[type](parsedDatum); + const value = + processedValue !== undefined + ? processedValue + : fallbackValues[type]; + if (value !== undefined) { + if (typeof value === "string" && stringMap[type]) { + memo[`${type}Name`] = value; + memo[`_${type}`] = stringMap[type][value]; + } else { + memo[`_${type}`] = type === "x" ? index + 1 : value; + } } + return memo; + }, {}); + + const formattedDatum = Object.assign( + {}, + processedValues, + parsedDatum, + ); + if (!isEmpty(formattedDatum)) { + dataArr.push(formattedDatum); } - return memo; - }, {}); - - const formattedDatum = Object.assign({}, processedValues, parsedDatum); - if (!isEmpty(formattedDatum)) { - dataArr.push(formattedDatum); - } - - return dataArr; - }, []); - - const sortedData = sortData(data, props.sortKey, props.sortOrder).map( - (datum, indexz) => { - return { - ...datum, - _x: indexz + 1, - }; - }, - ); + + return dataArr; + }, + [], + ); + + const sortedData = sortData(data, props.sortKey, props.sortOrder); const cleanedData = cleanData(sortedData, props); return addEventKeys(props, cleanedData); } From 0770da20684faa690a473321fd56bc8cba990a77 Mon Sep 17 00:00:00 2001 From: Nathan Kluth Date: Thu, 17 Oct 2024 09:46:46 -0600 Subject: [PATCH 3/3] refactor: handle other values --- packages/victory-core/src/victory-util/data.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/victory-core/src/victory-util/data.ts b/packages/victory-core/src/victory-util/data.ts index 119de467a..f64540836 100644 --- a/packages/victory-core/src/victory-util/data.ts +++ b/packages/victory-core/src/victory-util/data.ts @@ -297,8 +297,11 @@ export function formatData( if (typeof value === "string" && stringMap[type]) { memo[`${type}Name`] = value; memo[`_${type}`] = stringMap[type][value]; + } else if (type === "x" && props.sortKey) { + memo[`${type}Name`] = value.toString(); + memo[`_${type}`] = index + 1; } else { - memo[`_${type}`] = type === "x" ? index + 1 : value; + memo[`_${type}`] = value; } } return memo;