diff --git a/package.json b/package.json index a05848b..86f9ad8 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,9 @@ "author": "", "license": "ISC", "dependencies": { - "date-fns": "^2.11.1" + "date-fns": "2.11.1" }, "devDependencies": { - "jest": "^25.2.7" + "jest": "25.2.7" } } diff --git a/src/filter.js b/src/filter.js index 13e106b..bc35608 100644 --- a/src/filter.js +++ b/src/filter.js @@ -1,5 +1,43 @@ +const sub = require('date-fns/sub'); +const format = require('date-fns/format'); +const startOfYear = require('date-fns/startOfYear'); +const endOfYear = require('date-fns/endOfYear'); +const startOfMonth = require('date-fns/startOfMonth'); +const endOfMonth = require('date-fns/endOfMonth'); +const esLocale = require('date-fns/locale/es'); + const makeFilter = (date) => { + const todayFormat = format(date, 'yyyy/MM/dd'); + const numOfDays = [7, 28, 90, 365]; + const numOfMonths = [1, 2, 3]; + const numOfYears = [1, 2, 3]; + let filters = []; + + numOfDays.forEach(number => { + filters.push({ + label: `Últimos ${number} días`, + startAt: format(sub(date, {days: number}), 'yyyy/MM/dd'), + endAt: todayFormat + }); + }); + + numOfYears.forEach(number => { + filters.push({ + label: format(startOfYear(sub(date, {years: number})),'yyyy'), + startAt: format(startOfYear(sub(date, {years: number})), 'yyyy/MM/dd'), + endAt: format(endOfYear(sub(date, {years: number})), 'yyyy/MM/dd') + }); + }); + + numOfMonths.forEach(number => { + filters.push({ + label: format(sub(date, {months: number}),'MMMM', {locale: esLocale}), + startAt: format(startOfMonth(sub(date, {months: number})), 'yyyy/MM/dd'), + endAt: format(endOfMonth(sub(date, {months: number})), 'yyyy/MM/dd') + }) + }) + return filters; }