From c2513bfa631d09f05991895bc9d22a83e1dec588 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Tue, 22 Oct 2024 15:45:14 +0900 Subject: [PATCH] report vercel test --- package.json | 2 ++ pnpm-lock.yaml | 32 +++++++++++++------ .../reports/co2-report-01/+server.ts | 21 ++++++------ .../[dev_eui]/reports/co2-report-01.ts | 16 +++++----- 4 files changed, 44 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index b4ceb3e..c505913 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,9 @@ "@supabase/ssr": "^0.4.0", "@supabase/supabase-js": "^2.45.0", "bufferutil": "^4.0.8", + "canvas": "^2.11.2", "chart.js": "4", + "chartjs-node-canvas": "^4.1.6", "d3-node": "^3.0.0", "highcharts-export-server": "^4.0.2", "leaflet": "^1.9.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0224424..5afc69a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,9 +20,15 @@ importers: bufferutil: specifier: ^4.0.8 version: 4.0.8 + canvas: + specifier: ^2.11.2 + version: 2.11.2 chart.js: specifier: '4' version: 4.4.4 + chartjs-node-canvas: + specifier: ^4.1.6 + version: 4.1.6(chart.js@4.4.4) d3-node: specifier: ^3.0.0 version: 3.0.0(bufferutil@4.0.8)(canvas@2.11.2)(utf-8-validate@6.0.4) @@ -2211,6 +2217,11 @@ packages: resolution: {integrity: sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==} engines: {pnpm: '>=8'} + chartjs-node-canvas@4.1.6: + resolution: {integrity: sha512-UQJbPWrvqB/FoLclGA9BaLQmZbzSYlujF4w8NZd6Xzb+sqgACBb2owDX6m7ifCXLjUW5Nz0Qx0qqrTtQkkSoYw==} + peerDependencies: + chart.js: ^3.5.1 + check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -7684,7 +7695,6 @@ snapshots: transitivePeerDependencies: - encoding - supports-color - optional: true chai@5.1.1: dependencies: @@ -7709,6 +7719,15 @@ snapshots: dependencies: '@kurkle/color': 0.3.2 + chartjs-node-canvas@4.1.6(chart.js@4.4.4): + dependencies: + canvas: 2.11.2 + chart.js: 4.4.4 + tslib: 2.6.3 + transitivePeerDependencies: + - encoding + - supports-color + check-error@2.1.1: {} chokidar@3.6.0: @@ -8265,7 +8284,6 @@ snapshots: decompress-response@4.2.1: dependencies: mimic-response: 2.1.0 - optional: true deep-eql@5.0.2: {} @@ -9533,8 +9551,7 @@ snapshots: mime@1.6.0: {} - mimic-response@2.1.0: - optional: true + mimic-response@2.1.0: {} min-indent@1.0.1: {} @@ -9618,8 +9635,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.20.0: - optional: true + nan@2.20.0: {} nanoid@3.3.7: {} @@ -10302,15 +10318,13 @@ snapshots: signal-exit@4.1.0: {} - simple-concat@1.0.1: - optional: true + simple-concat@1.0.1: {} simple-get@3.1.1: dependencies: decompress-response: 4.2.1 once: 1.4.0 simple-concat: 1.0.1 - optional: true simple-swizzle@0.2.2: dependencies: diff --git a/src/routes/(api)/api/v1/devices/[dev_eui]/reports/co2-report-01/+server.ts b/src/routes/(api)/api/v1/devices/[dev_eui]/reports/co2-report-01/+server.ts index bd31aef..81fec86 100644 --- a/src/routes/(api)/api/v1/devices/[dev_eui]/reports/co2-report-01/+server.ts +++ b/src/routes/(api)/api/v1/devices/[dev_eui]/reports/co2-report-01/+server.ts @@ -1,22 +1,23 @@ // Import necessary modules import { error, redirect, type RequestHandler } from "@sveltejs/kit"; -import PdfPrinter from 'pdfmake'; -import pdfFonts from 'pdfmake/build/vfs_fonts'; -import fs from 'fs'; -import path from 'path'; import moment from "moment"; -import D3Node from 'd3-node'; -import * as d3 from 'd3'; -import sharp from 'sharp'; // Define the GET handler -export const GET: RequestHandler = async ({ params, fetch, locals: { supabase, safeGetSession } }) => { +export const GET: RequestHandler = async ({ params, fetch, url, locals: { supabase, safeGetSession } }) => { const session = await safeGetSession(); if (!session?.user) { throw redirect(303, '/auth/unauthorized'); } + const month = url.searchParams.get('month'); + if (!month) { + throw error(400, 'You must include a month'); + } + if (moment(month).isAfter(new Date())) { + throw error(400, 'month must be in the past'); + } + const devEui = params.dev_eui; if (!devEui) { @@ -25,7 +26,7 @@ export const GET: RequestHandler = async ({ params, fetch, locals: { supabase, s // Fetch the data for the device const response = await fetch( - `/api/v1/devices/${params.dev_eui}/data?firstDataDate=${moment().startOf('month').toISOString()}&lastDataDate=${moment().endOf('month').toISOString()}&timezone=asia/tokyo` + `/api/v1/devices/${params.dev_eui}/data?firstDataDate=${moment(month).startOf('month').toISOString()}&lastDataDate=${moment(month).endOf('month').toISOString()}&timezone=asia/tokyo` ); if (!response.ok) { @@ -83,7 +84,7 @@ export const GET: RequestHandler = async ({ params, fetch, locals: { supabase, s ['部署:', 'ペットフード事業部'], ['使用場所:', location.name], ['センサー名:', data.device.name], - ['測定期間', `${moment().startOf('month').format('YYYY/MM/DD')} - ${moment().endOf('month').format('YYYY/MM/DD')}`], + ['測定期間', `${moment(month).startOf('month').format('YYYY/MM/DD')} - ${moment(month).endOf('month').format('YYYY/MM/DD')}`], ['DevEUI', devEui] ]; const sensorDetails = [ diff --git a/src/routes/app/devices/[dev_eui]/reports/co2-report-01.ts b/src/routes/app/devices/[dev_eui]/reports/co2-report-01.ts index b307fa0..20f1d80 100644 --- a/src/routes/app/devices/[dev_eui]/reports/co2-report-01.ts +++ b/src/routes/app/devices/[dev_eui]/reports/co2-report-01.ts @@ -70,7 +70,7 @@ export function buildPdfDefinition(data: any, chartImageBase64: string) { const sampleCount = combinedArray.length; const sensorDetails = [ - ['Data Type', 'Temperature'], + ['データタイプ', '温度'], ['サンプリング数', sampleCount.toString()], ['最大値', `${maxTemperature}℃`], ['最小値', `${minTemperature}℃`], @@ -85,7 +85,7 @@ export function buildPdfDefinition(data: any, chartImageBase64: string) { ) / sampleCount; const humidityDetails = [ - ['Data Type', 'Humidity'], + ['データタイプ', '湿度'], ['サンプリング数', sampleCount.toString()], ['最大湿度', `${maxHumidity}%`], ['最小湿度', `${minHumidity}%`], @@ -100,7 +100,7 @@ export function buildPdfDefinition(data: any, chartImageBase64: string) { ) / sampleCount; const co2Details = [ - ['Data Type', 'CO2'], + ['データタイプ', 'CO2'], ['サンプリング数', sampleCount.toString()], ['最大CO2濃度', `${maxCO2}ppm`], ['最小CO2濃度', `${minCO2}ppm`], @@ -139,7 +139,7 @@ export function buildPdfDefinition(data: any, chartImageBase64: string) { const docDefinition = { content: [ { - text: '週次 (or 月次) 温度データレポート', + text: '月次データレポート', style: 'header', alignment: 'center', margin: [0, 0, 0, 10], @@ -150,7 +150,7 @@ export function buildPdfDefinition(data: any, chartImageBase64: string) { width: '25%', stack: [ { - text: 'Report Details', + text: 'レポート詳細', style: 'subheader', margin: [0, 0, 0, 3], }, @@ -167,7 +167,7 @@ export function buildPdfDefinition(data: any, chartImageBase64: string) { width: '25%', stack: [ { - text: 'Temperature Details', + text: '温度詳細', style: 'subheader', margin: [0, 0, 0, 3], }, @@ -184,7 +184,7 @@ export function buildPdfDefinition(data: any, chartImageBase64: string) { width: '25%', stack: [ { - text: 'Humidity Details', + text: '湿度詳細', style: 'subheader', margin: [0, 0, 0, 3], }, @@ -201,7 +201,7 @@ export function buildPdfDefinition(data: any, chartImageBase64: string) { width: '25%', stack: [ { - text: 'CO2 Details', + text: 'Co2 詳細', style: 'subheader', margin: [0, 0, 0, 3], },