From 6455591fa85c482136e6aa49916af8be9181212f Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Wed, 19 Oct 2022 09:45:51 -0400 Subject: [PATCH] pdf content disposition config option --- data/config.base.js | 3 ++- data/config.base.ts | 3 ++- handlers/print-get/pdf.js | 2 +- handlers/print-get/pdf.ts | 2 +- helpers/functions.config.d.ts | 1 + helpers/functions.config.js | 6 +++++- helpers/functions.config.ts | 11 ++++++++++- types/configTypes.d.ts | 3 +++ types/configTypes.ts | 3 +++ 9 files changed, 28 insertions(+), 6 deletions(-) diff --git a/data/config.base.js b/data/config.base.js index 8d25456a..85b0d8e6 100644 --- a/data/config.base.js +++ b/data/config.base.js @@ -10,7 +10,8 @@ export const config = { lot: {}, lotOccupancy: {}, workOrders: {}, - adminCleanup: {} + adminCleanup: {}, + printPdf: {} } }; export default config; diff --git a/data/config.base.ts b/data/config.base.ts index a14e10b3..82ea1cc5 100644 --- a/data/config.base.ts +++ b/data/config.base.ts @@ -12,7 +12,8 @@ export const config: Config = { lot: {}, lotOccupancy: {}, workOrders: {}, - adminCleanup: {} + adminCleanup: {}, + printPdf: {} } }; diff --git a/handlers/print-get/pdf.js b/handlers/print-get/pdf.js index 5df76984..c4d52a3c 100644 --- a/handlers/print-get/pdf.js +++ b/handlers/print-get/pdf.js @@ -6,7 +6,7 @@ import * as lotOccupancyFunctions from "../../helpers/functions.lotOccupancy.js" import { getReportData, getPdfPrintConfig } from "../../helpers/functions.print.js"; import { convertHTMLToPDF } from "@cityssm/pdf-puppeteer"; import camelcase from "camelcase"; -const attachmentOrInline = "attachment"; +const attachmentOrInline = configFunctions.getProperty("settings.printPdf.contentDisposition"); export const handler = async (request, response, next) => { const printName = request.params.printName; const printConfig = getPdfPrintConfig(printName); diff --git a/handlers/print-get/pdf.ts b/handlers/print-get/pdf.ts index 694d745e..7bfa2f38 100644 --- a/handlers/print-get/pdf.ts +++ b/handlers/print-get/pdf.ts @@ -12,7 +12,7 @@ import { getReportData, getPdfPrintConfig } from "../../helpers/functions.print. import { convertHTMLToPDF } from "@cityssm/pdf-puppeteer"; import camelcase from "camelcase"; -const attachmentOrInline: "attachment" | "inline" = "attachment"; +const attachmentOrInline = configFunctions.getProperty("settings.printPdf.contentDisposition"); export const handler: RequestHandler = async (request, response, next) => { const printName = request.params.printName; diff --git a/helpers/functions.config.d.ts b/helpers/functions.config.d.ts index edab9869..f6802674 100644 --- a/helpers/functions.config.d.ts +++ b/helpers/functions.config.d.ts @@ -41,4 +41,5 @@ export declare function getProperty(propertyName: "settings.workOrders.workOrder export declare function getProperty(propertyName: "settings.workOrders.calendarEmailAddress"): string; export declare function getProperty(propertyName: "settings.workOrders.prints"): string[]; export declare function getProperty(propertyName: "settings.adminCleanup.recordDeleteAgeDays"): number; +export declare function getProperty(propertyName: "settings.printPdf.contentDisposition"): "attachment" | "inline"; export declare const keepAliveMillis: number; diff --git a/helpers/functions.config.js b/helpers/functions.config.js index 98888959..06397f2d 100644 --- a/helpers/functions.config.js +++ b/helpers/functions.config.js @@ -38,8 +38,12 @@ configFallbackValues.set("settings.workOrders.workOrderNumberLength", 6); configFallbackValues.set("settings.workOrders.workOrderMilestoneDateRecentBeforeDays", 5); configFallbackValues.set("settings.workOrders.workOrderMilestoneDateRecentAfterDays", 60); configFallbackValues.set("settings.workOrders.calendarEmailAddress", "no-reply@127.0.0.1"); -configFallbackValues.set("settings.workOrders.prints", ["pdf/workOrder", "pdf/workOrder-commentLog"]); +configFallbackValues.set("settings.workOrders.prints", [ + "pdf/workOrder", + "pdf/workOrder-commentLog" +]); configFallbackValues.set("settings.adminCleanup.recordDeleteAgeDays", 60); +configFallbackValues.set("settings.printPdf.contentDisposition", "attachment"); export function getProperty(propertyName) { const propertyNameSplit = propertyName.split("."); let currentObject = config; diff --git a/helpers/functions.config.ts b/helpers/functions.config.ts index 45c33100..b2150acb 100644 --- a/helpers/functions.config.ts +++ b/helpers/functions.config.ts @@ -57,10 +57,15 @@ configFallbackValues.set("settings.workOrders.workOrderNumberLength", 6); configFallbackValues.set("settings.workOrders.workOrderMilestoneDateRecentBeforeDays", 5); configFallbackValues.set("settings.workOrders.workOrderMilestoneDateRecentAfterDays", 60); configFallbackValues.set("settings.workOrders.calendarEmailAddress", "no-reply@127.0.0.1"); -configFallbackValues.set("settings.workOrders.prints", ["pdf/workOrder", "pdf/workOrder-commentLog"]); +configFallbackValues.set("settings.workOrders.prints", [ + "pdf/workOrder", + "pdf/workOrder-commentLog" +]); configFallbackValues.set("settings.adminCleanup.recordDeleteAgeDays", 60); +configFallbackValues.set("settings.printPdf.contentDisposition", "attachment"); + /* * Set up function overloads */ @@ -136,6 +141,10 @@ export function getProperty(propertyName: "settings.workOrders.prints"): string[ export function getProperty(propertyName: "settings.adminCleanup.recordDeleteAgeDays"): number; +export function getProperty( + propertyName: "settings.printPdf.contentDisposition" +): "attachment" | "inline"; + export function getProperty(propertyName: string): unknown { const propertyNameSplit = propertyName.split("."); diff --git a/types/configTypes.d.ts b/types/configTypes.d.ts index 8aa2f895..2a4ee7c1 100644 --- a/types/configTypes.d.ts +++ b/types/configTypes.d.ts @@ -54,6 +54,9 @@ export interface Config { adminCleanup: { recordDeleteAgeDays?: number; }; + printPdf: { + contentDisposition?: "attachment" | "inline"; + }; }; } interface ConfigApplication { diff --git a/types/configTypes.ts b/types/configTypes.ts index a0451f73..3ae9daac 100644 --- a/types/configTypes.ts +++ b/types/configTypes.ts @@ -54,6 +54,9 @@ export interface Config { adminCleanup: { recordDeleteAgeDays?: number; }; + printPdf: { + contentDisposition?: "attachment" | "inline"; + } }; }