Skip to content

Commit 6ae2aea

Browse files
refactor(datagrid-web): tighten excelDate overloads and remove dead code
Add overloads to excelDate so t:"d" is only produced when v is a Date, preventing invalid SheetJS cells. Remove dead plain-number branch in attribute reader (Mendix always returns Big for numeric types). Drop no-op getCellFormat call in dynamicText reader (pre-rendered strings have no raw typed value to coerce). Remove redundant `?? undefined` in excelString. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent a60107d commit 6ae2aea

1 file changed

Lines changed: 10 additions & 15 deletions

File tree

  • packages/pluggableWidgets/datagrid-web/src/features/data-export

packages/pluggableWidgets/datagrid-web/src/features/data-export/cell-readers.ts

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,15 @@ export function excelString(value: string, format?: string): ExcelCell {
6464
return {
6565
t: "s",
6666
v: value,
67-
z: format ?? undefined
67+
z: format
6868
};
6969
}
7070

71+
export function excelDate(value: string): ExcelCell;
72+
export function excelDate(value: Date, format: string): ExcelCell;
7173
export function excelDate(value: string | Date, format?: string): ExcelCell {
7274
return {
73-
t: format === undefined ? "s" : "d",
75+
t: value instanceof Date && format !== undefined ? "d" : "s",
7476
v: value,
7577
z: format
7678
};
@@ -118,7 +120,7 @@ const readers: ReadersByType = {
118120

119121
if (value instanceof Date) {
120122
if (format === undefined) {
121-
return excelDate(data.displayValue, format);
123+
return excelDate(data.displayValue);
122124
}
123125
const dateValue = hasTimeComponent(format) ? value : stripTime(value);
124126
return excelDate(dateValue, format);
@@ -128,12 +130,11 @@ const readers: ReadersByType = {
128130
return excelBoolean(value);
129131
}
130132

131-
if (value instanceof Big || typeof value === "number") {
132-
if (value instanceof Big && countSignificantDigits(value) > MAX_SAFE_SIGNIFICANT_DIGITS) {
133+
if (value instanceof Big) {
134+
if (countSignificantDigits(value) > MAX_SAFE_SIGNIFICANT_DIGITS) {
133135
return excelString(value.toFixed(), format);
134136
}
135-
const num = value instanceof Big ? value.toNumber() : value;
136-
return excelNumber(num, format);
137+
return excelNumber(value.toNumber(), format);
137138
}
138139

139140
return excelString(data.displayValue ?? "");
@@ -144,13 +145,7 @@ const readers: ReadersByType = {
144145

145146
switch (data?.status) {
146147
case "available":
147-
const format = getCellFormat({
148-
exportType: props.exportType,
149-
exportDateFormat: props.exportDateFormat,
150-
exportNumberFormat: props.exportNumberFormat
151-
});
152-
153-
return excelString(data.value ?? "", format);
148+
return excelString(data.value ?? "");
154149
case "unavailable":
155150
return excelString("n/a");
156151
default:
@@ -177,7 +172,7 @@ const readers: ReadersByType = {
177172
const parsed = new Date(value);
178173
if (!isNaN(parsed.getTime())) {
179174
if (format === undefined) {
180-
return excelDate(value, format);
175+
return excelDate(value);
181176
}
182177
const dateValue = hasTimeComponent(format) ? parsed : stripTime(parsed);
183178
return excelDate(dateValue, format);

0 commit comments

Comments
 (0)