@tidyjs/tidy-moment
Version:
Moment.js extensions for tidyjs
50 lines (47 loc) • 1.45 kB
JavaScript
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