pull/3/head
Dan Gowans 2025-03-24 10:52:36 -04:00
parent 669d942c0d
commit 4af21f4261
12 changed files with 272 additions and 245 deletions

4
app.js
View File

@ -1,5 +1,5 @@
import path from 'node:path'; import path from 'node:path';
import * as dateTimeFns from '@cityssm/utils-datetime'; import * as dateTimeFunctions from '@cityssm/utils-datetime';
import compression from 'compression'; import compression from 'compression';
import cookieParser from 'cookie-parser'; import cookieParser from 'cookie-parser';
import csurf from 'csurf'; import csurf from 'csurf';
@ -129,7 +129,7 @@ app.use((request, response, next) => {
response.locals.csrfToken = request.csrfToken(); response.locals.csrfToken = request.csrfToken();
response.locals.configFunctions = configFunctions; response.locals.configFunctions = configFunctions;
response.locals.printFunctions = printFunctions; response.locals.printFunctions = printFunctions;
response.locals.dateTimeFunctions = dateTimeFns; response.locals.dateTimeFunctions = dateTimeFunctions;
response.locals.urlPrefix = configFunctions.getConfigProperty('reverseProxy.urlPrefix'); response.locals.urlPrefix = configFunctions.getConfigProperty('reverseProxy.urlPrefix');
next(); next();
}); });

4
app.ts
View File

