From 33e3931486cbb79dc0888a33d147120191ed43e3 Mon Sep 17 00:00:00 2001 From: "J. Alvarez" Date: Sun, 12 Apr 2020 21:44:54 -0500 Subject: [PATCH 1/2] Solved Challenge --- src/filter.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/src/filter.js b/src/filter.js index 13e106b..f626c2b 100644 --- a/src/filter.js +++ b/src/filter.js @@ -1,5 +1,57 @@ +const sub = require('date-fns/sub'); +const format = require('date-fns/format'); +const localeES = require('date-fns/locale/es') +const startOfMonth = require('date-fns/startOfMonth') +const endOfMonth = require('date-fns/endOfMonth') +const startOfYear = require('date-fns/startOfYear') +const endOfYear = require('date-fns/endOfYear') + const makeFilter = (date) => { - let filters = []; + + const today = new Date(2020,0,1); + const dateFormat = 'yyyy/MM/dd'; + + let filters = [ + { + label: 'Últimos 7 días', + startAt: format(sub(today, { days: 7 }), dateFormat), + endAt: format(today, dateFormat) + }, + { + label: 'Últimos 28 días', + startAt: format(sub(today, { days: 28 }), dateFormat), + endAt: format(today, dateFormat) + }, + { + label: 'Últimos 90 días', + startAt: format(sub(today, { days: 90 }), dateFormat), + endAt: format(today, dateFormat) + }, + { + label: 'Últimos 365 días', + startAt: format(sub(today, { days: 365 }), dateFormat), + endAt: format(today, dateFormat) + } + ]; + + for (let i = 1; i <= 3; i++) { + const pastYearDate = sub(today, {years: i}); + filters.push({ + label: format(pastYearDate, 'yyyy'), + startAt: format(startOfYear(pastYearDate), dateFormat), + endAt: format(endOfYear(pastYearDate), dateFormat) + }); + } + + for (let i = 1; i <= 3; i++) { + const pastMonthDate = sub(today, {months: i}); + filters.push({ + label: format(pastMonthDate, 'MMMM', {locale: localeES}), + startAt: format(startOfMonth(pastMonthDate), dateFormat), + endAt: format(endOfMonth(pastMonthDate), dateFormat) + }); + } + return filters; } From c2a7e6d49f2c6e0e5b83eb071b2302b9238ec6ae Mon Sep 17 00:00:00 2001 From: "J. Alvarez" Date: Mon, 27 Apr 2020 17:41:20 -0500 Subject: [PATCH 2/2] Improved code according to PR comments --- src/filter.js | 49 +++++++++++++++++++------------------------------ 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/src/filter.js b/src/filter.js index f626c2b..9681027 100644 --- a/src/filter.js +++ b/src/filter.js @@ -5,50 +5,39 @@ const startOfMonth = require('date-fns/startOfMonth') const endOfMonth = require('date-fns/endOfMonth') const startOfYear = require('date-fns/startOfYear') const endOfYear = require('date-fns/endOfYear') +const DATE_FORMAT = 'yyyy/MM/dd'; -const makeFilter = (date) => { - - const today = new Date(2020,0,1); - const dateFormat = 'yyyy/MM/dd'; +function createDayFilter(label, date, days) { + return { + label: label, + startAt: format(sub(date, { days: days }), DATE_FORMAT), + endAt: format(date, DATE_FORMAT) + } +} +const makeFilter = (date) => { let filters = [ - { - label: 'Últimos 7 días', - startAt: format(sub(today, { days: 7 }), dateFormat), - endAt: format(today, dateFormat) - }, - { - label: 'Últimos 28 días', - startAt: format(sub(today, { days: 28 }), dateFormat), - endAt: format(today, dateFormat) - }, - { - label: 'Últimos 90 días', - startAt: format(sub(today, { days: 90 }), dateFormat), - endAt: format(today, dateFormat) - }, - { - label: 'Últimos 365 días', - startAt: format(sub(today, { days: 365 }), dateFormat), - endAt: format(today, dateFormat) - } + createDayFilter('Últimos 7 días', date, 7), + createDayFilter('Últimos 28 días', date, 28), + createDayFilter('Últimos 90 días', date, 90), + createDayFilter('Últimos 365 días', date, 365) ]; for (let i = 1; i <= 3; i++) { - const pastYearDate = sub(today, {years: i}); + const pastYearDate = sub(date, {years: i}); filters.push({ label: format(pastYearDate, 'yyyy'), - startAt: format(startOfYear(pastYearDate), dateFormat), - endAt: format(endOfYear(pastYearDate), dateFormat) + startAt: format(startOfYear(pastYearDate), DATE_FORMAT), + endAt: format(endOfYear(pastYearDate), DATE_FORMAT) }); } for (let i = 1; i <= 3; i++) { - const pastMonthDate = sub(today, {months: i}); + const pastMonthDate = sub(date, {months: i}); filters.push({ label: format(pastMonthDate, 'MMMM', {locale: localeES}), - startAt: format(startOfMonth(pastMonthDate), dateFormat), - endAt: format(endOfMonth(pastMonthDate), dateFormat) + startAt: format(startOfMonth(pastMonthDate), DATE_FORMAT), + endAt: format(endOfMonth(pastMonthDate), DATE_FORMAT) }); }