fix dashboard cards

This commit is contained in:
Emily
2024-07-02 17:28:29 +02:00
parent 237dccad8f
commit 6b97b4f49d
3 changed files with 12 additions and 11 deletions

View File

@@ -23,7 +23,7 @@ const props = defineProps<{
</div>
<div class="flex flex-col grow">
<div class="flex items-end gap-2">
<div class="brockmann text-text-dirty text-[1.6rem] 2xl:text-[2rem]"> {{ value }} </div>
<div class="brockmann text-text-dirty text-[1.6rem] 2xl:text-[1.9rem]"> {{ value }} </div>
<div class="poppins text-text-sub text-[.7rem] 2xl:text-[.85rem] mb-2"> {{ avg }} </div>
</div>
<div class="poppins text-text-sub text-[.9rem] 2xl:text-base"> {{ text }} </div>

View File

@@ -72,8 +72,10 @@ async function loadData(timelineEndpointName: string, target: Data) {
const pool = [...response.map(e => e.count)];
pool.pop();
const avg = pool.reduce((a, e) => a + e, 0) / pool.length;
const diffPercent = (100 / avg * (response.at(-1)?.count || 0)) - 100;
target.trend = diffPercent;
const diffPercent: number = (100 / avg * (response.at(-1)?.count || 0)) - 100;
target.trend = Math.max(Math.min(diffPercent, 99), -99);
target.ready = true;
}

View File

@@ -2,6 +2,8 @@ import { getUserProjectFromId } from "~/server/LIVE_DEMO_DATA";
import { ProjectCountModel } from "@schema/ProjectsCounts";
import { SessionModel } from "@schema/metrics/SessionSchema";
import { COUNTS_EXPIRE_TIME, COUNTS_SESSIONS_EXPIRE_TIME, Redis } from "~/server/services/CacheService";
import { EventModel } from "@schema/metrics/EventSchema";
import { VisitModel } from "@schema/metrics/VisitSchema";
export type MetricsCounts = {
eventsCount: number,
@@ -54,19 +56,16 @@ export default defineEventHandler(async event => {
const totalSessionsTime = sessionsVisitsCount.reduce((a, e) => a + e.time, 0);
const avgSessionDuration = totalSessionsTime / totalSessions;
const year = new Date().getFullYear();
const month = new Date().getMonth();
const firstEventDate = new Date(year, month, 0, 0, 0, 0, 0).getTime();
const firstViewDate = new Date(year, month, 0, 0, 0, 0, 0).getTime();
const firstEvent = await EventModel.findOne({ project_id: project._id }, { created_at: 1 });
const firstView = await VisitModel.findOne({ project_id: project._id }, { created_at: 1 });
return {
eventsCount: count[0].events,
visitsCount: count[0].visits,
sessionsVisitsCount: totalSessions || 0,
avgSessionDuration,
firstEventDate,
firstViewDate,
firstEventDate: firstEvent?.created_at.getTime() || Date.now(),
firstViewDate: firstView?.created_at.getTime() || Date.now(),
} as MetricsCounts;
});