@ -1,6 +1,6 @@
import path from 'node:path' import path from 'node:path'
import * as dateTimeFns from '@cityssm/utils-datetime' import * as dateTimeFunctions from '@cityssm/utils-datetime'
import compression from 'compression' import compression from 'compression'
import cookieParser from 'cookie-parser' import cookieParser from 'cookie-parser'
import csurf from 'csurf' import csurf from 'csurf'
@ -230,7 +230,7 @@ app.use((request, response, next) => {
response.locals.configFunctions = configFunctions response.locals.configFunctions = configFunctions
response.locals.printFunctions = printFunctions response.locals.printFunctions = printFunctions
response.locals.dateTimeFunctions = dateTimeFns response.locals.dateTimeFunctions = dateTimeFunctions
response.locals.urlPrefix = configFunctions.getConfigProperty( response.locals.urlPrefix = configFunctions.getConfigProperty(
'reverseProxy.urlPrefix' 'reverseProxy.urlPrefix'

View File

@ -42,7 +42,7 @@ function buildEventSummary(milestone) {
// eslint-disable-next-line @typescript-eslint/naming-convention // eslint-disable-next-line @typescript-eslint/naming-convention
function buildEventDescriptionHTML_occupancies(request, milestone) { function buildEventDescriptionHTML_occupancies(request, milestone) {
let descriptionHTML = ''; let descriptionHTML = '';
if (milestone.workOrderContracts.length > 0) { if ((milestone.workOrderContracts ?? []).length > 0) {
const urlRoot = getUrlRoot(request); const urlRoot = getUrlRoot(request);
descriptionHTML = `<h2> descriptionHTML = `<h2>
Related Contracts Related Contracts
@ -248,7 +248,7 @@ export default async function handler(request, response) {
const location = buildEventLocation(milestone); const location = buildEventLocation(milestone);
calendarEvent.location(location); calendarEvent.location(location);
// Set organizer / attendees // Set organizer / attendees
if (milestone.workOrderContracts.length > 0) { if ((milestone.workOrderContracts ?? []).length > 0) {
let organizerSet = false; let organizerSet = false;
for (const contract of milestone.workOrderContracts ?? []) { for (const contract of milestone.workOrderContracts ?? []) {
for (const interment of contract.contractInterments ?? []) { for (const interment of contract.contractInterments ?? []) {

View File

@ -75,7 +75,7 @@ function buildEventDescriptionHTML_occupancies(
): string { ): string {
let descriptionHTML = '' let descriptionHTML = ''
if (milestone.workOrderContracts!.length > 0) { if ((milestone.workOrderContracts ?? []).length > 0) {
const urlRoot = getUrlRoot(request) const urlRoot = getUrlRoot(request)
descriptionHTML = `<h2> descriptionHTML = `<h2>
@ -366,7 +366,7 @@ export default async function handler(
calendarEvent.location(location) calendarEvent.location(location)
// Set organizer / attendees // Set organizer / attendees
if (milestone.workOrderContracts!.length > 0) { if ((milestone.workOrderContracts ?? []).length > 0) {
let organizerSet = false let organizerSet = false
for (const contract of milestone.workOrderContracts ?? []) { for (const contract of milestone.workOrderContracts ?? []) {
for (const interment of contract.contractInterments ?? []) { for (const interment of contract.contractInterments ?? []) {

View File

@ -9,8 +9,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
const contractCommentId = Number.parseInt(clickEvent.currentTarget.closest('tr')?.dataset const contractCommentId = Number.parseInt(clickEvent.currentTarget.closest('tr')?.dataset
.contractCommentId ?? '', 10); .contractCommentId ?? '', 10);
const contractComment = contractComments.find((currentComment) => currentComment.contractCommentId === contractCommentId); const contractComment = contractComments.find((currentComment) => currentComment.contractCommentId === contractCommentId);
let editFormElement = undefined; let editFormElement;
let editCloseModalFunction = undefined; let editCloseModalFunction;
function editContractComment(submitEvent) { function editContractComment(submitEvent) {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(`${sunrise.urlPrefix}/contracts/doUpdateContractComment`, editFormElement, (rawResponseJSON) => { cityssm.postJSON(`${sunrise.urlPrefix}/contracts/doUpdateContractComment`, editFormElement, (rawResponseJSON) => {

View File

@ -29,8 +29,8 @@ declare const exports: Record<string, unknown>
(currentComment) => currentComment.contractCommentId === contractCommentId (currentComment) => currentComment.contractCommentId === contractCommentId
) as ContractComment ) as ContractComment
let editFormElement: HTMLFormElement | undefined = undefined let editFormElement: HTMLFormElement | undefined
let editCloseModalFunction: (() => void) | undefined = undefined let editCloseModalFunction: (() => void) | undefined
function editContractComment(submitEvent: SubmitEvent): void { function editContractComment(submitEvent: SubmitEvent): void {
submitEvent.preventDefault() submitEvent.preventDefault()

View File

@ -419,81 +419,88 @@ Object.defineProperty(exports, "__esModule", { value: true });
?.addEventListener('click', deleteMilestone); ?.addEventListener('click', deleteMilestone);
milestonesPanelElement.append(panelBlockElement); milestonesPanelElement.append(panelBlockElement);
} }
if (workOrderMilestones.length === 0) {
milestonesPanelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block">
<div class="message is-info">
<p class="message-body">There are no milestones on this work order.</p>
</div>
</div>`);
}
bulmaJS.init(milestonesPanelElement); bulmaJS.init(milestonesPanelElement);
} }
if (!isCreate) { if (!isCreate) {
workOrderMilestones = exports.workOrderMilestones; workOrderMilestones = exports.workOrderMilestones;
delete exports.workOrderMilestones; delete exports.workOrderMilestones;
renderMilestones(); renderMilestones();
document
.querySelector('#button--addMilestone')
?.addEventListener('click', () => {
let addFormElement;
let workOrderMilestoneDateStringElement;
let addCloseModalFunction;
function doAdd(submitEvent) {
if (submitEvent) {
submitEvent.preventDefault();
}
const currentDateString = cityssm.dateToString(new Date());
function _doAdd() {
cityssm.postJSON(`${sunrise.urlPrefix}/workOrders/doAddWorkOrderMilestone`, addFormElement, (rawResponseJSON) => {
const responseJSON = rawResponseJSON;
processMilestoneResponse(responseJSON);
if (responseJSON.success) {
addCloseModalFunction();
}
});
}
const milestoneDateString = workOrderMilestoneDateStringElement.value;
if (milestoneDateString !== '' &&
milestoneDateString < currentDateString) {
bulmaJS.confirm({
title: 'Milestone Date in the Past',
message: 'Are you sure you want to create a milestone with a date in the past?',
contextualColorName: 'warning',
okButton: {
text: 'Yes, Create a Past Milestone',
callbackFunction: _doAdd
}
});
}
else {
_doAdd();
}
}
cityssm.openHtmlModal('workOrder-addMilestone', {
onshow(modalElement) {
;
modalElement.querySelector('#milestoneAdd--workOrderId').value = workOrderId;
const milestoneTypeElement = modalElement.querySelector('#milestoneAdd--workOrderMilestoneTypeId');
for (const milestoneType of exports.workOrderMilestoneTypes) {
const optionElement = document.createElement('option');
optionElement.value =
milestoneType.workOrderMilestoneTypeId.toString();
optionElement.textContent = milestoneType.workOrderMilestoneType;
milestoneTypeElement.append(optionElement);
}
workOrderMilestoneDateStringElement = modalElement.querySelector('#milestoneAdd--workOrderMilestoneDateString');
workOrderMilestoneDateStringElement.valueAsDate = new Date();
},
onshown(modalElement, closeModalFunction) {
addCloseModalFunction = closeModalFunction;
bulmaJS.toggleHtmlClipped();
modalElement.querySelector('#milestoneAdd--workOrderMilestoneTypeId').focus();
addFormElement = modalElement.querySelector('form');
addFormElement.addEventListener('submit', doAdd);
const conflictingMilestonePanelElement = document.querySelector('#milestoneAdd--conflictingMilestonesPanel');
workOrderMilestoneDateStringElement.addEventListener('change', () => {
refreshConflictingMilestones(workOrderMilestoneDateStringElement.value, conflictingMilestonePanelElement);
});
refreshConflictingMilestones(workOrderMilestoneDateStringElement.value, conflictingMilestonePanelElement);
},
onremoved() {
bulmaJS.toggleHtmlClipped();
document.querySelector('#button--addMilestone').focus();
}
});
});
} }
document
.querySelector('#button--addMilestone')
?.addEventListener('click', () => {
let addFormElement;
let workOrderMilestoneDateStringElement;
let addCloseModalFunction;
function doAdd(submitEvent) {
if (submitEvent) {
submitEvent.preventDefault();
}
const currentDateString = cityssm.dateToString(new Date());
function _doAdd() {
cityssm.postJSON(`${sunrise.urlPrefix}/workOrders/doAddWorkOrderMilestone`, addFormElement, (rawResponseJSON) => {
const responseJSON = rawResponseJSON;
processMilestoneResponse(responseJSON);
if (responseJSON.success) {
addCloseModalFunction();
}
});
}
const milestoneDateString = workOrderMilestoneDateStringElement.value;
if (milestoneDateString !== '' &&
milestoneDateString < currentDateString) {
bulmaJS.confirm({
title: 'Milestone Date in the Past',
message: 'Are you sure you want to create a milestone with a date in the past?',
contextualColorName: 'warning',
okButton: {
text: 'Yes, Create a Past Milestone',
callbackFunction: _doAdd
}
});
}
else {
_doAdd();
}
}
cityssm.openHtmlModal('workOrder-addMilestone', {
onshow(modalElement) {
;
modalElement.querySelector('#milestoneAdd--workOrderId').value = workOrderId;
const milestoneTypeElement = modalElement.querySelector('#milestoneAdd--workOrderMilestoneTypeId');
for (const milestoneType of exports.workOrderMilestoneTypes) {
const optionElement = document.createElement('option');
optionElement.value =
milestoneType.workOrderMilestoneTypeId.toString();
optionElement.textContent = milestoneType.workOrderMilestoneType;
milestoneTypeElement.append(optionElement);
}
workOrderMilestoneDateStringElement = modalElement.querySelector('#milestoneAdd--workOrderMilestoneDateString');
workOrderMilestoneDateStringElement.valueAsDate = new Date();
},
onshown(modalElement, closeModalFunction) {
addCloseModalFunction = closeModalFunction;
bulmaJS.toggleHtmlClipped();
modalElement.querySelector('#milestoneAdd--workOrderMilestoneTypeId').focus();
addFormElement = modalElement.querySelector('form');
addFormElement.addEventListener('submit', doAdd);
const conflictingMilestonePanelElement = document.querySelector('#milestoneAdd--conflictingMilestonesPanel');
workOrderMilestoneDateStringElement.addEventListener('change', () => {
refreshConflictingMilestones(workOrderMilestoneDateStringElement.value, conflictingMilestonePanelElement);
});
refreshConflictingMilestones(workOrderMilestoneDateStringElement.value, conflictingMilestonePanelElement);
},
onremoved() {
bulmaJS.toggleHtmlClipped();
document.querySelector('#button--addMilestone').focus();
}
});
});
})(); })();

View File

@ -666,6 +666,17 @@ declare const exports: Record<string, unknown>
milestonesPanelElement.append(panelBlockElement) milestonesPanelElement.append(panelBlockElement)
} }
if (workOrderMilestones.length === 0) {
milestonesPanelElement.insertAdjacentHTML(
'beforeend',
`<div class="panel-block is-block">
<div class="message is-info">
<p class="message-body">There are no milestones on this work order.</p>
</div>
</div>`
)
}
bulmaJS.init(milestonesPanelElement) bulmaJS.init(milestonesPanelElement)
} }
@ -674,133 +685,126 @@ declare const exports: Record<string, unknown>
delete exports.workOrderMilestones delete exports.workOrderMilestones
renderMilestones() renderMilestones()
}
document document
.querySelector('#button--addMilestone') .querySelector('#button--addMilestone')
?.addEventListener('click', () => { ?.addEventListener('click', () => {
let addFormElement: HTMLFormElement let addFormElement: HTMLFormElement
let workOrderMilestoneDateStringElement: HTMLInputElement let workOrderMilestoneDateStringElement: HTMLInputElement
let addCloseModalFunction: () => void let addCloseModalFunction: () => void
function doAdd(submitEvent?: SubmitEvent): void { function doAdd(submitEvent?: SubmitEvent): void {
if (submitEvent) { if (submitEvent) {
submitEvent.preventDefault() submitEvent.preventDefault()
}
const currentDateString = cityssm.dateToString(new Date())
function _doAdd(): void {
cityssm.postJSON(
`${sunrise.urlPrefix}/workOrders/doAddWorkOrderMilestone`,
addFormElement,
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
workOrderMilestones?: WorkOrderMilestone[]
}
processMilestoneResponse(responseJSON)
if (responseJSON.success) {
addCloseModalFunction()
}
}
)
}
const milestoneDateString = workOrderMilestoneDateStringElement.value
if (
milestoneDateString !== '' &&
milestoneDateString < currentDateString
) {
bulmaJS.confirm({
title: 'Milestone Date in the Past',
message:
'Are you sure you want to create a milestone with a date in the past?',
contextualColorName: 'warning',
okButton: {
text: 'Yes, Create a Past Milestone',
callbackFunction: _doAdd
}
})
} else {
_doAdd()
}
} }
cityssm.openHtmlModal('workOrder-addMilestone', { const currentDateString = cityssm.dateToString(new Date())
onshow(modalElement) {
;(
modalElement.querySelector(
'#milestoneAdd--workOrderId'
) as HTMLInputElement
).value = workOrderId
const milestoneTypeElement = modalElement.querySelector( function _doAdd(): void {
cityssm.postJSON(
`${sunrise.urlPrefix}/workOrders/doAddWorkOrderMilestone`,
addFormElement,
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
workOrderMilestones?: WorkOrderMilestone[]
}
processMilestoneResponse(responseJSON)
if (responseJSON.success) {
addCloseModalFunction()
}
}
)
}
const milestoneDateString = workOrderMilestoneDateStringElement.value
if (
milestoneDateString !== '' &&
milestoneDateString < currentDateString
) {
bulmaJS.confirm({
title: 'Milestone Date in the Past',
message:
'Are you sure you want to create a milestone with a date in the past?',
contextualColorName: 'warning',
okButton: {
text: 'Yes, Create a Past Milestone',
callbackFunction: _doAdd
}
})
} else {
_doAdd()
}
}
cityssm.openHtmlModal('workOrder-addMilestone', {
onshow(modalElement) {
;(
modalElement.querySelector(
'#milestoneAdd--workOrderId'
) as HTMLInputElement
).value = workOrderId
const milestoneTypeElement = modalElement.querySelector(
'#milestoneAdd--workOrderMilestoneTypeId'
) as HTMLSelectElement
for (const milestoneType of exports.workOrderMilestoneTypes as WorkOrderMilestoneType[]) {
const optionElement = document.createElement('option')
optionElement.value =
milestoneType.workOrderMilestoneTypeId.toString()
optionElement.textContent = milestoneType.workOrderMilestoneType
milestoneTypeElement.append(optionElement)
}
workOrderMilestoneDateStringElement = modalElement.querySelector(
'#milestoneAdd--workOrderMilestoneDateString'
) as HTMLInputElement
workOrderMilestoneDateStringElement.valueAsDate = new Date()
},
onshown(modalElement, closeModalFunction) {
addCloseModalFunction = closeModalFunction
bulmaJS.toggleHtmlClipped()
;(
modalElement.querySelector(
'#milestoneAdd--workOrderMilestoneTypeId' '#milestoneAdd--workOrderMilestoneTypeId'
) as HTMLSelectElement ) as HTMLSelectElement
).focus()
for (const milestoneType of exports.workOrderMilestoneTypes as WorkOrderMilestoneType[]) { addFormElement = modalElement.querySelector('form') as HTMLFormElement
const optionElement = document.createElement('option') addFormElement.addEventListener('submit', doAdd)
optionElement.value = const conflictingMilestonePanelElement = document.querySelector(
milestoneType.workOrderMilestoneTypeId.toString() '#milestoneAdd--conflictingMilestonesPanel'
optionElement.textContent = milestoneType.workOrderMilestoneType ) as HTMLElement
milestoneTypeElement.append(optionElement)
}
workOrderMilestoneDateStringElement = modalElement.querySelector(
'#milestoneAdd--workOrderMilestoneDateString'
) as HTMLInputElement
workOrderMilestoneDateStringElement.valueAsDate = new Date()
},
onshown(modalElement, closeModalFunction) {
addCloseModalFunction = closeModalFunction
bulmaJS.toggleHtmlClipped()
;(
modalElement.querySelector(
'#milestoneAdd--workOrderMilestoneTypeId'
) as HTMLSelectElement
).focus()
addFormElement = modalElement.querySelector(
'form'
) as HTMLFormElement
addFormElement.addEventListener('submit', doAdd)
const conflictingMilestonePanelElement = document.querySelector(
'#milestoneAdd--conflictingMilestonesPanel'
) as HTMLElement
workOrderMilestoneDateStringElement.addEventListener(
'change',
() => {
refreshConflictingMilestones(
workOrderMilestoneDateStringElement.value,
conflictingMilestonePanelElement
)
}
)
workOrderMilestoneDateStringElement.addEventListener('change', () => {
refreshConflictingMilestones( refreshConflictingMilestones(
workOrderMilestoneDateStringElement.value, workOrderMilestoneDateStringElement.value,
conflictingMilestonePanelElement conflictingMilestonePanelElement
) )
}, })
onremoved() {
bulmaJS.toggleHtmlClipped() refreshConflictingMilestones(
;( workOrderMilestoneDateStringElement.value,
document.querySelector( conflictingMilestonePanelElement
'#button--addMilestone' )
) as HTMLButtonElement },
).focus() onremoved() {
} bulmaJS.toggleHtmlClipped()
}) ;(
document.querySelector('#button--addMilestone') as HTMLButtonElement
).focus()
}
}) })
} })
})() })()

View File

@ -1,4 +1,4 @@
import type { DateString, TimeString } from "@cityssm/utils-datetime"; import type { DateString, TimeString } from '@cityssm/utils-datetime';
export interface Record { export interface Record {
recordCreate_userName?: string; recordCreate_userName?: string;
recordCreate_timeMillis?: number; recordCreate_timeMillis?: number;
@ -199,7 +199,7 @@ export interface ContractInterment extends Record {
deathDate?: number; deathDate?: number;
deathDateString?: DateString; deathDateString?: DateString;
deathPlace?: string; deathPlace?: string;
deathAge?: number; deathAge?: number | null;
deathAgePeriod?: string; deathAgePeriod?: string;
intermentContainerTypeId?: number; intermentContainerTypeId?: number;
intermentContainerType?: string; intermentContainerType?: string;
@ -260,6 +260,7 @@ export interface Contract extends Record {
funeralDateString?: DateString; funeralDateString?: DateString;
funeralTime?: number; funeralTime?: number;
funeralTimeString?: TimeString; funeralTimeString?: TimeString;
funeralTimePeriodString?: string;
committalTypeId?: number; committalTypeId?: number;
committalType?: string; committalType?: string;
contractFields?: ContractField[]; contractFields?: ContractField[];

View File

@ -1,4 +1,4 @@
import type { DateString, TimeString } from "@cityssm/utils-datetime" import type { DateString, TimeString } from '@cityssm/utils-datetime'
export interface Record { export interface Record {
recordCreate_userName?: string recordCreate_userName?: string
@ -146,7 +146,7 @@ export interface ContractTypeField {
contractTypeFieldId: number contractTypeFieldId: number
contractTypeId?: number contractTypeId?: number
contractTypeField?: string contractTypeField?: string
fieldType: string fieldType: string
fieldValues?: string fieldValues?: string
isRequired?: boolean isRequired?: boolean
@ -240,7 +240,7 @@ export interface CommittalType extends Record {
export interface ContractInterment extends Record { export interface ContractInterment extends Record {
contractId?: number contractId?: number
intermentNumber?: number intermentNumber?: number
deceasedName?: string deceasedName?: string
deceasedAddress1?: string deceasedAddress1?: string
deceasedAddress2?: string deceasedAddress2?: string
@ -254,8 +254,8 @@ export interface ContractInterment extends Record {
deathDate?: number deathDate?: number
deathDateString?: DateString deathDateString?: DateString
deathPlace?: string deathPlace?: string
deathAge?: number deathAge?: number | null
deathAgePeriod?: string deathAgePeriod?: string
intermentContainerTypeId?: number intermentContainerTypeId?: number
@ -299,7 +299,7 @@ export interface Contract extends Record {
burialSiteTypeId?: number burialSiteTypeId?: number
burialSiteType?: string burialSiteType?: string
burialSiteName?: string burialSiteName?: string
cemeteryId?: number cemeteryId?: number
cemeteryName?: string cemeteryName?: string
@ -315,7 +315,7 @@ export interface Contract extends Record {
purchaserCity: string purchaserCity: string
purchaserProvince: string purchaserProvince: string
purchaserPostalCode: string purchaserPostalCode: string
purchaserPhoneNumber: string purchaserPhoneNumber: string
purchaserEmail: string purchaserEmail: string
purchaserRelationship: string purchaserRelationship: string
@ -331,8 +331,11 @@ export interface Contract extends Record {
funeralDate?: number funeralDate?: number
funeralDateString?: DateString funeralDateString?: DateString
funeralTime?: number funeralTime?: number
funeralTimeString?: TimeString funeralTimeString?: TimeString
funeralTimePeriodString?: string
committalTypeId?: number committalTypeId?: number
committalType?: string committalType?: string

View File

@ -5,45 +5,45 @@
<%- include('_menu-admin'); -%> <%- include('_menu-admin'); -%>
</div> </div>
<div class="column"> <div class="column">
<nav class="breadcrumb"> <nav class="breadcrumb">
<ul> <ul>
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li> <li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
<li> <li>
<a href="#"> <a href="#">
<span class="icon is-small"><i class="fas fa-cog" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-cog" aria-hidden="true"></i></span>
<span>Administrator Tools</span> <span>Administrator Tools</span>
</a> </a>
</li> </li>
<li class="is-active"> <li class="is-active">
<a href="#" aria-current="page"> <a href="#" aria-current="page">
Burial Site Type Management
</a>
</li>
</ul>
</nav>
<div class="columns is-vcentered">
<div class="column">
<h1 class="title is-1">
Burial Site Type Management Burial Site Type Management
</h1> </a>
</div> </li>
<div class="column has-text-right is-narrow"> </ul>
<button class="button is-success" id="button--addBurialSiteType" type="button" accesskey="n"> </nav>
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Burial Site Type</span> <div class="columns is-vcentered">
</button> <div class="column">
</div> <h1 class="title is-1">
Burial Site Type Management
</h1>
</div> </div>
<div class="column has-text-right is-narrow">
<div id="container--burialSiteTypes"></div> <button class="button is-success" id="button--addBurialSiteType" type="button" accesskey="n">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Burial Site Type</span>
</button>
</div>
</div>
<div id="container--burialSiteTypes"></div>
</div> </div>
</div> </div>
<%- include('_footerA'); -%> <%- include('_footerA'); -%>
<script> <script>
exports.burialSiteTypes = <%- JSON.stringify(burialSiteTypes) %>; exports.burialSiteTypes = <%- JSON.stringify(burialSiteTypes) %>;
</script> </script>
<script src="<%= urlPrefix %>/javascripts/burialSiteTypes.admin.js"></script> <script src="<%= urlPrefix %>/javascripts/burialSiteTypes.admin.js"></script>

View File

@ -368,7 +368,7 @@
<div class="columns is-mobile mb-0"> <div class="columns is-mobile mb-0">
<div class="column"> <div class="column">
<div class="field"> <div class="field">
<label class="label" for="contract--funeralDateString">Funeral Date</label> <label class="label" for="contract--funeralDateString">Service Date</label>
<div class="control has-icons-left"> <div class="control has-icons-left">
<input class="input" id="contract--funeralDateString" name="funeralDateString" type="date" <input class="input" id="contract--funeralDateString" name="funeralDateString" type="date"
value="<%= contract.funeralDateString %>" /> value="<%= contract.funeralDateString %>" />
@ -451,7 +451,9 @@
<div class="field"> <div class="field">
<label class="label" for="contract--purchaserCity">City</label> <label class="label" for="contract--purchaserCity">City</label>
<div class="control"> <div class="control">
<input class="input" id="contract--purchaserCity" name="purchaserCity" type="text" maxlength="20" value="<%= contract.purchaserCity %>" /> <input class="input" id="contract--purchaserCity" name="purchaserCity" type="text" maxlength="20"
value="<%= contract.purchaserCity %>"
list="datalist--cityDefault" />
</div> </div>
</div> </div>
</div> </div>
@ -560,7 +562,9 @@
<div class="field"> <div class="field">
<label class="label" for="contract--deceasedCity">City</label> <label class="label" for="contract--deceasedCity">City</label>
<div class="control"> <div class="control">
<input class="input" id="contract--deceasedCity" name="deceasedCity" type="text" maxlength="20" value="<%= contract.deceasedCity %>" /> <input class="input" id="contract--deceasedCity" name="deceasedCity" type="text" maxlength="20"
value="<%= contract.deceasedCity %>"
list="datalist--cityDefault" />
</div> </div>
</div> </div>
</div> </div>
@ -601,7 +605,9 @@
Place of Birth Place of Birth
</label> </label>
<div class="control"> <div class="control">
<input class="input" id="contract--birthPlace" name="birthPlace" type="text" maxlength="100" autocomplete="off" value="<%= contract.deceasedPlaceOfBirth %>" /> <input class="input" id="contract--birthPlace" name="birthPlace" type="text" maxlength="100" autocomplete="off"
value="<%= contract.deceasedPlaceOfBirth %>"
list="datalist--cityDefault" />
</div> </div>
</div> </div>
</div> </div>
@ -626,7 +632,9 @@
Place of Death Place of Death
</label> </label>
<div class="control"> <div class="control">
<input class="input" id="contract--deathPlace" name="deathPlace" type="text" maxlength="100" autocomplete="off" value="<%= contract.deathPlace %>" /> <input class="input" id="contract--deathPlace" name="deathPlace" type="text" maxlength="100" autocomplete="off"
value="<%= contract.deathPlace %>"
list="datalist--cityDefault" />
</div> </div>
</div> </div>
</div> </div>
@ -858,11 +866,15 @@
<div class="panel-block is-block" id="container--contractComments"></div> <div class="panel-block is-block" id="container--contractComments"></div>
</div> </div>
<% } %> <% } %>
<datalist id="datalist--cityDefault">
<option value="<%= configFunctions.getConfigProperty('settings.cityDefault') %>">
</datalist>
<%- include('_footerA'); -%> <%- include('_footerA'); -%>
<script> <% if (!isCreate) { %>
<% if (!isCreate) { %> <script>
exports.cityDefault = "<%= configFunctions.getConfigProperty('settings.cityDefault') %>"; exports.cityDefault = "<%= configFunctions.getConfigProperty('settings.cityDefault') %>";
exports.provinceDefault = "<%= configFunctions.getConfigProperty('settings.provinceDefault') %>"; exports.provinceDefault = "<%= configFunctions.getConfigProperty('settings.provinceDefault') %>";
@ -874,8 +886,8 @@
exports.contractTransactions = <%- JSON.stringify(contract.contractTransactions) %>; exports.contractTransactions = <%- JSON.stringify(contract.contractTransactions) %>;
exports.workOrderTypes = <%- JSON.stringify(workOrderTypes) %>; exports.workOrderTypes = <%- JSON.stringify(workOrderTypes) %>;
<% } %> </script>
</script> <% } %>
<script src="<%= urlPrefix %>/javascripts/contract.edit.js"></script> <script src="<%= urlPrefix %>/javascripts/contract.edit.js"></script>
<% if (!isCreate) { %> <% if (!isCreate) { %>