mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-11-18 03:34:43 +01:00
@@ -36,8 +36,11 @@ type ParseSpreadsheetResult =
|
||||
| { type: typeof NOT_SPREADSHEET; reason: string }
|
||||
| { type: typeof VALID_SPREADSHEET; spreadsheet: Spreadsheet };
|
||||
|
||||
/**
|
||||
* @private exported for testing
|
||||
*/
|
||||
export const tryParseNumber = (s: string): number | null => {
|
||||
const match = /^([-+]?)[$€£¥₩]?([-+]?)([\d.,]+)[%°]?$/.exec(s);
|
||||
const match = /^([-+]?)[$€£¥₩]?([-+]?)([\d.,]+)[%]?$/.exec(s);
|
||||
if (!match) {
|
||||
return null;
|
||||
}
|
||||
@@ -162,32 +165,6 @@ export const tryParseSpreadsheet = (text: string): ParseSpreadsheetResult => {
|
||||
return result;
|
||||
};
|
||||
|
||||
export const sortSpreadsheet = (spreadsheet: Spreadsheet) => {
|
||||
const rows = [] as { label: string; value: number }[];
|
||||
if (spreadsheet.labels == null || spreadsheet.values == null) {
|
||||
return spreadsheet;
|
||||
}
|
||||
if (spreadsheet.labels.every((val) => tryParseNumber(val))) {
|
||||
for (let i = 0; i < spreadsheet.labels.length; i++) {
|
||||
rows.push({
|
||||
label: spreadsheet.labels[i],
|
||||
value: spreadsheet.values[i],
|
||||
});
|
||||
}
|
||||
rows.sort((a, b) => {
|
||||
const aParsed = tryParseNumber(a.label)!;
|
||||
const bParsed = tryParseNumber(b.label)!;
|
||||
return aParsed - bParsed;
|
||||
});
|
||||
const newSpreadsheet = {} as Spreadsheet;
|
||||
newSpreadsheet.title = spreadsheet.title;
|
||||
newSpreadsheet.labels = rows.flatMap((row) => row.label);
|
||||
newSpreadsheet.values = rows.flatMap((row) => row.value);
|
||||
return newSpreadsheet;
|
||||
}
|
||||
return spreadsheet;
|
||||
};
|
||||
|
||||
const bgColors = getAllColorsSpecificShade(DEFAULT_CHART_COLOR_INDEX);
|
||||
|
||||
// Put all the common properties here so when the whole chart is selected
|
||||
|
||||
Reference in New Issue
Block a user