From 9830bede3467c8d3b4e8b08b62b2ee0e6bc6b0ed Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Thu, 1 May 2025 14:53:07 -0400 Subject: [PATCH] linting --- database/getBurialSites.js | 23 ++--- database/getBurialSites.ts | 33 +++---- database/getContractTransactions.js | 8 +- database/getContractTransactions.ts | 8 +- database/getContracts.js | 72 +++++++------- database/getContracts.ts | 89 +++++++++-------- database/getNextWorkOrderNumber.js | 1 + database/getNextWorkOrderNumber.ts | 1 + database/getWorkOrders.js | 7 +- database/getWorkOrders.ts | 17 ++-- database/initializeDatabase.js | 2 +- database/initializeDatabase.ts | 2 +- database/reopenWorkOrder.js | 6 +- database/reopenWorkOrder.ts | 6 +- database/updateBurialSite.js | 40 ++++---- database/updateBurialSite.ts | 40 ++++---- database/updateBurialSiteTypeField.js | 18 ++-- database/updateBurialSiteTypeField.ts | 19 ++-- database/updateContractFeeQuantity.js | 8 +- database/updateContractFeeQuantity.ts | 8 +- database/updateContractInterment.js | 32 +++--- database/updateContractInterment.ts | 32 +++--- handlers/admin-post/doBackupDatabase.ts | 2 + handlers/cemeteries-get/edit.d.ts | 4 +- handlers/cemeteries-get/edit.ts | 2 +- handlers/cemeteries-get/previous.d.ts | 4 +- handlers/cemeteries-get/previous.ts | 5 +- handlers/cemeteries-get/view.d.ts | 4 +- handlers/cemeteries-get/view.ts | 5 +- handlers/cemeteries-post/doDeleteCemetery.js | 2 +- handlers/cemeteries-post/doDeleteCemetery.ts | 2 +- handlers/contracts-get/new.ts | 3 +- handlers/dashboard-get/dashboard.ts | 3 +- handlers/print-get/pdf.ts | 3 +- handlers/reports-get/reportName.ts | 1 - handlers/reports-get/search.ts | 3 +- handlers/workOrders-get/new.ts | 3 +- public/javascripts/contract.editInterments.js | 3 +- public/javascripts/contract.editInterments.ts | 6 +- public/javascripts/contract.editWorkOrders.js | 2 +- public/javascripts/contract.editWorkOrders.ts | 3 +- public/javascripts/contractTypes.admin.js | 31 +++--- public/javascripts/contractTypes.admin.ts | 41 ++++---- public/javascripts/workOrder.edit.js | 54 +++++----- public/javascripts/workOrder.edit.ts | 86 +++++++++------- views/admin-database.ejs | 98 ++++++++++--------- 46 files changed, 445 insertions(+), 397 deletions(-) diff --git a/database/getBurialSites.js b/database/getBurialSites.js index c7d47486..300d28d9 100644 --- a/database/getBurialSites.js +++ b/database/getBurialSites.js @@ -10,17 +10,18 @@ export default function getBurialSites(filters, options, connectedDatabase) { if (options.limit !== -1) { count = database .prepare(`select count(*) as recordCount - from BurialSites l - left join Cemeteries m on l.cemeteryId = m.cemeteryId - left join ( - select burialSiteId, count(contractId) as contractCount from Contracts - where recordDelete_timeMillis is null - and contractStartDate <= ${currentDate.toString()} - and (contractEndDate is null or contractEndDate >= ${currentDate.toString()}) - group by burialSiteId - ) o on l.burialSiteId = o.burialSiteId - ${sqlWhereClause}`) - .get(sqlParameters).recordCount; + from BurialSites l + left join Cemeteries m on l.cemeteryId = m.cemeteryId + left join ( + select burialSiteId, count(contractId) as contractCount from Contracts + where recordDelete_timeMillis is null + and contractStartDate <= ${currentDate.toString()} + and (contractEndDate is null or contractEndDate >= ${currentDate.toString()}) + group by burialSiteId + ) o on l.burialSiteId = o.burialSiteId + ${sqlWhereClause}`) + .pluck() + .get(sqlParameters); } let burialSites = []; if (options.limit === -1 || count > 0) { diff --git a/database/getBurialSites.ts b/database/getBurialSites.ts index ef64192b..570d545c 100644 --- a/database/getBurialSites.ts +++ b/database/getBurialSites.ts @@ -38,23 +38,22 @@ export default function getBurialSites( let count = 0 if (options.limit !== -1) { - count = ( - database - .prepare( - `select count(*) as recordCount - from BurialSites l - left join Cemeteries m on l.cemeteryId = m.cemeteryId - left join ( - select burialSiteId, count(contractId) as contractCount from Contracts - where recordDelete_timeMillis is null - and contractStartDate <= ${currentDate.toString()} - and (contractEndDate is null or contractEndDate >= ${currentDate.toString()}) - group by burialSiteId - ) o on l.burialSiteId = o.burialSiteId - ${sqlWhereClause}` - ) - .get(sqlParameters) as { recordCount: number } - ).recordCount + count = database + .prepare( + `select count(*) as recordCount + from BurialSites l + left join Cemeteries m on l.cemeteryId = m.cemeteryId + left join ( + select burialSiteId, count(contractId) as contractCount from Contracts + where recordDelete_timeMillis is null + and contractStartDate <= ${currentDate.toString()} + and (contractEndDate is null or contractEndDate >= ${currentDate.toString()}) + group by burialSiteId + ) o on l.burialSiteId = o.burialSiteId + ${sqlWhereClause}` + ) + .pluck() + .get(sqlParameters) as number } let burialSites: BurialSite[] = [] diff --git a/database/getContractTransactions.js b/database/getContractTransactions.js index f0248c0a..2a172ac2 100644 --- a/database/getContractTransactions.js +++ b/database/getContractTransactions.js @@ -9,12 +9,12 @@ export default async function GetContractTransactions(contractId, options, conne database.function('userFn_timeIntegerToString', timeIntegerToString); const contractTransactions = database .prepare(`select contractId, transactionIndex, - transactionDate, userFn_dateIntegerToString(transactionDate) as transactionDateString, - transactionTime, userFn_timeIntegerToString(transactionTime) as transactionTimeString, - transactionAmount, externalReceiptNumber, transactionNote + transactionDate, userFn_dateIntegerToString(transactionDate) as transactionDateString, + transactionTime, userFn_timeIntegerToString(transactionTime) as transactionTimeString, + transactionAmount, externalReceiptNumber, transactionNote from ContractTransactions where recordDelete_timeMillis is null - and contractId = ? + and contractId = ? order by transactionDate, transactionTime, transactionIndex`) .all(contractId); if (connectedDatabase === undefined) { diff --git a/database/getContractTransactions.ts b/database/getContractTransactions.ts index 2b3cc2a1..15639105 100644 --- a/database/getContractTransactions.ts +++ b/database/getContractTransactions.ts @@ -24,12 +24,12 @@ export default async function GetContractTransactions( const contractTransactions = database .prepare( `select contractId, transactionIndex, - transactionDate, userFn_dateIntegerToString(transactionDate) as transactionDateString, - transactionTime, userFn_timeIntegerToString(transactionTime) as transactionTimeString, - transactionAmount, externalReceiptNumber, transactionNote + transactionDate, userFn_dateIntegerToString(transactionDate) as transactionDateString, + transactionTime, userFn_timeIntegerToString(transactionTime) as transactionTimeString, + transactionAmount, externalReceiptNumber, transactionNote from ContractTransactions where recordDelete_timeMillis is null - and contractId = ? + and contractId = ? order by transactionDate, transactionTime, transactionIndex` ) .all(contractId) as ContractTransaction[] diff --git a/database/getContracts.js b/database/getContracts.js index 743f0950..f57f6cfd 100644 --- a/database/getContracts.js +++ b/database/getContracts.js @@ -24,47 +24,51 @@ export default async function getContracts(filters, options, connectedDatabase) left join BurialSites l on c.burialSiteId = l.burialSiteId left join Cemeteries m on l.cemeteryId = m.cemeteryId ${sqlWhereClause}`) - .get(sqlParameters).recordCount; + .pluck() + .get(sqlParameters); } let contracts = []; if (count !== 0) { + const sqlLimitClause = isLimited + ? ` limit ${options.limit} offset ${options.offset}` + : ''; contracts = database .prepare(`select c.contractId, - c.contractTypeId, t.contractType, t.isPreneed, - c.burialSiteId, lt.burialSiteType, l.burialSiteName, - case when l.recordDelete_timeMillis is null then 1 else 0 end as burialSiteIsActive, - l.cemeteryId, m.cemeteryName, - c.contractStartDate, userFn_dateIntegerToString(c.contractStartDate) as contractStartDateString, - c.contractEndDate, userFn_dateIntegerToString(c.contractEndDate) as contractEndDateString, - c.purchaserName, c.purchaserAddress1, c.purchaserAddress2, - c.purchaserCity, c.purchaserProvince, c.purchaserPostalCode, - c.purchaserPhoneNumber, c.purchaserEmail, c.purchaserRelationship, - c.funeralHomeId, c.funeralDirectorName, f.funeralHomeName, + c.contractTypeId, t.contractType, t.isPreneed, + c.burialSiteId, lt.burialSiteType, l.burialSiteName, + case when l.recordDelete_timeMillis is null then 1 else 0 end as burialSiteIsActive, + l.cemeteryId, m.cemeteryName, + c.contractStartDate, userFn_dateIntegerToString(c.contractStartDate) as contractStartDateString, + c.contractEndDate, userFn_dateIntegerToString(c.contractEndDate) as contractEndDateString, + c.purchaserName, c.purchaserAddress1, c.purchaserAddress2, + c.purchaserCity, c.purchaserProvince, c.purchaserPostalCode, + c.purchaserPhoneNumber, c.purchaserEmail, c.purchaserRelationship, + c.funeralHomeId, c.funeralDirectorName, f.funeralHomeName, - c.funeralDate, userFn_dateIntegerToString(c.funeralDate) as funeralDateString, - c.funeralTime, - userFn_timeIntegerToString(c.funeralTime) as funeralTimeString, - userFn_timeIntegerToPeriodString(c.funeralTime) as funeralTimePeriodString, - c.directionOfArrival, - c.committalTypeId, cm.committalType - from Contracts c - left join ContractTypes t on c.contractTypeId = t.contractTypeId - left join CommittalTypes cm on c.committalTypeId = cm.committalTypeId - left join BurialSites l on c.burialSiteId = l.burialSiteId - left join BurialSiteTypes lt on l.burialSiteTypeId = lt.burialSiteTypeId - left join Cemeteries m on l.cemeteryId = m.cemeteryId - left join FuneralHomes f on c.funeralHomeId = f.funeralHomeId - ${sqlWhereClause} - ${options.orderBy !== undefined && options.orderBy !== '' + c.funeralDate, userFn_dateIntegerToString(c.funeralDate) as funeralDateString, + c.funeralTime, + userFn_timeIntegerToString(c.funeralTime) as funeralTimeString, + userFn_timeIntegerToPeriodString(c.funeralTime) as funeralTimePeriodString, + c.directionOfArrival, + c.committalTypeId, cm.committalType + from Contracts c + left join ContractTypes t on c.contractTypeId = t.contractTypeId + left join CommittalTypes cm on c.committalTypeId = cm.committalTypeId + left join BurialSites l on c.burialSiteId = l.burialSiteId + left join BurialSiteTypes lt on l.burialSiteTypeId = lt.burialSiteTypeId + left join Cemeteries m on l.cemeteryId = m.cemeteryId + left join FuneralHomes f on c.funeralHomeId = f.funeralHomeId + ${sqlWhereClause} + ${options.orderBy !== undefined && options.orderBy !== '' ? ` order by ${options.orderBy}` - : `order by c.contractStartDate desc, ifnull(c.contractEndDate, 99999999) desc, - l.burialSiteNameSegment1, - l.burialSiteNameSegment2, - l.burialSiteNameSegment3, - l.burialSiteNameSegment4, - l.burialSiteNameSegment5, - c.burialSiteId, c.contractId desc`} - ${isLimited ? ` limit ${options.limit} offset ${options.offset}` : ''}`) + : ` order by c.contractStartDate desc, ifnull(c.contractEndDate, 99999999) desc, + l.burialSiteNameSegment1, + l.burialSiteNameSegment2, + l.burialSiteNameSegment3, + l.burialSiteNameSegment4, + l.burialSiteNameSegment5, + c.burialSiteId, c.contractId desc`} + ${sqlLimitClause}`) .all(sqlParameters); if (!isLimited) { count = contracts.length; diff --git a/database/getContracts.ts b/database/getContracts.ts index 5e49f72c..1ede7b6d 100644 --- a/database/getContracts.ts +++ b/database/getContracts.ts @@ -81,62 +81,65 @@ export default async function getContracts( const isLimited = options.limit !== -1 if (isLimited) { - count = ( - database - .prepare( - `select count(*) as recordCount + count = database + .prepare( + `select count(*) as recordCount from Contracts c left join BurialSites l on c.burialSiteId = l.burialSiteId left join Cemeteries m on l.cemeteryId = m.cemeteryId ${sqlWhereClause}` - ) - .get(sqlParameters) as { recordCount: number } - ).recordCount + ) + .pluck() + .get(sqlParameters) as number } let contracts: Contract[] = [] if (count !== 0) { + const sqlLimitClause = isLimited + ? ` limit ${options.limit} offset ${options.offset}` + : '' + contracts = database .prepare( `select c.contractId, - c.contractTypeId, t.contractType, t.isPreneed, - c.burialSiteId, lt.burialSiteType, l.burialSiteName, - case when l.recordDelete_timeMillis is null then 1 else 0 end as burialSiteIsActive, - l.cemeteryId, m.cemeteryName, - c.contractStartDate, userFn_dateIntegerToString(c.contractStartDate) as contractStartDateString, - c.contractEndDate, userFn_dateIntegerToString(c.contractEndDate) as contractEndDateString, - c.purchaserName, c.purchaserAddress1, c.purchaserAddress2, - c.purchaserCity, c.purchaserProvince, c.purchaserPostalCode, - c.purchaserPhoneNumber, c.purchaserEmail, c.purchaserRelationship, - c.funeralHomeId, c.funeralDirectorName, f.funeralHomeName, + c.contractTypeId, t.contractType, t.isPreneed, + c.burialSiteId, lt.burialSiteType, l.burialSiteName, + case when l.recordDelete_timeMillis is null then 1 else 0 end as burialSiteIsActive, + l.cemeteryId, m.cemeteryName, + c.contractStartDate, userFn_dateIntegerToString(c.contractStartDate) as contractStartDateString, + c.contractEndDate, userFn_dateIntegerToString(c.contractEndDate) as contractEndDateString, + c.purchaserName, c.purchaserAddress1, c.purchaserAddress2, + c.purchaserCity, c.purchaserProvince, c.purchaserPostalCode, + c.purchaserPhoneNumber, c.purchaserEmail, c.purchaserRelationship, + c.funeralHomeId, c.funeralDirectorName, f.funeralHomeName, - c.funeralDate, userFn_dateIntegerToString(c.funeralDate) as funeralDateString, - c.funeralTime, - userFn_timeIntegerToString(c.funeralTime) as funeralTimeString, - userFn_timeIntegerToPeriodString(c.funeralTime) as funeralTimePeriodString, - c.directionOfArrival, - c.committalTypeId, cm.committalType - from Contracts c - left join ContractTypes t on c.contractTypeId = t.contractTypeId - left join CommittalTypes cm on c.committalTypeId = cm.committalTypeId - left join BurialSites l on c.burialSiteId = l.burialSiteId - left join BurialSiteTypes lt on l.burialSiteTypeId = lt.burialSiteTypeId - left join Cemeteries m on l.cemeteryId = m.cemeteryId - left join FuneralHomes f on c.funeralHomeId = f.funeralHomeId - ${sqlWhereClause} - ${ - options.orderBy !== undefined && options.orderBy !== '' - ? ` order by ${options.orderBy}` - : `order by c.contractStartDate desc, ifnull(c.contractEndDate, 99999999) desc, - l.burialSiteNameSegment1, - l.burialSiteNameSegment2, - l.burialSiteNameSegment3, - l.burialSiteNameSegment4, - l.burialSiteNameSegment5, - c.burialSiteId, c.contractId desc` - } - ${isLimited ? ` limit ${options.limit} offset ${options.offset}` : ''}` + c.funeralDate, userFn_dateIntegerToString(c.funeralDate) as funeralDateString, + c.funeralTime, + userFn_timeIntegerToString(c.funeralTime) as funeralTimeString, + userFn_timeIntegerToPeriodString(c.funeralTime) as funeralTimePeriodString, + c.directionOfArrival, + c.committalTypeId, cm.committalType + from Contracts c + left join ContractTypes t on c.contractTypeId = t.contractTypeId + left join CommittalTypes cm on c.committalTypeId = cm.committalTypeId + left join BurialSites l on c.burialSiteId = l.burialSiteId + left join BurialSiteTypes lt on l.burialSiteTypeId = lt.burialSiteTypeId + left join Cemeteries m on l.cemeteryId = m.cemeteryId + left join FuneralHomes f on c.funeralHomeId = f.funeralHomeId + ${sqlWhereClause} + ${ + options.orderBy !== undefined && options.orderBy !== '' + ? ` order by ${options.orderBy}` + : ` order by c.contractStartDate desc, ifnull(c.contractEndDate, 99999999) desc, + l.burialSiteNameSegment1, + l.burialSiteNameSegment2, + l.burialSiteNameSegment3, + l.burialSiteNameSegment4, + l.burialSiteNameSegment5, + c.burialSiteId, c.contractId desc` + } + ${sqlLimitClause}` ) .all(sqlParameters) as Contract[] diff --git a/database/getNextWorkOrderNumber.js b/database/getNextWorkOrderNumber.js index 2f7767a0..f58008b4 100644 --- a/database/getNextWorkOrderNumber.js +++ b/database/getNextWorkOrderNumber.js @@ -5,6 +5,7 @@ export default function getNextWorkOrderNumber(connectedDatabase) { const database = connectedDatabase ?? sqlite(sunriseDB, { readonly: true }); const paddingLength = getConfigProperty('settings.workOrders.workOrderNumberLength'); const currentYearString = new Date().getFullYear().toString(); + // eslint-disable-next-line security/detect-non-literal-regexp const regex = new RegExp(`^${currentYearString}-\\d+$`); database.function( // eslint-disable-next-line no-secrets/no-secrets diff --git a/database/getNextWorkOrderNumber.ts b/database/getNextWorkOrderNumber.ts index 5b46b51e..828d9233 100644 --- a/database/getNextWorkOrderNumber.ts +++ b/database/getNextWorkOrderNumber.ts @@ -13,6 +13,7 @@ export default function getNextWorkOrderNumber( ) const currentYearString = new Date().getFullYear().toString() + // eslint-disable-next-line security/detect-non-literal-regexp const regex = new RegExp(`^${currentYearString}-\\d+$`) database.function( diff --git a/database/getWorkOrders.js b/database/getWorkOrders.js index 9faa362f..bced8075 100644 --- a/database/getWorkOrders.js +++ b/database/getWorkOrders.js @@ -12,9 +12,10 @@ export async function getWorkOrders(filters, options, connectedDatabase) { const { sqlParameters, sqlWhereClause } = buildWhereClause(filters); const count = database .prepare(`select count(*) as recordCount - from WorkOrders w - ${sqlWhereClause}`) - .get(sqlParameters).recordCount; + from WorkOrders w + ${sqlWhereClause}`) + .pluck() + .get(sqlParameters); let workOrders = []; if (count > 0) { workOrders = database diff --git a/database/getWorkOrders.ts b/database/getWorkOrders.ts index b7429ae2..8429e3cc 100644 --- a/database/getWorkOrders.ts +++ b/database/getWorkOrders.ts @@ -48,15 +48,14 @@ export async function getWorkOrders( const { sqlParameters, sqlWhereClause } = buildWhereClause(filters) - const count: number = ( - database - .prepare( - `select count(*) as recordCount - from WorkOrders w - ${sqlWhereClause}` - ) - .get(sqlParameters) as { recordCount: number } - ).recordCount + const count: number = database + .prepare( + `select count(*) as recordCount + from WorkOrders w + ${sqlWhereClause}` + ) + .pluck() + .get(sqlParameters) as number let workOrders: WorkOrder[] = [] diff --git a/database/initializeDatabase.js b/database/initializeDatabase.js index d02e8421..c66fb154 100644 --- a/database/initializeDatabase.js +++ b/database/initializeDatabase.js @@ -1,5 +1,5 @@ // eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair -/* eslint-disable max-lines, no-secrets/no-secrets */ +/* eslint-disable @typescript-eslint/no-magic-numbers, max-lines, no-secrets/no-secrets */ import sqlite from 'better-sqlite3'; import Debug from 'debug'; import { DEBUG_NAMESPACE } from '../debug.config.js'; diff --git a/database/initializeDatabase.ts b/database/initializeDatabase.ts index 81b40875..f62fc0cc 100644 --- a/database/initializeDatabase.ts +++ b/database/initializeDatabase.ts @@ -1,5 +1,5 @@ // eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair -/* eslint-disable max-lines, no-secrets/no-secrets */ +/* eslint-disable @typescript-eslint/no-magic-numbers, max-lines, no-secrets/no-secrets */ import sqlite from 'better-sqlite3' import Debug from 'debug' diff --git a/database/reopenWorkOrder.js b/database/reopenWorkOrder.js index 4c578eb8..34829ee5 100644 --- a/database/reopenWorkOrder.js +++ b/database/reopenWorkOrder.js @@ -5,10 +5,10 @@ export default function reopenWorkOrder(workOrderId, user) { const result = database .prepare(`update WorkOrders set workOrderCloseDate = null, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where workOrderId = ? - and workOrderCloseDate is not null`) + and workOrderCloseDate is not null`) .run(user.userName, Date.now(), workOrderId); database.close(); return result.changes > 0; diff --git a/database/reopenWorkOrder.ts b/database/reopenWorkOrder.ts index a5cf3588..480a7120 100644 --- a/database/reopenWorkOrder.ts +++ b/database/reopenWorkOrder.ts @@ -12,10 +12,10 @@ export default function reopenWorkOrder( .prepare( `update WorkOrders set workOrderCloseDate = null, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where workOrderId = ? - and workOrderCloseDate is not null` + and workOrderCloseDate is not null` ) .run(user.userName, Date.now(), workOrderId) diff --git a/database/updateBurialSite.js b/database/updateBurialSite.js index 71af9bc8..ebc1ffbb 100644 --- a/database/updateBurialSite.js +++ b/database/updateBurialSite.js @@ -34,24 +34,24 @@ export default function updateBurialSite(updateForm, user) { const result = database .prepare(`update BurialSites set burialSiteNameSegment1 = ?, - burialSiteNameSegment2 = ?, - burialSiteNameSegment3 = ?, - burialSiteNameSegment4 = ?, - burialSiteNameSegment5 = ?, - burialSiteName = ?, - burialSiteTypeId = ?, - burialSiteStatusId = ?, - bodyCapacity = ?, - crematedCapacity = ?, - cemeteryId = ?, - cemeterySvgId = ?, - burialSiteImage = ?, - burialSiteLatitude = ?, - burialSiteLongitude = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + burialSiteNameSegment2 = ?, + burialSiteNameSegment3 = ?, + burialSiteNameSegment4 = ?, + burialSiteNameSegment5 = ?, + burialSiteName = ?, + burialSiteTypeId = ?, + burialSiteStatusId = ?, + bodyCapacity = ?, + crematedCapacity = ?, + cemeteryId = ?, + cemeterySvgId = ?, + burialSiteImage = ?, + burialSiteLatitude = ?, + burialSiteLongitude = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where burialSiteId = ? - and recordDelete_timeMillis is null`) + and recordDelete_timeMillis is null`) .run(updateForm.burialSiteNameSegment1 ?? '', updateForm.burialSiteNameSegment2 ?? '', updateForm.burialSiteNameSegment3 ?? '', updateForm.burialSiteNameSegment4 ?? '', updateForm.burialSiteNameSegment5 ?? '', burialSiteName, updateForm.burialSiteTypeId, updateForm.burialSiteStatusId === '' ? undefined : updateForm.burialSiteStatusId, updateForm.bodyCapacity === '' ? undefined : updateForm.bodyCapacity, updateForm.crematedCapacity === '' @@ -83,10 +83,10 @@ export function updateBurialSiteStatus(burialSiteId, burialSiteStatusId, user) { const result = database .prepare(`update BurialSites set burialSiteStatusId = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where burialSiteId = ? - and recordDelete_timeMillis is null`) + and recordDelete_timeMillis is null`) .run(burialSiteStatusId === '' ? undefined : burialSiteStatusId, user.userName, rightNowMillis, burialSiteId); database.close(); return result.changes > 0; diff --git a/database/updateBurialSite.ts b/database/updateBurialSite.ts index 744a1a9b..a332ef40 100644 --- a/database/updateBurialSite.ts +++ b/database/updateBurialSite.ts @@ -76,24 +76,24 @@ export default function updateBurialSite( .prepare( `update BurialSites set burialSiteNameSegment1 = ?, - burialSiteNameSegment2 = ?, - burialSiteNameSegment3 = ?, - burialSiteNameSegment4 = ?, - burialSiteNameSegment5 = ?, - burialSiteName = ?, - burialSiteTypeId = ?, - burialSiteStatusId = ?, - bodyCapacity = ?, - crematedCapacity = ?, - cemeteryId = ?, - cemeterySvgId = ?, - burialSiteImage = ?, - burialSiteLatitude = ?, - burialSiteLongitude = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + burialSiteNameSegment2 = ?, + burialSiteNameSegment3 = ?, + burialSiteNameSegment4 = ?, + burialSiteNameSegment5 = ?, + burialSiteName = ?, + burialSiteTypeId = ?, + burialSiteStatusId = ?, + bodyCapacity = ?, + crematedCapacity = ?, + cemeteryId = ?, + cemeterySvgId = ?, + burialSiteImage = ?, + burialSiteLatitude = ?, + burialSiteLongitude = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where burialSiteId = ? - and recordDelete_timeMillis is null` + and recordDelete_timeMillis is null` ) .run( updateForm.burialSiteNameSegment1 ?? '', @@ -174,10 +174,10 @@ export function updateBurialSiteStatus( .prepare( `update BurialSites set burialSiteStatusId = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where burialSiteId = ? - and recordDelete_timeMillis is null` + and recordDelete_timeMillis is null` ) .run( burialSiteStatusId === '' ? undefined : burialSiteStatusId, diff --git a/database/updateBurialSiteTypeField.js b/database/updateBurialSiteTypeField.js index d2b5d92c..f0822cc6 100644 --- a/database/updateBurialSiteTypeField.js +++ b/database/updateBurialSiteTypeField.js @@ -6,16 +6,16 @@ export default function updateBurialSiteTypeField(updateForm, user) { const result = database .prepare(`update BurialSiteTypeFields set burialSiteTypeField = ?, - isRequired = ?, - fieldType = ?, - minLength = ?, - maxLength = ?, - pattern = ?, - fieldValues = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + isRequired = ?, + fieldType = ?, + minLength = ?, + maxLength = ?, + pattern = ?, + fieldValues = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where burialSiteTypeFieldId = ? - and recordDelete_timeMillis is null`) + and recordDelete_timeMillis is null`) .run(updateForm.burialSiteTypeField, Number.parseInt(updateForm.isRequired, 10), updateForm.fieldType ?? 'text', updateForm.minLength ?? 0, updateForm.maxLength ?? 100, updateForm.pattern ?? '', updateForm.fieldValues, user.userName, Date.now(), updateForm.burialSiteTypeFieldId); database.close(); clearCacheByTableName('BurialSiteTypeFields'); diff --git a/database/updateBurialSiteTypeField.ts b/database/updateBurialSiteTypeField.ts index 748a7a2d..30a8f147 100644 --- a/database/updateBurialSiteTypeField.ts +++ b/database/updateBurialSiteTypeField.ts @@ -5,6 +5,7 @@ import { clearCacheByTableName } from '../helpers/functions.cache.js' export interface UpdateBurialSiteTypeFieldForm { burialSiteTypeFieldId: number | string + burialSiteTypeField: string isRequired: '0' | '1' @@ -26,16 +27,16 @@ export default function updateBurialSiteTypeField( .prepare( `update BurialSiteTypeFields set burialSiteTypeField = ?, - isRequired = ?, - fieldType = ?, - minLength = ?, - maxLength = ?, - pattern = ?, - fieldValues = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + isRequired = ?, + fieldType = ?, + minLength = ?, + maxLength = ?, + pattern = ?, + fieldValues = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where burialSiteTypeFieldId = ? - and recordDelete_timeMillis is null` + and recordDelete_timeMillis is null` ) .run( updateForm.burialSiteTypeField, diff --git a/database/updateContractFeeQuantity.js b/database/updateContractFeeQuantity.js index 11ca40ce..9f255755 100644 --- a/database/updateContractFeeQuantity.js +++ b/database/updateContractFeeQuantity.js @@ -5,11 +5,11 @@ export default function updateContractFeeQuantity(feeQuantityForm, user) { const result = database .prepare(`update ContractFees set quantity = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where recordDelete_timeMillis is null - and contractId = ? - and feeId = ?`) + and contractId = ? + and feeId = ?`) .run(feeQuantityForm.quantity, user.userName, Date.now(), feeQuantityForm.contractId, feeQuantityForm.feeId); database.close(); return result.changes > 0; diff --git a/database/updateContractFeeQuantity.ts b/database/updateContractFeeQuantity.ts index d31ddbb7..c30e97a2 100644 --- a/database/updateContractFeeQuantity.ts +++ b/database/updateContractFeeQuantity.ts @@ -18,11 +18,11 @@ export default function updateContractFeeQuantity( .prepare( `update ContractFees set quantity = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where recordDelete_timeMillis is null - and contractId = ? - and feeId = ?` + and contractId = ? + and feeId = ?` ) .run( feeQuantityForm.quantity, diff --git a/database/updateContractInterment.js b/database/updateContractInterment.js index a8334789..f66419d2 100644 --- a/database/updateContractInterment.js +++ b/database/updateContractInterment.js @@ -6,23 +6,23 @@ export default function updateContractInterment(contractForm, user) { const results = database .prepare(`update ContractInterments set deceasedName = ?, - deceasedAddress1 = ?, - deceasedAddress2 = ?, - deceasedCity = ?, - deceasedProvince = ?, - deceasedPostalCode = ?, - birthDate = ?, - birthPlace = ?, - deathDate = ?, - deathPlace = ?, - deathAge = ?, - deathAgePeriod = ?, - intermentContainerTypeId = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + deceasedAddress1 = ?, + deceasedAddress2 = ?, + deceasedCity = ?, + deceasedProvince = ?, + deceasedPostalCode = ?, + birthDate = ?, + birthPlace = ?, + deathDate = ?, + deathPlace = ?, + deathAge = ?, + deathAgePeriod = ?, + intermentContainerTypeId = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where recordDelete_timeMillis is null - and contractId = ? - and intermentNumber = ?`) + and contractId = ? + and intermentNumber = ?`) .run(contractForm.deceasedName, contractForm.deceasedAddress1, contractForm.deceasedAddress2, contractForm.deceasedCity, contractForm.deceasedProvince, contractForm.deceasedPostalCode, contractForm.birthDateString === '' ? undefined : dateStringToInteger(contractForm.birthDateString), contractForm.birthPlace, contractForm.deathDateString === '' diff --git a/database/updateContractInterment.ts b/database/updateContractInterment.ts index e3625eb9..d4f5b89c 100644 --- a/database/updateContractInterment.ts +++ b/database/updateContractInterment.ts @@ -36,23 +36,23 @@ export default function updateContractInterment( .prepare( `update ContractInterments set deceasedName = ?, - deceasedAddress1 = ?, - deceasedAddress2 = ?, - deceasedCity = ?, - deceasedProvince = ?, - deceasedPostalCode = ?, - birthDate = ?, - birthPlace = ?, - deathDate = ?, - deathPlace = ?, - deathAge = ?, - deathAgePeriod = ?, - intermentContainerTypeId = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? + deceasedAddress1 = ?, + deceasedAddress2 = ?, + deceasedCity = ?, + deceasedProvince = ?, + deceasedPostalCode = ?, + birthDate = ?, + birthPlace = ?, + deathDate = ?, + deathPlace = ?, + deathAge = ?, + deathAgePeriod = ?, + intermentContainerTypeId = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? where recordDelete_timeMillis is null - and contractId = ? - and intermentNumber = ?` + and contractId = ? + and intermentNumber = ?` ) .run( contractForm.deceasedName, diff --git a/handlers/admin-post/doBackupDatabase.ts b/handlers/admin-post/doBackupDatabase.ts index 4b06dbca..c36902fa 100644 --- a/handlers/admin-post/doBackupDatabase.ts +++ b/handlers/admin-post/doBackupDatabase.ts @@ -15,11 +15,13 @@ export default async function handler( response.json({ success: true, + fileName }) } else { response.json({ success: false, + errorMessage: 'Unable to write backup file.' }) } diff --git a/handlers/cemeteries-get/edit.d.ts b/handlers/cemeteries-get/edit.d.ts index 19d32e4d..5e3c4b8f 100644 --- a/handlers/cemeteries-get/edit.d.ts +++ b/handlers/cemeteries-get/edit.d.ts @@ -1,2 +1,4 @@ import type { Request, Response } from 'express'; -export default function handler(request: Request, response: Response): Promise; +export default function handler(request: Request<{ + cemeteryId: string; +}>, response: Response): Promise; diff --git a/handlers/cemeteries-get/edit.ts b/handlers/cemeteries-get/edit.ts index 74722478..0e64cea2 100644 --- a/handlers/cemeteries-get/edit.ts +++ b/handlers/cemeteries-get/edit.ts @@ -8,7 +8,7 @@ import { getConfigProperty } from '../../helpers/config.helpers.js' import { getCemeterySVGs } from '../../helpers/images.helpers.js' export default async function handler( - request: Request, + request: Request<{ cemeteryId: string }>, response: Response ): Promise { const cemetery = getCemetery(request.params.cemeteryId) diff --git a/handlers/cemeteries-get/previous.d.ts b/handlers/cemeteries-get/previous.d.ts index d5e48cba..8d9b4d13 100644 --- a/handlers/cemeteries-get/previous.d.ts +++ b/handlers/cemeteries-get/previous.d.ts @@ -1,2 +1,4 @@ import type { Request, Response } from 'express'; -export default function handler(request: Request, response: Response): void; +export default function handler(request: Request<{ + cemeteryId: string; +}>, response: Response): void; diff --git a/handlers/cemeteries-get/previous.ts b/handlers/cemeteries-get/previous.ts index de93aa60..7161bd0d 100644 --- a/handlers/cemeteries-get/previous.ts +++ b/handlers/cemeteries-get/previous.ts @@ -3,7 +3,10 @@ import type { Request, Response } from 'express' import getPreviousCemeteryId from '../../database/getPreviousCemeteryId.js' import { getConfigProperty } from '../../helpers/config.helpers.js' -export default function handler(request: Request, response: Response): void { +export default function handler( + request: Request<{ cemeteryId: string }>, + response: Response +): void { const cemeteryId = Number.parseInt(request.params.cemeteryId, 10) const previousCemeteryId = getPreviousCemeteryId(cemeteryId) diff --git a/handlers/cemeteries-get/view.d.ts b/handlers/cemeteries-get/view.d.ts index d5e48cba..8d9b4d13 100644 --- a/handlers/cemeteries-get/view.d.ts +++ b/handlers/cemeteries-get/view.d.ts @@ -1,2 +1,4 @@ import type { Request, Response } from 'express'; -export default function handler(request: Request, response: Response): void; +export default function handler(request: Request<{ + cemeteryId: string; +}>, response: Response): void; diff --git a/handlers/cemeteries-get/view.ts b/handlers/cemeteries-get/view.ts index 3cf09ed1..2adf32ae 100644 --- a/handlers/cemeteries-get/view.ts +++ b/handlers/cemeteries-get/view.ts @@ -5,7 +5,10 @@ import getBurialSiteTypeSummary from '../../database/getBurialSiteTypeSummary.js import getCemetery from '../../database/getCemetery.js' import { getConfigProperty } from '../../helpers/config.helpers.js' -export default function handler(request: Request, response: Response): void { +export default function handler( + request: Request<{ cemeteryId: string }>, + response: Response +): void { const cemetery = getCemetery(request.params.cemeteryId) if (cemetery === undefined) { diff --git a/handlers/cemeteries-post/doDeleteCemetery.js b/handlers/cemeteries-post/doDeleteCemetery.js index 33b16cd5..1a645ad3 100644 --- a/handlers/cemeteries-post/doDeleteCemetery.js +++ b/handlers/cemeteries-post/doDeleteCemetery.js @@ -10,7 +10,7 @@ export default function handler(request, response) { }); if (success) { response.on('finish', () => { - clearNextPreviousBurialSiteIdCache(-1); + clearNextPreviousBurialSiteIdCache(); }); } } diff --git a/handlers/cemeteries-post/doDeleteCemetery.ts b/handlers/cemeteries-post/doDeleteCemetery.ts index 310cc390..fb640841 100644 --- a/handlers/cemeteries-post/doDeleteCemetery.ts +++ b/handlers/cemeteries-post/doDeleteCemetery.ts @@ -21,7 +21,7 @@ export default function handler( if (success) { response.on('finish', () => { - clearNextPreviousBurialSiteIdCache(-1) + clearNextPreviousBurialSiteIdCache() }) } } diff --git a/handlers/contracts-get/new.ts b/handlers/contracts-get/new.ts index dc23f616..2810ab7e 100644 --- a/handlers/contracts-get/new.ts +++ b/handlers/contracts-get/new.ts @@ -1,6 +1,5 @@ -import type { Request, Response } from 'express' - import { dateToInteger, dateToString } from '@cityssm/utils-datetime' +import type { Request, Response } from 'express' import getBurialSite from '../../database/getBurialSite.js' import getBurialSiteDirectionsOfArrival, { defaultDirectionsOfArrival } from '../../database/getBurialSiteDirectionsOfArrival.js' diff --git a/handlers/dashboard-get/dashboard.ts b/handlers/dashboard-get/dashboard.ts index 2168f9e3..6f892195 100644 --- a/handlers/dashboard-get/dashboard.ts +++ b/handlers/dashboard-get/dashboard.ts @@ -1,6 +1,5 @@ -import type { Request, Response } from 'express' - import { dateToString } from '@cityssm/utils-datetime' +import type { Request, Response } from 'express' import getWorkOrderMilestones from '../../database/getWorkOrderMilestones.js' diff --git a/handlers/print-get/pdf.ts b/handlers/print-get/pdf.ts index 888cdf8a..2ed8f5f3 100644 --- a/handlers/print-get/pdf.ts +++ b/handlers/print-get/pdf.ts @@ -1,10 +1,9 @@ -import type { NextFunction, Request, Response } from 'express' - import path from 'node:path' import { convertHTMLToPDF } from '@cityssm/pdf-puppeteer' import camelcase from 'camelcase' import { renderFile as renderEjsFile } from 'ejs' +import type { NextFunction, Request, Response } from 'express' import { getConfigProperty } from '../../helpers/config.helpers.js' import { diff --git a/handlers/reports-get/reportName.ts b/handlers/reports-get/reportName.ts index c748721c..0d4cff99 100644 --- a/handlers/reports-get/reportName.ts +++ b/handlers/reports-get/reportName.ts @@ -1,5 +1,4 @@ import type { Request, Response } from 'express' - import papaParse from 'papaparse' import getReportData, { diff --git a/handlers/reports-get/search.ts b/handlers/reports-get/search.ts index 70b3f2a4..d99db87e 100644 --- a/handlers/reports-get/search.ts +++ b/handlers/reports-get/search.ts @@ -1,6 +1,5 @@ -import type { Request, Response } from 'express' - import { dateToString } from '@cityssm/utils-datetime' +import type { Request, Response } from 'express' import getCemeteries from '../../database/getCemeteries.js' import { diff --git a/handlers/workOrders-get/new.ts b/handlers/workOrders-get/new.ts index 8b1d27ab..aa783e93 100644 --- a/handlers/workOrders-get/new.ts +++ b/handlers/workOrders-get/new.ts @@ -1,6 +1,5 @@ -import type { Request, Response } from 'express' - import { dateToInteger, dateToString } from '@cityssm/utils-datetime' +import type { Request, Response } from 'express' import { getWorkOrderTypes } from '../../helpers/functions.cache.js' import type { WorkOrder } from '../../types/record.types.js' diff --git a/public/javascripts/contract.editInterments.js b/public/javascripts/contract.editInterments.js index 4596bc2a..d4a04e16 100644 --- a/public/javascripts/contract.editInterments.js +++ b/public/javascripts/contract.editInterments.js @@ -34,6 +34,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); const birthDate = new Date(birthDateStringElement.value); const deathDate = new Date(deathDateStringElement.value); const ageInDays = Math.floor((deathDate.getTime() - birthDate.getTime()) / (1000 * 60 * 60 * 24)); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers const ageInYears = Math.floor(ageInDays / 365.25); if (ageInYears > 0) { deathAgeElement.value = ageInYears.toString(); @@ -189,9 +190,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Delete Interment?', message: 'Are you sure you want to remove this interment from the contract?', - contextualColorName: 'warning', okButton: { text: 'Yes, Remove Interment', callbackFunction: doDelete diff --git a/public/javascripts/contract.editInterments.ts b/public/javascripts/contract.editInterments.ts index c941c19c..8873ab7a 100644 --- a/public/javascripts/contract.editInterments.ts +++ b/public/javascripts/contract.editInterments.ts @@ -84,6 +84,7 @@ declare const exports: Record (deathDate.getTime() - birthDate.getTime()) / (1000 * 60 * 60 * 24) ) + // eslint-disable-next-line @typescript-eslint/no-magic-numbers const ageInYears = Math.floor(ageInDays / 365.25) if (ageInYears > 0) { @@ -314,12 +315,15 @@ declare const exports: Record } bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Delete Interment?', + message: 'Are you sure you want to remove this interment from the contract?', - contextualColorName: 'warning', + okButton: { text: 'Yes, Remove Interment', + callbackFunction: doDelete } }) diff --git a/public/javascripts/contract.editWorkOrders.js b/public/javascripts/contract.editWorkOrders.js index 985406c5..3e65b676 100644 --- a/public/javascripts/contract.editWorkOrders.js +++ b/public/javascripts/contract.editWorkOrders.js @@ -28,9 +28,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); } else { bulmaJS.alert({ + contextualColorName: 'danger', title: 'Error Creating Work Order', message: responseJSON.errorMessage, - contextualColorName: 'danger' }); } }); diff --git a/public/javascripts/contract.editWorkOrders.ts b/public/javascripts/contract.editWorkOrders.ts index 4a189040..1dd4fa19 100644 --- a/public/javascripts/contract.editWorkOrders.ts +++ b/public/javascripts/contract.editWorkOrders.ts @@ -54,9 +54,10 @@ declare const exports: Record }) } else { bulmaJS.alert({ + contextualColorName: 'danger', title: 'Error Creating Work Order', + message: responseJSON.errorMessage as string, - contextualColorName: 'danger' }) } } diff --git a/public/javascripts/contractTypes.admin.js b/public/javascripts/contractTypes.admin.js index d095c147..fea1e944 100644 --- a/public/javascripts/contractTypes.admin.js +++ b/public/javascripts/contractTypes.admin.js @@ -39,9 +39,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); } else { bulmaJS.alert({ - title: "Error Updating Contract Type", - message: responseJSON.errorMessage ?? '', - contextualColorName: 'danger' + contextualColorName: 'danger', + title: 'Error Updating Contract Type', + message: responseJSON.errorMessage ?? '' }); } } @@ -53,12 +53,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); }, contractTypeResponseHandler); } bulmaJS.confirm({ - title: "Delete Contract Type", - message: "Are you sure you want to delete this contract type?", contextualColorName: 'warning', + title: 'Delete Contract Type', + message: 'Are you sure you want to delete this contract type?', okButton: { - text: "Yes, Delete Contract Type", - callbackFunction: doDelete + callbackFunction: doDelete, + text: 'Yes, Delete Contract Type' } }); } @@ -206,12 +206,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); } function confirmDoDelete() { bulmaJS.confirm({ - title: 'Delete Field', - message: 'Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.', contextualColorName: 'warning', + title: 'Delete Field', + message: `Are you sure you want to delete this field? + Note that historical records that make use of this field will not be affected.`, okButton: { - text: 'Yes, Delete Field', - callbackFunction: doDelete + callbackFunction: doDelete, + text: 'Yes, Delete Field' } }); } @@ -372,12 +373,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); }, contractTypeResponseHandler); } bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Delete Print', message: 'Are you sure you want to remove this print option?', - contextualColorName: 'warning', okButton: { - text: 'Yes, Remove Print', - callbackFunction: doDelete + callbackFunction: doDelete, + text: 'Yes, Remove Print' } }); } @@ -588,7 +589,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); } else { bulmaJS.alert({ - title: "Error Adding Contract Type", + title: 'Error Adding Contract Type', message: responseJSON.errorMessage ?? '', contextualColorName: 'danger' }); diff --git a/public/javascripts/contractTypes.admin.ts b/public/javascripts/contractTypes.admin.ts index e0bfb080..e53963fa 100644 --- a/public/javascripts/contractTypes.admin.ts +++ b/public/javascripts/contractTypes.admin.ts @@ -89,9 +89,10 @@ type ResponseJSON = renderContractTypes() } else { bulmaJS.alert({ - title: "Error Updating Contract Type", - message: responseJSON.errorMessage ?? '', - contextualColorName: 'danger' + contextualColorName: 'danger', + title: 'Error Updating Contract Type', + + message: responseJSON.errorMessage ?? '' }) } } @@ -117,12 +118,13 @@ type ResponseJSON = } bulmaJS.confirm({ - title: "Delete Contract Type", - message: "Are you sure you want to delete this contract type?", contextualColorName: 'warning', + title: 'Delete Contract Type', + + message: 'Are you sure you want to delete this contract type?', okButton: { - text: "Yes, Delete Contract Type", - callbackFunction: doDelete + callbackFunction: doDelete, + text: 'Yes, Delete Contract Type' } }) } @@ -195,6 +197,7 @@ type ResponseJSON = bulmaJS.toggleHtmlClipped() }, + onremoved() { bulmaJS.toggleHtmlClipped() } @@ -260,6 +263,7 @@ type ResponseJSON = bulmaJS.toggleHtmlClipped() }, + onremoved() { bulmaJS.toggleHtmlClipped() } @@ -385,13 +389,14 @@ type ResponseJSON = function confirmDoDelete(): void { bulmaJS.confirm({ - title: 'Delete Field', - message: - 'Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.', contextualColorName: 'warning', + title: 'Delete Field', + + message: `Are you sure you want to delete this field? + Note that historical records that make use of this field will not be affected.`, okButton: { - text: 'Yes, Delete Field', - callbackFunction: doDelete + callbackFunction: doDelete, + text: 'Yes, Delete Field' } }) } @@ -467,6 +472,7 @@ type ResponseJSON = .querySelector('#button--deleteContractTypeField') ?.addEventListener('click', confirmDoDelete) }, + onremoved() { bulmaJS.toggleHtmlClipped() cityssm.disableNavBlocker() @@ -706,12 +712,13 @@ type ResponseJSON = } bulmaJS.confirm({ - title: 'Delete Print', - message: 'Are you sure you want to remove this print option?', contextualColorName: 'warning', + title: 'Delete Print', + + message: 'Are you sure you want to remove this print option?', okButton: { - text: 'Yes, Remove Print', - callbackFunction: doDelete + callbackFunction: doDelete, + text: 'Yes, Remove Print' } }) } @@ -1017,7 +1024,7 @@ type ResponseJSON = renderContractTypes() } else { bulmaJS.alert({ - title: "Error Adding Contract Type", + title: 'Error Adding Contract Type', message: responseJSON.errorMessage ?? '', contextualColorName: 'danger' }) diff --git a/public/javascripts/workOrder.edit.js b/public/javascripts/workOrder.edit.js index f16d8962..8ca5395a 100644 --- a/public/javascripts/workOrder.edit.js +++ b/public/javascripts/workOrder.edit.js @@ -31,16 +31,16 @@ Object.defineProperty(exports, "__esModule", { value: true }); } else { bulmaJS.alert({ - message: 'Work Order Updated Successfully', - contextualColorName: 'success' + contextualColorName: 'success', + message: 'Work Order Updated Successfully' }); } } else { bulmaJS.alert({ + contextualColorName: 'danger', title: 'Error Updating Work Order', - message: responseJSON.errorMessage ?? '', - contextualColorName: 'danger' + message: responseJSON.errorMessage ?? '' }); } }); @@ -81,9 +81,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); } else { bulmaJS.alert({ + contextualColorName: 'danger', title: 'Error Deleting Work Order', - message: responseJSON.errorMessage ?? '', - contextualColorName: 'danger' + message: responseJSON.errorMessage ?? '' }); } }); @@ -95,10 +95,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); const hasOpenMilestones = workOrderMilestones.some((milestone) => !milestone.workOrderMilestoneCompletionDate); if (hasOpenMilestones) { bulmaJS.alert({ + contextualColorName: 'warning', title: 'Outstanding Milestones', message: `You cannot close a work order with outstanding milestones. - Either complete the outstanding milestones, or remove them from the work order.`, - contextualColorName: 'warning' + Either complete the outstanding milestones, or remove them from the work order.` }); /* // Disable closing work orders with open milestones @@ -116,14 +116,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); } else { bulmaJS.confirm({ + contextualColorName: sunrise.hasUnsavedChanges() ? 'warning' : 'info', title: 'Close Work Order', message: sunrise.hasUnsavedChanges() ? 'Are you sure you want to close this work order with unsaved changes?' : 'Are you sure you want to close this work order?', - contextualColorName: sunrise.hasUnsavedChanges() ? 'warning' : 'info', okButton: { - text: 'Yes, Close Work Order', - callbackFunction: doClose + callbackFunction: doClose, + text: 'Yes, Close Work Order' } }); } @@ -133,9 +133,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); ?.addEventListener('click', (clickEvent) => { clickEvent.preventDefault(); bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Delete Work Order', message: 'Are you sure you want to delete this work order?', - contextualColorName: 'warning', okButton: { text: 'Yes, Delete Work Order', callbackFunction: doDelete @@ -243,12 +243,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); }, processMilestoneResponse); } bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Reopen Milestone', message: 'Are you sure you want to remove the completion status from this milestone, and reopen it?', - contextualColorName: 'warning', okButton: { + callbackFunction: doReopen, text: 'Yes, Reopen Milestone', - callbackFunction: doReopen } }); } @@ -262,9 +262,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); }, processMilestoneResponse); } bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Delete Milestone', message: 'Are you sure you want to delete this milestone?', - contextualColorName: 'warning', okButton: { text: 'Yes, Delete Milestone', callbackFunction: doDeleteMilestone @@ -442,27 +442,27 @@ Object.defineProperty(exports, "__esModule", { value: true }); let addFormElement; let workOrderMilestoneDateStringElement; let addCloseModalFunction; - function doAdd(submitEvent) { + function _doAdd() { + cityssm.postJSON(`${sunrise.urlPrefix}/workOrders/doAddWorkOrderMilestone`, addFormElement, (rawResponseJSON) => { + const responseJSON = rawResponseJSON; + processMilestoneResponse(responseJSON); + if (responseJSON.success) { + addCloseModalFunction(); + } + }); + } + function doAddFormSubmit(submitEvent) { if (submitEvent) { submitEvent.preventDefault(); } const currentDateString = cityssm.dateToString(new Date()); - function _doAdd() { - cityssm.postJSON(`${sunrise.urlPrefix}/workOrders/doAddWorkOrderMilestone`, addFormElement, (rawResponseJSON) => { - const responseJSON = rawResponseJSON; - processMilestoneResponse(responseJSON); - if (responseJSON.success) { - addCloseModalFunction(); - } - }); - } const milestoneDateString = workOrderMilestoneDateStringElement.value; if (milestoneDateString !== '' && milestoneDateString < currentDateString) { bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Milestone Date in the Past', message: 'Are you sure you want to create a milestone with a date in the past?', - contextualColorName: 'warning', okButton: { text: 'Yes, Create a Past Milestone', callbackFunction: _doAdd @@ -495,7 +495,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); bulmaJS.toggleHtmlClipped(); modalElement.querySelector('#milestoneAdd--workOrderMilestoneTypeId').focus(); addFormElement = modalElement.querySelector('form'); - addFormElement.addEventListener('submit', doAdd); + addFormElement.addEventListener('submit', doAddFormSubmit); const conflictingMilestonePanelElement = document.querySelector('#milestoneAdd--conflictingMilestonesPanel'); workOrderMilestoneDateStringElement.addEventListener('change', () => { refreshConflictingMilestones(workOrderMilestoneDateStringElement.value, conflictingMilestonePanelElement); diff --git a/public/javascripts/workOrder.edit.ts b/public/javascripts/workOrder.edit.ts index 7493b906..da1c6020 100644 --- a/public/javascripts/workOrder.edit.ts +++ b/public/javascripts/workOrder.edit.ts @@ -67,15 +67,16 @@ declare const exports: Record ) } else { bulmaJS.alert({ - message: 'Work Order Updated Successfully', - contextualColorName: 'success' + contextualColorName: 'success', + message: 'Work Order Updated Successfully' }) } } else { bulmaJS.alert({ + contextualColorName: 'danger', title: 'Error Updating Work Order', - message: responseJSON.errorMessage ?? '', - contextualColorName: 'danger' + + message: responseJSON.errorMessage ?? '' }) } } @@ -137,9 +138,10 @@ declare const exports: Record globalThis.location.href = `${sunrise.urlPrefix}/workOrders` } else { bulmaJS.alert({ + contextualColorName: 'danger', title: 'Error Deleting Work Order', - message: responseJSON.errorMessage ?? '', - contextualColorName: 'danger' + + message: responseJSON.errorMessage ?? '' }) } } @@ -157,10 +159,11 @@ declare const exports: Record if (hasOpenMilestones) { bulmaJS.alert({ + contextualColorName: 'warning', title: 'Outstanding Milestones', + message: `You cannot close a work order with outstanding milestones. - Either complete the outstanding milestones, or remove them from the work order.`, - contextualColorName: 'warning' + Either complete the outstanding milestones, or remove them from the work order.` }) /* @@ -178,14 +181,16 @@ declare const exports: Record */ } else { bulmaJS.confirm({ + contextualColorName: sunrise.hasUnsavedChanges() ? 'warning' : 'info', title: 'Close Work Order', + message: sunrise.hasUnsavedChanges() ? 'Are you sure you want to close this work order with unsaved changes?' : 'Are you sure you want to close this work order?', - contextualColorName: sunrise.hasUnsavedChanges() ? 'warning' : 'info', + okButton: { - text: 'Yes, Close Work Order', - callbackFunction: doClose + callbackFunction: doClose, + text: 'Yes, Close Work Order' } }) } @@ -197,9 +202,9 @@ declare const exports: Record clickEvent.preventDefault() bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Delete Work Order', message: 'Are you sure you want to delete this work order?', - contextualColorName: 'warning', okButton: { text: 'Yes, Delete Work Order', callbackFunction: doDelete @@ -378,13 +383,15 @@ declare const exports: Record } bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Reopen Milestone', + message: 'Are you sure you want to remove the completion status from this milestone, and reopen it?', - contextualColorName: 'warning', + okButton: { + callbackFunction: doReopen, text: 'Yes, Reopen Milestone', - callbackFunction: doReopen } }) } @@ -410,9 +417,9 @@ declare const exports: Record } bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Delete Milestone', message: 'Are you sure you want to delete this milestone?', - contextualColorName: 'warning', okButton: { text: 'Yes, Delete Milestone', callbackFunction: doDeleteMilestone @@ -659,6 +666,7 @@ declare const exports: Record panelBlockElement .querySelector('.button--reopenMilestone') ?.addEventListener('click', reopenMilestone) + panelBlockElement .querySelector('.button--editMilestone') ?.addEventListener('click', editMilestone) @@ -702,33 +710,33 @@ declare const exports: Record let workOrderMilestoneDateStringElement: HTMLInputElement let addCloseModalFunction: () => void - function doAdd(submitEvent?: SubmitEvent): void { + function _doAdd(): void { + cityssm.postJSON( + `${sunrise.urlPrefix}/workOrders/doAddWorkOrderMilestone`, + addFormElement, + (rawResponseJSON) => { + const responseJSON = rawResponseJSON as { + success: boolean + errorMessage?: string + workOrderMilestones?: WorkOrderMilestone[] + } + + processMilestoneResponse(responseJSON) + + if (responseJSON.success) { + addCloseModalFunction() + } + } + ) + } + + function doAddFormSubmit(submitEvent?: SubmitEvent): void { if (submitEvent) { submitEvent.preventDefault() } const currentDateString = cityssm.dateToString(new Date()) - function _doAdd(): void { - cityssm.postJSON( - `${sunrise.urlPrefix}/workOrders/doAddWorkOrderMilestone`, - addFormElement, - (rawResponseJSON) => { - const responseJSON = rawResponseJSON as { - success: boolean - errorMessage?: string - workOrderMilestones?: WorkOrderMilestone[] - } - - processMilestoneResponse(responseJSON) - - if (responseJSON.success) { - addCloseModalFunction() - } - } - ) - } - const milestoneDateString = workOrderMilestoneDateStringElement.value if ( @@ -736,10 +744,12 @@ declare const exports: Record milestoneDateString < currentDateString ) { bulmaJS.confirm({ + contextualColorName: 'warning', title: 'Milestone Date in the Past', + message: 'Are you sure you want to create a milestone with a date in the past?', - contextualColorName: 'warning', + okButton: { text: 'Yes, Create a Past Milestone', callbackFunction: _doAdd @@ -792,7 +802,7 @@ declare const exports: Record ).focus() addFormElement = modalElement.querySelector('form') as HTMLFormElement - addFormElement.addEventListener('submit', doAdd) + addFormElement.addEventListener('submit', doAddFormSubmit) const conflictingMilestonePanelElement = document.querySelector( '#milestoneAdd--conflictingMilestonesPanel' diff --git a/views/admin-database.ejs b/views/admin-database.ejs index a71610cd..d4a3e5f4 100644 --- a/views/admin-database.ejs +++ b/views/admin-database.ejs @@ -26,54 +26,60 @@ Database Maintenance -

- Database Backup -

- -
-
-

- Before making significant changes to the records in the database, - it is a good idea to back up first! -

+
+
+
+

+ Database Backup +

+
+
+
+

+ Before making significant changes to the records in the database, + it is a good idea to back up first! +

+
+
+
+
+ +
+
+
+
+
+

+ Database Cleanup +

+
+
+
+

+ When records are deleted in this application, they are not removed entirely. + This gives systems administrators the ability to recover deleted records. + This also can leave a small amount of garbage behind in the database. +

+

+ This process permanently deletes records that have already been deleted over + <%= configFunctions.getConfigProperty("settings.adminCleanup.recordDeleteAgeDays") %> days ago. + Note that no active records will be affected by the cleanup process. +

+
+
+
+
+ +
+
- -

- -

- -

- Database Cleanup -

- -
-
- Important Note about Cleanup -
-
-

- When records are deleted in this application, they are not removed entirely. - This gives systems administrators the ability to recover deleted records. - This also can leave a small amount of garbage behind in the database. -

-

- This process permanently deletes records that have already been deleted over - <%= configFunctions.getConfigProperty("settings.adminCleanup.recordDeleteAgeDays") %> days ago. - Note that no active records will be affected by the cleanup process. -

-
-
- -

- -