mirror of
https://github.com/logto-io/logto.git
synced 2025-02-17 22:04:19 -05:00
feat(core): dau curve contains 0 count points (#1105)
This commit is contained in:
parent
6d3857ef35
commit
75ac874a2d
2 changed files with 47 additions and 18 deletions
|
@ -188,19 +188,41 @@ describe('dashboardRoutes', () => {
|
|||
const response = await logRequest.get('/dashboard/users/active');
|
||||
expect(response.status).toEqual(200);
|
||||
expect(response.body).toEqual({
|
||||
dauCurve: mockDailyActiveUserCounts,
|
||||
dau: {
|
||||
count: 530,
|
||||
delta: 1,
|
||||
},
|
||||
wau: {
|
||||
count: 1000,
|
||||
delta: 0,
|
||||
},
|
||||
mau: {
|
||||
count: 1000,
|
||||
delta: 0,
|
||||
},
|
||||
dauCurve: [
|
||||
{ date: '2022-05-01', count: 501 },
|
||||
{ date: '2022-05-02', count: 0 },
|
||||
{ date: '2022-05-03', count: 0 },
|
||||
{ date: '2022-05-04', count: 0 },
|
||||
{ date: '2022-05-05', count: 0 },
|
||||
{ date: '2022-05-06', count: 0 },
|
||||
{ date: '2022-05-07', count: 0 },
|
||||
{ date: '2022-05-08', count: 0 },
|
||||
{ date: '2022-05-09', count: 0 },
|
||||
{ date: '2022-05-10', count: 0 },
|
||||
{ date: '2022-05-11', count: 0 },
|
||||
{ date: '2022-05-12', count: 0 },
|
||||
{ date: '2022-05-13', count: 0 },
|
||||
{ date: '2022-05-14', count: 0 },
|
||||
{ date: '2022-05-15', count: 0 },
|
||||
{ date: '2022-05-16', count: 0 },
|
||||
{ date: '2022-05-17', count: 0 },
|
||||
{ date: '2022-05-18', count: 0 },
|
||||
{ date: '2022-05-19', count: 0 },
|
||||
{ date: '2022-05-20', count: 0 },
|
||||
{ date: '2022-05-21', count: 0 },
|
||||
{ date: '2022-05-22', count: 0 },
|
||||
{ date: '2022-05-23', count: 523 },
|
||||
{ date: '2022-05-24', count: 0 },
|
||||
{ date: '2022-05-25', count: 0 },
|
||||
{ date: '2022-05-26', count: 0 },
|
||||
{ date: '2022-05-27', count: 0 },
|
||||
{ date: '2022-05-28', count: 0 },
|
||||
{ date: '2022-05-29', count: 529 },
|
||||
{ date: '2022-05-30', count: 530 },
|
||||
],
|
||||
dau: { count: 530, delta: 1 },
|
||||
wau: { count: 1000, delta: 0 },
|
||||
mau: { count: 1000, delta: 0 },
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -14,9 +14,9 @@ import { AuthedRouter } from './types';
|
|||
|
||||
const getDateString = (day: Dayjs) => day.format('YYYY-MM-DD');
|
||||
|
||||
const lastTimestampOfDay = (day: Dayjs) => day.endOf('day').valueOf();
|
||||
const indices = (length: number) => [...Array.from({ length }).keys()];
|
||||
|
||||
const indicesFrom0To6 = [...Array.from({ length: 7 }).keys()];
|
||||
const lastTimestampOfDay = (day: Dayjs) => day.endOf('day').valueOf();
|
||||
|
||||
export default function dashboardRoutes<T extends AuthedRouter>(router: T) {
|
||||
router.get('/dashboard/users/total', async (ctx, next) => {
|
||||
|
@ -43,10 +43,10 @@ export default function dashboardRoutes<T extends AuthedRouter>(router: T) {
|
|||
const yesterdayNewUserCount = last14DaysNewUserCounts.get(getDateString(yesterday)) ?? 0;
|
||||
const todayDelta = todayNewUserCount - yesterdayNewUserCount;
|
||||
|
||||
const last7DaysNewUserCount = indicesFrom0To6
|
||||
const last7DaysNewUserCount = indices(7)
|
||||
.map((index) => getDateString(today.subtract(index, 'day')))
|
||||
.reduce((sum, date) => sum + (last14DaysNewUserCounts.get(date) ?? 0), 0);
|
||||
const newUserCountFrom13DaysAgoTo7DaysAgo = indicesFrom0To6
|
||||
const newUserCountFrom13DaysAgoTo7DaysAgo = indices(7)
|
||||
.map((index) => getDateString(today.subtract(7 + index, 'day')))
|
||||
.reduce((sum, date) => sum + (last14DaysNewUserCounts.get(date) ?? 0), 0);
|
||||
const last7DaysDelta = last7DaysNewUserCount - newUserCountFrom13DaysAgoTo7DaysAgo;
|
||||
|
@ -119,8 +119,15 @@ export default function dashboardRoutes<T extends AuthedRouter>(router: T) {
|
|||
const previousDAU = last30DauCounts.find(({ date }) => date === previousDate)?.count ?? 0;
|
||||
const dau = last30DauCounts.find(({ date }) => date === targetDate)?.count ?? 0;
|
||||
|
||||
const dauCurve = indices(30).map((index) => {
|
||||
const dateString = getDateString(targetDay.subtract(29 - index, 'day'));
|
||||
const count = last30DauCounts.find(({ date }) => date === dateString)?.count ?? 0;
|
||||
|
||||
return { date: dateString, count };
|
||||
});
|
||||
|
||||
ctx.body = {
|
||||
dauCurve: last30DauCounts,
|
||||
dauCurve,
|
||||
dau: {
|
||||
count: dau,
|
||||
delta: dau - previousDAU,
|
||||
|
|
Loading…
Add table
Reference in a new issue