UNPKG

@tidyjs/tidy-moment

Version:

Moment.js extensions for tidyjs

50 lines (47 loc) 1.45 kB
import moment from 'moment'; import { tidy, mutate, groupBy, summarize, first } from '@tidyjs/tidy'; function summarizeMomentGranularity(granularity, summarySpec, options) { const _summarizeMomentGranularity = (items) => { options = options != null ? options : {}; const { timestampKey = "timestamp", dateKey = "date", rest = first, ...other } = options; const dateFormats = { s: "YYYY-MM-DDTHH:mm:ss", seconds: "YYYY-MM-DDTHH:mm:ss", second: "YYYY-MM-DDTHH:mm:ss", min: "YYYY-MM-DDTHH:mm", minutes: "YYYY-MMDDTHH:mm", minute: "YYYY-MM-DDTHH:mm", d: "YYYY-MM-DD", days: "YYYY-MM-DD", day: "YYYY-MM-DD", w: "GGGG-WW", week: "GGGG-WW", weeks: "GGGG-WW", m: "YYYY-MM", month: "YYYY-MM", months: "YYYY-MM", q: "YYYY-[Q]Q", quarter: "YYYY-[Q]Q", quarters: "YYYY-[Q]Q", y: "YYYY", year: "YYYY", years: "YYYY" }; const dateFormat = dateFormats[granularity]; const results = tidy(items, mutate({ [dateKey]: (d) => moment.utc(d[dateKey].format(dateFormat), dateFormat), [timestampKey]: (d) => d[dateKey].toISOString() }), groupBy([timestampKey], [ summarize(summarySpec, {rest, ...other}) ])); return results; }; return _summarizeMomentGranularity; } export { summarizeMomentGranularity }; //# sourceMappingURL=summarizeMomentGranularity.js.map