From 04d035fa972e6bb57d02dd53e87535568dd0ae1e Mon Sep 17 00:00:00 2001 From: Emily Date: Thu, 6 Jun 2024 15:15:34 +0200 Subject: [PATCH] fix pdf generation --- dashboard/pages/report.vue | 25 ++++++++++++-------- dashboard/server/api/project/generate_pdf.ts | 3 +++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/dashboard/pages/report.vue b/dashboard/pages/report.vue index 418a7f6..bafd2bc 100644 --- a/dashboard/pages/report.vue +++ b/dashboard/pages/report.vue @@ -6,17 +6,22 @@ const activeProject = useActiveProject(); async function generatePDF() { - const res = await $fetch('/api/project/generate_pdf', { - ...signHeaders(), - responseType: 'blob' - }); - const url = URL.createObjectURL(res); - const a = document.createElement('a'); - a.href = url; - a.download = `Report.pdf`; - a.click(); - URL.revokeObjectURL(url); + try { + const res = await $fetch('/api/project/generate_pdf', { + ...signHeaders(), + responseType: 'blob' + }); + + const url = URL.createObjectURL(res); + const a = document.createElement('a'); + a.href = url; + a.download = `Report.pdf`; + a.click(); + URL.revokeObjectURL(url); + } catch (ex: any) { + alert(ex.message); + } } diff --git a/dashboard/server/api/project/generate_pdf.ts b/dashboard/server/api/project/generate_pdf.ts index 3480599..dd1468a 100644 --- a/dashboard/server/api/project/generate_pdf.ts +++ b/dashboard/server/api/project/generate_pdf.ts @@ -129,6 +129,9 @@ export default defineEventHandler(async event => { const firstEventDate = await EventModel.findOne({ project_id: project._id }, { created_at: 1 }, { sort: { created_at: 1 } }); const firstViewDate = await VisitModel.findOne({ project_id: project._id }, { created_at: 1 }, { sort: { created_at: 1 } }); + if (!firstEventDate || !firstViewDate) { + return setResponseStatus(event, 400, 'Not enough data to generate report'); + } const avgEventsDay = () => { const days = (Date.now() - (firstEventDate?.created_at.getTime() || 0)) / 1000 / 60 / 60 / 24;