From d2f3dac6c3f93cd2f5341d05bc794e875bea2f44 Mon Sep 17 00:00:00 2001 From: "Cristian F. Tovar" Date: Tue, 5 May 2020 20:49:35 -0500 Subject: [PATCH 1/5] I got it --- README.md | 1 + src/filter.js | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 714db49..96efe81 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ Ejemplo: (con base en `new Date(2020,0,1)` como fecha de entrada) { label: '2019', startAt: '2019/01/01', endAt: '2019/12/31' }, { label: '2018', startAt: '2018/01/01', endAt: '2018/12/31' }, { label: '2017', startAt: '2017/01/01', endAt: '2017/12/31' }, + { label: 'diciembre', startAt: '2019/12/01', endAt: '2019/12/31' }, { label: 'noviembre', startAt: '2019/11/01', endAt: '2019/11/30' }, { label: 'octubre', startAt: '2019/10/01', endAt: '2019/10/31' } diff --git a/src/filter.js b/src/filter.js index 13e106b..02cd201 100644 --- a/src/filter.js +++ b/src/filter.js @@ -1,6 +1,16 @@ const makeFilter = (date) => { - let filters = []; - return filters; + // let filters = [week, month, ninety, year, years,quater ]; + const currentTime = date.getTime(); + const lastWeek = currentTime-(1000*60*60*24*7); + console.log(`the current time is : ${currentTime}\nAnd the last week was: ${lastWeek}`); + + const d = new Date(0); + const startAt = d.setUTCMilliseconds(lastWeek) + console.log(new Date(startAt)); + + // return filters; } -module.exports = { makeFilter }; \ No newline at end of file +makeFilter(new Date(2020,0,1)) + +// module.exports = { makeFilter }; \ No newline at end of file From 13417d5174b5bca8a4faa0b0c8dd097f0ec22318 Mon Sep 17 00:00:00 2001 From: "Cristian F. Tovar" Date: Wed, 6 May 2020 12:24:52 -0500 Subject: [PATCH 2/5] So cute that I attempt this challenge and there is a library --- src/filter.js | 92 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 7 deletions(-) diff --git a/src/filter.js b/src/filter.js index 02cd201..8fa65e1 100644 --- a/src/filter.js +++ b/src/filter.js @@ -1,13 +1,91 @@ +import { lastDayOfMonth } from "date-fns"; + const makeFilter = (date) => { - // let filters = [week, month, ninety, year, years,quater ]; - const currentTime = date.getTime(); - const lastWeek = currentTime-(1000*60*60*24*7); - console.log(`the current time is : ${currentTime}\nAnd the last week was: ${lastWeek}`); + const entryDate = date.getTime(); + const DAY = 1000*60*60*24 + const last7daysRange = entryDate-(DAY*7); + const last28daysRange = entryDate-(DAY*28); + const last90daysRange = entryDate-(DAY*90); + const last365daysRange = entryDate-(DAY*365); + const last3yearsRanges = [last365daysRange,last365daysRange-(DAY*365),last365daysRange-(DAY*365*2)]; + + + console.log(`the current time is : ${entryDate}\nAnd the last week was: ${last7daysRange}`); - const d = new Date(0); - const startAt = d.setUTCMilliseconds(lastWeek) - console.log(new Date(startAt)); + const threater = (range) =>{ + const d = new Date(0); + const milisecondsTime = d.setUTCMilliseconds(range); + return new Date(milisecondsTime) + } + + const last7days = { + label: 'Últimos 7 días', + startAt: threater(last7daysRange).toLocaleDateString('en-ZA'), + endAt: date.toLocaleDateString('en-ZA') + }; + + const last28days = { + label: 'Últimos 28 días', + startAt: threater(last28daysRange).toLocaleDateString('en-ZA'), + endAt: date.toLocaleDateString('en-ZA') + } + const last90days = { + label: 'Últimos 28 días', + startAt: threater(last90daysRange).toLocaleDateString('en-ZA'), + endAt: date.toLocaleDateString('en-ZA') + } + + const last365days = { + label: 'Últimos 365 días', + startAt: threater(last365daysRange).toLocaleDateString('en-ZA'), + endAt: date.toLocaleDateString('en-ZA') + } + + const last3years = [ + { + label: threater(last3yearsRanges[0]).getFullYear().toString(), + startAt: threater(last3yearsRanges[0]).toLocaleDateString('en-ZA'), + endAt: threater(last3yearsRanges[0]+(DAY*364)).toLocaleDateString('en-ZA') + }, + { + label: threater(last3yearsRanges[1]).getFullYear().toString(), + startAt: threater(last3yearsRanges[1]).toLocaleDateString('en-ZA'), + endAt: threater(last3yearsRanges[1]+(DAY*364)).toLocaleDateString('en-ZA') + }, + { + label: threater(last3yearsRanges[2]).getFullYear().toString(), + startAt: threater(last3yearsRanges[2]).toLocaleDateString('en-ZA'), + endAt: threater(last3yearsRanges[2]+(DAY*364)).toLocaleDateString('en-ZA') + }, + ] + + const lastMonth = date.getMonth() - 1; + console.log(lastMonth); + + + const lastquarter = [ + { + label: date.toLocaleDateString('default', { month: 'long'}), + startAt: threater(last3yearsRanges[0]).toLocaleDateString('en-ZA'), + endAt: threater(last3yearsRanges[0]+(DAY*364)).toLocaleDateString('en-ZA') + }, + { + label: threater(last3yearsRanges[1]).getFullYear().toString(), + startAt: threater(last3yearsRanges[1]).toLocaleDateString('en-ZA'), + endAt: threater(last3yearsRanges[1]+(DAY*364)).toLocaleDateString('en-ZA') + }, + { + label: threater(last3yearsRanges[2]).getFullYear().toString(), + startAt: threater(last3yearsRanges[2]).toLocaleDateString('en-ZA'), + endAt: threater(last3yearsRanges[2]+(DAY*364)).toLocaleDateString('en-ZA') + }, + ] + let filters = [last7days, last28days, last90days, last365days, last3years, lastquarter + // ,quater + ]; + + console.log(filters); // return filters; } From 9471fead13f6fde8bab572b1ca7670ee6f54c1a3 Mon Sep 17 00:00:00 2001 From: "Cristian F. Tovar" Date: Wed, 6 May 2020 20:18:11 -0500 Subject: [PATCH 3/5] got problem importing and using require --- package.json | 1 + src/filter.js | 135 ++++++++++++++++++++++---------------------------- 2 files changed, 60 insertions(+), 76 deletions(-) diff --git a/package.json b/package.json index a05848b..6908615 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "dependencies": { "date-fns": "^2.11.1" }, + "type":"module", "devDependencies": { "jest": "^25.2.7" } diff --git a/src/filter.js b/src/filter.js index 8fa65e1..ac21786 100644 --- a/src/filter.js +++ b/src/filter.js @@ -1,94 +1,77 @@ -import { lastDayOfMonth } from "date-fns"; +import fns from 'date-fns' +const { format , sub, startOfYear, endOfYear, startOfMonth, endOfMonth, locale} = fns; const makeFilter = (date) => { - const entryDate = date.getTime(); - const DAY = 1000*60*60*24 - const last7daysRange = entryDate-(DAY*7); - const last28daysRange = entryDate-(DAY*28); - const last90daysRange = entryDate-(DAY*90); - const last365daysRange = entryDate-(DAY*365); - const last3yearsRanges = [last365daysRange,last365daysRange-(DAY*365),last365daysRange-(DAY*365*2)]; - + const expetedFormat = 'yyyy/MM/dd' + const last7daysRange = format(sub(date,{days: 7}), expetedFormat); + const last28daysRange = format(sub(date,{days: 28}), expetedFormat); + const last90daysRange = format(sub(date,{days: 90}), expetedFormat); + const last365daysRange = format(sub(date,{days: 365}), expetedFormat); + - console.log(`the current time is : ${entryDate}\nAnd the last week was: ${last7daysRange}`); - const threater = (range) =>{ - const d = new Date(0); - const milisecondsTime = d.setUTCMilliseconds(range); - return new Date(milisecondsTime) - } - const last7days = { label: 'Últimos 7 días', - startAt: threater(last7daysRange).toLocaleDateString('en-ZA'), - endAt: date.toLocaleDateString('en-ZA') + startAt: last7daysRange, + endAt: format(date,expetedFormat) }; - + const last28days = { label: 'Últimos 28 días', - startAt: threater(last28daysRange).toLocaleDateString('en-ZA'), - endAt: date.toLocaleDateString('en-ZA') + startAt: last28daysRange, + endAt: format(date,expetedFormat) } const last90days = { - label: 'Últimos 28 días', - startAt: threater(last90daysRange).toLocaleDateString('en-ZA'), - endAt: date.toLocaleDateString('en-ZA') + label: 'Últimos 90 días', + startAt: last90daysRange, + endAt: format(date,expetedFormat) } - + const last365days = { label: 'Últimos 365 días', - startAt: threater(last365daysRange).toLocaleDateString('en-ZA'), - endAt: date.toLocaleDateString('en-ZA') + startAt: last365daysRange, + endAt: format(date,expetedFormat) } + + const datesGenerator = (date) =>{ + const arr = []; + for (let i=1 ; i <= 3; i++){ + const a = sub(date,{years: i}); + const y = { + label: format(a,'yyyy'), + startAt: format(startOfYear(a), expetedFormat), + endAt: format (endOfYear(new Date(a)), expetedFormat) + } + const b = sub(date,{months: i}); + const z = { + label: format(b,'MMMM'), + startAt: format (startOfYear(b), expetedFormat), + endAt: format (endOfYear(new Date(b)), expetedFormat) + } + + arr.push(z) + console.log(`fecha añadida ${z.label} ${z.startAt} ${z.endAt}`); + } + + + return arr; + } + + const arr = datesGenerator(date); + + const last3years = arr; - const last3years = [ - { - label: threater(last3yearsRanges[0]).getFullYear().toString(), - startAt: threater(last3yearsRanges[0]).toLocaleDateString('en-ZA'), - endAt: threater(last3yearsRanges[0]+(DAY*364)).toLocaleDateString('en-ZA') - }, - { - label: threater(last3yearsRanges[1]).getFullYear().toString(), - startAt: threater(last3yearsRanges[1]).toLocaleDateString('en-ZA'), - endAt: threater(last3yearsRanges[1]+(DAY*364)).toLocaleDateString('en-ZA') - }, - { - label: threater(last3yearsRanges[2]).getFullYear().toString(), - startAt: threater(last3yearsRanges[2]).toLocaleDateString('en-ZA'), - endAt: threater(last3yearsRanges[2]+(DAY*364)).toLocaleDateString('en-ZA') - }, - ] - - const lastMonth = date.getMonth() - 1; - console.log(lastMonth); - - - const lastquarter = [ - { - label: date.toLocaleDateString('default', { month: 'long'}), - startAt: threater(last3yearsRanges[0]).toLocaleDateString('en-ZA'), - endAt: threater(last3yearsRanges[0]+(DAY*364)).toLocaleDateString('en-ZA') - }, - { - label: threater(last3yearsRanges[1]).getFullYear().toString(), - startAt: threater(last3yearsRanges[1]).toLocaleDateString('en-ZA'), - endAt: threater(last3yearsRanges[1]+(DAY*364)).toLocaleDateString('en-ZA') - }, - { - label: threater(last3yearsRanges[2]).getFullYear().toString(), - startAt: threater(last3yearsRanges[2]).toLocaleDateString('en-ZA'), - endAt: threater(last3yearsRanges[2]+(DAY*364)).toLocaleDateString('en-ZA') - }, - ] - let filters = [last7days, last28days, last90days, last365days, last3years, lastquarter - // ,quater - ]; - - console.log(filters); - // return filters; + let filters = [last7days, last28days, last90days, last365days, last3years, + // lastquarter + // ,quater + ]; + + console.log(filters); + console.log(format(date,'MMMM', locale)); + // return filters; } - -makeFilter(new Date(2020,0,1)) - -// module.exports = { makeFilter }; \ No newline at end of file + + makeFilter(new Date(2020,0,1)) + + // module.exports = { makeFilter }; \ No newline at end of file From b3d0753d132c264bdf68de4302319aedd3f4917c Mon Sep 17 00:00:00 2001 From: "Cristian F. Tovar" Date: Wed, 6 May 2020 23:07:32 -0500 Subject: [PATCH 4/5] at last --- package.json | 1 - src/filter.js | 115 ++++++++++++++++++++------------------------------ 2 files changed, 46 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index 6908615..a05848b 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ "dependencies": { "date-fns": "^2.11.1" }, - "type":"module", "devDependencies": { "jest": "^25.2.7" } diff --git a/src/filter.js b/src/filter.js index ac21786..9c12fbc 100644 --- a/src/filter.js +++ b/src/filter.js @@ -1,77 +1,54 @@ -import fns from 'date-fns' -const { format , sub, startOfYear, endOfYear, startOfMonth, endOfMonth, locale} = fns; +const sub = require('date-fns/sub'); +const format = require('date-fns/format'); +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) => { - const expetedFormat = 'yyyy/MM/dd' - const last7daysRange = format(sub(date,{days: 7}), expetedFormat); - const last28daysRange = format(sub(date,{days: 28}), expetedFormat); - const last90daysRange = format(sub(date,{days: 90}), expetedFormat); - const last365daysRange = format(sub(date,{days: 365}), expetedFormat); - - - - const last7days = { - label: 'Últimos 7 días', - startAt: last7daysRange, - endAt: format(date,expetedFormat) - }; - - const last28days = { - label: 'Últimos 28 días', - startAt: last28daysRange, - endAt: format(date,expetedFormat) +const EXPECTED_FORMAT = 'yyyy/MM/dd'; + +const range = (label, date, days) => { + return { + label: label, + startAt: format(sub(date, { days: days }), EXPECTED_FORMAT), + endAt: format(date, EXPECTED_FORMAT) } - - const last90days = { - label: 'Últimos 90 días', - startAt: last90daysRange, - endAt: format(date,expetedFormat) +} + +const makeFilter = (date) => { + const values = [7,28,90,365]; + const filters = []; + + const filtersByAmountDays = (i) =>{ + const filter = range(`Últimos ${i} días`, date, i); + filters.push(filter); } - - const last365days = { - label: 'Últimos 365 días', - startAt: last365daysRange, - endAt: format(date,expetedFormat) + + values.forEach(filtersByAmountDays); + + for (let i = 1; i <= 3; i++) { + const yearlyRange = sub(date, {years: i}); + const obj = { + label: format(yearlyRange, 'yyyy'), + startAt: format(startOfYear(yearlyRange), EXPECTED_FORMAT), + endAt: format(endOfYear(yearlyRange), EXPECTED_FORMAT) + } + filters.push(obj); } - - const datesGenerator = (date) =>{ - const arr = []; - for (let i=1 ; i <= 3; i++){ - const a = sub(date,{years: i}); - const y = { - label: format(a,'yyyy'), - startAt: format(startOfYear(a), expetedFormat), - endAt: format (endOfYear(new Date(a)), expetedFormat) - } - const b = sub(date,{months: i}); - const z = { - label: format(b,'MMMM'), - startAt: format (startOfYear(b), expetedFormat), - endAt: format (endOfYear(new Date(b)), expetedFormat) - } - - arr.push(z) - console.log(`fecha añadida ${z.label} ${z.startAt} ${z.endAt}`); + + for (let i = 1; i <= 3; i++) { + const monthlyRange = sub(date, {months: i}); + const obj = { + label: monthlyRange.toLocaleString('es-CO',{month:"long"}), + startAt: format(startOfMonth(monthlyRange), EXPECTED_FORMAT), + endAt: format(endOfMonth(monthlyRange), EXPECTED_FORMAT) } - - - return arr; + filters.push(obj); } + console.log(filters); + console.log(sub); - const arr = datesGenerator(date); - - const last3years = arr; - - let filters = [last7days, last28days, last90days, last365days, last3years, - // lastquarter - // ,quater - ]; - - console.log(filters); - console.log(format(date,'MMMM', locale)); - // return filters; + return filters; } - - makeFilter(new Date(2020,0,1)) - - // module.exports = { makeFilter }; \ No newline at end of file + +module.exports = { makeFilter }; \ No newline at end of file From a3dd0cc0132c349d812d860048786335b3d8f735 Mon Sep 17 00:00:00 2001 From: "Cristian F. Tovar" Date: Wed, 6 May 2020 23:48:07 -0500 Subject: [PATCH 5/5] object generator --- src/filter.js | 53 +++++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/src/filter.js b/src/filter.js index 9c12fbc..b1cf80b 100644 --- a/src/filter.js +++ b/src/filter.js @@ -7,46 +7,53 @@ const endOfYear = require('date-fns/endOfYear') const EXPECTED_FORMAT = 'yyyy/MM/dd'; -const range = (label, date, days) => { - return { - label: label, - startAt: format(sub(date, { days: days }), EXPECTED_FORMAT), - endAt: format(date, EXPECTED_FORMAT) - } -} - const makeFilter = (date) => { - const values = [7,28,90,365]; const filters = []; + const days = [7,28,90,365]; + + const objGen = (label,startAt,endAt)=>{ + return { + label: label, + startAt: startAt, + endAt: endAt + } + } + + const filterObj = (label, date, subtract) => { + const newFilter = objGen( + label, + format(sub(date, { days: subtract }), EXPECTED_FORMAT), + format(date, EXPECTED_FORMAT) + ) + return newFilter; + } const filtersByAmountDays = (i) =>{ - const filter = range(`Últimos ${i} días`, date, i); + const filter = filterObj(`Últimos ${i} días`, date, i); filters.push(filter); } - values.forEach(filtersByAmountDays); + days.forEach(filtersByAmountDays); for (let i = 1; i <= 3; i++) { const yearlyRange = sub(date, {years: i}); - const obj = { - label: format(yearlyRange, 'yyyy'), - startAt: format(startOfYear(yearlyRange), EXPECTED_FORMAT), - endAt: format(endOfYear(yearlyRange), EXPECTED_FORMAT) - } + const obj = objGen( + format(yearlyRange, 'yyyy'), + format(startOfYear(yearlyRange),EXPECTED_FORMAT), + format(endOfYear(yearlyRange),EXPECTED_FORMAT) + ) filters.push(obj); } for (let i = 1; i <= 3; i++) { const monthlyRange = sub(date, {months: i}); - const obj = { - label: monthlyRange.toLocaleString('es-CO',{month:"long"}), - startAt: format(startOfMonth(monthlyRange), EXPECTED_FORMAT), - endAt: format(endOfMonth(monthlyRange), EXPECTED_FORMAT) - } + const obj = objGen( + monthlyRange.toLocaleString('es-CO',{month:"long"}), + format(startOfMonth(monthlyRange), EXPECTED_FORMAT), + format(endOfMonth(monthlyRange), EXPECTED_FORMAT) + ) filters.push(obj); } - console.log(filters); - console.log(sub); return filters; }