packages/lib/reporting-components/report-model/report-time-ranges.js (78 lines of code) (raw):
import {i18n} from 'hub-dashboard-addons/dist/localization';
const ReportTimeRanges = {
Fixed: {
id: 'FIXED',
text: () => i18n('Fixed'),
getDefaultTimePeriod: () => {
const date = new Date();
const weekLength = 7;
const from = Date.UTC(
date.getFullYear(), date.getMonth(), date.getDate() - weekLength
);
const to = Date.UTC(
date.getFullYear(), date.getMonth(), date.getDate() + 1
) - 1;
return {from, to};
}
},
Today: {
id: 'TODAY',
oneDayPeriod: true,
text: () => i18n('Today')
},
Yesterday: {
id: 'YESTERDAY',
oneDayPeriod: true,
text: () => i18n('Yesterday')
},
LastWorkingDay: {
id: 'LAST_WORKING_DAY',
oneDayPeriod: true,
text: () => i18n('Last working day')
},
ThisWeek: {
id: 'THIS_WEEK',
text: () => i18n('This week')
},
ThisMonth: {
id: 'THIS_MONTH',
text: () => i18n('This month')
},
ThisYear: {
id: 'THIS_YEAR',
text: () => i18n('This year')
},
LastWeek: {
id: 'LAST_WEEK',
text: () => i18n('Last week')
},
LastMonth: {
id: 'LAST_MONTH',
text: () => i18n('Last month')
}
};
function allRanges() {
return Object.keys(ReportTimeRanges).map(
key => ReportTimeRanges[key]
);
}
function oneDayRanges() {
return allRanges().filter(
range => range.oneDayPeriod
);
}
function severalDaysRanges() {
return allRanges().filter(
range => !range.oneDayPeriod
);
}
function fixedRange() {
return ReportTimeRanges.Fixed;
}
export default {
...ReportTimeRanges,
oneDayRanges,
severalDaysRanges,
fixedRange,
allRanges
};