mirror of
https://github.com/umami-software/umami.git
synced 2026-02-04 04:37:11 +01:00
Display page views and unique visitors.
This commit is contained in:
parent
bdcdcd9d13
commit
ce92c7897d
16 changed files with 162 additions and 44 deletions
60
lib/date.js
60
lib/date.js
|
|
@ -1,9 +1,24 @@
|
|||
import moment from 'moment-timezone';
|
||||
import { addMinutes, endOfDay, subDays, subHours } from 'date-fns';
|
||||
import {
|
||||
addMinutes,
|
||||
addHours,
|
||||
startOfDay,
|
||||
endOfHour,
|
||||
endOfDay,
|
||||
startOfHour,
|
||||
addDays,
|
||||
subDays,
|
||||
subHours,
|
||||
differenceInHours,
|
||||
differenceInDays,
|
||||
} from 'date-fns';
|
||||
|
||||
export function getTimezone() {
|
||||
const tz = moment.tz.guess();
|
||||
return moment.tz.zone(tz).abbr(new Date().getTimezoneOffset());
|
||||
return moment.tz.guess();
|
||||
}
|
||||
|
||||
export function getTimezonAbbr() {
|
||||
return moment.tz.zone(getTimezone()).abbr(new Date().getTimezoneOffset());
|
||||
}
|
||||
|
||||
export function getLocalTime(t) {
|
||||
|
|
@ -12,26 +27,51 @@ export function getLocalTime(t) {
|
|||
|
||||
export function getDateRange(value) {
|
||||
const now = new Date();
|
||||
const endToday = endOfDay(now);
|
||||
const hour = endOfHour(now);
|
||||
const day = endOfDay(now);
|
||||
|
||||
switch (value) {
|
||||
case '7d':
|
||||
return {
|
||||
startDate: subDays(endToday, 7),
|
||||
endDate: endToday,
|
||||
startDate: subDays(day, 7),
|
||||
endDate: day,
|
||||
unit: 'day',
|
||||
};
|
||||
case '30d':
|
||||
return {
|
||||
startDate: subDays(endToday, 30),
|
||||
endDate: endToday,
|
||||
startDate: subDays(day, 30),
|
||||
endDate: day,
|
||||
unit: 'day',
|
||||
};
|
||||
default:
|
||||
return {
|
||||
startDate: subHours(now, 24),
|
||||
endDate: now,
|
||||
startDate: subHours(hour, 24),
|
||||
endDate: hour,
|
||||
unit: 'hour',
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
const dateFuncs = {
|
||||
hour: [differenceInHours, addHours, startOfHour],
|
||||
day: [differenceInDays, addDays, startOfDay],
|
||||
};
|
||||
|
||||
export function getDateArray(data, startDate, endDate, unit) {
|
||||
const arr = [];
|
||||
const [diff, add, normalize] = dateFuncs[unit];
|
||||
const n = diff(endDate, startDate);
|
||||
|
||||
function findData(t) {
|
||||
return data.find(e => getLocalTime(e.t).getTime() === normalize(t).getTime())?.y || 0;
|
||||
}
|
||||
|
||||
for (let i = 0; i < n; i++) {
|
||||
const t = add(startDate, i + 1);
|
||||
const y = findData(t);
|
||||
|
||||
arr.push({ t, y });
|
||||
}
|
||||
|
||||
return arr;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue