refactoring, plus funeral home maint

deepsource-autofix-76c6eb20
Dan Gowans 2025-03-03 15:46:18 -05:00
parent df6a7feddc
commit 44119638c2
156 changed files with 4047 additions and 4549 deletions

2
app.js
View File

@ -22,6 +22,7 @@ import routerBurialSites from './routes/burialSites.js';
import routerCemeteries from './routes/cemeteries.js'; import routerCemeteries from './routes/cemeteries.js';
import routerContracts from './routes/contracts.js'; import routerContracts from './routes/contracts.js';
import routerDashboard from './routes/dashboard.js'; import routerDashboard from './routes/dashboard.js';
import routerFuneralHomes from './routes/funeralHomes.js';
import routerLogin from './routes/login.js'; import routerLogin from './routes/login.js';
import routerPrint from './routes/print.js'; import routerPrint from './routes/print.js';
import routerReports from './routes/reports.js'; import routerReports from './routes/reports.js';
@ -142,6 +143,7 @@ app.use(`${urlPrefix}/api/:apiKey`, permissionHandlers.apiGetHandler, routerApi)
app.use(`${urlPrefix}/print`, sessionChecker, routerPrint); app.use(`${urlPrefix}/print`, sessionChecker, routerPrint);
app.use(`${urlPrefix}/cemeteries`, sessionChecker, routerCemeteries); app.use(`${urlPrefix}/cemeteries`, sessionChecker, routerCemeteries);
app.use(`${urlPrefix}/burialSites`, sessionChecker, routerBurialSites); app.use(`${urlPrefix}/burialSites`, sessionChecker, routerBurialSites);
app.use(`${urlPrefix}/funeralHomes`, sessionChecker, routerFuneralHomes);
app.use(`${urlPrefix}/contracts`, sessionChecker, routerContracts); app.use(`${urlPrefix}/contracts`, sessionChecker, routerContracts);
app.use(`${urlPrefix}/workOrders`, sessionChecker, routerWorkOrders); app.use(`${urlPrefix}/workOrders`, sessionChecker, routerWorkOrders);
app.use(`${urlPrefix}/reports`, sessionChecker, routerReports); app.use(`${urlPrefix}/reports`, sessionChecker, routerReports);

2
app.ts
View File

@ -24,6 +24,7 @@ import routerBurialSites from './routes/burialSites.js'
import routerCemeteries from './routes/cemeteries.js' import routerCemeteries from './routes/cemeteries.js'
import routerContracts from './routes/contracts.js' import routerContracts from './routes/contracts.js'
import routerDashboard from './routes/dashboard.js' import routerDashboard from './routes/dashboard.js'
import routerFuneralHomes from './routes/funeralHomes.js'
import routerLogin from './routes/login.js' import routerLogin from './routes/login.js'
import routerPrint from './routes/print.js' import routerPrint from './routes/print.js'
import routerReports from './routes/reports.js' import routerReports from './routes/reports.js'
@ -233,6 +234,7 @@ app.use(`${urlPrefix}/api/:apiKey`, permissionHandlers.apiGetHandler, routerApi)
app.use(`${urlPrefix}/print`, sessionChecker, routerPrint) app.use(`${urlPrefix}/print`, sessionChecker, routerPrint)
app.use(`${urlPrefix}/cemeteries`, sessionChecker, routerCemeteries) app.use(`${urlPrefix}/cemeteries`, sessionChecker, routerCemeteries)
app.use(`${urlPrefix}/burialSites`, sessionChecker, routerBurialSites) app.use(`${urlPrefix}/burialSites`, sessionChecker, routerBurialSites)
app.use(`${urlPrefix}/funeralHomes`, sessionChecker, routerFuneralHomes)
app.use(`${urlPrefix}/contracts`, sessionChecker, routerContracts) app.use(`${urlPrefix}/contracts`, sessionChecker, routerContracts)
app.use(`${urlPrefix}/workOrders`, sessionChecker, routerWorkOrders) app.use(`${urlPrefix}/workOrders`, sessionChecker, routerWorkOrders)

View File

@ -45,8 +45,8 @@ describe('Update - Cemeteries', () => {
.type(cemeteryData.cemeteryLongitude?.toString() ?? ''); .type(cemeteryData.cemeteryLongitude?.toString() ?? '');
}); });
cy.log('Ensure the default city and province are used'); cy.log('Ensure the default city and province are used');
cy.get("input[name='cemeteryCity']").should('have.value', getConfigProperty('settings.cemeteries.cityDefault')); cy.get("input[name='cemeteryCity']").should('have.value', getConfigProperty('settings.cityDefault'));
cy.get("input[name='cemeteryProvince']").should('have.value', getConfigProperty('settings.cemeteries.provinceDefault')); cy.get("input[name='cemeteryProvince']").should('have.value', getConfigProperty('settings.provinceDefault'));
cy.log('Submit the form'); cy.log('Submit the form');
cy.get('#form--cemetery').submit(); cy.get('#form--cemetery').submit();
cy.wait(1000); cy.wait(1000);
@ -58,8 +58,8 @@ describe('Update - Cemeteries', () => {
cy.get("textarea[name='cemeteryDescription']").should('have.value', cemeteryData.cemeteryDescription); cy.get("textarea[name='cemeteryDescription']").should('have.value', cemeteryData.cemeteryDescription);
cy.get("input[name='cemeteryAddress1']").should('have.value', cemeteryData.cemeteryAddress1); cy.get("input[name='cemeteryAddress1']").should('have.value', cemeteryData.cemeteryAddress1);
cy.get("input[name='cemeteryAddress2']").should('have.value', cemeteryData.cemeteryAddress2); cy.get("input[name='cemeteryAddress2']").should('have.value', cemeteryData.cemeteryAddress2);
cy.get("input[name='cemeteryCity']").should('have.value', getConfigProperty('settings.cemeteries.cityDefault')); cy.get("input[name='cemeteryCity']").should('have.value', getConfigProperty('settings.cityDefault'));
cy.get("input[name='cemeteryProvince']").should('have.value', getConfigProperty('settings.cemeteries.provinceDefault')); cy.get("input[name='cemeteryProvince']").should('have.value', getConfigProperty('settings.provinceDefault'));
cy.get("input[name='cemeteryPostalCode']").should('have.value', cemeteryData.cemeteryPostalCode); cy.get("input[name='cemeteryPostalCode']").should('have.value', cemeteryData.cemeteryPostalCode);
cy.get("input[name='cemeteryPhoneNumber']").should('have.value', cemeteryData.cemeteryPhoneNumber); cy.get("input[name='cemeteryPhoneNumber']").should('have.value', cemeteryData.cemeteryPhoneNumber);
cy.get("input[name='cemeteryLatitude']").should('have.value', cemeteryData.cemeteryLatitude?.toString()); cy.get("input[name='cemeteryLatitude']").should('have.value', cemeteryData.cemeteryLatitude?.toString());

View File

@ -65,12 +65,12 @@ describe('Update - Cemeteries', () => {
cy.get("input[name='cemeteryCity']").should( cy.get("input[name='cemeteryCity']").should(
'have.value', 'have.value',
getConfigProperty('settings.cemeteries.cityDefault') getConfigProperty('settings.cityDefault')
) )
cy.get("input[name='cemeteryProvince']").should( cy.get("input[name='cemeteryProvince']").should(
'have.value', 'have.value',
getConfigProperty('settings.cemeteries.provinceDefault') getConfigProperty('settings.provinceDefault')
) )
cy.log('Submit the form') cy.log('Submit the form')
@ -106,12 +106,12 @@ describe('Update - Cemeteries', () => {
cy.get("input[name='cemeteryCity']").should( cy.get("input[name='cemeteryCity']").should(
'have.value', 'have.value',
getConfigProperty('settings.cemeteries.cityDefault') getConfigProperty('settings.cityDefault')
) )
cy.get("input[name='cemeteryProvince']").should( cy.get("input[name='cemeteryProvince']").should(
'have.value', 'have.value',
getConfigProperty('settings.cemeteries.provinceDefault') getConfigProperty('settings.provinceDefault')
) )
cy.get("input[name='cemeteryPostalCode']").should( cy.get("input[name='cemeteryPostalCode']").should(

View File

@ -1,6 +1,5 @@
import { config as baseConfig } from './config.base.js'; import { config as baseConfig } from './config.base.js';
export const config = Object.assign({}, baseConfig); export const config = Object.assign({}, baseConfig);
config.settings.contracts.provinceDefault = 'ON'; config.settings.provinceDefault = 'ON';
config.settings.cemeteries.provinceDefault = 'ON';
config.settings.fees.taxPercentageDefault = 13; config.settings.fees.taxPercentageDefault = 13;
export default config; export default config;

View File

@ -2,9 +2,7 @@ import { config as baseConfig } from './config.base.js'
export const config = Object.assign({}, baseConfig) export const config = Object.assign({}, baseConfig)
config.settings.contracts.provinceDefault = 'ON' config.settings.provinceDefault = 'ON'
config.settings.cemeteries.provinceDefault = 'ON'
config.settings.fees.taxPercentageDefault = 13 config.settings.fees.taxPercentageDefault = 13

View File

@ -35,12 +35,11 @@ config.settings.burialSites.burialSiteNameSegments = {
} }
} }
}; };
config.settings.contracts.cityDefault = 'Sault Ste. Marie'; config.settings.cityDefault = 'Sault Ste. Marie';
config.settings.contracts.prints = [ config.settings.contracts.prints = [
'pdf/ssm.cemetery.burialPermit', 'pdf/ssm.cemetery.burialPermit',
'pdf/ssm.cemetery.contract' 'pdf/ssm.cemetery.contract'
]; ];
config.settings.cemeteries.cityDefault = 'Sault Ste. Marie';
config.settings.workOrders.workOrderNumberLength = 6; config.settings.workOrders.workOrderNumberLength = 6;
config.settings.workOrders.workOrderMilestoneDateRecentBeforeDays = 7; config.settings.workOrders.workOrderMilestoneDateRecentBeforeDays = 7;
config.settings.workOrders.workOrderMilestoneDateRecentAfterDays = 30; config.settings.workOrders.workOrderMilestoneDateRecentAfterDays = 30;

View File

@ -41,14 +41,13 @@ config.settings.burialSites.burialSiteNameSegments = {
} }
} }
config.settings.contracts.cityDefault = 'Sault Ste. Marie' config.settings.cityDefault = 'Sault Ste. Marie'
config.settings.contracts.prints = [ config.settings.contracts.prints = [
'pdf/ssm.cemetery.burialPermit', 'pdf/ssm.cemetery.burialPermit',
'pdf/ssm.cemetery.contract' 'pdf/ssm.cemetery.contract'
] ]
config.settings.cemeteries.cityDefault = 'Sault Ste. Marie'
config.settings.workOrders.workOrderNumberLength = 6 config.settings.workOrders.workOrderNumberLength = 6
config.settings.workOrders.workOrderMilestoneDateRecentBeforeDays = 7 config.settings.workOrders.workOrderMilestoneDateRecentBeforeDays = 7
config.settings.workOrders.workOrderMilestoneDateRecentAfterDays = 30 config.settings.workOrders.workOrderMilestoneDateRecentAfterDays = 30

View File

@ -24,12 +24,10 @@ export declare const configDefaultValues: {
'aliases.externalReceiptNumber': string; 'aliases.externalReceiptNumber': string;
'aliases.workOrderOpenDate': string; 'aliases.workOrderOpenDate': string;
'aliases.workOrderCloseDate': string; 'aliases.workOrderCloseDate': string;
'settings.cemeteries.cityDefault': string; 'settings.cityDefault': string;
'settings.cemeteries.provinceDefault': string; 'settings.provinceDefault': string;
'settings.burialSites.burialSiteNameSegments': ConfigBurialSiteNameSegments; 'settings.burialSites.burialSiteNameSegments': ConfigBurialSiteNameSegments;
'settings.contracts.burialSiteIdIsRequired': boolean; 'settings.contracts.burialSiteIdIsRequired': boolean;
'settings.contracts.cityDefault': string;
'settings.contracts.provinceDefault': string;
'settings.contracts.prints': string[]; 'settings.contracts.prints': string[];
'settings.fees.taxPercentageDefault': number; 'settings.fees.taxPercentageDefault': number;
'settings.workOrders.workOrderNumberLength': number; 'settings.workOrders.workOrderNumberLength': number;

View File

@ -23,8 +23,8 @@ export const configDefaultValues = {
'aliases.externalReceiptNumber': 'External Receipt Number', 'aliases.externalReceiptNumber': 'External Receipt Number',
'aliases.workOrderOpenDate': 'Order Date', 'aliases.workOrderOpenDate': 'Order Date',
'aliases.workOrderCloseDate': 'Completion Date', 'aliases.workOrderCloseDate': 'Completion Date',
'settings.cemeteries.cityDefault': '', 'settings.cityDefault': '',
'settings.cemeteries.provinceDefault': '', 'settings.provinceDefault': '',
'settings.burialSites.burialSiteNameSegments': { 'settings.burialSites.burialSiteNameSegments': {
separator: '-', separator: '-',
segments: { segments: {
@ -38,8 +38,6 @@ export const configDefaultValues = {
} }
}, },
'settings.contracts.burialSiteIdIsRequired': true, 'settings.contracts.burialSiteIdIsRequired': true,
'settings.contracts.cityDefault': '',
'settings.contracts.provinceDefault': '',
'settings.contracts.prints': ['screen/contract'], 'settings.contracts.prints': ['screen/contract'],
'settings.fees.taxPercentageDefault': 0, 'settings.fees.taxPercentageDefault': 0,
'settings.workOrders.workOrderNumberLength': 6, 'settings.workOrders.workOrderNumberLength': 6,

View File

@ -39,8 +39,8 @@ export const configDefaultValues = {
'aliases.workOrderOpenDate': 'Order Date', 'aliases.workOrderOpenDate': 'Order Date',
'aliases.workOrderCloseDate': 'Completion Date', 'aliases.workOrderCloseDate': 'Completion Date',
'settings.cemeteries.cityDefault': '', 'settings.cityDefault': '',
'settings.cemeteries.provinceDefault': '', 'settings.provinceDefault': '',
'settings.burialSites.burialSiteNameSegments': { 'settings.burialSites.burialSiteNameSegments': {
separator: '-', separator: '-',
@ -57,8 +57,6 @@ export const configDefaultValues = {
'settings.contracts.burialSiteIdIsRequired': true, 'settings.contracts.burialSiteIdIsRequired': true,
'settings.contracts.cityDefault': '',
'settings.contracts.provinceDefault': '',
'settings.contracts.prints': ['screen/contract'], 'settings.contracts.prints': ['screen/contract'],
'settings.fees.taxPercentageDefault': 0, 'settings.fees.taxPercentageDefault': 0,

10
database/addFuneralHome.d.ts vendored 100644
View File

@ -0,0 +1,10 @@
export interface AddForm {
funeralHomeName: string;
funeralHomeAddress1: string;
funeralHomeAddress2: string;
funeralHomeCity: string;
funeralHomeProvince: string;
funeralHomePostalCode: string;
funeralHomePhoneNumber: string;
}
export default function addFuneralHome(addForm: AddForm, user: User): Promise<number>;

View File

@ -0,0 +1,15 @@
import { acquireConnection } from './pool.js';
export default async function addFuneralHome(addForm, user) {
const database = await acquireConnection();
const rightNowMillis = Date.now();
const result = database
.prepare(`insert into FuneralHomes (
funeralHomeName, funeralHomeAddress1, funeralHomeAddress2,
funeralHomeCity, funeralHomeProvince, funeralHomePostalCode, funeralHomePhoneNumber,
recordCreate_userName, recordCreate_timeMillis,
recordUpdate_userName, recordUpdate_timeMillis)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
.run(addForm.funeralHomeName, addForm.funeralHomeAddress1, addForm.funeralHomeAddress2, addForm.funeralHomeCity, addForm.funeralHomeProvince, addForm.funeralHomePostalCode, addForm.funeralHomePhoneNumber, user.userName, rightNowMillis, user.userName, rightNowMillis);
database.release();
return result.lastInsertRowid;
}

View File

@ -0,0 +1,47 @@
import { acquireConnection } from './pool.js'
export interface AddForm {
funeralHomeName: string
funeralHomeAddress1: string
funeralHomeAddress2: string
funeralHomeCity: string
funeralHomeProvince: string
funeralHomePostalCode: string
funeralHomePhoneNumber: string
}
export default async function addFuneralHome(
addForm: AddForm,
user: User
): Promise<number> {
const database = await acquireConnection()
const rightNowMillis = Date.now()
const result = database
.prepare(
`insert into FuneralHomes (
funeralHomeName, funeralHomeAddress1, funeralHomeAddress2,
funeralHomeCity, funeralHomeProvince, funeralHomePostalCode, funeralHomePhoneNumber,
recordCreate_userName, recordCreate_timeMillis,
recordUpdate_userName, recordUpdate_timeMillis)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
)
.run(
addForm.funeralHomeName,
addForm.funeralHomeAddress1,
addForm.funeralHomeAddress2,
addForm.funeralHomeCity,
addForm.funeralHomeProvince,
addForm.funeralHomePostalCode,
addForm.funeralHomePhoneNumber,
user.userName,
rightNowMillis,
user.userName,
rightNowMillis
)
database.release()
return result.lastInsertRowid as number
}

View File

@ -23,7 +23,7 @@ export default async function cleanupDatabase(user) {
.prepare('delete from WorkOrderComments where recordDelete_timeMillis <= ?') .prepare('delete from WorkOrderComments where recordDelete_timeMillis <= ?')
.run(recordDeleteTimeMillisMin).changes; .run(recordDeleteTimeMillisMin).changes;
/* /*
* Work Order Burial Site Contracts * Work Order Contracts
*/ */
inactivatedRecordCount += database inactivatedRecordCount += database
.prepare(`update WorkOrderContracts .prepare(`update WorkOrderContracts
@ -181,7 +181,7 @@ export default async function cleanupDatabase(user) {
and contractTypeFieldId not in (select contractTypeFieldId from ContractFields)`) and contractTypeFieldId not in (select contractTypeFieldId from ContractFields)`)
.run(recordDeleteTimeMillisMin).changes; .run(recordDeleteTimeMillisMin).changes;
/* /*
* Occupancy Type Prints * Contract Type Prints
*/ */
inactivatedRecordCount += database inactivatedRecordCount += database
.prepare(`update ContractTypePrints .prepare(`update ContractTypePrints
@ -246,7 +246,7 @@ export default async function cleanupDatabase(user) {
and burialSiteId not in (select burialSiteId from BurialSiteComments) and burialSiteId not in (select burialSiteId from BurialSiteComments)
and burialSiteId not in (select burialSiteId from BurialSiteFields) and burialSiteId not in (select burialSiteId from BurialSiteFields)
and burialSiteId not in (select burialSiteId from Contracts) and burialSiteId not in (select burialSiteId from Contracts)
and burialSiteId not in (select burialSiteId from WorkOrderLots)`) and burialSiteId not in (select burialSiteId from WorkOrderBurialSites)`)
.run(recordDeleteTimeMillisMin).changes; .run(recordDeleteTimeMillisMin).changes;
/* /*
* Burial Site Statuses * Burial Site Statuses

View File

@ -37,7 +37,7 @@ export default async function cleanupDatabase(
.run(recordDeleteTimeMillisMin).changes .run(recordDeleteTimeMillisMin).changes
/* /*
* Work Order Burial Site Contracts * Work Order Contracts
*/ */
inactivatedRecordCount += database inactivatedRecordCount += database
@ -271,7 +271,7 @@ export default async function cleanupDatabase(
.run(recordDeleteTimeMillisMin).changes .run(recordDeleteTimeMillisMin).changes
/* /*
* Occupancy Type Prints * Contract Type Prints
*/ */
inactivatedRecordCount += database inactivatedRecordCount += database
@ -364,7 +364,7 @@ export default async function cleanupDatabase(
and burialSiteId not in (select burialSiteId from BurialSiteComments) and burialSiteId not in (select burialSiteId from BurialSiteComments)
and burialSiteId not in (select burialSiteId from BurialSiteFields) and burialSiteId not in (select burialSiteId from BurialSiteFields)
and burialSiteId not in (select burialSiteId from Contracts) and burialSiteId not in (select burialSiteId from Contracts)
and burialSiteId not in (select burialSiteId from WorkOrderLots)` and burialSiteId not in (select burialSiteId from WorkOrderBurialSites)`
) )
.run(recordDeleteTimeMillisMin).changes .run(recordDeleteTimeMillisMin).changes

View File

@ -1,3 +1,3 @@
type RecordTable = 'FeeCategories' | 'Fees' | 'BurialSites' | 'BurialSiteComments' | 'Contracts' | 'ContractComments' | 'BurialSiteStatuses' | 'BurialSiteTypes' | 'BurialSiteTypeFields' | 'Cemeteries' | 'ContractTypes' | 'ContractTypeFields' | 'WorkOrders' | 'WorkOrderComments' | 'WorkOrderMilestones' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes'; type RecordTable = 'FeeCategories' | 'Fees' | 'BurialSites' | 'BurialSiteComments' | 'Contracts' | 'ContractComments' | 'BurialSiteStatuses' | 'BurialSiteTypes' | 'BurialSiteTypeFields' | 'Cemeteries' | 'FuneralHomes' | 'ContractTypes' | 'ContractTypeFields' | 'WorkOrders' | 'WorkOrderComments' | 'WorkOrderMilestones' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes';
export declare function deleteRecord(recordTable: RecordTable, recordId: number | string, user: User): Promise<boolean>; export declare function deleteRecord(recordTable: RecordTable, recordId: number | string, user: User): Promise<boolean>;
export {}; export {};

View File

@ -11,6 +11,7 @@ recordIdColumns.set('BurialSiteStatuses', 'burialSiteStatusId');
recordIdColumns.set('BurialSiteTypes', 'burialSiteTypeId'); recordIdColumns.set('BurialSiteTypes', 'burialSiteTypeId');
recordIdColumns.set('BurialSiteTypeFields', 'burialSiteTypeFieldId'); recordIdColumns.set('BurialSiteTypeFields', 'burialSiteTypeFieldId');
recordIdColumns.set('Cemeteries', 'cemeteryId'); recordIdColumns.set('Cemeteries', 'cemeteryId');
recordIdColumns.set('FuneralHomes', 'funeralHomeId');
recordIdColumns.set('ContractTypes', 'contractTypeId'); recordIdColumns.set('ContractTypes', 'contractTypeId');
recordIdColumns.set('ContractTypeFields', 'contractTypeFieldId'); recordIdColumns.set('ContractTypeFields', 'contractTypeFieldId');
recordIdColumns.set('WorkOrders', 'workOrderId'); recordIdColumns.set('WorkOrders', 'workOrderId');

View File

@ -13,6 +13,7 @@ type RecordTable =
| 'BurialSiteTypes' | 'BurialSiteTypes'
| 'BurialSiteTypeFields' | 'BurialSiteTypeFields'
| 'Cemeteries' | 'Cemeteries'
| 'FuneralHomes'
| 'ContractTypes' | 'ContractTypes'
| 'ContractTypeFields' | 'ContractTypeFields'
| 'WorkOrders' | 'WorkOrders'
@ -32,6 +33,7 @@ recordIdColumns.set('BurialSiteStatuses', 'burialSiteStatusId')
recordIdColumns.set('BurialSiteTypes', 'burialSiteTypeId') recordIdColumns.set('BurialSiteTypes', 'burialSiteTypeId')
recordIdColumns.set('BurialSiteTypeFields', 'burialSiteTypeFieldId') recordIdColumns.set('BurialSiteTypeFields', 'burialSiteTypeFieldId')
recordIdColumns.set('Cemeteries', 'cemeteryId') recordIdColumns.set('Cemeteries', 'cemeteryId')
recordIdColumns.set('FuneralHomes', 'funeralHomeId')
recordIdColumns.set('ContractTypes', 'contractTypeId') recordIdColumns.set('ContractTypes', 'contractTypeId')
recordIdColumns.set('ContractTypeFields', 'contractTypeFieldId') recordIdColumns.set('ContractTypeFields', 'contractTypeFieldId')
recordIdColumns.set('WorkOrders', 'workOrderId') recordIdColumns.set('WorkOrders', 'workOrderId')

2
database/getFuneralHome.d.ts vendored 100644
View File

@ -0,0 +1,2 @@
import type { FuneralHome } from '../types/recordTypes.js';
export default function getFuneralHome(funeralHomeId: number | string): Promise<FuneralHome | undefined>;

View File

@ -0,0 +1,15 @@
import { acquireConnection } from './pool.js';
export default async function getFuneralHome(funeralHomeId) {
const database = await acquireConnection();
const funeralHome = database
.prepare(`select funeralHomeId, funeralHomeName,
funeralHomeAddress1, funeralHomeAddress2,
funeralHomeCity, funeralHomeProvince, funeralHomePostalCode, funeralHomePhoneNumber
from FuneralHomes f
where f.recordDelete_timeMillis is null
and f.funeralHomeId = ?
order by f.funeralHomeName, f.funeralHomeId`)
.get(funeralHomeId);
database.release();
return funeralHome;
}

View File

@ -0,0 +1,25 @@
import type { Cemetery, FuneralHome } from '../types/recordTypes.js'
import { acquireConnection } from './pool.js'
export default async function getFuneralHome(
funeralHomeId: number | string
): Promise<FuneralHome | undefined> {
const database = await acquireConnection()
const funeralHome = database
.prepare(
`select funeralHomeId, funeralHomeName,
funeralHomeAddress1, funeralHomeAddress2,
funeralHomeCity, funeralHomeProvince, funeralHomePostalCode, funeralHomePhoneNumber
from FuneralHomes f
where f.recordDelete_timeMillis is null
and f.funeralHomeId = ?
order by f.funeralHomeName, f.funeralHomeId`
)
.get(funeralHomeId) as Cemetery | undefined
database.release()
return funeralHome
}

2
database/getFuneralHomes.d.ts vendored 100644
View File

@ -0,0 +1,2 @@
import type { FuneralHome } from '../types/recordTypes.js';
export default function getFuneralHomes(): Promise<FuneralHome[]>;

View File

@ -0,0 +1,14 @@
import { acquireConnection } from './pool.js';
export default async function getFuneralHomes() {
const database = await acquireConnection();
const funeralHomes = database
.prepare(`select funeralHomeId, funeralHomeName,
funeralHomeAddress1, funeralHomeAddress2,
funeralHomeCity, funeralHomeProvince, funeralHomePostalCode, funeralHomePhoneNumber
from FuneralHomes f
where f.recordDelete_timeMillis is null
order by f.funeralHomeName, f.funeralHomeId`)
.all();
database.release();
return funeralHomes;
}

View File

@ -0,0 +1,22 @@
import type { Cemetery, FuneralHome } from '../types/recordTypes.js'
import { acquireConnection } from './pool.js'
export default async function getFuneralHomes(): Promise<FuneralHome[]> {
const database = await acquireConnection()
const funeralHomes = database
.prepare(
`select funeralHomeId, funeralHomeName,
funeralHomeAddress1, funeralHomeAddress2,
funeralHomeCity, funeralHomeProvince, funeralHomePostalCode, funeralHomePhoneNumber
from FuneralHomes f
where f.recordDelete_timeMillis is null
order by f.funeralHomeName, f.funeralHomeId`
)
.all() as Cemetery[]
database.release()
return funeralHomes
}

View File

@ -28,11 +28,7 @@ export default async function getReportData(reportName, reportParameters = {}) {
case 'burialSites-byBurialSiteTypeId': { case 'burialSites-byBurialSiteTypeId': {
sql = `select l.burialSiteId, sql = `select l.burialSiteId,
m.cemeteryName, m.cemeteryName,
l.burialSiteNameSegment1, l.burialSiteName,
l.burialSiteNameSegment2,
l.burialSiteNameSegment3,
l.burialSiteNameSegment4,
l.burialSiteNameSegment5,
t.burialSiteType, t.burialSiteType,
s.burialSiteStatus s.burialSiteStatus
from BurialSites l from BurialSites l
@ -47,11 +43,7 @@ export default async function getReportData(reportName, reportParameters = {}) {
case 'burialSites-byBurialSiteStatusId': { case 'burialSites-byBurialSiteStatusId': {
sql = `select l.burialSiteId, sql = `select l.burialSiteId,
m.cemeteryName, m.cemeteryName,
l.burialSiteNameSegment1, l.burialSiteName,
l.burialSiteNameSegment2,
l.burialSiteNameSegment3,
l.burialSiteNameSegment4,
l.burialSiteNameSegment5,
t.burialSiteType, t.burialSiteType,
s.burialSiteStatus s.burialSiteStatus
from BurialSites l from BurialSites l
@ -66,11 +58,7 @@ export default async function getReportData(reportName, reportParameters = {}) {
case 'burialSites-byCemeteryId': { case 'burialSites-byCemeteryId': {
sql = `select l.burialSiteId, sql = `select l.burialSiteId,
m.cemeteryName, m.cemeteryName,
l.burialSiteNameSegment1, l.burialSiteName,
l.burialSiteNameSegment2,
l.burialSiteNameSegment3,
l.burialSiteNameSegment4,
l.burialSiteNameSegment5,
t.burialSiteType, t.burialSiteType,
s.burialSiteStatus s.burialSiteStatus
from BurialSites l from BurialSites l
@ -96,11 +84,7 @@ export default async function getReportData(reportName, reportParameters = {}) {
} }
case 'contracts-current-byCemeteryId': { case 'contracts-current-byCemeteryId': {
sql = `select o.contractId, sql = `select o.contractId,
l.burialSiteNameSegment1, l.burialSiteName,
l.burialSiteNameSegment2,
l.burialSiteNameSegment3,
l.burialSiteNameSegment4,
l.burialSiteNameSegment5,
m.cemeteryName, m.cemeteryName,
ot.contractType, ot.contractType,
o.contractStartDate, o.contractStartDate,

View File

@ -46,11 +46,7 @@ export default async function getReportData(
case 'burialSites-byBurialSiteTypeId': { case 'burialSites-byBurialSiteTypeId': {
sql = `select l.burialSiteId, sql = `select l.burialSiteId,
m.cemeteryName, m.cemeteryName,
l.burialSiteNameSegment1, l.burialSiteName,
l.burialSiteNameSegment2,
l.burialSiteNameSegment3,
l.burialSiteNameSegment4,
l.burialSiteNameSegment5,
t.burialSiteType, t.burialSiteType,
s.burialSiteStatus s.burialSiteStatus
from BurialSites l from BurialSites l
@ -68,11 +64,7 @@ export default async function getReportData(
case 'burialSites-byBurialSiteStatusId': { case 'burialSites-byBurialSiteStatusId': {
sql = `select l.burialSiteId, sql = `select l.burialSiteId,
m.cemeteryName, m.cemeteryName,
l.burialSiteNameSegment1, l.burialSiteName,
l.burialSiteNameSegment2,
l.burialSiteNameSegment3,
l.burialSiteNameSegment4,
l.burialSiteNameSegment5,
t.burialSiteType, t.burialSiteType,
s.burialSiteStatus s.burialSiteStatus
from BurialSites l from BurialSites l
@ -90,11 +82,7 @@ export default async function getReportData(
case 'burialSites-byCemeteryId': { case 'burialSites-byCemeteryId': {
sql = `select l.burialSiteId, sql = `select l.burialSiteId,
m.cemeteryName, m.cemeteryName,
l.burialSiteNameSegment1, l.burialSiteName,
l.burialSiteNameSegment2,
l.burialSiteNameSegment3,
l.burialSiteNameSegment4,
l.burialSiteNameSegment5,
t.burialSiteType, t.burialSiteType,
s.burialSiteStatus s.burialSiteStatus
from BurialSites l from BurialSites l
@ -126,11 +114,7 @@ export default async function getReportData(
case 'contracts-current-byCemeteryId': { case 'contracts-current-byCemeteryId': {
sql = `select o.contractId, sql = `select o.contractId,
l.burialSiteNameSegment1, l.burialSiteName,
l.burialSiteNameSegment2,
l.burialSiteNameSegment3,
l.burialSiteNameSegment4,
l.burialSiteNameSegment5,
m.cemeteryName, m.cemeteryName,
ot.contractType, ot.contractType,
o.contractStartDate, o.contractStartDate,

11
database/updateFuneralHome.d.ts vendored 100644
View File

@ -0,0 +1,11 @@
export interface UpdateForm {
funeralHomeId: number | string;
funeralHomeName: string;
funeralHomeAddress1: string;
funeralHomeAddress2: string;
funeralHomeCity: string;
funeralHomeProvince: string;
funeralHomePostalCode: string;
funeralHomePhoneNumber: string;
}
export default function updateFuneralHome(updateForm: UpdateForm, user: User): Promise<boolean>;

View File

@ -0,0 +1,16 @@
import { acquireConnection } from './pool.js';
export default async function updateFuneralHome(updateForm, user) {
const database = await acquireConnection();
const rightNowMillis = Date.now();
const result = database
.prepare(`update FuneralHomes
set funeralHomeName = ?,
funeralHomeAddress1 = ?, funeralHomeAddress2 = ?,
funeralHomeCity = ?, funeralHomeProvince = ?, funeralHomePostalCode = ?, funeralHomePhoneNumber = ?,
recordUpdate_userName = ?, recordUpdate_timeMillis = ?
where recordDelete_timeMillis is null
and funeralHomeId = ?`)
.run(updateForm.funeralHomeName, updateForm.funeralHomeAddress1, updateForm.funeralHomeAddress2, updateForm.funeralHomeCity, updateForm.funeralHomeProvince, updateForm.funeralHomePostalCode, updateForm.funeralHomePhoneNumber, user.userName, rightNowMillis, updateForm.funeralHomeId);
database.release();
return result.changes > 0;
}

View File

@ -0,0 +1,48 @@
import { acquireConnection } from './pool.js'
export interface UpdateForm {
funeralHomeId: number | string
funeralHomeName: string
funeralHomeAddress1: string
funeralHomeAddress2: string
funeralHomeCity: string
funeralHomeProvince: string
funeralHomePostalCode: string
funeralHomePhoneNumber: string
}
export default async function updateFuneralHome(
updateForm: UpdateForm,
user: User
): Promise<boolean> {
const database = await acquireConnection()
const rightNowMillis = Date.now()
const result = database
.prepare(
`update FuneralHomes
set funeralHomeName = ?,
funeralHomeAddress1 = ?, funeralHomeAddress2 = ?,
funeralHomeCity = ?, funeralHomeProvince = ?, funeralHomePostalCode = ?, funeralHomePhoneNumber = ?,
recordUpdate_userName = ?, recordUpdate_timeMillis = ?
where recordDelete_timeMillis is null
and funeralHomeId = ?`
)
.run(
updateForm.funeralHomeName,
updateForm.funeralHomeAddress1,
updateForm.funeralHomeAddress2,
updateForm.funeralHomeCity,
updateForm.funeralHomeProvince,
updateForm.funeralHomePostalCode,
updateForm.funeralHomePhoneNumber,
user.userName,
rightNowMillis,
updateForm.funeralHomeId
)
database.release()
return result.changes > 0
}

View File

@ -1,15 +1,12 @@
import { getSolidIconClasses } from '@cityssm/font-awesome-v5-iconclasses';
import { getBurialSiteStatuses, getWorkOrderMilestoneTypes, getWorkOrderTypes } from '../../helpers/functions.cache.js'; import { getBurialSiteStatuses, getWorkOrderMilestoneTypes, getWorkOrderTypes } from '../../helpers/functions.cache.js';
export default async function handler(_request, response) { export default async function handler(_request, response) {
const workOrderTypes = await getWorkOrderTypes(); const workOrderTypes = await getWorkOrderTypes();
const workOrderMilestoneTypes = await getWorkOrderMilestoneTypes(); const workOrderMilestoneTypes = await getWorkOrderMilestoneTypes();
const burialSiteStatuses = await getBurialSiteStatuses(); const burialSiteStatuses = await getBurialSiteStatuses();
const fontAwesomeIconClasses = await getSolidIconClasses();
response.render('admin-tables', { response.render('admin-tables', {
headTitle: 'Config Table Management', headTitle: 'Config Table Management',
workOrderTypes, workOrderTypes,
workOrderMilestoneTypes, workOrderMilestoneTypes,
burialSiteStatuses, burialSiteStatuses
fontAwesomeIconClasses
}); });
} }

View File

@ -15,13 +15,10 @@ export default async function handler(
const workOrderMilestoneTypes = await getWorkOrderMilestoneTypes() const workOrderMilestoneTypes = await getWorkOrderMilestoneTypes()
const burialSiteStatuses = await getBurialSiteStatuses() const burialSiteStatuses = await getBurialSiteStatuses()
const fontAwesomeIconClasses = await getSolidIconClasses()
response.render('admin-tables', { response.render('admin-tables', {
headTitle: 'Config Table Management', headTitle: 'Config Table Management',
workOrderTypes, workOrderTypes,
workOrderMilestoneTypes, workOrderMilestoneTypes,
burialSiteStatuses, burialSiteStatuses
fontAwesomeIconClasses
}) })
} }

View File

@ -60,7 +60,7 @@ function buildEventDescriptionHTML_occupancies(request, milestone) {
descriptionHTML += `<tr> descriptionHTML += `<tr>
<td> <td>
<a href="${urlRoot}/contracts/${occupancy.contractId}"> <a href="${urlRoot}/contracts/${occupancy.contractId}">
${escapeHTML(occupancy.occupancyType ?? '')} ${escapeHTML(occupancy.contractType ?? '')}
</a> </a>
</td> </td>
<td> <td>

View File

@ -95,7 +95,7 @@ function buildEventDescriptionHTML_occupancies(
descriptionHTML += `<tr> descriptionHTML += `<tr>
<td> <td>
<a href="${urlRoot}/contracts/${occupancy.contractId}"> <a href="${urlRoot}/contracts/${occupancy.contractId}">
${escapeHTML(occupancy.occupancyType ?? '')} ${escapeHTML(occupancy.contractType ?? '')}
</a> </a>
</td> </td>
<td> <td>

View File

@ -2,8 +2,8 @@ import { getCemeterySVGs } from '../../helpers/cemeteries.helpers.js';
import { getConfigProperty } from '../../helpers/config.helpers.js'; import { getConfigProperty } from '../../helpers/config.helpers.js';
export default async function handler(_request, response) { export default async function handler(_request, response) {
const cemetery = { const cemetery = {
cemeteryCity: getConfigProperty('settings.cemeteries.cityDefault'), cemeteryCity: getConfigProperty('settings.cityDefault'),
cemeteryProvince: getConfigProperty('settings.cemeteries.provinceDefault') cemeteryProvince: getConfigProperty('settings.provinceDefault')
}; };
const cemeterySVGs = await getCemeterySVGs(); const cemeterySVGs = await getCemeterySVGs();
response.render('cemetery-edit', { response.render('cemetery-edit', {

View File

@ -9,8 +9,8 @@ export default async function handler(
response: Response response: Response
): Promise<void> { ): Promise<void> {
const cemetery: Cemetery = { const cemetery: Cemetery = {
cemeteryCity: getConfigProperty('settings.cemeteries.cityDefault'), cemeteryCity: getConfigProperty('settings.cityDefault'),
cemeteryProvince: getConfigProperty('settings.cemeteries.provinceDefault') cemeteryProvince: getConfigProperty('settings.provinceDefault')
} }
const cemeterySVGs = await getCemeterySVGs() const cemeterySVGs = await getCemeterySVGs()

View File

@ -0,0 +1,2 @@
import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>;

View File

@ -0,0 +1,14 @@
import getFuneralHome from '../../database/getFuneralHome.js';
import { getConfigProperty } from '../../helpers/config.helpers.js';
export default async function handler(request, response) {
const funeralHome = await getFuneralHome(request.params.funeralHomeId);
if (funeralHome === undefined) {
response.redirect(`${getConfigProperty('reverseProxy.urlPrefix')}/funeralHomes/?error=funeralHomeIdNotFound`);
return;
}
response.render('funeralHome-edit', {
headTitle: funeralHome.funeralHomeName,
isCreate: false,
funeralHome
});
}

View File

@ -0,0 +1,24 @@
import type { Request, Response } from 'express'
import getFuneralHome from '../../database/getFuneralHome.js'
import { getConfigProperty } from '../../helpers/config.helpers.js'
export default async function handler(
request: Request,
response: Response
): Promise<void> {
const funeralHome = await getFuneralHome(request.params.funeralHomeId)
if (funeralHome === undefined) {
response.redirect(
`${getConfigProperty('reverseProxy.urlPrefix')}/funeralHomes/?error=funeralHomeIdNotFound`
)
return
}
response.render('funeralHome-edit', {
headTitle: funeralHome.funeralHomeName,
isCreate: false,
funeralHome
})
}

View File

@ -0,0 +1,2 @@
import type { Request, Response } from 'express';
export default function handler(_request: Request, response: Response): void;

View File

@ -0,0 +1,12 @@
import { getConfigProperty } from '../../helpers/config.helpers.js';
export default function handler(_request, response) {
const funeralHome = {
funeralHomeCity: getConfigProperty('settings.cityDefault'),
funeralHomeProvince: getConfigProperty('settings.provinceDefault')
};
response.render('funeralHome-edit', {
headTitle: `Create a Funeral Home`,
isCreate: true,
funeralHome
});
}

View File

@ -0,0 +1,17 @@
import type { Request, Response } from 'express'
import { getConfigProperty } from '../../helpers/config.helpers.js'
import type { FuneralHome } from '../../types/recordTypes.js'
export default function handler(_request: Request, response: Response): void {
const funeralHome: FuneralHome = {
funeralHomeCity: getConfigProperty('settings.cityDefault'),
funeralHomeProvince: getConfigProperty('settings.provinceDefault')
}
response.render('funeralHome-edit', {
headTitle: `Create a Funeral Home`,
isCreate: true,
funeralHome
})
}

View File

@ -0,0 +1,2 @@
import type { Request, Response } from 'express';
export default function handler(_request: Request, response: Response): Promise<void>;

View File

@ -0,0 +1,8 @@
import getFuneralHomes from '../../database/getFuneralHomes.js';
export default async function handler(_request, response) {
const funeralHomes = await getFuneralHomes();
response.render('funeralHome-search', {
headTitle: `Funeral Home Search`,
funeralHomes
});
}

View File

@ -0,0 +1,15 @@
import type { Request, Response } from 'express'
import getFuneralHomes from '../../database/getFuneralHomes.js'
export default async function handler(
_request: Request,
response: Response
): Promise<void> {
const funeralHomes = await getFuneralHomes()
response.render('funeralHome-search', {
headTitle: `Funeral Home Search`,
funeralHomes
})
}

View File

@ -0,0 +1,2 @@
import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>;

View File

@ -0,0 +1,14 @@
import getFuneralHome from '../../database/getFuneralHome.js';
import { getConfigProperty } from '../../helpers/config.helpers.js';
export default async function handler(request, response) {
const funeralHome = await getFuneralHome(request.params.funeralHomeId);
if (funeralHome === undefined) {
response.redirect(`${getConfigProperty('reverseProxy.urlPrefix')}/funeralHomes/?error=funeralHomeIdNotFound`);
return;
}
response.render('funeralHome-view', {
headTitle: funeralHome.funeralHomeName,
isCreate: false,
funeralHome
});
}

View File

@ -0,0 +1,24 @@
import type { Request, Response } from 'express'
import getFuneralHome from '../../database/getFuneralHome.js'
import { getConfigProperty } from '../../helpers/config.helpers.js'
export default async function handler(
request: Request,
response: Response
): Promise<void> {
const funeralHome = await getFuneralHome(request.params.funeralHomeId)
if (funeralHome === undefined) {
response.redirect(
`${getConfigProperty('reverseProxy.urlPrefix')}/funeralHomes/?error=funeralHomeIdNotFound`
)
return
}
response.render('funeralHome-view', {
headTitle: funeralHome.funeralHomeName,
isCreate: false,
funeralHome
})
}

View File

@ -0,0 +1,3 @@
import type { Request, Response } from 'express';
import { type AddForm } from '../../database/addFuneralHome.js';
export default function handler(request: Request<unknown, unknown, AddForm>, response: Response): Promise<void>;

View File

@ -0,0 +1,8 @@
import addFuneralHome from '../../database/addFuneralHome.js';
export default async function handler(request, response) {
const funeralHomeId = await addFuneralHome(request.body, request.session.user);
response.json({
success: true,
funeralHomeId
});
}

View File

@ -0,0 +1,18 @@
import type { Request, Response } from 'express'
import addFuneralHome, { type AddForm } from '../../database/addFuneralHome.js'
export default async function handler(
request: Request<unknown, unknown, AddForm>,
response: Response
): Promise<void> {
const funeralHomeId = await addFuneralHome(
request.body,
request.session.user as User
)
response.json({
success: true,
funeralHomeId
})
}

View File

@ -0,0 +1,4 @@
import type { Request, Response } from 'express';
export default function handler(request: Request<unknown, unknown, {
funeralHomeId: string | number;
}>, response: Response): Promise<void>;

View File

@ -0,0 +1,7 @@
import { deleteRecord } from '../../database/deleteRecord.js';
export default async function handler(request, response) {
const success = await deleteRecord('FuneralHomes', request.body.funeralHomeId, request.session.user);
response.json({
success
});
}

View File

@ -0,0 +1,18 @@
import type { Request, Response } from 'express'
import { deleteRecord } from '../../database/deleteRecord.js'
export default async function handler(
request: Request<unknown, unknown, { funeralHomeId: string | number }>,
response: Response
): Promise<void> {
const success = await deleteRecord(
'FuneralHomes',
request.body.funeralHomeId,
request.session.user as User
)
response.json({
success
})
}

View File

@ -0,0 +1,3 @@
import type { Request, Response } from 'express';
import { type UpdateForm } from '../../database/updateFuneralHome.js';
export default function handler(request: Request<unknown, unknown, UpdateForm>, response: Response): Promise<void>;

View File

@ -0,0 +1,8 @@
import updateFuneralHome from '../../database/updateFuneralHome.js';
export default async function handler(request, response) {
const success = await updateFuneralHome(request.body, request.session.user);
response.json({
success,
funeralHomeId: request.body.funeralHomeId
});
}

View File

@ -0,0 +1,20 @@
import type { Request, Response } from 'express'
import updateFuneralHome, {
type UpdateForm
} from '../../database/updateFuneralHome.js'
export default async function handler(
request: Request<unknown, unknown, UpdateForm>,
response: Response
): Promise<void> {
const success = await updateFuneralHome(
request.body,
request.session.user as User
)
response.json({
success,
funeralHomeId: request.body.funeralHomeId
})
}

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; import { type ReportParameters } from '../../database/getReportData.js';
export default function handler(request: Request<{
reportName: string;
}, unknown, unknown, ReportParameters>, response: Response): Promise<void>;

View File

@ -6,14 +6,14 @@ import getReportData, {
} from '../../database/getReportData.js' } from '../../database/getReportData.js'
export default async function handler( export default async function handler(
request: Request, request: Request<{ reportName: string }, unknown, unknown, ReportParameters>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const reportName = request.params.reportName const reportName = request.params.reportName
const rows = await getReportData( const rows = await getReportData(
reportName, reportName,
request.query as ReportParameters request.query
) )
if (rows === undefined) { if (rows === undefined) {

View File

@ -3,7 +3,7 @@
<div class="modal-card has-width-900"> <div class="modal-card has-width-900">
<header class="modal-card-head"> <header class="modal-card-head">
<h3 class="modal-card-title"> <h3 class="modal-card-title">
Add <span class="alias" data-alias="Occupancy"></span> Type Add Contract Type
</h3> </h3>
<button <button
class="delete is-close-modal-button" class="delete is-close-modal-button"
@ -12,16 +12,16 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--occupancyTypeAdd"> <form id="form--contractTypeAdd">
<div class="field"> <div class="field">
<label class="label" for="occupancyTypeAdd--occupancyType" <label class="label" for="contractTypeAdd--contractType"
><span class="alias" data-alias="Occupancy"></span> Type</label >Contract Type</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="occupancyTypeAdd--occupancyType" id="contractTypeAdd--contractType"
name="occupancyType" name="contractType"
type="text" type="text"
maxlength="100" maxlength="100"
required required
@ -34,10 +34,10 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--occupancyTypeAdd" form="form--contractTypeAdd"
> >
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add <span class="alias" data-alias="Occupancy"></span> Type</span> <span>Add Contract Type</span>
</button> </button>
<button class="button is-close-modal-button" type="button">Cancel</button> <button class="button is-close-modal-button" type="button">Cancel</button>
</footer> </footer>

View File

@ -3,7 +3,7 @@
<div class="modal-card has-width-900"> <div class="modal-card has-width-900">
<header class="modal-card-head"> <header class="modal-card-head">
<h3 class="modal-card-title"> <h3 class="modal-card-title">
Add <span class="alias" data-alias="Occupancy"></span> Type Field Add Contract Type Field
</h3> </h3>
<button <button
class="delete is-close-modal-button" class="delete is-close-modal-button"
@ -12,22 +12,22 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--occupancyTypeFieldAdd"> <form id="form--contractTypeFieldAdd">
<input <input
class="input" class="input"
id="occupancyTypeFieldAdd--occupancyTypeId" id="contractTypeFieldAdd--contractTypeId"
name="occupancyTypeId" name="contractTypeId"
type="hidden" type="hidden"
/> />
<div class="field"> <div class="field">
<label class="label" for="occupancyTypeFieldAdd--occupancyTypeField" <label class="label" for="contractTypeFieldAdd--contractTypeField"
>New Field Name</label >New Field Name</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="occupancyTypeFieldAdd--occupancyTypeField" id="contractTypeFieldAdd--contractTypeField"
name="occupancyTypeField" name="contractTypeField"
type="text" type="text"
maxlength="100" maxlength="100"
required required
@ -40,7 +40,7 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--occupancyTypeFieldAdd" form="form--contractTypeFieldAdd"
> >
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Field</span> <span>Add Field</span>

View File

@ -3,7 +3,7 @@
<div class="modal-card"> <div class="modal-card">
<header class="modal-card-head"> <header class="modal-card-head">
<h3 class="modal-card-title"> <h3 class="modal-card-title">
Add <span class="alias" data-alias="Occupancy"></span> Type Print Add Contract Type Print
</h3> </h3>
<button <button
class="delete is-close-modal-button" class="delete is-close-modal-button"
@ -12,21 +12,21 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--occupancyTypePrintAdd"> <form id="form--contractTypePrintAdd">
<input <input
class="input" class="input"
id="occupancyTypePrintAdd--occupancyTypeId" id="contractTypePrintAdd--contractTypeId"
name="occupancyTypeId" name="contractTypeId"
type="hidden" type="hidden"
/> />
<div class="field"> <div class="field">
<label class="label" for="occupancyTypePrintAdd--printEJS" <label class="label" for="contractTypePrintAdd--printEJS"
>Print</label >Print</label
> >
<div class="control"> <div class="control">
<div class="select is-fullwidth"> <div class="select is-fullwidth">
<select <select
id="occupancyTypePrintAdd--printEJS" id="contractTypePrintAdd--printEJS"
name="printEJS" name="printEJS"
required required
> >
@ -42,7 +42,7 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--occupancyTypePrintAdd" form="form--contractTypePrintAdd"
> >
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Print</span> <span>Add Print</span>

View File

@ -3,7 +3,7 @@
<div class="modal-card has-width-900"> <div class="modal-card has-width-900">
<header class="modal-card-head"> <header class="modal-card-head">
<h3 class="modal-card-title"> <h3 class="modal-card-title">
Update <span class="alias" data-alias="Occupancy"></span> Type Update Contract Type
</h3> </h3>
<button <button
class="delete is-close-modal-button" class="delete is-close-modal-button"
@ -12,22 +12,22 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--occupancyTypeEdit"> <form id="form--contractTypeEdit">
<input <input
class="input" class="input"
id="occupancyTypeEdit--occupancyTypeId" id="contractTypeEdit--contractTypeId"
name="occupancyTypeId" name="contractTypeId"
type="hidden" type="hidden"
/> />
<div class="field"> <div class="field">
<label class="label" for="occupancyTypeEdit--occupancyType" <label class="label" for="contractTypeEdit--contractType"
><span class="alias" data-alias="Occupancy"></span> Type</label >Contract Type</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="occupancyTypeEdit--occupancyType" id="contractTypeEdit--contractType"
name="occupancyType" name="contractType"
type="text" type="text"
maxlength="100" maxlength="100"
required required
@ -40,11 +40,11 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--occupancyTypeEdit" form="form--contractTypeEdit"
> >
<span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span>
<span <span
>Update <span class="alias" data-alias="Occupancy"></span> Type</span >Update Contract Type</span
> >
</button> </button>
<button class="button is-close-modal-button" type="button">Cancel</button> <button class="button is-close-modal-button" type="button">Cancel</button>

View File

@ -3,7 +3,7 @@
<div class="modal-card has-width-900"> <div class="modal-card has-width-900">
<header class="modal-card-head"> <header class="modal-card-head">
<h3 class="modal-card-title"> <h3 class="modal-card-title">
Update <span class="alias" data-alias="Occupancy"></span> Type Field Update Contract Type Field
</h3> </h3>
<button <button
class="delete is-close-modal-button" class="delete is-close-modal-button"
@ -12,11 +12,11 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--occupancyTypeFieldEdit"> <form id="form--contractTypeFieldEdit">
<input <input
class="input" class="input"
id="occupancyTypeFieldEdit--occupancyTypeFieldId" id="contractTypeFieldEdit--contractTypeFieldId"
name="occupancyTypeFieldId" name="contractTypeFieldId"
type="hidden" type="hidden"
/> />
<div class="columns"> <div class="columns">
@ -24,14 +24,14 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="occupancyTypeFieldEdit--occupancyTypeField" for="contractTypeFieldEdit--contractTypeField"
>Field Name</label >Field Name</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="occupancyTypeFieldEdit--occupancyTypeField" id="contractTypeFieldEdit--contractTypeField"
name="occupancyTypeField" name="contractTypeField"
type="text" type="text"
maxlength="100" maxlength="100"
required required
@ -41,13 +41,13 @@
</div> </div>
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="occupancyTypeFieldEdit--isRequired" <label class="label" for="contractTypeFieldEdit--isRequired"
>Required</label >Required</label
> >
<div class="control"> <div class="control">
<div class="select is-fullwidth"> <div class="select is-fullwidth">
<select <select
id="occupancyTypeFieldEdit--isRequired" id="contractTypeFieldEdit--isRequired"
name="isRequired" name="isRequired"
> >
<option value="0">Not Required</option> <option value="0">Not Required</option>
@ -62,13 +62,13 @@
<div class="columns"> <div class="columns">
<div class="column is-5"> <div class="column is-5">
<div class="field"> <div class="field">
<label class="label" for="occupancyTypeFieldEdit--fieldType" <label class="label" for="contractTypeFieldEdit--fieldType"
>Field Type</label >Field Type</label
> >
<div class="control"> <div class="control">
<div class="select is-fullwidth"> <div class="select is-fullwidth">
<select <select
id="occupancyTypeFieldEdit--fieldType" id="contractTypeFieldEdit--fieldType"
name="fieldType" name="fieldType"
> >
<option value="text">Text Field</option> <option value="text">Text Field</option>
@ -83,13 +83,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="occupancyTypeFieldEdit--minLength" for="contractTypeFieldEdit--minLength"
>Minimum Length</label >Minimum Length</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="occupancyTypeFieldEdit--minLength" id="contractTypeFieldEdit--minLength"
name="minLength" name="minLength"
type="number" type="number"
min="0" min="0"
@ -104,13 +104,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="occupancyTypeFieldEdit--maxLength" for="contractTypeFieldEdit--maxLength"
>Maximum Length</label >Maximum Length</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="occupancyTypeFieldEdit--maxLength" id="contractTypeFieldEdit--maxLength"
name="maxLength" name="maxLength"
type="number" type="number"
min="0" min="0"
@ -123,13 +123,13 @@
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<label class="label" for="occupancyTypeFieldEdit--pattern" <label class="label" for="contractTypeFieldEdit--pattern"
>Regular Expression</label >Regular Expression</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="occupancyTypeFieldEdit--pattern" id="contractTypeFieldEdit--pattern"
name="pattern" name="pattern"
type="text" type="text"
maxlength="100" maxlength="100"
@ -141,14 +141,14 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="occupancyTypeFieldEdit--occupancyTypeFieldValues" for="contractTypeFieldEdit--fieldValues"
>Field Values</label >Field Values</label
> >
<div class="control"> <div class="control">
<textarea <textarea
class="textarea" class="textarea"
id="occupancyTypeFieldEdit--occupancyTypeFieldValues" id="contractTypeFieldEdit--fieldValues"
name="occupancyTypeFieldValues" name="fieldValues"
></textarea> ></textarea>
</div> </div>
<p class="help is-info"> <p class="help is-info">
@ -164,7 +164,7 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--occupancyTypeFieldEdit" form="form--contractTypeFieldEdit"
> >
<span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span>
<span>Update Field</span> <span>Update Field</span>
@ -182,7 +182,7 @@
<div class="dropdown-content"> <div class="dropdown-content">
<a <a
class="dropdown-item" class="dropdown-item"
id="button--deleteOccupancyTypeField" id="button--deleteContractTypeField"
href="#" href="#"
> >
<span class="icon is-small" <span class="icon is-small"

View File

@ -78,13 +78,13 @@
<div class="columns"> <div class="columns">
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="feeAdd--occupancyTypeId" <label class="label" for="feeAdd--contractTypeId"
><span class="alias" data-alias="Occupancy"></span> Type ><span class="alias" data-alias="Occupancy"></span> Type
Filter</label Filter</label
> >
<div class="control"> <div class="control">
<div class="select is-fullwidth"> <div class="select is-fullwidth">
<select id="feeAdd--occupancyTypeId" name="occupancyTypeId"> <select id="feeAdd--contractTypeId" name="contractTypeId">
<option value="">(All Types)</option> <option value="">(All Types)</option>
</select> </select>
</div> </div>

View File

@ -79,13 +79,13 @@
<div class="columns"> <div class="columns">
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="feeEdit--occupancyTypeId" <label class="label" for="feeEdit--contractTypeId"
><span class="alias" data-alias="Occupancy"></span> Type ><span class="alias" data-alias="Occupancy"></span> Type
Filter</label Filter</label
> >
<div class="control"> <div class="control">
<div class="select is-fullwidth"> <div class="select is-fullwidth">
<select id="feeEdit--occupancyTypeId" name="occupancyTypeId"> <select id="feeEdit--contractTypeId" name="contractTypeId">
<option value="">(All Types)</option> <option value="">(All Types)</option>
</select> </select>
</div> </div>

View File

@ -12,46 +12,46 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--lotOccupancyOccupantEdit"> <form id="form--contractOccupantEdit">
<input <input
id="lotOccupancyOccupantEdit--lotOccupancyId" id="contractOccupantEdit--contractId"
name="lotOccupancyId" name="contractId"
type="hidden" type="hidden"
value="" value=""
/> />
<input <input
id="lotOccupancyOccupantEdit--lotOccupantIndex" id="contractOccupantEdit--lotOccupantIndex"
name="lotOccupantIndex" name="lotOccupantIndex"
type="hidden" type="hidden"
value="" value=""
/> />
<label class="label" for="lotOccupancyOccupantEdit--lotOccupantTypeId" <label class="label" for="contractOccupantEdit--lotOccupantTypeId"
><span class="alias" data-alias="Occupant"></span> Type</label ><span class="alias" data-alias="Occupant"></span> Type</label
> >
<div class="field has-addons"> <div class="field has-addons">
<div class="control is-expanded"> <div class="control is-expanded">
<div class="select is-fullwidth"> <div class="select is-fullwidth">
<select <select
id="lotOccupancyOccupantEdit--lotOccupantTypeId" id="contractOccupantEdit--lotOccupantTypeId"
name="lotOccupantTypeId" name="lotOccupantTypeId"
required required
></select> ></select>
</div> </div>
</div> </div>
<div class="control"> <div class="control">
<span class="button is-static" id="lotOccupancyOccupantEdit--fontAwesomeIconClass"></span> <span class="button is-static" id="contractOccupantEdit--fontAwesomeIconClass"></span>
</div> </div>
</div> </div>
<div class="columns mt-2 mb-0"> <div class="columns mt-2 mb-0">
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="lotOccupancyOccupantEdit--occupantName" <label class="label" for="contractOccupantEdit--occupantName"
><span class="alias" data-alias="Occupant"></span> Name</label ><span class="alias" data-alias="Occupant"></span> Name</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantEdit--occupantName" id="contractOccupantEdit--occupantName"
name="occupantName" name="occupantName"
type="text" type="text"
maxlength="200" maxlength="200"
@ -63,13 +63,13 @@
</div> </div>
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="lotOccupancyOccupantEdit--occupantFamilyName" <label class="label" for="contractOccupantEdit--occupantFamilyName"
>Family Name</label >Family Name</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantEdit--occupantFamilyName" id="contractOccupantEdit--occupantFamilyName"
name="occupantFamilyName" name="occupantFamilyName"
type="text" type="text"
maxlength="200" maxlength="200"
@ -80,13 +80,13 @@
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<label class="label" for="lotOccupancyOccupantEdit--occupantAddress1" <label class="label" for="contractOccupantEdit--occupantAddress1"
>Address</label >Address</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantEdit--occupantAddress1" id="contractOccupantEdit--occupantAddress1"
name="occupantAddress1" name="occupantAddress1"
type="text" type="text"
maxlength="50" maxlength="50"
@ -99,7 +99,7 @@
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantEdit--occupantAddress2" id="contractOccupantEdit--occupantAddress2"
name="occupantAddress2" name="occupantAddress2"
type="text" type="text"
maxlength="50" maxlength="50"
@ -112,13 +112,13 @@
<div class="columns"> <div class="columns">
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="lotOccupancyOccupantEdit--occupantCity" <label class="label" for="contractOccupantEdit--occupantCity"
>City</label >City</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantEdit--occupantCity" id="contractOccupantEdit--occupantCity"
name="occupantCity" name="occupantCity"
type="text" type="text"
maxlength="20" maxlength="20"
@ -130,13 +130,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyOccupantEdit--occupantProvince" for="contractOccupantEdit--occupantProvince"
>Province</label >Province</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantEdit--occupantProvince" id="contractOccupantEdit--occupantProvince"
name="occupantProvince" name="occupantProvince"
type="text" type="text"
maxlength="2" maxlength="2"
@ -148,13 +148,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyOccupantEdit--occupantPostalCode" for="contractOccupantEdit--occupantPostalCode"
>Postal Code</label >Postal Code</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantEdit--occupantPostalCode" id="contractOccupantEdit--occupantPostalCode"
name="occupantPostalCode" name="occupantPostalCode"
type="text" type="text"
maxlength="7" maxlength="7"
@ -168,14 +168,14 @@
<div class="column"> <div class="column">
<label <label
class="label" class="label"
for="lotOccupancyOccupantEdit--occupantPhoneNumber" for="contractOccupantEdit--occupantPhoneNumber"
>Phone Number</label >Phone Number</label
> >
<div class="field"> <div class="field">
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancyOccupantEdit--occupantPhoneNumber" id="contractOccupantEdit--occupantPhoneNumber"
name="occupantPhoneNumber" name="occupantPhoneNumber"
type="text" type="text"
maxlength="30" maxlength="30"
@ -190,14 +190,14 @@
<div class="column"> <div class="column">
<label <label
class="label" class="label"
for="lotOccupancyOccupantEdit--occupantEmailAddress" for="contractOccupantEdit--occupantEmailAddress"
>Email Address</label >Email Address</label
> >
<div class="field"> <div class="field">
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancyOccupantEdit--occupantEmailAddress" id="contractOccupantEdit--occupantEmailAddress"
name="occupantEmailAddress" name="occupantEmailAddress"
type="email" type="email"
maxlength="200" maxlength="200"
@ -213,14 +213,14 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
id="lotOccupancyOccupantEdit--occupantCommentTitle" id="contractOccupantEdit--occupantCommentTitle"
for="lotOccupancyOccupantEdit--occupantComment" for="contractOccupantEdit--occupantComment"
>Comment</label >Comment</label
> >
<div class="control"> <div class="control">
<textarea <textarea
class="textarea" class="textarea"
id="lotOccupancyOccupantEdit--occupantComment" id="contractOccupantEdit--occupantComment"
name="occupantComment" name="occupantComment"
></textarea> ></textarea>
</div> </div>
@ -231,7 +231,7 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--lotOccupancyOccupantEdit" form="form--contractOccupantEdit"
> >
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Update <span class="alias" data-alias="Occupant"></span></span> <span>Update <span class="alias" data-alias="Occupant"></span></span>

View File

@ -10,22 +10,22 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--lotOccupancyCommentAdd"> <form id="form--contractCommentAdd">
<input <input
id="lotOccupancyCommentAdd--lotOccupancyId" id="contractCommentAdd--contractId"
name="lotOccupancyId" name="contractId"
type="hidden" type="hidden"
value="" value=""
/> />
<div class="field"> <div class="field">
<label class="label" for="lotOccupancyCommentAdd--lotOccupancyComment" <label class="label" for="contractCommentAdd--contractComment"
>Comment</label >Comment</label
> >
<div class="control"> <div class="control">
<textarea <textarea
class="textarea" class="textarea"
id="lotOccupancyCommentAdd--lotOccupancyComment" id="contractCommentAdd--contractComment"
name="lotOccupancyComment" name="contractComment"
required required
></textarea> ></textarea>
</div> </div>
@ -36,7 +36,7 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--lotOccupancyCommentAdd" form="form--contractCommentAdd"
> >
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Comment</span> <span>Add Comment</span>

View File

@ -15,7 +15,7 @@
<div class="tabs is-boxed"> <div class="tabs is-boxed">
<ul> <ul>
<li class="is-active"> <li class="is-active">
<a href="#tab--lotOccupancyOccupantAdd-new"> <a href="#tab--contractOccupantAdd-new">
<span class="icon is-small"> <span class="icon is-small">
<i class="fas fa-plus" aria-hidden="true"></i> <i class="fas fa-plus" aria-hidden="true"></i>
</span> </span>
@ -23,7 +23,7 @@
</a> </a>
</li> </li>
<li> <li>
<a href="#tab--lotOccupancyOccupantAdd-copy"> <a href="#tab--contractOccupantAdd-copy">
<span class="icon is-small"> <span class="icon is-small">
<i class="fas fa-copy" aria-hidden="true"></i> <i class="fas fa-copy" aria-hidden="true"></i>
</span> </span>
@ -33,24 +33,24 @@
</ul> </ul>
</div> </div>
<div class="tab-container"> <div class="tab-container">
<div id="tab--lotOccupancyOccupantAdd-new"> <div id="tab--contractOccupantAdd-new">
<form id="form--lotOccupancyOccupantAdd"> <form id="form--contractOccupantAdd">
<input <input
id="lotOccupancyOccupantAdd--lotOccupancyId" id="contractOccupantAdd--contractId"
name="lotOccupancyId" name="contractId"
type="hidden" type="hidden"
value="" value=""
/> />
<label <label
class="label" class="label"
for="lotOccupancyOccupantAdd--lotOccupantTypeId" for="contractOccupantAdd--lotOccupantTypeId"
><span class="alias" data-alias="Occupant"></span> Type</label ><span class="alias" data-alias="Occupant"></span> Type</label
> >
<div class="field has-addons"> <div class="field has-addons">
<div class="control is-expanded"> <div class="control is-expanded">
<div class="select is-fullwidth"> <div class="select is-fullwidth">
<select <select
id="lotOccupancyOccupantAdd--lotOccupantTypeId" id="contractOccupantAdd--lotOccupantTypeId"
name="lotOccupantTypeId" name="lotOccupantTypeId"
required required
> >
@ -59,7 +59,7 @@
</div> </div>
</div> </div>
<div class="control"> <div class="control">
<span class="button is-static" id="lotOccupancyOccupantAdd--fontAwesomeIconClass"> <span class="button is-static" id="contractOccupantAdd--fontAwesomeIconClass">
<i class="fas fa-fw fa-user" aria-hidden="true"></i> <i class="fas fa-fw fa-user" aria-hidden="true"></i>
</span> </span>
</div> </div>
@ -67,13 +67,13 @@
<div class="columns mt-2 mb-0"> <div class="columns mt-2 mb-0">
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="lotOccupancyOccupantAdd--occupantName" <label class="label" for="contractOccupantAdd--occupantName"
><span class="alias" data-alias="Occupant"></span> Name</label ><span class="alias" data-alias="Occupant"></span> Name</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantAdd--occupantName" id="contractOccupantAdd--occupantName"
name="occupantName" name="occupantName"
type="text" type="text"
maxlength="200" maxlength="200"
@ -85,13 +85,13 @@
</div> </div>
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="lotOccupancyOccupantAdd--occupantFamilyName" <label class="label" for="contractOccupantAdd--occupantFamilyName"
>Family Name</label >Family Name</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantAdd--occupantFamilyName" id="contractOccupantAdd--occupantFamilyName"
name="occupantFamilyName" name="occupantFamilyName"
type="text" type="text"
maxlength="200" maxlength="200"
@ -105,13 +105,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyOccupantAdd--occupantAddress1" for="contractOccupantAdd--occupantAddress1"
>Address</label >Address</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantAdd--occupantAddress1" id="contractOccupantAdd--occupantAddress1"
name="occupantAddress1" name="occupantAddress1"
type="text" type="text"
maxlength="50" maxlength="50"
@ -124,7 +124,7 @@
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantAdd--occupantAddress2" id="contractOccupantAdd--occupantAddress2"
name="occupantAddress2" name="occupantAddress2"
type="text" type="text"
maxlength="50" maxlength="50"
@ -139,13 +139,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyOccupantAdd--occupantCity" for="contractOccupantAdd--occupantCity"
>City</label >City</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantAdd--occupantCity" id="contractOccupantAdd--occupantCity"
name="occupantCity" name="occupantCity"
type="text" type="text"
maxlength="20" maxlength="20"
@ -157,13 +157,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyOccupantAdd--occupantProvince" for="contractOccupantAdd--occupantProvince"
>Province</label >Province</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantAdd--occupantProvince" id="contractOccupantAdd--occupantProvince"
name="occupantProvince" name="occupantProvince"
type="text" type="text"
maxlength="2" maxlength="2"
@ -175,13 +175,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyOccupantAdd--occupantPostalCode" for="contractOccupantAdd--occupantPostalCode"
>Postal Code</label >Postal Code</label
> >
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyOccupantAdd--occupantPostalCode" id="contractOccupantAdd--occupantPostalCode"
name="occupantPostalCode" name="occupantPostalCode"
type="text" type="text"
maxlength="7" maxlength="7"
@ -195,14 +195,14 @@
<div class="column"> <div class="column">
<label <label
class="label" class="label"
for="lotOccupancyOccupantAdd--occupantPhoneNumber" for="contractOccupantAdd--occupantPhoneNumber"
>Phone Number</label >Phone Number</label
> >
<div class="field"> <div class="field">
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancyOccupantAdd--occupantPhoneNumber" id="contractOccupantAdd--occupantPhoneNumber"
name="occupantPhoneNumber" name="occupantPhoneNumber"
type="text" type="text"
maxlength="30" maxlength="30"
@ -217,14 +217,14 @@
<div class="column"> <div class="column">
<label <label
class="label" class="label"
for="lotOccupancyOccupantAdd--occupantEmailAddress" for="contractOccupantAdd--occupantEmailAddress"
>Email Address</label >Email Address</label
> >
<div class="field"> <div class="field">
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancyOccupantAdd--occupantEmailAddress" id="contractOccupantAdd--occupantEmailAddress"
name="occupantEmailAddress" name="occupantEmailAddress"
type="email" type="email"
maxlength="200" maxlength="200"
@ -240,14 +240,14 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
id="lotOccupancyOccupantAdd--occupantCommentTitle" id="contractOccupantAdd--occupantCommentTitle"
for="lotOccupancyOccupantAdd--occupantComment" for="contractOccupantAdd--occupantComment"
>Comment</label >Comment</label
> >
<div class="control"> <div class="control">
<textarea <textarea
class="textarea" class="textarea"
id="lotOccupancyOccupantAdd--occupantComment" id="contractOccupantAdd--occupantComment"
name="occupantComment" name="occupantComment"
></textarea> ></textarea>
</div> </div>
@ -264,18 +264,18 @@
</div> </div>
</form> </form>
</div> </div>
<div class="is-hidden" id="tab--lotOccupancyOccupantAdd-copy"> <div class="is-hidden" id="tab--contractOccupantAdd-copy">
<div class="box"> <div class="box">
<div class="field mb-4"> <div class="field mb-4">
<label <label
class="label" class="label"
for="lotOccupancyOccupantCopy--lotOccupantTypeId" for="contractOccupantCopy--lotOccupantTypeId"
>New <span class="alias" data-alias="Occupant"></span> Type</label >New <span class="alias" data-alias="Occupant"></span> Type</label
> >
<div class="control"> <div class="control">
<div class="select is-fullwidth"> <div class="select is-fullwidth">
<select <select
id="lotOccupancyOccupantCopy--lotOccupantTypeId" id="contractOccupantCopy--lotOccupantTypeId"
name="lotOccupantTypeId" name="lotOccupantTypeId"
required required
> >
@ -284,18 +284,18 @@
</div> </div>
</div> </div>
</div> </div>
<form id="form--lotOccupancyOccupantCopy"> <form id="form--contractOccupantCopy">
<input name="limit" type="hidden" value="50" /> <input name="limit" type="hidden" value="50" />
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyOccupantCopy--searchFilter" for="contractOccupantCopy--searchFilter"
>Find a Previously Used <span class="alias" data-alias="Occupant"></span></label >Find a Previously Used <span class="alias" data-alias="Occupant"></span></label
> >
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancyOccupantCopy--searchFilter" id="contractOccupantCopy--searchFilter"
name="searchFilter" name="searchFilter"
type="text" type="text"
placeholder="Filter by name or address" placeholder="Filter by name or address"
@ -307,7 +307,7 @@
</div> </div>
</form> </form>
</div> </div>
<div id="lotOccupancyOccupantCopy--searchResults"></div> <div id="contractOccupantCopy--searchResults"></div>
</div> </div>
</div> </div>
</section> </section>

View File

@ -10,10 +10,10 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--lotOccupancyTransactionAdd"> <form id="form--contractTransactionAdd">
<input <input
id="lotOccupancyTransactionAdd--lotOccupancyId" id="contractTransactionAdd--contractId"
name="lotOccupancyId" name="contractId"
type="hidden" type="hidden"
value="" value=""
/> />
@ -21,13 +21,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyTransactionAdd--transactionAmount" for="contractTransactionAdd--transactionAmount"
>Transaction Amount</label >Transaction Amount</label
> >
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input has-text-right" class="input has-text-right"
id="lotOccupancyTransactionAdd--transactionAmount" id="contractTransactionAdd--transactionAmount"
name="transactionAmount" name="transactionAmount"
type="number" type="number"
step="0.01" step="0.01"
@ -41,14 +41,14 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyTransactionAdd--externalReceiptNumber" for="contractTransactionAdd--externalReceiptNumber"
> >
<span class="alias" data-alias="ExternalReceiptNumber"></span> <span class="alias" data-alias="ExternalReceiptNumber"></span>
</label> </label>
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyTransactionAdd--externalReceiptNumber" id="contractTransactionAdd--externalReceiptNumber"
name="externalReceiptNumber" name="externalReceiptNumber"
maxlength="100" maxlength="100"
autocomplete="off" autocomplete="off"
@ -56,13 +56,13 @@
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<label class="label" for="lotOccupancyTransactionAdd--transactionNote" <label class="label" for="contractTransactionAdd--transactionNote"
>Note</label >Note</label
> >
<div class="control"> <div class="control">
<textarea <textarea
class="textarea" class="textarea"
id="lotOccupancyTransactionAdd--transactionNote" id="contractTransactionAdd--transactionNote"
name="transactionNote" name="transactionNote"
></textarea> ></textarea>
</div> </div>
@ -73,7 +73,7 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--lotOccupancyTransactionAdd" form="form--contractTransactionAdd"
> >
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Transaction</span> <span>Add Transaction</span>

View File

@ -12,8 +12,8 @@
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--workOrderCreate"> <form id="form--workOrderCreate">
<input <input
id="workOrderCreate--lotOccupancyId" id="workOrderCreate--contractId"
name="lotOccupancyId" name="contractId"
type="hidden" type="hidden"
value="" value=""
/> />

View File

@ -10,30 +10,30 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--lotOccupancyCommentEdit"> <form id="form--contractCommentEdit">
<input <input
id="lotOccupancyCommentEdit--lotOccupancyId" id="contractCommentEdit--contractId"
name="lotOccupancyId" name="contractId"
type="hidden" type="hidden"
value="" value=""
/> />
<input <input
id="lotOccupancyCommentEdit--lotOccupancyCommentId" id="contractCommentEdit--contractCommentId"
name="lotOccupancyCommentId" name="contractCommentId"
type="hidden" type="hidden"
value="" value=""
/> />
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyCommentEdit--lotOccupancyComment" for="contractCommentEdit--contractComment"
>Comment</label >Comment</label
> >
<div class="control"> <div class="control">
<textarea <textarea
class="textarea" class="textarea"
id="lotOccupancyCommentEdit--lotOccupancyComment" id="contractCommentEdit--contractComment"
name="lotOccupancyComment" name="contractComment"
required required
></textarea> ></textarea>
</div> </div>
@ -43,14 +43,14 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyCommentEdit--lotOccupancyCommentDateString" for="contractCommentEdit--contractCommentDateString"
>Comment Date</label >Comment Date</label
> >
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancyCommentEdit--lotOccupancyCommentDateString" id="contractCommentEdit--contractCommentDateString"
name="lotOccupancyCommentDateString" name="contractCommentDateString"
type="date" type="date"
required required
/> />
@ -64,14 +64,14 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyCommentEdit--lotOccupancyCommentTimeString" for="contractCommentEdit--contractCommentTimeString"
>Comment Time</label >Comment Time</label
> >
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancyCommentEdit--lotOccupancyCommentTimeString" id="contractCommentEdit--contractCommentTimeString"
name="lotOccupancyCommentTimeString" name="contractCommentTimeString"
type="time" type="time"
required required
/> />
@ -88,7 +88,7 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--lotOccupancyCommentEdit" form="form--contractCommentEdit"
> >
<span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span>
<span>Update Comment</span> <span>Update Comment</span>

View File

@ -10,17 +10,17 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--lotOccupancyFeeQuantity"> <form id="form--contractFeeQuantity">
<input id="lotOccupancyFeeQuantity--lotOccupancyId" name="lotOccupancyId" type="hidden" /> <input id="contractFeeQuantity--contractId" name="contractId" type="hidden" />
<input id="lotOccupancyFeeQuantity--feeId" name="feeId" type="hidden" /> <input id="contractFeeQuantity--feeId" name="feeId" type="hidden" />
<label class="label" for="lotOccupancyFeeQuantity--quantity" <label class="label" for="contractFeeQuantity--quantity"
>Quantity</label >Quantity</label
> >
<div class="field has-addons"> <div class="field has-addons">
<div class="control is-expanded"> <div class="control is-expanded">
<input <input
class="input" class="input"
id="lotOccupancyFeeQuantity--quantity" id="contractFeeQuantity--quantity"
name="quantity" name="quantity"
type="number" type="number"
value="1" value="1"
@ -34,7 +34,7 @@
<div class="control"> <div class="control">
<span <span
class="button is-static" class="button is-static"
id="lotOccupancyFeeQuantity--quantityUnit" id="contractFeeQuantity--quantityUnit"
></span> ></span>
</div> </div>
</div> </div>
@ -44,7 +44,7 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--lotOccupancyFeeQuantity" form="form--contractFeeQuantity"
> >
<span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span>
<span>Update Quantity</span> <span>Update Quantity</span>

View File

@ -10,15 +10,15 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--lotOccupancyTransactionEdit"> <form id="form--contractTransactionEdit">
<input <input
id="lotOccupancyTransactionEdit--lotOccupancyId" id="contractTransactionEdit--contractId"
name="lotOccupancyId" name="contractId"
type="hidden" type="hidden"
value="" value=""
/> />
<input <input
id="lotOccupancyTransactionEdit--transactionIndex" id="contractTransactionEdit--transactionIndex"
name="transactionIndex" name="transactionIndex"
type="hidden" type="hidden"
value="" value=""
@ -27,13 +27,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyTransactionEdit--transactionAmount" for="contractTransactionEdit--transactionAmount"
>Transaction Amount</label >Transaction Amount</label
> >
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input has-text-right" class="input has-text-right"
id="lotOccupancyTransactionEdit--transactionAmount" id="contractTransactionEdit--transactionAmount"
name="transactionAmount" name="transactionAmount"
type="number" type="number"
step="0.01" step="0.01"
@ -47,14 +47,14 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyTransactionEdit--externalReceiptNumber" for="contractTransactionEdit--externalReceiptNumber"
> >
<span class="alias" data-alias="ExternalReceiptNumber"></span> <span class="alias" data-alias="ExternalReceiptNumber"></span>
</label> </label>
<div class="control"> <div class="control">
<input <input
class="input" class="input"
id="lotOccupancyTransactionEdit--externalReceiptNumber" id="contractTransactionEdit--externalReceiptNumber"
name="externalReceiptNumber" name="externalReceiptNumber"
maxlength="100" maxlength="100"
autocomplete="off" autocomplete="off"
@ -62,13 +62,13 @@
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<label class="label" for="lotOccupancyTransactionEdit--transactionNote" <label class="label" for="contractTransactionEdit--transactionNote"
>Note</label >Note</label
> >
<div class="control"> <div class="control">
<textarea <textarea
class="textarea" class="textarea"
id="lotOccupancyTransactionEdit--transactionNote" id="contractTransactionEdit--transactionNote"
name="transactionNote" name="transactionNote"
></textarea> ></textarea>
</div> </div>
@ -78,13 +78,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyTransactionEdit--transactionDateString" for="contractTransactionEdit--transactionDateString"
>Transaction Date</label >Transaction Date</label
> >
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancyTransactionEdit--transactionDateString" id="contractTransactionEdit--transactionDateString"
name="transactionDateString" name="transactionDateString"
type="date" type="date"
required required
@ -99,13 +99,13 @@
<div class="field"> <div class="field">
<label <label
class="label" class="label"
for="lotOccupancyTransactionEdit--transactionTimeString" for="contractTransactionEdit--transactionTimeString"
>Transaction Time</label >Transaction Time</label
> >
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancyTransactionEdit--transactionTimeString" id="contractTransactionEdit--transactionTimeString"
name="transactionTimeString" name="transactionTimeString"
type="time" type="time"
required required
@ -123,7 +123,7 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--lotOccupancyTransactionEdit" form="form--contractTransactionEdit"
> >
<span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span>
<span>Update Transaction</span> <span>Update Transaction</span>

View File

@ -10,15 +10,15 @@
></button> ></button>
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<form id="form--lotOccupancyFeeQuantity"> <form id="form--contractFeeQuantity">
<label class="label" for="lotOccupancyFeeQuantity--quantity" <label class="label" for="contractFeeQuantity--quantity"
>Quantity</label >Quantity</label
> >
<div class="field has-addons"> <div class="field has-addons">
<div class="control is-expanded"> <div class="control is-expanded">
<input <input
class="input" class="input"
id="lotOccupancyFeeQuantity--quantity" id="contractFeeQuantity--quantity"
name="quantity" name="quantity"
type="number" type="number"
value="1" value="1"
@ -32,7 +32,7 @@
<div class="control"> <div class="control">
<span <span
class="button is-static" class="button is-static"
id="lotOccupancyFeeQuantity--quantityUnit" id="contractFeeQuantity--quantityUnit"
></span> ></span>
</div> </div>
</div> </div>
@ -42,7 +42,7 @@
<button <button
class="button is-success" class="button is-success"
type="submit" type="submit"
form="form--lotOccupancyFeeQuantity" form="form--contractFeeQuantity"
> >
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Set Quantity and Add Fee</span> <span>Set Quantity and Add Fee</span>

View File

@ -14,17 +14,17 @@
</header> </header>
<section class="modal-card-body"> <section class="modal-card-body">
<div class="box"> <div class="box">
<form id="form--lotOccupancySearch"> <form id="form--contractSearch">
<input name="limit" type="hidden" value="100" /> <input name="limit" type="hidden" value="100" />
<input name="offset" type="hidden" value="0" /> <input name="offset" type="hidden" value="0" />
<input <input
id="lotOccupancySearch--notWorkOrderId" id="contractSearch--notWorkOrderId"
name="notWorkOrderId" name="notWorkOrderId"
type="hidden" type="hidden"
value="" value=""
/> />
<input <input
id="lotOccupancySearch--occupancyEffectiveDateString" id="contractSearch--occupancyEffectiveDateString"
name="occupancyEffectiveDateString" name="occupancyEffectiveDateString"
type="hidden" type="hidden"
value="" value=""
@ -32,14 +32,14 @@
<div class="columns"> <div class="columns">
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="lotOccupancySearch--occupantName"> <label class="label" for="contractSearch--occupantName">
<span class="alias" data-alias="Occupant"></span> <span class="alias" data-alias="Occupant"></span>
Name Name
</label> </label>
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancySearch--occupantName" id="contractSearch--occupantName"
name="occupantName" name="occupantName"
type="text" type="text"
/> />
@ -51,14 +51,14 @@
</div> </div>
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="lotOccupancySearch--lotName"> <label class="label" for="contractSearch--lotName">
<span class="alias" data-alias="Lot"></span> <span class="alias" data-alias="Lot"></span>
Name Name
</label> </label>
<div class="control has-icons-left"> <div class="control has-icons-left">
<input <input
class="input" class="input"
id="lotOccupancySearch--lotName" id="contractSearch--lotName"
name="lotName" name="lotName"
type="text" type="text"
/> />
@ -71,7 +71,7 @@
</div> </div>
</form> </form>
</div> </div>
<div id="resultsContainer--lotOccupancyAdd"></div> <div id="resultsContainer--contractAdd"></div>
</section> </section>
<footer class="modal-card-foot justify-right"> <footer class="modal-card-foot justify-right">
<button class="button is-close-modal-button" type="button">Close</button> <button class="button is-close-modal-button" type="button">Close</button>

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.sunrise;
const burialSiteId = document.querySelector('#burialSite--burialSiteId').value; const burialSiteId = document.querySelector('#burialSite--burialSiteId').value;
const isCreate = burialSiteId === ''; const isCreate = burialSiteId === '';
// Main form // Main form

View File

@ -6,14 +6,14 @@ import type {
BurialSiteTypeField BurialSiteTypeField
} from '../../types/recordTypes.js' } from '../../types/recordTypes.js'
import type { LOS } from './types.js' import type { Sunrise } from './types.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const bulmaJS: BulmaJS declare const bulmaJS: BulmaJS
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as LOS const los = exports.sunrise as Sunrise
const burialSiteId = ( const burialSiteId = (
document.querySelector('#burialSite--burialSiteId') as HTMLInputElement document.querySelector('#burialSite--burialSiteId') as HTMLInputElement

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.sunrise;
const searchFilterFormElement = document.querySelector('#form--searchFilters'); const searchFilterFormElement = document.querySelector('#form--searchFilters');
const searchResultsContainerElement = document.querySelector('#container--searchResults'); const searchResultsContainerElement = document.querySelector('#container--searchResults');
const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10); const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10);

View File

@ -2,13 +2,13 @@ import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type { BurialSite } from '../../types/recordTypes.js' import type { BurialSite } from '../../types/recordTypes.js'
import type { LOS } from './types.js' import type { Sunrise } from './types.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as LOS const los = exports.sunrise as Sunrise
const searchFilterFormElement = document.querySelector( const searchFilterFormElement = document.querySelector(
'#form--searchFilters' '#form--searchFilters'

View File

@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
const mapContainerElement = document.querySelector('#burialSite--cemeterySvg'); const mapContainerElement = document.querySelector('#burialSite--cemeterySvg');
if (mapContainerElement !== null) { if (mapContainerElement !== null) {
; ;
exports.los.highlightMap(mapContainerElement, mapContainerElement.dataset.cemeterySvgId ?? '', 'success'); exports.sunrise.highlightMap(mapContainerElement, mapContainerElement.dataset.cemeterySvgId ?? '', 'success');
} }
})(); })();

View File

@ -1,4 +1,4 @@
import type { LOS } from './types.js' import type { Sunrise } from './types.js'
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
@ -6,7 +6,7 @@ declare const exports: Record<string, unknown>
document.querySelector('#burialSite--cemeterySvg') document.querySelector('#burialSite--cemeterySvg')
if (mapContainerElement !== null) { if (mapContainerElement !== null) {
;(exports.los as LOS).highlightMap( ;(exports.sunrise as Sunrise).highlightMap(
mapContainerElement, mapContainerElement,
mapContainerElement.dataset.cemeterySvgId ?? '', mapContainerElement.dataset.cemeterySvgId ?? '',
'success' 'success'

View File

@ -3,7 +3,7 @@
/* eslint-disable max-lines */ /* eslint-disable max-lines */
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.sunrise;
const containerElement = document.querySelector('#container--burialSiteTypes'); const containerElement = document.querySelector('#container--burialSiteTypes');
let burialSiteTypes = exports.burialSiteTypes; let burialSiteTypes = exports.burialSiteTypes;
delete exports.burialSiteTypes; delete exports.burialSiteTypes;

View File

@ -9,7 +9,7 @@ import type {
BurialSiteTypeField BurialSiteTypeField
} from '../../types/recordTypes.js' } from '../../types/recordTypes.js'
import type { LOS } from './types.js' import type { Sunrise } from './types.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const bulmaJS: BulmaJS declare const bulmaJS: BulmaJS
@ -27,7 +27,7 @@ type ResponseJSON =
errorMessage?: string errorMessage?: string
} }
;(() => { ;(() => {
const los = exports.los as LOS const los = exports.sunrise as Sunrise
const containerElement = document.querySelector( const containerElement = document.querySelector(
'#container--burialSiteTypes' '#container--burialSiteTypes'

View File

@ -1,30 +1,30 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const sunrise = exports.sunrise;
const cemeteryId = document.querySelector('#cemetery--cemeteryId').value; const cemeteryId = document.querySelector('#cemetery--cemeteryId').value;
const isCreate = cemeteryId === ''; const isCreate = cemeteryId === '';
const cemeteryForm = document.querySelector('#form--cemetery'); const cemeteryForm = document.querySelector('#form--cemetery');
function setUnsavedChanges() { function setUnsavedChanges() {
los.setUnsavedChanges(); sunrise.setUnsavedChanges();
document document
.querySelector("button[type='submit'][form='form--cemetery']") .querySelector("button[type='submit'][form='form--cemetery']")
?.classList.remove('is-light'); ?.classList.remove('is-light');
} }
function clearUnsavedChanges() { function clearUnsavedChanges() {
los.clearUnsavedChanges(); sunrise.clearUnsavedChanges();
document document
.querySelector("button[type='submit'][form='form--cemetery']") .querySelector("button[type='submit'][form='form--cemetery']")
?.classList.add('is-light'); ?.classList.add('is-light');
} }
function updateCemetery(formEvent) { function updateCemetery(formEvent) {
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON(`${los.urlPrefix}/cemeteries/${isCreate ? 'doCreateCemetery' : 'doUpdateCemetery'}`, cemeteryForm, (rawResponseJSON) => { cityssm.postJSON(`${sunrise.urlPrefix}/cemeteries/${isCreate ? 'doCreateCemetery' : 'doUpdateCemetery'}`, cemeteryForm, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
clearUnsavedChanges(); clearUnsavedChanges();
if (isCreate) { if (isCreate) {
globalThis.location.href = los.getCemeteryURL(responseJSON.cemeteryId, true); globalThis.location.href = sunrise.getCemeteryURL(responseJSON.cemeteryId, true);
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
@ -52,12 +52,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
?.addEventListener('click', (clickEvent) => { ?.addEventListener('click', (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
function doDelete() { function doDelete() {
cityssm.postJSON(`${los.urlPrefix}/cemeteries/doDeleteCemetery`, { cityssm.postJSON(`${sunrise.urlPrefix}/cemeteries/doDeleteCemetery`, {
cemeteryId cemeteryId
}, (rawResponseJSON) => { }, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
globalThis.location.href = los.getCemeteryURL(); globalThis.location.href = sunrise.getCemeteryURL();
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({

View File

@ -1,14 +1,14 @@
import type { BulmaJS } from '@cityssm/bulma-js/types.js' import type { BulmaJS } from '@cityssm/bulma-js/types.js'
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js' import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type { LOS } from './types.js' import type { Sunrise } from './types.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const bulmaJS: BulmaJS declare const bulmaJS: BulmaJS
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as LOS const sunrise = exports.sunrise as Sunrise
const cemeteryId = ( const cemeteryId = (
document.querySelector('#cemetery--cemeteryId') as HTMLInputElement document.querySelector('#cemetery--cemeteryId') as HTMLInputElement
@ -20,14 +20,14 @@ declare const exports: Record<string, unknown>
) as HTMLFormElement ) as HTMLFormElement
function setUnsavedChanges(): void { function setUnsavedChanges(): void {
los.setUnsavedChanges() sunrise.setUnsavedChanges()
document document
.querySelector("button[type='submit'][form='form--cemetery']") .querySelector("button[type='submit'][form='form--cemetery']")
?.classList.remove('is-light') ?.classList.remove('is-light')
} }
function clearUnsavedChanges(): void { function clearUnsavedChanges(): void {
los.clearUnsavedChanges() sunrise.clearUnsavedChanges()
document document
.querySelector("button[type='submit'][form='form--cemetery']") .querySelector("button[type='submit'][form='form--cemetery']")
?.classList.add('is-light') ?.classList.add('is-light')
@ -37,7 +37,7 @@ declare const exports: Record<string, unknown>
formEvent.preventDefault() formEvent.preventDefault()
cityssm.postJSON( cityssm.postJSON(
`${los.urlPrefix}/cemeteries/${isCreate ? 'doCreateCemetery' : 'doUpdateCemetery'}`, `${sunrise.urlPrefix}/cemeteries/${isCreate ? 'doCreateCemetery' : 'doUpdateCemetery'}`,
cemeteryForm, cemeteryForm,
(rawResponseJSON) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as { const responseJSON = rawResponseJSON as {
@ -50,7 +50,7 @@ declare const exports: Record<string, unknown>
clearUnsavedChanges() clearUnsavedChanges()
if (isCreate) { if (isCreate) {
globalThis.location.href = los.getCemeteryURL( globalThis.location.href = sunrise.getCemeteryURL(
responseJSON.cemeteryId, responseJSON.cemeteryId,
true true
) )
@ -87,7 +87,7 @@ declare const exports: Record<string, unknown>
function doDelete(): void { function doDelete(): void {
cityssm.postJSON( cityssm.postJSON(
`${los.urlPrefix}/cemeteries/doDeleteCemetery`, `${sunrise.urlPrefix}/cemeteries/doDeleteCemetery`,
{ {
cemeteryId cemeteryId
}, },
@ -98,7 +98,7 @@ declare const exports: Record<string, unknown>
} }
if (responseJSON.success) { if (responseJSON.success) {
globalThis.location.href = los.getCemeteryURL() globalThis.location.href = sunrise.getCemeteryURL()
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: `Error Deleting Cemetery`, title: `Error Deleting Cemetery`,

View File

@ -1,14 +1,14 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const sunrise = exports.sunrise;
const cemeteries = exports.cemeteries; const cemeteries = exports.cemeteries;
const searchFilterElement = document.querySelector('#searchFilter--cemetery'); const searchFilterElement = document.querySelector('#searchFilter--cemetery');
const searchResultsContainerElement = document.querySelector('#container--searchResults'); const searchResultsContainerElement = document.querySelector('#container--searchResults');
// eslint-disable-next-line complexity // eslint-disable-next-line complexity
function renderResults() { function renderResults() {
// eslint-disable-next-line no-unsanitized/property // eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading Cemeteries...`); searchResultsContainerElement.innerHTML = sunrise.getLoadingParagraphHTML(`Loading Cemeteries...`);
let searchResultCount = 0; let searchResultCount = 0;
const searchResultsTbodyElement = document.createElement('tbody'); const searchResultsTbodyElement = document.createElement('tbody');
const filterStringSplit = searchFilterElement.value const filterStringSplit = searchFilterElement.value
@ -31,7 +31,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
// eslint-disable-next-line no-unsanitized/method // eslint-disable-next-line no-unsanitized/method
searchResultsTbodyElement.insertAdjacentHTML('beforeend', `<tr> searchResultsTbodyElement.insertAdjacentHTML('beforeend', `<tr>
<td> <td>
<a class="has-text-weight-bold" href="${los.getCemeteryURL(cemetery.cemeteryId)}"> <a class="has-text-weight-bold" href="${sunrise.getCemeteryURL(cemetery.cemeteryId)}">
${cityssm.escapeHTML((cemetery.cemeteryName ?? '') === '' ? '(No Name)' : cemetery.cemeteryName ?? '')} ${cityssm.escapeHTML((cemetery.cemeteryName ?? '') === '' ? '(No Name)' : cemetery.cemeteryName ?? '')}
</a><br /> </a><br />
<span class="is-size-7"> <span class="is-size-7">
@ -63,13 +63,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
? '' ? ''
: '<span data-tooltip="Has Image"><i class="fas fa-image" role="img" aria-label="Has Image"></i></span>'} : '<span data-tooltip="Has Image"><i class="fas fa-image" role="img" aria-label="Has Image"></i></span>'}
</td><td class="has-text-right"> </td><td class="has-text-right">
<a href="${los.urlPrefix}/burialSites?cemeteryId=${cemetery.cemeteryId}">${cemetery.burialSiteCount}</a> <a href="${sunrise.urlPrefix}/burialSites?cemeteryId=${cemetery.cemeteryId}">${cemetery.burialSiteCount}</a>
</td> </td>
</tr>`); </tr>`);
} }
searchResultsContainerElement.innerHTML = ''; searchResultsContainerElement.innerHTML = '';
if (searchResultCount === 0) { if (searchResultCount === 0) {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<div class="message is-info"> searchResultsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no cemeteries that meet the search criteria.</p> <p class="message-body">There are no cemeteries that meet the search criteria.</p>
</div>`; </div>`;
@ -78,7 +77,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
const searchResultsTableElement = document.createElement('table'); const searchResultsTableElement = document.createElement('table');
searchResultsTableElement.className = searchResultsTableElement.className =
'table is-fullwidth is-striped is-hoverable has-sticky-header'; 'table is-fullwidth is-striped is-hoverable has-sticky-header';
// eslint-disable-next-line no-unsanitized/property
searchResultsTableElement.innerHTML = `<thead><tr> searchResultsTableElement.innerHTML = `<thead><tr>
<th>Cemetery</th> <th>Cemetery</th>
<th>Address</th> <th>Address</th>

View File

@ -2,13 +2,13 @@ import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type { Cemetery } from '../../types/recordTypes.js' import type { Cemetery } from '../../types/recordTypes.js'
import type { LOS } from './types.js' import type { Sunrise } from './types.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as LOS const sunrise = exports.sunrise as Sunrise
const cemeteries = exports.cemeteries as Cemetery[] const cemeteries = exports.cemeteries as Cemetery[]
@ -23,7 +23,7 @@ declare const exports: Record<string, unknown>
// eslint-disable-next-line complexity // eslint-disable-next-line complexity
function renderResults(): void { function renderResults(): void {
// eslint-disable-next-line no-unsanitized/property // eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML( searchResultsContainerElement.innerHTML = sunrise.getLoadingParagraphHTML(
`Loading Cemeteries...` `Loading Cemeteries...`
) )
@ -60,7 +60,7 @@ declare const exports: Record<string, unknown>
'beforeend', 'beforeend',
`<tr> `<tr>
<td> <td>
<a class="has-text-weight-bold" href="${los.getCemeteryURL(cemetery.cemeteryId)}"> <a class="has-text-weight-bold" href="${sunrise.getCemeteryURL(cemetery.cemeteryId)}">
${cityssm.escapeHTML( ${cityssm.escapeHTML(
(cemetery.cemeteryName ?? '') === '' ? '(No Name)' : cemetery.cemeteryName ?? '' (cemetery.cemeteryName ?? '') === '' ? '(No Name)' : cemetery.cemeteryName ?? ''
)} )}
@ -106,7 +106,7 @@ declare const exports: Record<string, unknown>
: '<span data-tooltip="Has Image"><i class="fas fa-image" role="img" aria-label="Has Image"></i></span>' : '<span data-tooltip="Has Image"><i class="fas fa-image" role="img" aria-label="Has Image"></i></span>'
} }
</td><td class="has-text-right"> </td><td class="has-text-right">
<a href="${los.urlPrefix}/burialSites?cemeteryId=${cemetery.cemeteryId}">${cemetery.burialSiteCount}</a> <a href="${sunrise.urlPrefix}/burialSites?cemeteryId=${cemetery.cemeteryId}">${cemetery.burialSiteCount}</a>
</td> </td>
</tr>` </tr>`
) )
@ -115,7 +115,6 @@ declare const exports: Record<string, unknown>
searchResultsContainerElement.innerHTML = '' searchResultsContainerElement.innerHTML = ''
if (searchResultCount === 0) { if (searchResultCount === 0) {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<div class="message is-info"> searchResultsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no cemeteries that meet the search criteria.</p> <p class="message-body">There are no cemeteries that meet the search criteria.</p>
</div>` </div>`
@ -125,7 +124,6 @@ declare const exports: Record<string, unknown>
searchResultsTableElement.className = searchResultsTableElement.className =
'table is-fullwidth is-striped is-hoverable has-sticky-header' 'table is-fullwidth is-striped is-hoverable has-sticky-header'
// eslint-disable-next-line no-unsanitized/property
searchResultsTableElement.innerHTML = `<thead><tr> searchResultsTableElement.innerHTML = `<thead><tr>
<th>Cemetery</th> <th>Cemetery</th>
<th>Address</th> <th>Address</th>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.sunrise;
const searchFilterFormElement = document.querySelector('#form--searchFilters'); const searchFilterFormElement = document.querySelector('#form--searchFilters');
const searchResultsContainerElement = document.querySelector('#container--searchResults'); const searchResultsContainerElement = document.querySelector('#container--searchResults');
const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10); const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10);

View File

@ -2,13 +2,13 @@ import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type { Contract } from '../../types/recordTypes.js' import type { Contract } from '../../types/recordTypes.js'
import type { LOS } from './types.js' import type { Sunrise } from './types.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as LOS const los = exports.sunrise as Sunrise
const searchFilterFormElement = document.querySelector( const searchFilterFormElement = document.querySelector(
'#form--searchFilters' '#form--searchFilters'

View File

@ -1,88 +1,88 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.sunrise;
const occupancyTypesContainerElement = document.querySelector('#container--occupancyTypes'); const contractTypesContainerElement = document.querySelector('#container--contractTypes');
const ContractTypePrintsContainerElement = document.querySelector('#container--ContractTypePrints'); const contractTypePrintsContainerElement = document.querySelector('#container--contractTypePrints');
let occupancyTypes = exports.occupancyTypes; let contractTypes = exports.contractTypes;
delete exports.occupancyTypes; delete exports.contractTypes;
let allContractTypeFields = exports.allContractTypeFields; let allContractTypeFields = exports.allContractTypeFields;
delete exports.allContractTypeFields; delete exports.allContractTypeFields;
const expandedOccupancyTypes = new Set(); const expandedContractTypes = new Set();
function toggleContractTypeFields(clickEvent) { function toggleContractTypeFields(clickEvent) {
const toggleButtonElement = clickEvent.currentTarget; const toggleButtonElement = clickEvent.currentTarget;
const occupancyTypeElement = toggleButtonElement.closest('.container--occupancyType'); const contractTypeElement = toggleButtonElement.closest('.container--contractType');
const contractTypeId = Number.parseInt(occupancyTypeElement.dataset.contractTypeId ?? '', 10); const contractTypeId = Number.parseInt(contractTypeElement.dataset.contractTypeId ?? '', 10);
if (expandedOccupancyTypes.has(contractTypeId)) { if (expandedContractTypes.has(contractTypeId)) {
expandedOccupancyTypes.delete(contractTypeId); expandedContractTypes.delete(contractTypeId);
} }
else { else {
expandedOccupancyTypes.add(contractTypeId); expandedContractTypes.add(contractTypeId);
} }
// eslint-disable-next-line no-unsanitized/property // eslint-disable-next-line no-unsanitized/property
toggleButtonElement.innerHTML = expandedOccupancyTypes.has(contractTypeId) toggleButtonElement.innerHTML = expandedContractTypes.has(contractTypeId)
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>' ? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'; : '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>';
const panelBlockElements = occupancyTypeElement.querySelectorAll('.panel-block'); const panelBlockElements = contractTypeElement.querySelectorAll('.panel-block');
for (const panelBlockElement of panelBlockElements) { for (const panelBlockElement of panelBlockElements) {
panelBlockElement.classList.toggle('is-hidden'); panelBlockElement.classList.toggle('is-hidden');
} }
} }
function occupancyTypeResponseHandler(rawResponseJSON) { function contractTypeResponseHandler(rawResponseJSON) {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
occupancyTypes = responseJSON.occupancyTypes; contractTypes = responseJSON.contractTypes;
allContractTypeFields = responseJSON.allContractTypeFields; allContractTypeFields = responseJSON.allContractTypeFields;
renderOccupancyTypes(); renderContractTypes();
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: `Error Updating ${los.escapedAliases.Occupancy} Type`, title: `Error Updating Contract Type`,
message: responseJSON.errorMessage ?? '', message: responseJSON.errorMessage ?? '',
contextualColorName: 'danger' contextualColorName: 'danger'
}); });
} }
} }
function deleteOccupancyType(clickEvent) { function deleteContractType(clickEvent) {
const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.contractTypeId ?? '', 10); const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--contractType').dataset.contractTypeId ?? '', 10);
function doDelete() { function doDelete() {
cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteContractType`, { cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteContractType`, {
contractTypeId contractTypeId
}, occupancyTypeResponseHandler); }, contractTypeResponseHandler);
} }
bulmaJS.confirm({ bulmaJS.confirm({
title: `Delete ${los.escapedAliases.Occupancy} Type`, title: `Delete Contract Type`,
message: `Are you sure you want to delete this ${los.escapedAliases.occupancy} type?`, message: `Are you sure you want to delete this contract type?`,
contextualColorName: 'warning', contextualColorName: 'warning',
okButton: { okButton: {
text: `Yes, Delete ${los.escapedAliases.Occupancy} Type`, text: `Yes, Delete Contract Type`,
callbackFunction: doDelete callbackFunction: doDelete
} }
}); });
} }
function openEditOccupancyType(clickEvent) { function openEditContractType(clickEvent) {
const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.contractTypeId ?? '', 10); const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--contractType').dataset.contractTypeId ?? '', 10);
const occupancyType = occupancyTypes.find((currentOccupancyType) => contractTypeId === currentOccupancyType.contractTypeId); const contractType = contractTypes.find((currentContractType) => contractTypeId === currentContractType.contractTypeId);
let editCloseModalFunction; let editCloseModalFunction;
function doEdit(submitEvent) { function doEdit(submitEvent) {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateContractType`, submitEvent.currentTarget, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateContractType`, submitEvent.currentTarget, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
occupancyTypeResponseHandler(responseJSON); contractTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
editCloseModalFunction(); editCloseModalFunction();
} }
}); });
} }
cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyType', { cityssm.openHtmlModal('adminContractTypes-edit', {
onshow(modalElement) { onshow(modalElement) {
los.populateAliases(modalElement); los.populateAliases(modalElement);
modalElement.querySelector('#occupancyTypeEdit--contractTypeId').value = contractTypeId.toString(); modalElement.querySelector('#contractTypeEdit--contractTypeId').value = contractTypeId.toString();
modalElement.querySelector('#occupancyTypeEdit--occupancyType').value = occupancyType.occupancyType; modalElement.querySelector('#contractTypeEdit--contractType').value = contractType.contractType;
}, },
onshown(modalElement, closeModalFunction) { onshown(modalElement, closeModalFunction) {
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
modalElement.querySelector('#occupancyTypeEdit--occupancyType').focus(); modalElement.querySelector('#contractTypeEdit--contractType').focus();
modalElement.querySelector('form')?.addEventListener('submit', doEdit); modalElement.querySelector('form')?.addEventListener('submit', doEdit);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
}, },
@ -91,32 +91,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}); });
} }
function openAddOccupancyTypeField(clickEvent) { function openAddContractTypeField(clickEvent) {
const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.contractTypeId ?? '', 10); const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--contractType').dataset.contractTypeId ?? '', 10);
let addCloseModalFunction; let addCloseModalFunction;
function doAdd(submitEvent) { function doAdd(submitEvent) {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(`${los.urlPrefix}/admin/doAddContractTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/admin/doAddContractTypeField`, submitEvent.currentTarget, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
expandedOccupancyTypes.add(contractTypeId); expandedContractTypes.add(contractTypeId);
occupancyTypeResponseHandler(responseJSON); contractTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
addCloseModalFunction(); addCloseModalFunction();
openEditOccupancyTypeField(contractTypeId, responseJSON.contractTypeFieldId ?? 0); openEditContractTypeField(contractTypeId, responseJSON.contractTypeFieldId ?? 0);
} }
}); });
} }
cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyTypeField', { cityssm.openHtmlModal('adminContractTypes-addField', {
onshow(modalElement) { onshow(modalElement) {
los.populateAliases(modalElement); los.populateAliases(modalElement);
if (contractTypeId) { if (contractTypeId) {
; ;
modalElement.querySelector('#occupancyTypeFieldAdd--contractTypeId').value = contractTypeId.toString(); modalElement.querySelector('#contractTypeFieldAdd--contractTypeId').value = contractTypeId.toString();
} }
}, },
onshown(modalElement, closeModalFunction) { onshown(modalElement, closeModalFunction) {
addCloseModalFunction = closeModalFunction; addCloseModalFunction = closeModalFunction;
modalElement.querySelector('#occupancyTypeFieldAdd--occupancyTypeField').focus(); modalElement.querySelector('#contractTypeFieldAdd--contractTypeField').focus();
modalElement.querySelector('form')?.addEventListener('submit', doAdd); modalElement.querySelector('form')?.addEventListener('submit', doAdd);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
}, },
@ -125,29 +125,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}); });
} }
function moveOccupancyType(clickEvent) { function moveContractType(clickEvent) {
const buttonElement = clickEvent.currentTarget; const buttonElement = clickEvent.currentTarget;
const contractTypeId = clickEvent.currentTarget.closest('.container--occupancyType').dataset.contractTypeId; const contractTypeId = clickEvent.currentTarget.closest('.container--contractType').dataset.contractTypeId;
cityssm.postJSON(`${los.urlPrefix}/admin/${buttonElement.dataset.direction === 'up' cityssm.postJSON(`${los.urlPrefix}/admin/${buttonElement.dataset.direction === 'up'
? 'doMoveContractTypeUp' ? 'doMoveContractTypeUp'
: 'doMoveContractTypeDown'}`, { : 'doMoveContractTypeDown'}`, {
contractTypeId, contractTypeId,
moveToEnd: clickEvent.shiftKey ? '1' : '0' moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, occupancyTypeResponseHandler); }, contractTypeResponseHandler);
} }
function openEditOccupancyTypeField(contractTypeId, contractTypeFieldId) { function openEditContractTypeField(contractTypeId, contractTypeFieldId) {
let occupancyType; let contractType;
if (contractTypeId) { if (contractTypeId) {
occupancyType = occupancyTypes.find((currentOccupancyType) => currentOccupancyType.contractTypeId === contractTypeId); contractType = contractTypes.find((currentContractType) => currentContractType.contractTypeId === contractTypeId);
} }
const occupancyTypeField = (occupancyType const contractTypeField = (contractType
? occupancyType.ContractTypeFields ?? [] ? contractType.contractTypeFields ?? []
: allContractTypeFields).find((currentOccupancyTypeField) => currentOccupancyTypeField.contractTypeFieldId === contractTypeFieldId); : allContractTypeFields).find((currentContractTypeField) => currentContractTypeField.contractTypeFieldId === contractTypeFieldId);
let fieldTypeElement; let fieldTypeElement;
let minLengthInputElement; let minLengthInputElement;
let maxLengthInputElement; let maxLengthInputElement;
let patternElement; let patternElement;
let occupancyTypeFieldValuesElement; let fieldValuesElement;
let editCloseModalFunction; let editCloseModalFunction;
function updateMaximumLengthMin() { function updateMaximumLengthMin() {
maxLengthInputElement.min = minLengthInputElement.value; maxLengthInputElement.min = minLengthInputElement.value;
@ -158,21 +158,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
minLengthInputElement.disabled = true; minLengthInputElement.disabled = true;
maxLengthInputElement.disabled = true; maxLengthInputElement.disabled = true;
patternElement.disabled = true; patternElement.disabled = true;
occupancyTypeFieldValuesElement.disabled = true; fieldValuesElement.disabled = true;
break; break;
} }
case 'select': { case 'select': {
minLengthInputElement.disabled = true; minLengthInputElement.disabled = true;
maxLengthInputElement.disabled = true; maxLengthInputElement.disabled = true;
patternElement.disabled = true; patternElement.disabled = true;
occupancyTypeFieldValuesElement.disabled = false; fieldValuesElement.disabled = false;
break; break;
} }
default: { default: {
minLengthInputElement.disabled = false; minLengthInputElement.disabled = false;
maxLengthInputElement.disabled = false; maxLengthInputElement.disabled = false;
patternElement.disabled = false; patternElement.disabled = false;
occupancyTypeFieldValuesElement.disabled = true; fieldValuesElement.disabled = true;
break; break;
} }
} }
@ -181,7 +181,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateContractTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateContractTypeField`, submitEvent.currentTarget, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
occupancyTypeResponseHandler(responseJSON); contractTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
editCloseModalFunction(); editCloseModalFunction();
} }
@ -192,7 +192,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
contractTypeFieldId contractTypeFieldId
}, (rawResponseJSON) => { }, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
occupancyTypeResponseHandler(responseJSON); contractTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
editCloseModalFunction(); editCloseModalFunction();
} }
@ -209,28 +209,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}); });
} }
cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyTypeField', { cityssm.openHtmlModal('adminContractTypes-editField', {
onshow: (modalElement) => { onshow(modalElement) {
los.populateAliases(modalElement); los.populateAliases(modalElement);
modalElement.querySelector('#occupancyTypeFieldEdit--contractTypeFieldId').value = occupancyTypeField.contractTypeFieldId.toString(); modalElement.querySelector('#contractTypeFieldEdit--contractTypeFieldId').value = contractTypeField.contractTypeFieldId.toString();
modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeField').value = occupancyTypeField.occupancyTypeField ?? ''; modalElement.querySelector('#contractTypeFieldEdit--contractTypeField').value = contractTypeField.contractTypeField ?? '';
modalElement.querySelector('#occupancyTypeFieldEdit--isRequired').value = occupancyTypeField.isRequired ?? false ? '1' : '0'; modalElement.querySelector('#contractTypeFieldEdit--isRequired').value = contractTypeField.isRequired ?? false ? '1' : '0';
fieldTypeElement = modalElement.querySelector('#occupancyTypeFieldEdit--fieldType'); fieldTypeElement = modalElement.querySelector('#contractTypeFieldEdit--fieldType');
fieldTypeElement.value = occupancyTypeField.fieldType; fieldTypeElement.value = contractTypeField.fieldType;
minLengthInputElement = modalElement.querySelector('#occupancyTypeFieldEdit--minLength'); minLengthInputElement = modalElement.querySelector('#contractTypeFieldEdit--minLength');
minLengthInputElement.value = minLengthInputElement.value =
occupancyTypeField.minLength?.toString() ?? ''; contractTypeField.minLength?.toString() ?? '';
maxLengthInputElement = modalElement.querySelector('#occupancyTypeFieldEdit--maxLength'); maxLengthInputElement = modalElement.querySelector('#contractTypeFieldEdit--maxLength');
maxLengthInputElement.value = maxLengthInputElement.value =
occupancyTypeField.maxLength?.toString() ?? ''; contractTypeField.maxLength?.toString() ?? '';
patternElement = modalElement.querySelector('#occupancyTypeFieldEdit--pattern'); patternElement = modalElement.querySelector('#contractTypeFieldEdit--pattern');
patternElement.value = occupancyTypeField.pattern ?? ''; patternElement.value = contractTypeField.pattern ?? '';
occupancyTypeFieldValuesElement = modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeFieldValues'); fieldValuesElement = modalElement.querySelector('#contractTypeFieldEdit--fieldValues');
occupancyTypeFieldValuesElement.value = fieldValuesElement.value = contractTypeField.fieldValues ?? '';
occupancyTypeField.occupancyTypeFieldValues ?? '';
toggleInputFields(); toggleInputFields();
}, },
onshown: (modalElement, closeModalFunction) => { onshown(modalElement, closeModalFunction) {
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
bulmaJS.init(modalElement); bulmaJS.init(modalElement);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -240,77 +239,78 @@ Object.defineProperty(exports, "__esModule", { value: true });
updateMaximumLengthMin(); updateMaximumLengthMin();
fieldTypeElement.addEventListener('change', toggleInputFields); fieldTypeElement.addEventListener('change', toggleInputFields);
modalElement modalElement
.querySelector('#button--deleteOccupancyTypeField') .querySelector('#button--deleteContractTypeField')
?.addEventListener('click', confirmDoDelete); ?.addEventListener('click', confirmDoDelete);
}, },
onremoved: () => { onremoved() {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
cityssm.disableNavBlocker(); cityssm.disableNavBlocker();
} }
}); });
} }
function openEditOccupancyTypeFieldByClick(clickEvent) { function openEditContractTypeFieldByClick(clickEvent) {
clickEvent.preventDefault(); clickEvent.preventDefault();
const contractTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyTypeField').dataset.contractTypeFieldId ?? '', 10); const contractTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest('.container--contractTypeField').dataset.contractTypeFieldId ?? '', 10);
const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.contractTypeId ?? '', 10); const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--contractType').dataset.contractTypeId ?? '', 10);
openEditOccupancyTypeField(contractTypeId, contractTypeFieldId); openEditContractTypeField(contractTypeId, contractTypeFieldId);
} }
function moveOccupancyTypeField(clickEvent) { function moveContractTypeField(clickEvent) {
const buttonElement = clickEvent.currentTarget; const buttonElement = clickEvent.currentTarget;
const contractTypeFieldId = clickEvent.currentTarget.closest('.container--occupancyTypeField').dataset.contractTypeFieldId; const contractTypeFieldId = clickEvent.currentTarget.closest('.container--contractTypeField').dataset.contractTypeFieldId;
cityssm.postJSON(`${los.urlPrefix}/admin/${buttonElement.dataset.direction === 'up' cityssm.postJSON(`${los.urlPrefix}/admin/${buttonElement.dataset.direction === 'up'
? 'doMoveContractTypeFieldUp' ? // eslint-disable-next-line no-secrets/no-secrets
'doMoveContractTypeFieldUp'
: // eslint-disable-next-line no-secrets/no-secrets : // eslint-disable-next-line no-secrets/no-secrets
'doMoveContractTypeFieldDown'}`, { 'doMoveContractTypeFieldDown'}`, {
contractTypeFieldId, contractTypeFieldId,
moveToEnd: clickEvent.shiftKey ? '1' : '0' moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, occupancyTypeResponseHandler); }, contractTypeResponseHandler);
} }
function renderContractTypeFields(panelElement, contractTypeId, ContractTypeFields) { function renderContractTypeFields(panelElement, contractTypeId, contractTypeFields) {
if (ContractTypeFields.length === 0) { if (contractTypeFields.length === 0) {
// eslint-disable-next-line no-unsanitized/method // eslint-disable-next-line no-unsanitized/method
panelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block ${!contractTypeId || expandedOccupancyTypes.has(contractTypeId) panelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block ${!contractTypeId || expandedContractTypes.has(contractTypeId)
? '' ? ''
: ' is-hidden'}"> : ' is-hidden'}">
<div class="message is-info"><p class="message-body">There are no additional fields.</p></div> <div class="message is-info"><p class="message-body">There are no additional fields.</p></div>
</div>`); </div>`);
} }
else { else {
for (const occupancyTypeField of ContractTypeFields) { for (const contractTypeField of contractTypeFields) {
const panelBlockElement = document.createElement('div'); const panelBlockElement = document.createElement('div');
panelBlockElement.className = panelBlockElement.className =
'panel-block is-block container--occupancyTypeField'; 'panel-block is-block container--contractTypeField';
if (contractTypeId && !expandedOccupancyTypes.has(contractTypeId)) { if (contractTypeId && !expandedContractTypes.has(contractTypeId)) {
panelBlockElement.classList.add('is-hidden'); panelBlockElement.classList.add('is-hidden');
} }
panelBlockElement.dataset.contractTypeFieldId = panelBlockElement.dataset.contractTypeFieldId =
occupancyTypeField.contractTypeFieldId.toString(); contractTypeField.contractTypeFieldId.toString();
// eslint-disable-next-line no-unsanitized/property // eslint-disable-next-line no-unsanitized/property
panelBlockElement.innerHTML = `<div class="level is-mobile"> panelBlockElement.innerHTML = `<div class="level is-mobile">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item">
<a class="has-text-weight-bold button--editOccupancyTypeField" href="#"> <a class="has-text-weight-bold button--editContractTypeField" href="#">
${cityssm.escapeHTML(occupancyTypeField.occupancyTypeField ?? '')} ${cityssm.escapeHTML(contractTypeField.contractTypeField ?? '')}
</a> </a>
</div> </div>
</div> </div>
<div class="level-right"> <div class="level-right">
<div class="level-item"> <div class="level-item">
${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeFieldUp', 'button--moveOccupancyTypeFieldDown')} ${los.getMoveUpDownButtonFieldHTML('button--moveContractTypeFieldUp', 'button--moveContractTypeFieldDown')}
</div> </div>
</div> </div>
</div>`; </div>`;
panelBlockElement panelBlockElement
.querySelector('.button--editOccupancyTypeField') .querySelector('.button--editContractTypeField')
?.addEventListener('click', openEditOccupancyTypeFieldByClick); ?.addEventListener('click', openEditContractTypeFieldByClick);
panelBlockElement.querySelector('.button--moveOccupancyTypeFieldUp').addEventListener('click', moveOccupancyTypeField); panelBlockElement.querySelector('.button--moveContractTypeFieldUp').addEventListener('click', moveContractTypeField);
panelBlockElement.querySelector('.button--moveOccupancyTypeFieldDown').addEventListener('click', moveOccupancyTypeField); panelBlockElement.querySelector('.button--moveContractTypeFieldDown').addEventListener('click', moveContractTypeField);
panelElement.append(panelBlockElement); panelElement.append(panelBlockElement);
} }
} }
} }
function openAddOccupancyTypePrint(clickEvent) { function openAddContractTypePrint(clickEvent) {
const contractTypeId = clickEvent.currentTarget.closest('.container--occupancyTypePrintList').dataset.contractTypeId ?? ''; const contractTypeId = clickEvent.currentTarget.closest('.container--contractTypePrintList').dataset.contractTypeId ?? '';
let closeAddModalFunction; let closeAddModalFunction;
function doAdd(formEvent) { function doAdd(formEvent) {
formEvent.preventDefault(); formEvent.preventDefault();
@ -319,15 +319,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
if (responseJSON.success) { if (responseJSON.success) {
closeAddModalFunction(); closeAddModalFunction();
} }
occupancyTypeResponseHandler(responseJSON); contractTypeResponseHandler(responseJSON);
}); });
} }
cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyTypePrint', { cityssm.openHtmlModal('adminContractTypes-addPrint', {
onshow(modalElement) { onshow(modalElement) {
los.populateAliases(modalElement); los.populateAliases(modalElement);
modalElement.querySelector('#occupancyTypePrintAdd--contractTypeId').value = contractTypeId; modalElement.querySelector('#contractTypePrintAdd--contractTypeId').value = contractTypeId;
const printSelectElement = modalElement.querySelector('#occupancyTypePrintAdd--printEJS'); const printSelectElement = modalElement.querySelector('#contractTypePrintAdd--printEJS');
for (const [printEJS, printTitle] of Object.entries(exports.occupancyTypePrintTitles)) { for (const [printEJS, printTitle] of Object.entries(exports.contractTypePrintTitles)) {
const optionElement = document.createElement('option'); const optionElement = document.createElement('option');
optionElement.value = printEJS; optionElement.value = printEJS;
optionElement.textContent = printTitle; optionElement.textContent = printTitle;
@ -340,29 +340,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}); });
} }
function moveOccupancyTypePrint(clickEvent) { function moveContractTypePrint(clickEvent) {
const buttonElement = clickEvent.currentTarget; const buttonElement = clickEvent.currentTarget;
const printEJS = buttonElement.closest('.container--occupancyTypePrint').dataset.printEJS; const printEJS = buttonElement.closest('.container--contractTypePrint').dataset.printEJS;
const contractTypeId = buttonElement.closest('.container--occupancyTypePrintList').dataset.contractTypeId; const contractTypeId = buttonElement.closest('.container--contractTypePrintList').dataset.contractTypeId;
cityssm.postJSON(`${los.urlPrefix}/admin/${buttonElement.dataset.direction === 'up' cityssm.postJSON(`${los.urlPrefix}/admin/${buttonElement.dataset.direction === 'up'
? // eslint-disable-next-line no-secrets/no-secrets ? 'doMoveContractTypePrintUp'
'doMoveContractTypePrintUp' : 'doMoveContractTypePrintDown'}`, {
: // eslint-disable-next-line no-secrets/no-secrets
'doMoveContractTypePrintDown'}`, {
contractTypeId, contractTypeId,
printEJS, printEJS,
moveToEnd: clickEvent.shiftKey ? '1' : '0' moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, occupancyTypeResponseHandler); }, contractTypeResponseHandler);
} }
function deleteOccupancyTypePrint(clickEvent) { function deleteContractTypePrint(clickEvent) {
clickEvent.preventDefault(); clickEvent.preventDefault();
const printEJS = clickEvent.currentTarget.closest('.container--occupancyTypePrint').dataset.printEJS; const printEJS = clickEvent.currentTarget.closest('.container--contractTypePrint').dataset.printEJS;
const contractTypeId = clickEvent.currentTarget.closest('.container--occupancyTypePrintList').dataset.contractTypeId; const contractTypeId = clickEvent.currentTarget.closest('.container--contractTypePrintList').dataset.contractTypeId;
function doDelete() { function doDelete() {
cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteContractTypePrint`, { cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteContractTypePrint`, {
contractTypeId, contractTypeId,
printEJS printEJS
}, occupancyTypeResponseHandler); }, contractTypeResponseHandler);
} }
bulmaJS.confirm({ bulmaJS.confirm({
title: 'Delete Print', title: 'Delete Print',
@ -374,8 +372,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}); });
} }
function renderContractTypePrints(panelElement, contractTypeId, ContractTypePrints) { function renderContractTypePrints(panelElement, contractTypeId, contractTypePrints) {
if (ContractTypePrints.length === 0) { if (contractTypePrints.length === 0) {
panelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block"> panelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block">
<div class="message is-info"> <div class="message is-info">
<p class="message-body">There are no prints associated with this record.</p> <p class="message-body">There are no prints associated with this record.</p>
@ -383,14 +381,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
</div>`); </div>`);
} }
else { else {
for (const printEJS of ContractTypePrints) { for (const printEJS of contractTypePrints) {
const panelBlockElement = document.createElement('div'); const panelBlockElement = document.createElement('div');
panelBlockElement.className = panelBlockElement.className =
'panel-block is-block container--occupancyTypePrint'; 'panel-block is-block container--contractTypePrint';
panelBlockElement.dataset.printEJS = printEJS; panelBlockElement.dataset.printEJS = printEJS;
const printTitle = printEJS === '*' const printTitle = printEJS === '*'
? '(All Available Prints)' ? '(All Available Prints)'
: exports.occupancyTypePrintTitles[printEJS]; : exports.contractTypePrintTitles[printEJS];
let printIconClass = 'fa-star'; let printIconClass = 'fa-star';
if (printEJS.startsWith('pdf/')) { if (printEJS.startsWith('pdf/')) {
printIconClass = 'fa-file-pdf'; printIconClass = 'fa-file-pdf';
@ -410,37 +408,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
</div> </div>
<div class="level-right"> <div class="level-right">
<div class="level-item"> <div class="level-item">
${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypePrintUp', 'button--moveOccupancyTypePrintDown')} ${los.getMoveUpDownButtonFieldHTML('button--moveContractTypePrintUp', 'button--moveContractTypePrintDown')}
</div> </div>
<div class="level-item"> <div class="level-item">
<button class="button is-small is-danger button--deleteOccupancyTypePrint" data-tooltip="Delete" type="button" aria-label="Delete Print"> <button class="button is-small is-danger button--deleteContractTypePrint" data-tooltip="Delete" type="button" aria-label="Delete Print">
<i class="fas fa-trash" aria-hidden="true"></i> <i class="fas fa-trash" aria-hidden="true"></i>
</button> </button>
</div> </div>
</div> </div>
</div>`; </div>`;
panelBlockElement.querySelector('.button--moveOccupancyTypePrintUp').addEventListener('click', moveOccupancyTypePrint); panelBlockElement.querySelector('.button--moveContractTypePrintUp').addEventListener('click', moveContractTypePrint);
panelBlockElement.querySelector('.button--moveOccupancyTypePrintDown').addEventListener('click', moveOccupancyTypePrint); panelBlockElement.querySelector('.button--moveContractTypePrintDown').addEventListener('click', moveContractTypePrint);
panelBlockElement panelBlockElement
.querySelector('.button--deleteOccupancyTypePrint') .querySelector('.button--deleteContractTypePrint')
?.addEventListener('click', deleteOccupancyTypePrint); ?.addEventListener('click', deleteContractTypePrint);
panelElement.append(panelBlockElement); panelElement.append(panelBlockElement);
} }
} }
} }
function renderOccupancyTypes() { function renderContractTypes() {
// eslint-disable-next-line no-unsanitized/property contractTypesContainerElement.innerHTML = `<div class="panel container--contractType" id="container--allContractTypeFields" data-contract-type-id="">
occupancyTypesContainerElement.innerHTML = `<div class="panel container--occupancyType" id="container--allContractTypeFields" data-occupancy-type-id="">
<div class="panel-heading"> <div class="panel-heading">
<div class="level is-mobile"> <div class="level is-mobile">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item">
<h2 class="title is-4">(All ${los.escapedAliases.Occupancy} Types)</h2> <h2 class="title is-4">(All Contract Types)</h2>
</div> </div>
</div> </div>
<div class="level-right"> <div class="level-right">
<div class="level-item"> <div class="level-item">
<button class="button is-success is-small button--addOccupancyTypeField" type="button"> <button class="button is-success is-small button--addContractTypeField" type="button">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Field</span> <span>Add Field</span>
</button> </button>
@ -449,104 +446,102 @@ Object.defineProperty(exports, "__esModule", { value: true });
</div> </div>
</div> </div>
</div>`; </div>`;
ContractTypePrintsContainerElement.innerHTML = ''; contractTypePrintsContainerElement.innerHTML = '';
renderContractTypeFields(occupancyTypesContainerElement.querySelector('#container--allContractTypeFields'), undefined, allContractTypeFields); renderContractTypeFields(contractTypesContainerElement.querySelector('#container--allContractTypeFields'), undefined, allContractTypeFields);
occupancyTypesContainerElement contractTypesContainerElement
.querySelector('.button--addOccupancyTypeField') .querySelector('.button--addContractTypeField')
?.addEventListener('click', openAddOccupancyTypeField); ?.addEventListener('click', openAddContractTypeField);
if (occupancyTypes.length === 0) { if (contractTypes.length === 0) {
// eslint-disable-next-line no-unsanitized/method contractTypesContainerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning>
occupancyTypesContainerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning> <p class="message-body">There are no active contract types.</p>
<p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p>
</div>`); </div>`);
// eslint-disable-next-line no-unsanitized/method contractTypePrintsContainerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning>
ContractTypePrintsContainerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning> <p class="message-body">There are no active contract types.</p>
<p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p>
</div>`); </div>`);
return; return;
} }
for (const occupancyType of occupancyTypes) { for (const contractType of contractTypes) {
/* /*
* Types and Fields * Types and Fields
*/ */
const occupancyTypeContainer = document.createElement('div'); const contractTypeContainer = document.createElement('div');
occupancyTypeContainer.className = 'panel container--occupancyType'; contractTypeContainer.className = 'panel container--contractType';
occupancyTypeContainer.dataset.contractTypeId = contractTypeContainer.dataset.contractTypeId =
occupancyType.contractTypeId.toString(); contractType.contractTypeId.toString();
// eslint-disable-next-line no-unsanitized/property // eslint-disable-next-line no-unsanitized/property
occupancyTypeContainer.innerHTML = `<div class="panel-heading"> contractTypeContainer.innerHTML = `<div class="panel-heading">
<div class="level is-mobile"> <div class="level is-mobile">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item">
<button class="button is-small button--toggleContractTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields"> <button class="button is-small button--toggleContractTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">
${expandedOccupancyTypes.has(occupancyType.contractTypeId) ${expandedContractTypes.has(contractType.contractTypeId)
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>' ? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'} : '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'}
</button> </button>
</div> </div>
<div class="level-item"> <div class="level-item">
<h2 class="title is-4">${cityssm.escapeHTML(occupancyType.occupancyType)}</h2> <h2 class="title is-4">${cityssm.escapeHTML(contractType.contractType)}</h2>
</div> </div>
</div> </div>
<div class="level-right"> <div class="level-right">
<div class="level-item"> <div class="level-item">
<button class="button is-danger is-small button--deleteOccupancyType" type="button"> <button class="button is-danger is-small button--deleteContractType" type="button">
<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>
<span>Delete</span> <span>Delete</span>
</button> </button>
</div> </div>
<div class="level-item"> <div class="level-item">
<button class="button is-primary is-small button--editOccupancyType" type="button"> <button class="button is-primary is-small button--editContractType" type="button">
<span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>
<span>Edit ${los.escapedAliases.Occupancy} Type</span> <span>Edit Contract Type</span>
</button> </button>
</div> </div>
<div class="level-item"> <div class="level-item">
<button class="button is-success is-small button--addOccupancyTypeField" type="button"> <button class="button is-success is-small button--addContractTypeField" type="button">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Field</span> <span>Add Field</span>
</button> </button>
</div> </div>
<div class="level-item"> <div class="level-item">
${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeUp', 'button--moveOccupancyTypeDown')} ${los.getMoveUpDownButtonFieldHTML('button--moveContractTypeUp', 'button--moveContractTypeDown')}
</div> </div>
</div> </div>
</div> </div>
</div>`; </div>`;
renderContractTypeFields(occupancyTypeContainer, occupancyType.contractTypeId, occupancyType.ContractTypeFields ?? []); renderContractTypeFields(contractTypeContainer, contractType.contractTypeId, contractType.contractTypeFields ?? []);
occupancyTypeContainer contractTypeContainer
.querySelector('.button--toggleContractTypeFields') .querySelector('.button--toggleContractTypeFields')
?.addEventListener('click', toggleContractTypeFields); ?.addEventListener('click', toggleContractTypeFields);
occupancyTypeContainer contractTypeContainer
.querySelector('.button--deleteOccupancyType') .querySelector('.button--deleteContractType')
?.addEventListener('click', deleteOccupancyType); ?.addEventListener('click', deleteContractType);
occupancyTypeContainer contractTypeContainer
.querySelector('.button--editOccupancyType') .querySelector('.button--editContractType')
?.addEventListener('click', openEditOccupancyType); ?.addEventListener('click', openEditContractType);
occupancyTypeContainer contractTypeContainer
.querySelector('.button--addOccupancyTypeField') .querySelector('.button--addContractTypeField')
?.addEventListener('click', openAddOccupancyTypeField); ?.addEventListener('click', openAddContractTypeField);
occupancyTypeContainer.querySelector('.button--moveOccupancyTypeUp').addEventListener('click', moveOccupancyType); contractTypeContainer.querySelector('.button--moveContractTypeUp').addEventListener('click', moveContractType);
occupancyTypeContainer.querySelector('.button--moveOccupancyTypeDown').addEventListener('click', moveOccupancyType); contractTypeContainer.querySelector('.button--moveContractTypeDown').addEventListener('click', moveContractType);
occupancyTypesContainerElement.append(occupancyTypeContainer); contractTypesContainerElement.append(contractTypeContainer);
/* /*
* Prints * Prints
*/ */
const occupancyTypePrintContainer = document.createElement('div'); const contractTypePrintContainer = document.createElement('div');
occupancyTypePrintContainer.className = contractTypePrintContainer.className =
'panel container--occupancyTypePrintList'; 'panel container--contractTypePrintList';
occupancyTypePrintContainer.dataset.contractTypeId = contractTypePrintContainer.dataset.contractTypeId =
occupancyType.contractTypeId.toString(); contractType.contractTypeId.toString();
occupancyTypePrintContainer.innerHTML = `<div class="panel-heading"> contractTypePrintContainer.innerHTML = `<div class="panel-heading">
<div class="level is-mobile"> <div class="level is-mobile">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item">
<h2 class="title is-4">${cityssm.escapeHTML(occupancyType.occupancyType)}</h2> <h2 class="title is-4">${cityssm.escapeHTML(contractType.contractType)}</h2>
</div> </div>
</div> </div>
<div class="level-right"> <div class="level-right">
<div class="level-item"> <div class="level-item">
<button class="button is-success is-small button--addOccupancyTypePrint" type="button"> <button class="button is-success is-small button--addContractTypePrint" type="button">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Print</span> <span>Add Print</span>
</button> </button>
@ -554,15 +549,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
</div> </div>
</div> </div>
</div>`; </div>`;
renderContractTypePrints(occupancyTypePrintContainer, occupancyType.contractTypeId, occupancyType.ContractTypePrints ?? []); renderContractTypePrints(contractTypePrintContainer, contractType.contractTypeId, contractType.contractTypePrints ?? []);
occupancyTypePrintContainer contractTypePrintContainer
.querySelector('.button--addOccupancyTypePrint') .querySelector('.button--addContractTypePrint')
?.addEventListener('click', openAddOccupancyTypePrint); ?.addEventListener('click', openAddContractTypePrint);
ContractTypePrintsContainerElement.append(occupancyTypePrintContainer); contractTypePrintsContainerElement.append(contractTypePrintContainer);
} }
} }
document document
.querySelector('#button--addOccupancyType') .querySelector('#button--addContractType')
?.addEventListener('click', () => { ?.addEventListener('click', () => {
let addCloseModalFunction; let addCloseModalFunction;
function doAdd(submitEvent) { function doAdd(submitEvent) {
@ -571,25 +566,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
addCloseModalFunction(); addCloseModalFunction();
occupancyTypes = responseJSON.occupancyTypes; contractTypes = responseJSON.contractTypes;
renderOccupancyTypes(); renderContractTypes();
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: `Error Adding ${los.escapedAliases.Occupancy} Type`, title: `Error Adding Contract Type`,
message: responseJSON.errorMessage ?? '', message: responseJSON.errorMessage ?? '',
contextualColorName: 'danger' contextualColorName: 'danger'
}); });
} }
}); });
} }
cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyType', { cityssm.openHtmlModal('adminContractTypes-add', {
onshow(modalElement) { onshow(modalElement) {
los.populateAliases(modalElement); los.populateAliases(modalElement);
}, },
onshown(modalElement, closeModalFunction) { onshown(modalElement, closeModalFunction) {
addCloseModalFunction = closeModalFunction; addCloseModalFunction = closeModalFunction;
modalElement.querySelector('#occupancyTypeAdd--occupancyType').focus(); modalElement.querySelector('#contractTypeAdd--contractType').focus();
modalElement.querySelector('form')?.addEventListener('submit', doAdd); modalElement.querySelector('form')?.addEventListener('submit', doAdd);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
}, },
@ -598,5 +593,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}); });
}); });
renderOccupancyTypes(); renderContractTypes();
})(); })();

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.sunrise;
const workOrderNumberCircleElements = document.querySelectorAll('.fa-circle[data-work-order-number]'); const workOrderNumberCircleElements = document.querySelectorAll('.fa-circle[data-work-order-number]');
for (const workOrderNumberCircleElement of workOrderNumberCircleElements) { for (const workOrderNumberCircleElement of workOrderNumberCircleElements) {
workOrderNumberCircleElement.style.color = los.getRandomColor(workOrderNumberCircleElement.dataset.workOrderNumber ?? ''); workOrderNumberCircleElement.style.color = los.getRandomColor(workOrderNumberCircleElement.dataset.workOrderNumber ?? '');

View File

@ -2,7 +2,7 @@ import type { LOS } from '../../types/globalTypes.js'
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as LOS const los = exports.sunrise as LOS
const workOrderNumberCircleElements: NodeListOf<HTMLElement> = const workOrderNumberCircleElements: NodeListOf<HTMLElement> =
document.querySelectorAll('.fa-circle[data-work-order-number]') document.querySelectorAll('.fa-circle[data-work-order-number]')

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.sunrise;
function doBackup() { function doBackup() {
cityssm.postJSON(`${los.urlPrefix}/admin/doBackupDatabase`, {}, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/admin/doBackupDatabase`, {}, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;

View File

@ -8,7 +8,7 @@ declare const bulmaJS: BulmaJS
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as LOS const los = exports.sunrise as LOS
function doBackup(): void { function doBackup(): void {
cityssm.postJSON( cityssm.postJSON(

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.sunrise;
const feeCategoriesContainerElement = document.querySelector('#container--feeCategories'); const feeCategoriesContainerElement = document.querySelector('#container--feeCategories');
let feeCategories = exports.feeCategories; let feeCategories = exports.feeCategories;
delete exports.feeCategories; delete exports.feeCategories;
@ -108,7 +108,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
? '' ? ''
: ` <span class="tag has-tooltip-bottom" data-tooltip="${los.escapedAliases.Occupancy} Type Filter"> : ` <span class="tag has-tooltip-bottom" data-tooltip="${los.escapedAliases.Occupancy} Type Filter">
<span class="icon is-small"><i class="fas fa-filter" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-filter" aria-hidden="true"></i></span>
<span>${cityssm.escapeHTML(fee.occupancyType ?? '')}</span> <span>${cityssm.escapeHTML(fee.contractType ?? '')}</span>
</span>`} </span>`}
${(fee.burialSiteTypeId ?? -1) === -1 ${(fee.burialSiteTypeId ?? -1) === -1
? '' ? ''
@ -344,12 +344,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
feeCategoryElement.append(optionElement); feeCategoryElement.append(optionElement);
} }
const occupancyTypeElement = modalElement.querySelector('#feeAdd--contractTypeId'); const contractTypeElement = modalElement.querySelector('#feeAdd--contractTypeId');
for (const occupancyType of exports.occupancyTypes) { for (const contractType of exports.contractTypes) {
const optionElement = document.createElement('option'); const optionElement = document.createElement('option');
optionElement.value = occupancyType.contractTypeId.toString(); optionElement.value = contractType.contractTypeId.toString();
optionElement.textContent = occupancyType.occupancyType; optionElement.textContent = contractType.contractType;
occupancyTypeElement.append(optionElement); contractTypeElement.append(optionElement);
} }
const lotTypeElement = modalElement.querySelector('#feeAdd--burialSiteTypeId'); const lotTypeElement = modalElement.querySelector('#feeAdd--burialSiteTypeId');
for (const lotType of exports.lotTypes) { for (const lotType of exports.lotTypes) {
@ -566,15 +566,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
modalElement.querySelector('#feeEdit--feeName').value = fee.feeName ?? ''; modalElement.querySelector('#feeEdit--feeName').value = fee.feeName ?? '';
modalElement.querySelector('#feeEdit--feeAccount').value = fee.feeAccount ?? ''; modalElement.querySelector('#feeEdit--feeAccount').value = fee.feeAccount ?? '';
modalElement.querySelector('#feeEdit--feeDescription').value = fee.feeDescription ?? ''; modalElement.querySelector('#feeEdit--feeDescription').value = fee.feeDescription ?? '';
const occupancyTypeElement = modalElement.querySelector('#feeEdit--contractTypeId'); const contractTypeElement = modalElement.querySelector('#feeEdit--contractTypeId');
for (const occupancyType of exports.occupancyTypes) { for (const contractType of exports.contractTypes) {
const optionElement = document.createElement('option'); const optionElement = document.createElement('option');
optionElement.value = occupancyType.contractTypeId.toString(); optionElement.value = contractType.contractTypeId.toString();
optionElement.textContent = occupancyType.occupancyType; optionElement.textContent = contractType.contractType;
if (occupancyType.contractTypeId === fee.contractTypeId) { if (contractType.contractTypeId === fee.contractTypeId) {
optionElement.selected = true; optionElement.selected = true;
} }
occupancyTypeElement.append(optionElement); contractTypeElement.append(optionElement);
} }
const lotTypeElement = modalElement.querySelector('#feeEdit--burialSiteTypeId'); const lotTypeElement = modalElement.querySelector('#feeEdit--burialSiteTypeId');
for (const lotType of exports.lotTypes) { for (const lotType of exports.lotTypes) {

Some files were not shown because too many files have changed in this diff Show More