mirror of
https://github.com/getredash/redash.git
synced 2026-05-08 09:01:12 -04:00
Add "Last 10 years" option for dynamic date range (#7422)
This commit is contained in:
@@ -9,121 +9,85 @@ const DYNAMIC_DATE_OPTIONS = [
|
||||
name: "This week",
|
||||
value: getDynamicDateRangeFromString("d_this_week"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_this_week")
|
||||
.value()[0]
|
||||
.format("MMM D") +
|
||||
getDynamicDateRangeFromString("d_this_week").value()[0].format("MMM D") +
|
||||
" - " +
|
||||
getDynamicDateRangeFromString("d_this_week")
|
||||
.value()[1]
|
||||
.format("MMM D"),
|
||||
getDynamicDateRangeFromString("d_this_week").value()[1].format("MMM D"),
|
||||
},
|
||||
{
|
||||
name: "This month",
|
||||
value: getDynamicDateRangeFromString("d_this_month"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_this_month")
|
||||
.value()[0]
|
||||
.format("MMMM"),
|
||||
label: () => getDynamicDateRangeFromString("d_this_month").value()[0].format("MMMM"),
|
||||
},
|
||||
{
|
||||
name: "This year",
|
||||
value: getDynamicDateRangeFromString("d_this_year"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_this_year")
|
||||
.value()[0]
|
||||
.format("YYYY"),
|
||||
label: () => getDynamicDateRangeFromString("d_this_year").value()[0].format("YYYY"),
|
||||
},
|
||||
{
|
||||
name: "Last week",
|
||||
value: getDynamicDateRangeFromString("d_last_week"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_last_week")
|
||||
.value()[0]
|
||||
.format("MMM D") +
|
||||
getDynamicDateRangeFromString("d_last_week").value()[0].format("MMM D") +
|
||||
" - " +
|
||||
getDynamicDateRangeFromString("d_last_week")
|
||||
.value()[1]
|
||||
.format("MMM D"),
|
||||
getDynamicDateRangeFromString("d_last_week").value()[1].format("MMM D"),
|
||||
},
|
||||
{
|
||||
name: "Last month",
|
||||
value: getDynamicDateRangeFromString("d_last_month"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_last_month")
|
||||
.value()[0]
|
||||
.format("MMMM"),
|
||||
label: () => getDynamicDateRangeFromString("d_last_month").value()[0].format("MMMM"),
|
||||
},
|
||||
{
|
||||
name: "Last year",
|
||||
value: getDynamicDateRangeFromString("d_last_year"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_last_year")
|
||||
.value()[0]
|
||||
.format("YYYY"),
|
||||
label: () => getDynamicDateRangeFromString("d_last_year").value()[0].format("YYYY"),
|
||||
},
|
||||
{
|
||||
name: "Last 7 days",
|
||||
value: getDynamicDateRangeFromString("d_last_7_days"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_last_7_days")
|
||||
.value()[0]
|
||||
.format("MMM D") + " - Today",
|
||||
label: () => getDynamicDateRangeFromString("d_last_7_days").value()[0].format("MMM D") + " - Today",
|
||||
},
|
||||
{
|
||||
name: "Last 14 days",
|
||||
value: getDynamicDateRangeFromString("d_last_14_days"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_last_14_days")
|
||||
.value()[0]
|
||||
.format("MMM D") + " - Today",
|
||||
label: () => getDynamicDateRangeFromString("d_last_14_days").value()[0].format("MMM D") + " - Today",
|
||||
},
|
||||
{
|
||||
name: "Last 30 days",
|
||||
value: getDynamicDateRangeFromString("d_last_30_days"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_last_30_days")
|
||||
.value()[0]
|
||||
.format("MMM D") + " - Today",
|
||||
label: () => getDynamicDateRangeFromString("d_last_30_days").value()[0].format("MMM D") + " - Today",
|
||||
},
|
||||
{
|
||||
name: "Last 60 days",
|
||||
value: getDynamicDateRangeFromString("d_last_60_days"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_last_60_days")
|
||||
.value()[0]
|
||||
.format("MMM D") + " - Today",
|
||||
label: () => getDynamicDateRangeFromString("d_last_60_days").value()[0].format("MMM D") + " - Today",
|
||||
},
|
||||
{
|
||||
name: "Last 90 days",
|
||||
value: getDynamicDateRangeFromString("d_last_90_days"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_last_90_days")
|
||||
.value()[0]
|
||||
.format("MMM D") + " - Today",
|
||||
label: () => getDynamicDateRangeFromString("d_last_90_days").value()[0].format("MMM D") + " - Today",
|
||||
},
|
||||
{
|
||||
name: "Last 12 months",
|
||||
value: getDynamicDateRangeFromString("d_last_12_months"),
|
||||
label: null,
|
||||
},
|
||||
{
|
||||
name: "Last 10 years",
|
||||
value: getDynamicDateRangeFromString("d_last_10_years"),
|
||||
label: null,
|
||||
},
|
||||
];
|
||||
|
||||
const DYNAMIC_DATETIME_OPTIONS = [
|
||||
{
|
||||
name: "Today",
|
||||
value: getDynamicDateRangeFromString("d_today"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_today")
|
||||
.value()[0]
|
||||
.format("MMM D"),
|
||||
label: () => getDynamicDateRangeFromString("d_today").value()[0].format("MMM D"),
|
||||
},
|
||||
{
|
||||
name: "Yesterday",
|
||||
value: getDynamicDateRangeFromString("d_yesterday"),
|
||||
label: () =>
|
||||
getDynamicDateRangeFromString("d_yesterday")
|
||||
.value()[0]
|
||||
.format("MMM D"),
|
||||
label: () => getDynamicDateRangeFromString("d_yesterday").value()[0].format("MMM D"),
|
||||
},
|
||||
...DYNAMIC_DATE_OPTIONS,
|
||||
];
|
||||
|
||||
@@ -17,7 +17,9 @@ const DYNAMIC_PREFIX = "d_";
|
||||
* @param now {function(): moment.Moment=} moment - defaults to now
|
||||
* @returns {function(withNow: boolean): [moment.Moment, moment.Moment|undefined]}
|
||||
*/
|
||||
const untilNow = (from, now = () => moment()) => (withNow = true) => [from(), withNow ? now() : undefined];
|
||||
const untilNow =
|
||||
(from, now = () => moment()) =>
|
||||
(withNow = true) => [from(), withNow ? now() : undefined];
|
||||
|
||||
const DYNAMIC_DATE_RANGES = {
|
||||
today: {
|
||||
@@ -26,14 +28,7 @@ const DYNAMIC_DATE_RANGES = {
|
||||
},
|
||||
yesterday: {
|
||||
name: "Yesterday",
|
||||
value: () => [
|
||||
moment()
|
||||
.subtract(1, "day")
|
||||
.startOf("day"),
|
||||
moment()
|
||||
.subtract(1, "day")
|
||||
.endOf("day"),
|
||||
],
|
||||
value: () => [moment().subtract(1, "day").startOf("day"), moment().subtract(1, "day").endOf("day")],
|
||||
},
|
||||
this_week: {
|
||||
name: "This week",
|
||||
@@ -49,36 +44,15 @@ const DYNAMIC_DATE_RANGES = {
|
||||
},
|
||||
last_week: {
|
||||
name: "Last week",
|
||||
value: () => [
|
||||
moment()
|
||||
.subtract(1, "week")
|
||||
.startOf("week"),
|
||||
moment()
|
||||
.subtract(1, "week")
|
||||
.endOf("week"),
|
||||
],
|
||||
value: () => [moment().subtract(1, "week").startOf("week"), moment().subtract(1, "week").endOf("week")],
|
||||
},
|
||||
last_month: {
|
||||
name: "Last month",
|
||||
value: () => [
|
||||
moment()
|
||||
.subtract(1, "month")
|
||||
.startOf("month"),
|
||||
moment()
|
||||
.subtract(1, "month")
|
||||
.endOf("month"),
|
||||
],
|
||||
value: () => [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")],
|
||||
},
|
||||
last_year: {
|
||||
name: "Last year",
|
||||
value: () => [
|
||||
moment()
|
||||
.subtract(1, "year")
|
||||
.startOf("year"),
|
||||
moment()
|
||||
.subtract(1, "year")
|
||||
.endOf("year"),
|
||||
],
|
||||
value: () => [moment().subtract(1, "year").startOf("year"), moment().subtract(1, "year").endOf("year")],
|
||||
},
|
||||
last_hour: {
|
||||
name: "Last hour",
|
||||
@@ -94,63 +68,31 @@ const DYNAMIC_DATE_RANGES = {
|
||||
},
|
||||
last_7_days: {
|
||||
name: "Last 7 days",
|
||||
value: untilNow(
|
||||
() =>
|
||||
moment()
|
||||
.subtract(7, "days")
|
||||
.startOf("day"),
|
||||
() => moment().endOf("day")
|
||||
),
|
||||
value: untilNow(() => moment().subtract(7, "days").startOf("day")),
|
||||
},
|
||||
last_14_days: {
|
||||
name: "Last 14 days",
|
||||
value: untilNow(
|
||||
() =>
|
||||
moment()
|
||||
.subtract(14, "days")
|
||||
.startOf("day"),
|
||||
() => moment().endOf("day")
|
||||
),
|
||||
value: untilNow(() => moment().subtract(14, "days").startOf("day")),
|
||||
},
|
||||
last_30_days: {
|
||||
name: "Last 30 days",
|
||||
value: untilNow(
|
||||
() =>
|
||||
moment()
|
||||
.subtract(30, "days")
|
||||
.startOf("day"),
|
||||
() => moment().endOf("day")
|
||||
),
|
||||
value: untilNow(() => moment().subtract(30, "days").startOf("day")),
|
||||
},
|
||||
last_60_days: {
|
||||
name: "Last 60 days",
|
||||
value: untilNow(
|
||||
() =>
|
||||
moment()
|
||||
.subtract(60, "days")
|
||||
.startOf("day"),
|
||||
() => moment().endOf("day")
|
||||
),
|
||||
value: untilNow(() => moment().subtract(60, "days").startOf("day")),
|
||||
},
|
||||
last_90_days: {
|
||||
name: "Last 90 days",
|
||||
value: untilNow(
|
||||
() =>
|
||||
moment()
|
||||
.subtract(90, "days")
|
||||
.startOf("day"),
|
||||
() => moment().endOf("day")
|
||||
),
|
||||
value: untilNow(() => moment().subtract(90, "days").startOf("day")),
|
||||
},
|
||||
last_12_months: {
|
||||
name: "Last 12 months",
|
||||
value: untilNow(
|
||||
() =>
|
||||
moment()
|
||||
.subtract(12, "months")
|
||||
.startOf("day"),
|
||||
() => moment().endOf("day")
|
||||
),
|
||||
value: untilNow(() => moment().subtract(12, "months").startOf("day")),
|
||||
},
|
||||
last_10_years: {
|
||||
name: "Last 10 years",
|
||||
value: untilNow(() => moment().subtract(10, "years").startOf("day")),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -164,7 +106,7 @@ export function isDynamicDateRangeString(value) {
|
||||
}
|
||||
|
||||
export function getDynamicDateRangeStringFromName(dynamicRangeName) {
|
||||
const key = findKey(DYNAMIC_DATE_RANGES, range => range.name === dynamicRangeName);
|
||||
const key = findKey(DYNAMIC_DATE_RANGES, (range) => range.name === dynamicRangeName);
|
||||
return key ? DYNAMIC_PREFIX + key : undefined;
|
||||
}
|
||||
|
||||
@@ -233,7 +175,7 @@ class DateRangeParameter extends Parameter {
|
||||
|
||||
getExecutionValue() {
|
||||
if (this.hasDynamicValue) {
|
||||
const format = date => date.format(DATETIME_FORMATS[this.type]);
|
||||
const format = (date) => date.format(DATETIME_FORMATS[this.type]);
|
||||
const [start, end] = this.normalizedValue.value().map(format);
|
||||
return { start, end };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user