Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

X2-9506 added future date range for relative date range picker #340

Merged
merged 14 commits into from
Oct 3, 2024
125 changes: 69 additions & 56 deletions src/components/DatePicker/RelativeDateRange.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,110 +4,83 @@ import { Button, Select } from "../..";
import { now, toDate } from "../../helpers/date";

const options = {
// Day
YESTERDAY: "P1D,yesterday",
TODAY: "P1D,today",
NEXT_DAY: "P1D,next day",

// Week
LAST_WEEK: "P1W,last week",
TRAILING_WEEK: "P1W,-1 week",
THIS_WEEK: "P1W,this week",
NEXT_WEEK: "P1W,next week",

// Month
LAST_MONTH: "P1M,first day of last month",
TRAILING_MONTH: "P1M,-1 month",
THIS_MONTH: "P1M,first day of this month",
NEXT_MONTH: "P1M,next month",

// Quarter
LAST_QUARTER: "P3M,first day of last quarter",
TRAILING_QUARTER: "P3M,-3 months",
THIS_QUARTER: "P3M,first day of this quarter",
NEXT_QUARTER: "P3M,next quarter",

// Year
LAST_YEAR: "P1Y,first day of January last year",
TRAILING_YEAR: "P1Y,-1 year",
THIS_YEAR: "P1Y,first day of this year",
NEXT_YEAR: "P1Y,next year",
};

export const dateRanges = {
day: {
label: "Day",
options: [
{
value: options.YESTERDAY,
label: "Yesterday",
},
{
value: options.TODAY,
label: "Today",
},
{ value: options.YESTERDAY, label: "Yesterday" },
{ value: options.TODAY, label: "Today" },
{ value: options.NEXT_DAY, label: "Next Day" },
],
},

week: {
label: "Week",
options: [
{
value: options.LAST_WEEK,
label: "Last Week",
},
{
value: options.TRAILING_WEEK,
label: "Trailing Week",
},
{
value: options.THIS_WEEK,
label: "This Week",
},
{ value: options.LAST_WEEK, label: "Last Week" },
{ value: options.TRAILING_WEEK, label: "Trailing Week" },
{ value: options.THIS_WEEK, label: "This Week" },
{ value: options.NEXT_WEEK, label: "Next Week" },
],
},

month: {
label: "Month",
options: [
{
value: options.LAST_MONTH,
label: "Last Month",
},
{
value: options.TRAILING_MONTH,
label: "Trailing Month",
},
{
value: options.THIS_MONTH,
label: "This Month",
},
{ value: options.LAST_MONTH, label: "Last Month" },
{ value: options.TRAILING_MONTH, label: "Trailing Month" },
{ value: options.THIS_MONTH, label: "This Month" },
{ value: options.NEXT_MONTH, label: "Next Month" },
],
},

quarter: {
label: "Quarter",
options: [
{
value: options.LAST_QUARTER,
label: "Last Quarter",
},
{
value: options.TRAILING_QUARTER,
label: "Trailing Quarter",
},
{
value: options.THIS_QUARTER,
label: "This Quarter",
},
{ value: options.LAST_QUARTER, label: "Last Quarter" },
{ value: options.TRAILING_QUARTER, label: "Trailing Quarter" },
{ value: options.THIS_QUARTER, label: "This Quarter" },
{ value: options.NEXT_QUARTER, label: "Next Quarter" },
],
},

year: {
label: "Year",
options: [
{
value: options.LAST_YEAR,
label: "Last Year",
},
{
value: options.TRAILING_YEAR,
label: "Trailing Year",
},
{
value: options.THIS_YEAR,
label: "This Year",
},
{ value: options.LAST_YEAR, label: "Last Year" },
{ value: options.TRAILING_YEAR, label: "Trailing Year" },
{ value: options.THIS_YEAR, label: "This Year" },
{ value: options.NEXT_YEAR, label: "Next Year" },
],
},
};
Expand All @@ -128,6 +101,14 @@ const handlers = {
};
},

[options.NEXT_DAY]: (timezone) => {
const nextDay = now(null, timezone).add(1, "day"); // Added
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const nextDay = now(null, timezone).add(1, "day"); // Added
const nextDay = now(null, timezone).add(1, "day");

return {
from: toDate(nextDay.startOf("day")),
to: toDate(nextDay.endOf("day"), false),
};
},

[options.LAST_WEEK]: (timezone) => {
const lastWeek = now(null, timezone).subtract(7, "day");
return {
Expand All @@ -150,6 +131,14 @@ const handlers = {
};
},

[options.NEXT_WEEK]: (timezone) => {
const nextWeek = now(null, timezone).add(7, "day");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This maybe better for readability and consistency since you're using 'week' below.

Suggested change
const nextWeek = now(null, timezone).add(7, "day");
const nextWeek = now(null, timezone).add(1, "week");

Check if this is different from (7, "days")

return {
from: toDate(nextWeek.startOf("week")),
to: toDate(nextWeek.endOf("week"), false),
};
},

[options.LAST_MONTH]: (timezone) => {
const lastMonth = now(null, timezone).subtract(1, "month");
return {
Expand All @@ -170,6 +159,14 @@ const handlers = {
to: toDate(now(null, timezone).endOf("month"), false),
}),

[options.NEXT_MONTH]: (timezone) => {
const nextMonth = now(null, timezone).add(1, "month");
return {
from: toDate(nextMonth.startOf("month")),
to: toDate(nextMonth.endOf("month"), false),
};
},

[options.LAST_QUARTER]: (timezone) => {
return {
from: toDate(now(null, timezone).startOf("quarter").subtract(3, "month").startOf("month")),
Expand All @@ -191,6 +188,14 @@ const handlers = {
};
},

[options.NEXT_QUARTER]: (timezone) => {
const nextQuarter = now(null, timezone).add(3, "month");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you do .add(1, "quarter") here?

return {
from: toDate(nextQuarter.startOf("quarter")),
to: toDate(nextQuarter.endOf("quarter"), false),
};
},

[options.LAST_YEAR]: (timezone) => {
const lastYear = now(null, timezone).subtract(1, "year");
return {
Expand All @@ -210,6 +215,14 @@ const handlers = {
from: toDate(now(null, timezone).startOf("year")),
to: toDate(now(null, timezone).endOf("year"), false),
}),

[options.NEXT_YEAR]: (timezone) => {
const nextYear = now(null, timezone).add(1, "year");
return {
from: toDate(nextYear.startOf("year")),
to: toDate(nextYear.endOf("year"), false),
};
},
};

export const RelativeDateRange = ({
Expand Down
Loading