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);
     }

Reply via email to