This is an automated email from the ASF dual-hosted git repository.
arivero pushed a commit to branch time_comparison_zeros
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/time_comparison_zeros by this
push:
new 24dd1bdd49 Time Comparison:
24dd1bdd49 is described below
commit 24dd1bdd49b590bbb4e3604ac4c133eb0ab896a2
Author: Antonio Rivero <[email protected]>
AuthorDate: Wed Aug 21 21:46:01 2024 +0200
Time Comparison:
- Support otehr formats when entering dates
---
.../src/time-comparison/getTimeOffset.ts | 34 +++++++++++++++++-----
1 file changed, 26 insertions(+), 8 deletions(-)
diff --git
a/superset-frontend/packages/superset-ui-core/src/time-comparison/getTimeOffset.ts
b/superset-frontend/packages/superset-ui-core/src/time-comparison/getTimeOffset.ts
index f4f8b3b58b..15a5f9980f 100644
---
a/superset-frontend/packages/superset-ui-core/src/time-comparison/getTimeOffset.ts
+++
b/superset-frontend/packages/superset-ui-core/src/time-comparison/getTimeOffset.ts
@@ -21,6 +21,28 @@ import { ensureIsArray } from '../utils';
import { customTimeRangeDecode } from './customTimeRangeDecode';
const DAY_IN_MS = 24 * 60 * 60 * 1000;
+
+export const parseDateParts = (dateParts: string[]) => {
+ const parts = ensureIsArray(dateParts);
+ if (parts.length === 3) {
+ const [a, b, c] = parts;
+ const parsedA = parseInt(a, 10);
+ const parsedB = parseInt(b, 10);
+ const parsedC = parseInt(c, 10);
+ if (parsedA > 31)
+ return { year: parsedA, month: parsedB - 1, day: parsedC }; // a is
year: YYYY-MM-DD
+ if (parsedC > 31)
+ return { year: parsedC, month: parsedA - 1, day: parsedB }; // c is
year: MM-DD-YYYY
+ } else if (parts.length === 2) {
+ const [a, b] = parts;
+ const parsedA = parseInt(a, 10);
+ const parsedB = parseInt(b, 10);
+ if (parsedA > 31) return { year: parsedA, month: parsedB - 1, day: 0 }; //
a is year: YYYY-MM
+ return { year: parsedB, month: parsedA - 1, day: 0 }; // b is year: MM-YYYY
+ }
+ return { year: 0, month: 0, day: 0 };
+};
+
export const parseDttmToDate = (
dttm: string,
isEndDate = false,
@@ -119,15 +141,11 @@ export const parseDttmToDate = (
if (parts.length === 1) {
parsed = new Date(Date.UTC(parseInt(parts[0], 10), 0));
} else if (parts.length === 2) {
- parsed = new Date(
- Date.UTC(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1),
- );
+ const parsedParts = parseDateParts(parts);
+ parsed = new Date(Date.UTC(parsedParts.year, parsedParts.month));
} else if (parts.length === 3) {
- parsed = new Date(
- parseInt(parts[0], 10),
- parseInt(parts[1], 10) - 1,
- parseInt(parts[2], 10),
- );
+ const parsedParts = parseDateParts(parts);
+ parsed = new Date(parsedParts.year, parsedParts.month, parsedParts.day);
} else {
parsed = new Date(dttm);
}