linting and development
parent
b8c9fd723d
commit
df3f7725d3
|
|
@ -16,11 +16,11 @@ export declare function getCommittalTypeById(committalTypeId: number): Promise<C
|
|||
export declare function getCommittalTypes(): Promise<CommittalType[]>;
|
||||
export declare function getWorkOrderTypeById(workOrderTypeId: number): Promise<WorkOrderType | undefined>;
|
||||
export declare function getWorkOrderTypes(): Promise<WorkOrderType[]>;
|
||||
type CacheTableNames = 'BurialSiteStatuses' | 'BurialSiteTypeFields' | 'BurialSiteTypes' | 'CommittalTypes' | 'ContractTypeFields' | 'ContractTypePrints' | 'ContractTypes' | 'FeeCategories' | 'Fees' | 'IntermentContainerTypes' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes';
|
||||
export declare function clearCacheByTableName(tableName: CacheTableNames, relayMessage?: boolean): void;
|
||||
export declare function clearCaches(): void;
|
||||
export declare function getWorkOrderMilestoneTypeById(workOrderMilestoneTypeId: number): Promise<WorkOrderMilestoneType | undefined>;
|
||||
export declare function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(workOrderMilestoneTypeString: string): Promise<WorkOrderMilestoneType | undefined>;
|
||||
export declare function getWorkOrderMilestoneTypes(): Promise<WorkOrderMilestoneType[]>;
|
||||
export declare function preloadCaches(): Promise<void>;
|
||||
type CacheTableNames = 'BurialSiteStatuses' | 'BurialSiteTypeFields' | 'BurialSiteTypes' | 'CommittalTypes' | 'ContractTypeFields' | 'ContractTypePrints' | 'ContractTypes' | 'FeeCategories' | 'Fees' | 'IntermentContainerTypes' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes';
|
||||
export declare function clearCacheByTableName(tableName: CacheTableNames, relayMessage?: boolean): void;
|
||||
export declare function clearCaches(): void;
|
||||
export {};
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
|
||||
/* eslint-disable perfectionist/sort-modules */
|
||||
import cluster from 'node:cluster';
|
||||
import Debug from 'debug';
|
||||
import getBurialSiteStatusesFromDatabase from '../database/getBurialSiteStatuses.js';
|
||||
|
|
@ -137,6 +139,37 @@ function clearWorkOrderTypesCache() {
|
|||
* Work Order Milestone Types
|
||||
*/
|
||||
let workOrderMilestoneTypes;
|
||||
export async function getWorkOrderMilestoneTypeById(workOrderMilestoneTypeId) {
|
||||
const cachedWorkOrderMilestoneTypes = await getWorkOrderMilestoneTypes();
|
||||
return cachedWorkOrderMilestoneTypes.find((currentWorkOrderMilestoneType) => currentWorkOrderMilestoneType.workOrderMilestoneTypeId ===
|
||||
workOrderMilestoneTypeId);
|
||||
}
|
||||
export async function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(workOrderMilestoneTypeString) {
|
||||
const cachedWorkOrderMilestoneTypes = await getWorkOrderMilestoneTypes();
|
||||
const workOrderMilestoneTypeLowerCase = workOrderMilestoneTypeString.toLowerCase();
|
||||
return cachedWorkOrderMilestoneTypes.find((currentWorkOrderMilestoneType) => currentWorkOrderMilestoneType.workOrderMilestoneType.toLowerCase() ===
|
||||
workOrderMilestoneTypeLowerCase);
|
||||
}
|
||||
export async function getWorkOrderMilestoneTypes() {
|
||||
workOrderMilestoneTypes ??= await getWorkOrderMilestoneTypesFromDatabase();
|
||||
return workOrderMilestoneTypes;
|
||||
}
|
||||
function clearWorkOrderMilestoneTypesCache() {
|
||||
workOrderMilestoneTypes = undefined;
|
||||
}
|
||||
/*
|
||||
* Cache Management
|
||||
*/
|
||||
export async function preloadCaches() {
|
||||
debug('Preloading caches');
|
||||
await getBurialSiteStatuses();
|
||||
await getBurialSiteTypes();
|
||||
await getContractTypes();
|
||||
await getCommittalTypes();
|
||||
await getIntermentContainerTypes();
|
||||
await getWorkOrderTypes();
|
||||
await getWorkOrderMilestoneTypes();
|
||||
}
|
||||
export function clearCacheByTableName(tableName, relayMessage = true) {
|
||||
switch (tableName) {
|
||||
case 'BurialSiteStatuses': {
|
||||
|
|
@ -201,34 +234,6 @@ export function clearCaches() {
|
|||
clearWorkOrderTypesCache();
|
||||
clearWorkOrderMilestoneTypesCache();
|
||||
}
|
||||
export async function getWorkOrderMilestoneTypeById(workOrderMilestoneTypeId) {
|
||||
const cachedWorkOrderMilestoneTypes = await getWorkOrderMilestoneTypes();
|
||||
return cachedWorkOrderMilestoneTypes.find((currentWorkOrderMilestoneType) => currentWorkOrderMilestoneType.workOrderMilestoneTypeId ===
|
||||
workOrderMilestoneTypeId);
|
||||
}
|
||||
export async function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(workOrderMilestoneTypeString) {
|
||||
const cachedWorkOrderMilestoneTypes = await getWorkOrderMilestoneTypes();
|
||||
const workOrderMilestoneTypeLowerCase = workOrderMilestoneTypeString.toLowerCase();
|
||||
return cachedWorkOrderMilestoneTypes.find((currentWorkOrderMilestoneType) => currentWorkOrderMilestoneType.workOrderMilestoneType.toLowerCase() ===
|
||||
workOrderMilestoneTypeLowerCase);
|
||||
}
|
||||
export async function getWorkOrderMilestoneTypes() {
|
||||
workOrderMilestoneTypes ??= await getWorkOrderMilestoneTypesFromDatabase();
|
||||
return workOrderMilestoneTypes;
|
||||
}
|
||||
export async function preloadCaches() {
|
||||
debug('Preloading caches');
|
||||
await getBurialSiteStatuses();
|
||||
await getBurialSiteTypes();
|
||||
await getContractTypes();
|
||||
await getCommittalTypes();
|
||||
await getIntermentContainerTypes();
|
||||
await getWorkOrderTypes();
|
||||
await getWorkOrderMilestoneTypes();
|
||||
}
|
||||
function clearWorkOrderMilestoneTypesCache() {
|
||||
workOrderMilestoneTypes = undefined;
|
||||
}
|
||||
process.on('message', (message) => {
|
||||
if (message.messageType === 'clearCache' && message.pid !== process.pid) {
|
||||
debug(`Clearing cache: ${message.tableName}`);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
|
||||
/* eslint-disable perfectionist/sort-modules */
|
||||
|
||||
import cluster from 'node:cluster'
|
||||
|
||||
import Debug from 'debug'
|
||||
|
|
@ -254,6 +257,60 @@ function clearWorkOrderTypesCache(): void {
|
|||
|
||||
let workOrderMilestoneTypes: WorkOrderMilestoneType[] | undefined
|
||||
|
||||
export async function getWorkOrderMilestoneTypeById(
|
||||
workOrderMilestoneTypeId: number
|
||||
): Promise<WorkOrderMilestoneType | undefined> {
|
||||
const cachedWorkOrderMilestoneTypes = await getWorkOrderMilestoneTypes()
|
||||
|
||||
return cachedWorkOrderMilestoneTypes.find(
|
||||
(currentWorkOrderMilestoneType) =>
|
||||
currentWorkOrderMilestoneType.workOrderMilestoneTypeId ===
|
||||
workOrderMilestoneTypeId
|
||||
)
|
||||
}
|
||||
|
||||
export async function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(
|
||||
workOrderMilestoneTypeString: string
|
||||
): Promise<WorkOrderMilestoneType | undefined> {
|
||||
const cachedWorkOrderMilestoneTypes = await getWorkOrderMilestoneTypes()
|
||||
|
||||
const workOrderMilestoneTypeLowerCase =
|
||||
workOrderMilestoneTypeString.toLowerCase()
|
||||
|
||||
return cachedWorkOrderMilestoneTypes.find(
|
||||
(currentWorkOrderMilestoneType) =>
|
||||
currentWorkOrderMilestoneType.workOrderMilestoneType.toLowerCase() ===
|
||||
workOrderMilestoneTypeLowerCase
|
||||
)
|
||||
}
|
||||
|
||||
export async function getWorkOrderMilestoneTypes(): Promise<
|
||||
WorkOrderMilestoneType[]
|
||||
> {
|
||||
workOrderMilestoneTypes ??= await getWorkOrderMilestoneTypesFromDatabase()
|
||||
return workOrderMilestoneTypes
|
||||
}
|
||||
|
||||
|
||||
function clearWorkOrderMilestoneTypesCache(): void {
|
||||
workOrderMilestoneTypes = undefined
|
||||
}
|
||||
|
||||
/*
|
||||
* Cache Management
|
||||
*/
|
||||
|
||||
export async function preloadCaches(): Promise<void> {
|
||||
debug('Preloading caches')
|
||||
await getBurialSiteStatuses()
|
||||
await getBurialSiteTypes()
|
||||
await getContractTypes()
|
||||
await getCommittalTypes()
|
||||
await getIntermentContainerTypes()
|
||||
await getWorkOrderTypes()
|
||||
await getWorkOrderMilestoneTypes()
|
||||
}
|
||||
|
||||
type CacheTableNames =
|
||||
| 'BurialSiteStatuses'
|
||||
| 'BurialSiteTypeFields'
|
||||
|
|
@ -346,55 +403,6 @@ export function clearCaches(): void {
|
|||
clearWorkOrderMilestoneTypesCache()
|
||||
}
|
||||
|
||||
export async function getWorkOrderMilestoneTypeById(
|
||||
workOrderMilestoneTypeId: number
|
||||
): Promise<WorkOrderMilestoneType | undefined> {
|
||||
const cachedWorkOrderMilestoneTypes = await getWorkOrderMilestoneTypes()
|
||||
|
||||
return cachedWorkOrderMilestoneTypes.find(
|
||||
(currentWorkOrderMilestoneType) =>
|
||||
currentWorkOrderMilestoneType.workOrderMilestoneTypeId ===
|
||||
workOrderMilestoneTypeId
|
||||
)
|
||||
}
|
||||
|
||||
export async function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(
|
||||
workOrderMilestoneTypeString: string
|
||||
): Promise<WorkOrderMilestoneType | undefined> {
|
||||
const cachedWorkOrderMilestoneTypes = await getWorkOrderMilestoneTypes()
|
||||
|
||||
const workOrderMilestoneTypeLowerCase =
|
||||
workOrderMilestoneTypeString.toLowerCase()
|
||||
|
||||
return cachedWorkOrderMilestoneTypes.find(
|
||||
(currentWorkOrderMilestoneType) =>
|
||||
currentWorkOrderMilestoneType.workOrderMilestoneType.toLowerCase() ===
|
||||
workOrderMilestoneTypeLowerCase
|
||||
)
|
||||
}
|
||||
|
||||
export async function getWorkOrderMilestoneTypes(): Promise<
|
||||
WorkOrderMilestoneType[]
|
||||
> {
|
||||
workOrderMilestoneTypes ??= await getWorkOrderMilestoneTypesFromDatabase()
|
||||
return workOrderMilestoneTypes
|
||||
}
|
||||
|
||||
export async function preloadCaches(): Promise<void> {
|
||||
debug('Preloading caches')
|
||||
await getBurialSiteStatuses()
|
||||
await getBurialSiteTypes()
|
||||
await getContractTypes()
|
||||
await getCommittalTypes()
|
||||
await getIntermentContainerTypes()
|
||||
await getWorkOrderTypes()
|
||||
await getWorkOrderMilestoneTypes()
|
||||
}
|
||||
|
||||
function clearWorkOrderMilestoneTypesCache(): void {
|
||||
workOrderMilestoneTypes = undefined
|
||||
}
|
||||
|
||||
process.on('message', (message: WorkerMessage) => {
|
||||
if (message.messageType === 'clearCache' && message.pid !== process.pid) {
|
||||
debug(`Clearing cache: ${(message as ClearCacheWorkerMessage).tableName}`)
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
latitudeElement: document.querySelector('#burialSite--burialSiteLatitude'),
|
||||
longitudeElement: document.querySelector('#burialSite--burialSiteLongitude'),
|
||||
callbackFunction: () => {
|
||||
sunrise.setUnsavedChanges();
|
||||
setUnsavedChanges();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -298,7 +298,7 @@ declare const exports: Record<string, unknown>
|
|||
) as HTMLInputElement,
|
||||
|
||||
callbackFunction: () => {
|
||||
sunrise.setUnsavedChanges()
|
||||
setUnsavedChanges()
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
latitudeElement: document.querySelector('#cemetery--cemeteryLatitude'),
|
||||
longitudeElement: document.querySelector('#cemetery--cemeteryLongitude'),
|
||||
callbackFunction: () => {
|
||||
sunrise.setUnsavedChanges();
|
||||
setUnsavedChanges();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ declare const exports: Record<string, unknown>
|
|||
) as HTMLInputElement,
|
||||
|
||||
callbackFunction: () => {
|
||||
sunrise.setUnsavedChanges()
|
||||
setUnsavedChanges()
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
(() => {
|
||||
const sunrise = exports.sunrise;
|
||||
const feeCategoriesContainerElement = document.querySelector('#container--feeCategories');
|
||||
const feeCategoryContainerClassName = 'container--feeCategory';
|
||||
const feeCategoryContainerSelector = `.${feeCategoryContainerClassName}`;
|
||||
let feeCategories = exports.feeCategories;
|
||||
delete exports.feeCategories;
|
||||
function getFeeCategory(feeCategoryId) {
|
||||
|
|
@ -24,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
feeCategoriesContainerElement.innerHTML = '';
|
||||
for (const feeCategory of feeCategories) {
|
||||
const feeCategoryContainerElement = document.createElement('section');
|
||||
feeCategoryContainerElement.className = 'panel container--feeCategory';
|
||||
feeCategoryContainerElement.className = `panel ${feeCategoryContainerClassName}`;
|
||||
feeCategoryContainerElement.dataset.feeCategoryId =
|
||||
feeCategory.feeCategoryId.toString();
|
||||
// eslint-disable-next-line no-unsanitized/property
|
||||
|
|
@ -221,7 +223,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
});
|
||||
});
|
||||
function openEditFeeCategory(clickEvent) {
|
||||
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest('.container--feeCategory').dataset.feeCategoryId ?? '', 10);
|
||||
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(feeCategoryContainerSelector).dataset.feeCategoryId ?? '', 10);
|
||||
const feeCategory = getFeeCategory(feeCategoryId);
|
||||
let editCloseModalFunction;
|
||||
function doUpdateFeeCategory(submitEvent) {
|
||||
|
|
@ -266,7 +268,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
});
|
||||
}
|
||||
function confirmDeleteFeeCategory(clickEvent) {
|
||||
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest('.container--feeCategory').dataset.feeCategoryId ?? '', 10);
|
||||
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(feeCategoryContainerSelector).dataset.feeCategoryId ?? '', 10);
|
||||
function doDelete() {
|
||||
cityssm.postJSON(`${sunrise.urlPrefix}/admin/doDeleteFeeCategory`, {
|
||||
feeCategoryId
|
||||
|
|
@ -297,8 +299,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
function moveFeeCategory(clickEvent) {
|
||||
const buttonElement = clickEvent.currentTarget;
|
||||
const feeCategoryId = buttonElement.closest('.container--feeCategory').dataset
|
||||
.feeCategoryId ?? '';
|
||||
const feeCategoryId = buttonElement.closest(feeCategoryContainerSelector)
|
||||
.dataset.feeCategoryId ?? '';
|
||||
cityssm.postJSON(`${sunrise.urlPrefix}/admin/${buttonElement.dataset.direction === 'up'
|
||||
? 'doMoveFeeCategoryUp'
|
||||
: 'doMoveFeeCategoryDown'}`, {
|
||||
|
|
@ -323,7 +325,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
* Fees
|
||||
*/
|
||||
function openAddFee(clickEvent) {
|
||||
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest('.container--feeCategory').dataset.feeCategoryId ?? '', 10);
|
||||
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(feeCategoryContainerSelector).dataset.feeCategoryId ?? '', 10);
|
||||
let addCloseModalFunction;
|
||||
function doAddFee(submitEvent) {
|
||||
submitEvent.preventDefault();
|
||||
|
|
@ -427,7 +429,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
clickEvent.preventDefault();
|
||||
const feeContainerElement = clickEvent.currentTarget.closest('.container--fee');
|
||||
const feeId = Number.parseInt(feeContainerElement.dataset.feeId ?? '', 10);
|
||||
const feeCategoryId = Number.parseInt(feeContainerElement.closest('.container--feeCategory')
|
||||
const feeCategoryId = Number.parseInt(feeContainerElement.closest(feeCategoryContainerSelector)
|
||||
.dataset.feeCategoryId ?? '');
|
||||
const feeCategory = getFeeCategory(feeCategoryId);
|
||||
const fee = getFee(feeCategory, feeId);
|
||||
|
|
@ -472,7 +474,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
clickEvent.preventDefault();
|
||||
const feeContainerElement = clickEvent.currentTarget.closest('.container--fee');
|
||||
const feeId = Number.parseInt(feeContainerElement.dataset.feeId ?? '', 10);
|
||||
const feeCategoryId = Number.parseInt(feeContainerElement.closest('.container--feeCategory')
|
||||
const feeCategoryId = Number.parseInt(feeContainerElement.closest(feeCategoryContainerSelector)
|
||||
.dataset.feeCategoryId ?? '');
|
||||
const feeCategory = getFeeCategory(feeCategoryId);
|
||||
const fee = getFee(feeCategory, feeId);
|
||||
|
|
|
|||
|
|
@ -24,6 +24,9 @@ declare const exports: Record<string, unknown>
|
|||
'#container--feeCategories'
|
||||
) as HTMLElement
|
||||
|
||||
const feeCategoryContainerClassName = 'container--feeCategory'
|
||||
const feeCategoryContainerSelector = `.${feeCategoryContainerClassName}`
|
||||
|
||||
let feeCategories = exports.feeCategories as FeeCategory[]
|
||||
delete exports.feeCategories
|
||||
|
||||
|
|
@ -66,7 +69,7 @@ declare const exports: Record<string, unknown>
|
|||
for (const feeCategory of feeCategories) {
|
||||
const feeCategoryContainerElement = document.createElement('section')
|
||||
|
||||
feeCategoryContainerElement.className = 'panel container--feeCategory'
|
||||
feeCategoryContainerElement.className = `panel ${feeCategoryContainerClassName}`
|
||||
|
||||
feeCategoryContainerElement.dataset.feeCategoryId =
|
||||
feeCategory.feeCategoryId.toString()
|
||||
|
|
@ -343,7 +346,7 @@ declare const exports: Record<string, unknown>
|
|||
const feeCategoryId = Number.parseInt(
|
||||
(
|
||||
(clickEvent.currentTarget as HTMLElement).closest(
|
||||
'.container--feeCategory'
|
||||
feeCategoryContainerSelector
|
||||
) as HTMLElement
|
||||
).dataset.feeCategoryId ?? '',
|
||||
10
|
||||
|
|
@ -423,7 +426,7 @@ declare const exports: Record<string, unknown>
|
|||
const feeCategoryId = Number.parseInt(
|
||||
(
|
||||
(clickEvent.currentTarget as HTMLElement).closest(
|
||||
'.container--feeCategory'
|
||||
feeCategoryContainerSelector
|
||||
) as HTMLElement
|
||||
).dataset.feeCategoryId ?? '',
|
||||
10
|
||||
|
|
@ -467,8 +470,8 @@ declare const exports: Record<string, unknown>
|
|||
const buttonElement = clickEvent.currentTarget as HTMLButtonElement
|
||||
|
||||
const feeCategoryId =
|
||||
(buttonElement.closest('.container--feeCategory') as HTMLElement).dataset
|
||||
.feeCategoryId ?? ''
|
||||
(buttonElement.closest(feeCategoryContainerSelector) as HTMLElement)
|
||||
.dataset.feeCategoryId ?? ''
|
||||
|
||||
cityssm.postJSON(
|
||||
`${sunrise.urlPrefix}/admin/${
|
||||
|
|
@ -505,7 +508,7 @@ declare const exports: Record<string, unknown>
|
|||
const feeCategoryId = Number.parseInt(
|
||||
(
|
||||
(clickEvent.currentTarget as HTMLElement).closest(
|
||||
'.container--feeCategory'
|
||||
feeCategoryContainerSelector
|
||||
) as HTMLElement
|
||||
).dataset.feeCategoryId ?? '',
|
||||
10
|
||||
|
|
@ -675,7 +678,7 @@ declare const exports: Record<string, unknown>
|
|||
|
||||
const feeId = Number.parseInt(feeContainerElement.dataset.feeId ?? '', 10)
|
||||
const feeCategoryId = Number.parseInt(
|
||||
(feeContainerElement.closest('.container--feeCategory') as HTMLElement)
|
||||
(feeContainerElement.closest(feeCategoryContainerSelector) as HTMLElement)
|
||||
.dataset.feeCategoryId ?? ''
|
||||
)
|
||||
|
||||
|
|
@ -754,7 +757,7 @@ declare const exports: Record<string, unknown>
|
|||
|
||||
const feeId = Number.parseInt(feeContainerElement.dataset.feeId ?? '', 10)
|
||||
const feeCategoryId = Number.parseInt(
|
||||
(feeContainerElement.closest('.container--feeCategory') as HTMLElement)
|
||||
(feeContainerElement.closest(feeCategoryContainerSelector) as HTMLElement)
|
||||
.dataset.feeCategoryId ?? ''
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
/*
|
||||
* Leaflet Mapping
|
||||
*/
|
||||
const coordinatePrecision = 8;
|
||||
const leafletConstants = {
|
||||
tileLayerURL: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
defaultZoom: 15,
|
||||
|
|
@ -98,8 +99,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
clickEvent.preventDefault();
|
||||
if (currentMarker !== undefined) {
|
||||
const mapCoordinates = currentMarker.getLatLng();
|
||||
options.latitudeElement.value = mapCoordinates.lat.toFixed(8);
|
||||
options.longitudeElement.value = mapCoordinates.lng.toFixed(8);
|
||||
options.latitudeElement.value = mapCoordinates.lat.toFixed(coordinatePrecision);
|
||||
options.longitudeElement.value = mapCoordinates.lng.toFixed(coordinatePrecision);
|
||||
options.callbackFunction(mapCoordinates.lat, mapCoordinates.lng);
|
||||
}
|
||||
closeModalFunction();
|
||||
|
|
|
|||
|
|
@ -92,6 +92,8 @@ declare const exports: Record<string, unknown> & {
|
|||
* Leaflet Mapping
|
||||
*/
|
||||
|
||||
const coordinatePrecision = 8
|
||||
|
||||
const leafletConstants = {
|
||||
tileLayerURL: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
|
||||
|
|
@ -171,8 +173,8 @@ declare const exports: Record<string, unknown> & {
|
|||
if (currentMarker !== undefined) {
|
||||
const mapCoordinates = currentMarker.getLatLng() as Leaflet.LatLng
|
||||
|
||||
options.latitudeElement.value = mapCoordinates.lat.toFixed(8)
|
||||
options.longitudeElement.value = mapCoordinates.lng.toFixed(8)
|
||||
options.latitudeElement.value = mapCoordinates.lat.toFixed(coordinatePrecision)
|
||||
options.longitudeElement.value = mapCoordinates.lng.toFixed(coordinatePrecision)
|
||||
|
||||
options.callbackFunction(mapCoordinates.lat, mapCoordinates.lng)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,45 +37,6 @@ const user = {
|
|||
apiKey: ''
|
||||
}
|
||||
};
|
||||
function purgeTables() {
|
||||
console.time('purgeTables');
|
||||
const tablesToPurge = [
|
||||
'WorkOrderMilestones',
|
||||
'WorkOrderComments',
|
||||
'WorkOrderBurialSites',
|
||||
'WorkOrderContracts',
|
||||
'WorkOrders',
|
||||
'ContractTransactions',
|
||||
'ContractFees',
|
||||
'ContractFields',
|
||||
'ContractComments',
|
||||
'ContractInterments',
|
||||
'Contracts',
|
||||
'FuneralHomes',
|
||||
'BurialSiteFields',
|
||||
'BurialSiteComments',
|
||||
'BurialSites'
|
||||
];
|
||||
const database = sqlite(databasePath);
|
||||
for (const tableName of tablesToPurge) {
|
||||
database.prepare(`delete from ${tableName}`).run();
|
||||
database
|
||||
.prepare('delete from sqlite_sequence where name = ?')
|
||||
.run(tableName);
|
||||
}
|
||||
database.close();
|
||||
console.timeEnd('purgeTables');
|
||||
}
|
||||
function purgeConfigTables() {
|
||||
console.time('purgeConfigTables');
|
||||
const database = sqlite(databasePath);
|
||||
database.prepare('delete from Cemeteries').run();
|
||||
database
|
||||
.prepare("delete from sqlite_sequence where name in ('Cemeteries')")
|
||||
.run();
|
||||
database.close();
|
||||
console.timeEnd('purgeConfigTables');
|
||||
}
|
||||
function formatDateString(year, month, day) {
|
||||
const formattedYear = `0000${year}`.slice(-4);
|
||||
const formattedMonth = `00${month}`.slice(-2);
|
||||
|
|
@ -111,8 +72,11 @@ async function importFromMasterCSV() {
|
|||
(masterRow.CM_RANGE2 === '0' ? '' : masterRow.CM_RANGE2);
|
||||
const burialSiteNameSegment3 = (masterRow.CM_LOT1 === '0' ? '' : masterRow.CM_LOT1) +
|
||||
(masterRow.CM_LOT2 === '0' ? '' : masterRow.CM_LOT2);
|
||||
const burialSiteNameSegment4 = (masterRow.CM_GRAVE1 === '0' ? '' : masterRow.CM_GRAVE1) +
|
||||
let burialSiteNameSegment4 = (masterRow.CM_GRAVE1 === '0' ? '' : masterRow.CM_GRAVE1) +
|
||||
(masterRow.CM_GRAVE2 === '0' ? '' : masterRow.CM_GRAVE2);
|
||||
if (burialSiteNameSegment4 === '') {
|
||||
burialSiteNameSegment4 = '1';
|
||||
}
|
||||
const burialSiteName = buildBurialSiteName(masterRow.CM_CEMETERY, {
|
||||
burialSiteNameSegment1,
|
||||
burialSiteNameSegment2,
|
||||
|
|
@ -180,8 +144,8 @@ async function importFromMasterCSV() {
|
|||
purchaserAddress1: masterRow.CM_ADDRESS,
|
||||
purchaserAddress2: '',
|
||||
purchaserCity: masterRow.CM_CITY,
|
||||
purchaserProvince: masterRow.CM_PROV,
|
||||
purchaserPostalCode,
|
||||
purchaserProvince: masterRow.CM_PROV,
|
||||
purchaserEmail: '',
|
||||
purchaserPhoneNumber: '',
|
||||
deceasedName: masterRow.CM_DECEASED_NAME === ''
|
||||
|
|
@ -190,8 +154,8 @@ async function importFromMasterCSV() {
|
|||
deceasedAddress1: masterRow.CM_ADDRESS,
|
||||
deceasedAddress2: '',
|
||||
deceasedCity: masterRow.CM_CITY,
|
||||
deceasedProvince: masterRow.CM_PROV,
|
||||
deceasedPostalCode: purchaserPostalCode
|
||||
deceasedPostalCode: purchaserPostalCode,
|
||||
deceasedProvince: masterRow.CM_PROV
|
||||
}, user);
|
||||
if (masterRow.CM_REMARK1 !== '') {
|
||||
await addContractComment({
|
||||
|
|
@ -281,16 +245,16 @@ async function importFromMasterCSV() {
|
|||
purchaserAddress1: masterRow.CM_ADDRESS,
|
||||
purchaserAddress2: '',
|
||||
purchaserCity: masterRow.CM_CITY,
|
||||
purchaserProvince: masterRow.CM_PROV,
|
||||
purchaserPostalCode: deceasedPostalCode,
|
||||
purchaserPhoneNumber: '',
|
||||
purchaserProvince: masterRow.CM_PROV,
|
||||
purchaserEmail: '',
|
||||
purchaserPhoneNumber: '',
|
||||
deceasedName: masterRow.CM_DECEASED_NAME,
|
||||
deceasedAddress1: masterRow.CM_ADDRESS,
|
||||
deceasedAddress2: '',
|
||||
deceasedCity: masterRow.CM_CITY,
|
||||
deceasedProvince: masterRow.CM_PROV,
|
||||
deceasedPostalCode,
|
||||
deceasedProvince: masterRow.CM_PROV,
|
||||
birthDateString: '',
|
||||
birthPlace: '',
|
||||
deathDateString,
|
||||
|
|
@ -363,8 +327,11 @@ async function importFromPrepaidCSV() {
|
|||
(prepaidRow.CMPP_RANGE2 === '0' ? '' : prepaidRow.CMPP_RANGE2);
|
||||
const burialSiteNameSegment3 = (prepaidRow.CMPP_LOT1 === '0' ? '' : prepaidRow.CMPP_LOT1) +
|
||||
(prepaidRow.CMPP_LOT2 === '0' ? '' : prepaidRow.CMPP_LOT2);
|
||||
const burialSiteNameSegment4 = (prepaidRow.CMPP_GRAVE1 === '0' ? '' : prepaidRow.CMPP_GRAVE1) +
|
||||
let burialSiteNameSegment4 = (prepaidRow.CMPP_GRAVE1 === '0' ? '' : prepaidRow.CMPP_GRAVE1) +
|
||||
(prepaidRow.CMPP_GRAVE2 === '0' ? '' : prepaidRow.CMPP_GRAVE2);
|
||||
if (burialSiteNameSegment4 === '') {
|
||||
burialSiteNameSegment4 = '1';
|
||||
}
|
||||
const burialSiteName = buildBurialSiteName(cemeteryKey, {
|
||||
burialSiteNameSegment1,
|
||||
burialSiteNameSegment2,
|
||||
|
|
@ -596,8 +563,11 @@ async function importFromWorkOrderCSV() {
|
|||
(workOrderRow.WO_RANGE2 === '0' ? '' : workOrderRow.WO_RANGE2);
|
||||
const burialSiteNameSegment3 = (workOrderRow.WO_LOT1 === '0' ? '' : workOrderRow.WO_LOT1) +
|
||||
(workOrderRow.WO_LOT2 === '0' ? '' : workOrderRow.WO_LOT2);
|
||||
const burialSiteNameSegment4 = (workOrderRow.WO_GRAVE1 === '0' ? '' : workOrderRow.WO_GRAVE1) +
|
||||
let burialSiteNameSegment4 = (workOrderRow.WO_GRAVE1 === '0' ? '' : workOrderRow.WO_GRAVE1) +
|
||||
(workOrderRow.WO_GRAVE2 === '0' ? '' : workOrderRow.WO_GRAVE2);
|
||||
if (burialSiteNameSegment4 === '') {
|
||||
burialSiteNameSegment4 = '1';
|
||||
}
|
||||
const burialSiteName = buildBurialSiteName(workOrderRow.WO_CEMETERY, {
|
||||
burialSiteNameSegment1,
|
||||
burialSiteNameSegment2,
|
||||
|
|
@ -806,6 +776,45 @@ async function importFromWorkOrderCSV() {
|
|||
}
|
||||
console.timeEnd('importFromWorkOrderCSV');
|
||||
}
|
||||
function purgeConfigTables() {
|
||||
console.time('purgeConfigTables');
|
||||
const database = sqlite(databasePath);
|
||||
database.prepare('delete from Cemeteries').run();
|
||||
database
|
||||
.prepare("delete from sqlite_sequence where name in ('Cemeteries')")
|
||||
.run();
|
||||
database.close();
|
||||
console.timeEnd('purgeConfigTables');
|
||||
}
|
||||
function purgeTables() {
|
||||
console.time('purgeTables');
|
||||
const tablesToPurge = [
|
||||
'WorkOrderMilestones',
|
||||
'WorkOrderComments',
|
||||
'WorkOrderBurialSites',
|
||||
'WorkOrderContracts',
|
||||
'WorkOrders',
|
||||
'ContractTransactions',
|
||||
'ContractFees',
|
||||
'ContractFields',
|
||||
'ContractComments',
|
||||
'ContractInterments',
|
||||
'Contracts',
|
||||
'FuneralHomes',
|
||||
'BurialSiteFields',
|
||||
'BurialSiteComments',
|
||||
'BurialSites'
|
||||
];
|
||||
const database = sqlite(databasePath);
|
||||
for (const tableName of tablesToPurge) {
|
||||
database.prepare(`delete from ${tableName}`).run();
|
||||
database
|
||||
.prepare('delete from sqlite_sequence where name = ?')
|
||||
.run(tableName);
|
||||
}
|
||||
database.close();
|
||||
console.timeEnd('purgeTables');
|
||||
}
|
||||
console.log(`Started ${new Date().toLocaleString()}`);
|
||||
console.time('importFromCsv');
|
||||
// Purge Tables
|
||||
|
|
|
|||
|
|
@ -195,58 +195,11 @@ const user: User = {
|
|||
userProperties: {
|
||||
canUpdate: true,
|
||||
isAdmin: false,
|
||||
|
||||
apiKey: ''
|
||||
}
|
||||
}
|
||||
|
||||
function purgeTables(): void {
|
||||
console.time('purgeTables')
|
||||
|
||||
const tablesToPurge = [
|
||||
'WorkOrderMilestones',
|
||||
'WorkOrderComments',
|
||||
'WorkOrderBurialSites',
|
||||
'WorkOrderContracts',
|
||||
'WorkOrders',
|
||||
'ContractTransactions',
|
||||
'ContractFees',
|
||||
'ContractFields',
|
||||
'ContractComments',
|
||||
'ContractInterments',
|
||||
'Contracts',
|
||||
'FuneralHomes',
|
||||
'BurialSiteFields',
|
||||
'BurialSiteComments',
|
||||
'BurialSites'
|
||||
]
|
||||
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
for (const tableName of tablesToPurge) {
|
||||
database.prepare(`delete from ${tableName}`).run()
|
||||
database
|
||||
.prepare('delete from sqlite_sequence where name = ?')
|
||||
.run(tableName)
|
||||
}
|
||||
|
||||
database.close()
|
||||
|
||||
console.timeEnd('purgeTables')
|
||||
}
|
||||
|
||||
function purgeConfigTables(): void {
|
||||
console.time('purgeConfigTables')
|
||||
|
||||
const database = sqlite(databasePath)
|
||||
database.prepare('delete from Cemeteries').run()
|
||||
database
|
||||
.prepare("delete from sqlite_sequence where name in ('Cemeteries')")
|
||||
.run()
|
||||
database.close()
|
||||
|
||||
console.timeEnd('purgeConfigTables')
|
||||
}
|
||||
|
||||
function formatDateString(
|
||||
year: string,
|
||||
month: string,
|
||||
|
|
@ -301,10 +254,15 @@ async function importFromMasterCSV(): Promise<void> {
|
|||
const burialSiteNameSegment3 =
|
||||
(masterRow.CM_LOT1 === '0' ? '' : masterRow.CM_LOT1) +
|
||||
(masterRow.CM_LOT2 === '0' ? '' : masterRow.CM_LOT2)
|
||||
const burialSiteNameSegment4 =
|
||||
|
||||
let burialSiteNameSegment4 =
|
||||
(masterRow.CM_GRAVE1 === '0' ? '' : masterRow.CM_GRAVE1) +
|
||||
(masterRow.CM_GRAVE2 === '0' ? '' : masterRow.CM_GRAVE2)
|
||||
|
||||
if (burialSiteNameSegment4 === '') {
|
||||
burialSiteNameSegment4 = '1'
|
||||
}
|
||||
|
||||
const burialSiteName = buildBurialSiteName(masterRow.CM_CEMETERY, {
|
||||
burialSiteNameSegment1,
|
||||
burialSiteNameSegment2,
|
||||
|
|
@ -413,11 +371,12 @@ async function importFromMasterCSV(): Promise<void> {
|
|||
contractTypeFieldIds: '',
|
||||
|
||||
purchaserName: masterRow.CM_PRENEED_OWNER,
|
||||
|
||||
purchaserAddress1: masterRow.CM_ADDRESS,
|
||||
purchaserAddress2: '',
|
||||
purchaserCity: masterRow.CM_CITY,
|
||||
purchaserProvince: masterRow.CM_PROV,
|
||||
purchaserPostalCode,
|
||||
purchaserProvince: masterRow.CM_PROV,
|
||||
|
||||
purchaserEmail: '',
|
||||
purchaserPhoneNumber: '',
|
||||
|
|
@ -430,8 +389,8 @@ async function importFromMasterCSV(): Promise<void> {
|
|||
deceasedAddress1: masterRow.CM_ADDRESS,
|
||||
deceasedAddress2: '',
|
||||
deceasedCity: masterRow.CM_CITY,
|
||||
deceasedProvince: masterRow.CM_PROV,
|
||||
deceasedPostalCode: purchaserPostalCode
|
||||
deceasedPostalCode: purchaserPostalCode,
|
||||
deceasedProvince: masterRow.CM_PROV
|
||||
},
|
||||
user
|
||||
)
|
||||
|
|
@ -592,17 +551,19 @@ async function importFromMasterCSV(): Promise<void> {
|
|||
purchaserAddress1: masterRow.CM_ADDRESS,
|
||||
purchaserAddress2: '',
|
||||
purchaserCity: masterRow.CM_CITY,
|
||||
purchaserProvince: masterRow.CM_PROV,
|
||||
purchaserPostalCode: deceasedPostalCode,
|
||||
purchaserPhoneNumber: '',
|
||||
purchaserProvince: masterRow.CM_PROV,
|
||||
|
||||
purchaserEmail: '',
|
||||
purchaserPhoneNumber: '',
|
||||
|
||||
deceasedName: masterRow.CM_DECEASED_NAME,
|
||||
|
||||
deceasedAddress1: masterRow.CM_ADDRESS,
|
||||
deceasedAddress2: '',
|
||||
deceasedCity: masterRow.CM_CITY,
|
||||
deceasedProvince: masterRow.CM_PROV,
|
||||
deceasedPostalCode,
|
||||
deceasedProvince: masterRow.CM_PROV,
|
||||
|
||||
birthDateString: '',
|
||||
birthPlace: '',
|
||||
|
|
@ -712,10 +673,14 @@ async function importFromPrepaidCSV(): Promise<void> {
|
|||
(prepaidRow.CMPP_LOT1 === '0' ? '' : prepaidRow.CMPP_LOT1) +
|
||||
(prepaidRow.CMPP_LOT2 === '0' ? '' : prepaidRow.CMPP_LOT2)
|
||||
|
||||
const burialSiteNameSegment4 =
|
||||
let burialSiteNameSegment4 =
|
||||
(prepaidRow.CMPP_GRAVE1 === '0' ? '' : prepaidRow.CMPP_GRAVE1) +
|
||||
(prepaidRow.CMPP_GRAVE2 === '0' ? '' : prepaidRow.CMPP_GRAVE2)
|
||||
|
||||
if (burialSiteNameSegment4 === '') {
|
||||
burialSiteNameSegment4 = '1'
|
||||
}
|
||||
|
||||
const burialSiteName = buildBurialSiteName(cemeteryKey, {
|
||||
burialSiteNameSegment1,
|
||||
burialSiteNameSegment2,
|
||||
|
|
@ -1058,10 +1023,14 @@ async function importFromWorkOrderCSV(): Promise<void> {
|
|||
const burialSiteNameSegment3 =
|
||||
(workOrderRow.WO_LOT1 === '0' ? '' : workOrderRow.WO_LOT1) +
|
||||
(workOrderRow.WO_LOT2 === '0' ? '' : workOrderRow.WO_LOT2)
|
||||
const burialSiteNameSegment4 =
|
||||
let burialSiteNameSegment4 =
|
||||
(workOrderRow.WO_GRAVE1 === '0' ? '' : workOrderRow.WO_GRAVE1) +
|
||||
(workOrderRow.WO_GRAVE2 === '0' ? '' : workOrderRow.WO_GRAVE2)
|
||||
|
||||
if (burialSiteNameSegment4 === '') {
|
||||
burialSiteNameSegment4 = '1'
|
||||
}
|
||||
|
||||
const burialSiteName = buildBurialSiteName(workOrderRow.WO_CEMETERY, {
|
||||
burialSiteNameSegment1,
|
||||
burialSiteNameSegment2,
|
||||
|
|
@ -1407,6 +1376,54 @@ async function importFromWorkOrderCSV(): Promise<void> {
|
|||
console.timeEnd('importFromWorkOrderCSV')
|
||||
}
|
||||
|
||||
function purgeConfigTables(): void {
|
||||
console.time('purgeConfigTables')
|
||||
|
||||
const database = sqlite(databasePath)
|
||||
database.prepare('delete from Cemeteries').run()
|
||||
database
|
||||
.prepare("delete from sqlite_sequence where name in ('Cemeteries')")
|
||||
.run()
|
||||
database.close()
|
||||
|
||||
console.timeEnd('purgeConfigTables')
|
||||
}
|
||||
|
||||
function purgeTables(): void {
|
||||
console.time('purgeTables')
|
||||
|
||||
const tablesToPurge = [
|
||||
'WorkOrderMilestones',
|
||||
'WorkOrderComments',
|
||||
'WorkOrderBurialSites',
|
||||
'WorkOrderContracts',
|
||||
'WorkOrders',
|
||||
'ContractTransactions',
|
||||
'ContractFees',
|
||||
'ContractFields',
|
||||
'ContractComments',
|
||||
'ContractInterments',
|
||||
'Contracts',
|
||||
'FuneralHomes',
|
||||
'BurialSiteFields',
|
||||
'BurialSiteComments',
|
||||
'BurialSites'
|
||||
]
|
||||
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
for (const tableName of tablesToPurge) {
|
||||
database.prepare(`delete from ${tableName}`).run()
|
||||
database
|
||||
.prepare('delete from sqlite_sequence where name = ?')
|
||||
.run(tableName)
|
||||
}
|
||||
|
||||
database.close()
|
||||
|
||||
console.timeEnd('purgeTables')
|
||||
}
|
||||
|
||||
console.log(`Started ${new Date().toLocaleString()}`)
|
||||
console.time('importFromCsv')
|
||||
|
||||
|
|
|
|||
|
|
@ -61,9 +61,9 @@ export interface Config {
|
|||
dynamicsGP?: {
|
||||
integrationIsEnabled: boolean;
|
||||
mssqlConfig?: MSSQLConfig;
|
||||
lookupOrder?: DynamicsGPLookup[];
|
||||
accountCodes?: string[];
|
||||
itemNumbers?: string[];
|
||||
lookupOrder?: DynamicsGPLookup[];
|
||||
trialBalanceCodes?: string[];
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -79,9 +79,10 @@ export interface Config {
|
|||
dynamicsGP?: {
|
||||
integrationIsEnabled: boolean
|
||||
mssqlConfig?: MSSQLConfig
|
||||
lookupOrder?: DynamicsGPLookup[]
|
||||
|
||||
accountCodes?: string[]
|
||||
itemNumbers?: string[]
|
||||
lookupOrder?: DynamicsGPLookup[]
|
||||
trialBalanceCodes?: string[]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="has-background-grey" id="is-login-page" data-theme="light" lang="en" style="background-image:url('<%= urlPrefix + configFunctions.getConfigProperty("application.backgroundURL") %>')">
|
||||
<html class="has-background-grey" id="is-login-page" data-theme="light" lang="en"
|
||||
style="background-image:url('<%= urlPrefix + configFunctions.getConfigProperty("application.backgroundURL") %>')">
|
||||
|
||||
<head>
|
||||
<title>
|
||||
|
|
@ -39,13 +40,16 @@
|
|||
</span>
|
||||
</div>
|
||||
<div class="control is-expanded">
|
||||
<input class="input" id="login--userName" name="userName" type="text" placeholder="User Name" value="<%= userName %>" aria-label="User Name" autofocus required />
|
||||
<input class="input" id="login--userName" name="userName" type="text"
|
||||
placeholder="User Name" value="<%= userName %>" aria-label="User Name"
|
||||
autofocus required />
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="sr-only" for="login--password">Password</label>
|
||||
<div class="control has-icons-left has-tooltip-right" data-tooltip="Password" >
|
||||
<input class="input" id="login--password" name="password" type="password" placeholder="Password" required />
|
||||
<input class="input" id="login--password" name="password" type="password"
|
||||
placeholder="Password" required />
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-key" aria-hidden="true"></i>
|
||||
</span>
|
||||
|
|
|
|||
Loading…
Reference in New Issue