burial site type management
parent
414a45041c
commit
acbb14a4d2
|
|
@ -9,7 +9,7 @@ recordIdColumns.set('Contracts', 'contractId');
|
|||
recordIdColumns.set('ContractComments', 'contractCommentId');
|
||||
recordIdColumns.set('BurialSiteStatuses', 'burialSiteStatusId');
|
||||
recordIdColumns.set('BurialSiteTypes', 'burialSiteTypeId');
|
||||
recordIdColumns.set('BurialSiteTypeFields', 'burialSiteFieldTypeId');
|
||||
recordIdColumns.set('BurialSiteTypeFields', 'burialSiteTypeFieldId');
|
||||
recordIdColumns.set('Cemeteries', 'cemeteryId');
|
||||
recordIdColumns.set('ContractTypes', 'contractTypeId');
|
||||
recordIdColumns.set('ContractTypeFields', 'contractTypeFieldId');
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ recordIdColumns.set('Contracts', 'contractId')
|
|||
recordIdColumns.set('ContractComments', 'contractCommentId')
|
||||
recordIdColumns.set('BurialSiteStatuses', 'burialSiteStatusId')
|
||||
recordIdColumns.set('BurialSiteTypes', 'burialSiteTypeId')
|
||||
recordIdColumns.set('BurialSiteTypeFields', 'burialSiteFieldTypeId')
|
||||
recordIdColumns.set('BurialSiteTypeFields', 'burialSiteTypeFieldId')
|
||||
recordIdColumns.set('Cemeteries', 'cemeteryId')
|
||||
recordIdColumns.set('ContractTypes', 'contractTypeId')
|
||||
recordIdColumns.set('ContractTypeFields', 'contractTypeFieldId')
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { getBurialSiteTypes } from '../../helpers/functions.cache.js';
|
||||
export default async function handler(_request, response) {
|
||||
const lotTypes = await getBurialSiteTypes();
|
||||
const burialSiteTypes = await getBurialSiteTypes();
|
||||
response.render('admin-burialSiteTypes', {
|
||||
headTitle: `Burial Site Type Management`,
|
||||
lotTypes
|
||||
burialSiteTypes
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@ export default async function handler(
|
|||
_request: Request,
|
||||
response: Response
|
||||
): Promise<void> {
|
||||
const lotTypes = await getBurialSiteTypes()
|
||||
const burialSiteTypes = await getBurialSiteTypes()
|
||||
|
||||
response.render('admin-burialSiteTypes', {
|
||||
headTitle: `Burial Site Type Management`,
|
||||
lotTypes
|
||||
burialSiteTypes
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { Request, Response } from 'express';
|
||||
export default function handler(request: Request<unknown, unknown, {
|
||||
lotType: string;
|
||||
burialSiteType: string;
|
||||
orderNumber?: string | number;
|
||||
}>, response: Response): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import addRecord from '../../database/addRecord.js';
|
||||
import { getBurialSiteTypes } from '../../helpers/functions.cache.js';
|
||||
export default async function handler(request, response) {
|
||||
const burialSiteTypeId = await addRecord('BurialSiteTypes', request.body.lotType, request.body.orderNumber ?? -1, request.session.user);
|
||||
const burialSiteTypeId = await addRecord('BurialSiteTypes', request.body.burialSiteType, request.body.orderNumber ?? -1, request.session.user);
|
||||
const burialSiteTypes = await getBurialSiteTypes();
|
||||
response.json({
|
||||
success: true,
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@ export default async function handler(
|
|||
request: Request<
|
||||
unknown,
|
||||
unknown,
|
||||
{ lotType: string; orderNumber?: string | number }
|
||||
{ burialSiteType: string; orderNumber?: string | number }
|
||||
>,
|
||||
response: Response
|
||||
): Promise<void> {
|
||||
const burialSiteTypeId = await addRecord(
|
||||
'BurialSiteTypes',
|
||||
request.body.lotType,
|
||||
request.body.burialSiteType,
|
||||
request.body.orderNumber ?? -1,
|
||||
request.session.user as User
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Request, Response } from 'express';
|
||||
export default function handler(request: Request<unknown, unknown, {
|
||||
lotTypeFieldId: string;
|
||||
burialSiteTypeFieldId: string;
|
||||
}>, response: Response): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { deleteRecord } from '../../database/deleteRecord.js';
|
||||
import { getBurialSiteTypes } from '../../helpers/functions.cache.js';
|
||||
export default async function handler(request, response) {
|
||||
const success = await deleteRecord('BurialSiteTypeFields', request.body.lotTypeFieldId, request.session.user);
|
||||
const success = await deleteRecord('BurialSiteTypeFields', request.body.burialSiteTypeFieldId, request.session.user);
|
||||
const burialSiteTypes = await getBurialSiteTypes();
|
||||
response.json({
|
||||
success,
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@ import { deleteRecord } from '../../database/deleteRecord.js'
|
|||
import { getBurialSiteTypes } from '../../helpers/functions.cache.js'
|
||||
|
||||
export default async function handler(
|
||||
request: Request<unknown, unknown, { lotTypeFieldId: string }>,
|
||||
request: Request<unknown, unknown, { burialSiteTypeFieldId: string }>,
|
||||
response: Response
|
||||
): Promise<void> {
|
||||
const success = await deleteRecord(
|
||||
'BurialSiteTypeFields',
|
||||
request.body.lotTypeFieldId as string,
|
||||
request.body.burialSiteTypeFieldId as string,
|
||||
request.session.user as User
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { Request, Response } from 'express';
|
||||
export default function handler(request: Request<unknown, unknown, {
|
||||
lotTypeFieldId: string;
|
||||
burialSiteTypeFieldId: string;
|
||||
moveToEnd: '0' | '1';
|
||||
}>, response: Response): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import { moveBurialSiteTypeFieldDown, moveBurialSiteTypeFieldDownToBottom } from
|
|||
import { getBurialSiteTypes } from '../../helpers/functions.cache.js';
|
||||
export default async function handler(request, response) {
|
||||
const success = request.body.moveToEnd === '1'
|
||||
? await moveBurialSiteTypeFieldDownToBottom(request.body.lotTypeFieldId)
|
||||
: await moveBurialSiteTypeFieldDown(request.body.lotTypeFieldId);
|
||||
? await moveBurialSiteTypeFieldDownToBottom(request.body.burialSiteTypeFieldId)
|
||||
: await moveBurialSiteTypeFieldDown(request.body.burialSiteTypeFieldId);
|
||||
const burialSiteTypes = await getBurialSiteTypes();
|
||||
response.json({
|
||||
success,
|
||||
|
|
|
|||
|
|
@ -10,14 +10,14 @@ export default async function handler(
|
|||
request: Request<
|
||||
unknown,
|
||||
unknown,
|
||||
{ lotTypeFieldId: string; moveToEnd: '0' | '1' }
|
||||
{ burialSiteTypeFieldId: string; moveToEnd: '0' | '1' }
|
||||
>,
|
||||
response: Response
|
||||
): Promise<void> {
|
||||
const success =
|
||||
request.body.moveToEnd === '1'
|
||||
? await moveBurialSiteTypeFieldDownToBottom(request.body.lotTypeFieldId)
|
||||
: await moveBurialSiteTypeFieldDown(request.body.lotTypeFieldId)
|
||||
? await moveBurialSiteTypeFieldDownToBottom(request.body.burialSiteTypeFieldId)
|
||||
: await moveBurialSiteTypeFieldDown(request.body.burialSiteTypeFieldId)
|
||||
|
||||
const burialSiteTypes = await getBurialSiteTypes()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { Request, Response } from 'express';
|
||||
export default function handler(request: Request<unknown, unknown, {
|
||||
lotTypeFieldId: string;
|
||||
burialSiteTypeFieldId: string;
|
||||
moveToEnd: '0' | '1';
|
||||
}>, response: Response): Promise<void>;
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import { moveBurialSiteTypeFieldUp, moveBurialSiteTypeFieldUpToTop } from '../..
|
|||
import { getBurialSiteTypes } from '../../helpers/functions.cache.js';
|
||||
export default async function handler(request, response) {
|
||||
const success = request.body.moveToEnd === '1'
|
||||
? await moveBurialSiteTypeFieldUpToTop(request.body.lotTypeFieldId)
|
||||
: await moveBurialSiteTypeFieldUp(request.body.lotTypeFieldId);
|
||||
? await moveBurialSiteTypeFieldUpToTop(request.body.burialSiteTypeFieldId)
|
||||
: await moveBurialSiteTypeFieldUp(request.body.burialSiteTypeFieldId);
|
||||
const burialSiteTypes = await getBurialSiteTypes();
|
||||
response.json({
|
||||
success,
|
||||
|
|
|
|||
|
|
@ -10,14 +10,14 @@ export default async function handler(
|
|||
request: Request<
|
||||
unknown,
|
||||
unknown,
|
||||
{ lotTypeFieldId: string; moveToEnd: '0' | '1' }
|
||||
{ burialSiteTypeFieldId: string; moveToEnd: '0' | '1' }
|
||||
>,
|
||||
response: Response
|
||||
): Promise<void> {
|
||||
const success =
|
||||
request.body.moveToEnd === '1'
|
||||
? await moveBurialSiteTypeFieldUpToTop(request.body.lotTypeFieldId)
|
||||
: await moveBurialSiteTypeFieldUp(request.body.lotTypeFieldId)
|
||||
? await moveBurialSiteTypeFieldUpToTop(request.body.burialSiteTypeFieldId)
|
||||
: await moveBurialSiteTypeFieldUp(request.body.burialSiteTypeFieldId)
|
||||
|
||||
const burialSiteTypes = await getBurialSiteTypes()
|
||||
|
||||
|
|
|
|||
|
|
@ -2,9 +2,7 @@
|
|||
<div class="modal-background"></div>
|
||||
<div class="modal-card has-width-900">
|
||||
<header class="modal-card-head">
|
||||
<h3 class="modal-card-title">
|
||||
Add <span class="alias" data-alias="Lot"></span> Type
|
||||
</h3>
|
||||
<h3 class="modal-card-title">Add Burial Site Type</h3>
|
||||
<button
|
||||
class="delete is-close-modal-button"
|
||||
aria-label="close"
|
||||
|
|
@ -12,16 +10,16 @@
|
|||
></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<form id="form--lotTypeAdd">
|
||||
<form id="form--burialSiteTypeAdd">
|
||||
<div class="field">
|
||||
<label class="label" for="lotTypeAdd--lotType"
|
||||
><span class="alias" data-alias="Lot"></span> Type</label
|
||||
<label class="label" for="burialSiteTypeAdd--burialSiteType"
|
||||
>Burial Site Type</label
|
||||
>
|
||||
<div class="control">
|
||||
<input
|
||||
class="input"
|
||||
id="lotTypeAdd--lotType"
|
||||
name="lotType"
|
||||
id="burialSiteTypeAdd--burialSiteType"
|
||||
name="burialSiteType"
|
||||
type="text"
|
||||
maxlength="100"
|
||||
required
|
||||
|
|
@ -31,9 +29,13 @@
|
|||
</form>
|
||||
</section>
|
||||
<footer class="modal-card-foot justify-right">
|
||||
<button class="button is-success" type="submit" form="form--lotTypeAdd">
|
||||
<button
|
||||
class="button is-success"
|
||||
type="submit"
|
||||
form="form--burialSiteTypeAdd"
|
||||
>
|
||||
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
|
||||
<span>Add <span class="alias" data-alias="Lot"></span> Type</span>
|
||||
<span>Add Burial Site Type</span>
|
||||
</button>
|
||||
<button class="button is-close-modal-button" type="button">Cancel</button>
|
||||
</footer>
|
||||
|
|
@ -12,22 +12,22 @@
|
|||
></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<form id="form--lotTypeFieldAdd">
|
||||
<form id="form--burialSiteTypeFieldAdd">
|
||||
<input
|
||||
class="input"
|
||||
id="lotTypeFieldAdd--burialSiteTypeId"
|
||||
id="burialSiteTypeFieldAdd--burialSiteTypeId"
|
||||
name="burialSiteTypeId"
|
||||
type="hidden"
|
||||
/>
|
||||
<div class="field">
|
||||
<label class="label" for="lotTypeFieldAdd--lotTypeField"
|
||||
<label class="label" for="burialSiteTypeFieldAdd--burialSiteTypeField"
|
||||
>New Field Name</label
|
||||
>
|
||||
<div class="control">
|
||||
<input
|
||||
class="input"
|
||||
id="lotTypeFieldAdd--lotTypeField"
|
||||
name="lotTypeField"
|
||||
id="burialSiteTypeFieldAdd--burialSiteTypeField"
|
||||
name="burialSiteTypeField"
|
||||
type="text"
|
||||
maxlength="100"
|
||||
required
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
<button
|
||||
class="button is-success"
|
||||
type="submit"
|
||||
form="form--lotTypeFieldAdd"
|
||||
form="form--burialSiteTypeFieldAdd"
|
||||
>
|
||||
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
|
||||
<span>Add Field</span>
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<div class="modal-card has-width-900">
|
||||
<header class="modal-card-head">
|
||||
<h3 class="modal-card-title">
|
||||
Update <span class="alias" data-alias="Lot"></span> Type
|
||||
Update Burial Site Type
|
||||
</h3>
|
||||
<button
|
||||
class="delete is-close-modal-button"
|
||||
|
|
@ -12,22 +12,22 @@
|
|||
></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<form id="form--lotTypeEdit">
|
||||
<form id="form--burialSiteTypeEdit">
|
||||
<input
|
||||
class="input"
|
||||
id="lotTypeEdit--burialSiteTypeId"
|
||||
id="burialSiteTypeEdit--burialSiteTypeId"
|
||||
name="burialSiteTypeId"
|
||||
type="hidden"
|
||||
/>
|
||||
<div class="field">
|
||||
<label class="label" for="lotTypeEdit--lotType"
|
||||
><span class="alias" data-alias="Lot"></span> Type</label
|
||||
<label class="label" for="burialSiteTypeEdit--burialSiteType"
|
||||
>Burial Site Type</label
|
||||
>
|
||||
<div class="control">
|
||||
<input
|
||||
class="input"
|
||||
id="lotTypeEdit--lotType"
|
||||
name="lotType"
|
||||
id="burialSiteTypeEdit--burialSiteType"
|
||||
name="burialSiteType"
|
||||
type="text"
|
||||
maxlength="100"
|
||||
required
|
||||
|
|
@ -37,9 +37,9 @@
|
|||
</form>
|
||||
</section>
|
||||
<footer class="modal-card-foot justify-right">
|
||||
<button class="button is-success" type="submit" form="form--lotTypeEdit">
|
||||
<button class="button is-success" type="submit" form="form--burialSiteTypeEdit">
|
||||
<span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span>
|
||||
<span>Update <span class="alias" data-alias="Lot"></span> Type</span>
|
||||
<span>Update Burial Site Type</span>
|
||||
</button>
|
||||
<button class="button is-close-modal-button" type="button">Cancel</button>
|
||||
</footer>
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<div class="modal-card has-width-900">
|
||||
<header class="modal-card-head">
|
||||
<h3 class="modal-card-title">
|
||||
Update <span class="alias" data-alias="Lot"></span> Type Field
|
||||
Update Burial Site Type Field
|
||||
</h3>
|
||||
<button
|
||||
class="delete is-close-modal-button"
|
||||
|
|
@ -12,24 +12,24 @@
|
|||
></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<form id="form--lotTypeFieldEdit">
|
||||
<form id="form--burialSiteTypeFieldEdit">
|
||||
<input
|
||||
class="input"
|
||||
id="lotTypeFieldEdit--lotTypeFieldId"
|
||||
name="lotTypeFieldId"
|
||||
id="burialSiteTypeFieldEdit--burialSiteTypeFieldId"
|
||||
name="burialSiteTypeFieldId"
|
||||
type="hidden"
|
||||
/>
|
||||
<div class="columns">
|
||||
<div class="column is-8">
|
||||
<div class="field">
|
||||
<label class="label" for="lotTypeFieldEdit--lotTypeField"
|
||||
<label class="label" for="burialSiteTypeFieldEdit--burialSiteTypeField"
|
||||
>Field Name</label
|
||||
>
|
||||
<div class="control">
|
||||
<input
|
||||
class="input"
|
||||
id="lotTypeFieldEdit--lotTypeField"
|
||||
name="lotTypeField"
|
||||
id="burialSiteTypeFieldEdit--burialSiteTypeField"
|
||||
name="burialSiteTypeField"
|
||||
type="text"
|
||||
maxlength="100"
|
||||
required
|
||||
|
|
@ -39,12 +39,12 @@
|
|||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="lotTypeFieldEdit--isRequired"
|
||||
<label class="label" for="burialSiteTypeFieldEdit--isRequired"
|
||||
>Required</label
|
||||
>
|
||||
<div class="control">
|
||||
<div class="select is-fullwidth">
|
||||
<select id="lotTypeFieldEdit--isRequired" name="isRequired">
|
||||
<select id="burialSiteTypeFieldEdit--isRequired" name="isRequired">
|
||||
<option value="0">Not Required</option>
|
||||
<option value="1">Required</option>
|
||||
</select>
|
||||
|
|
@ -57,13 +57,13 @@
|
|||
<div class="columns">
|
||||
<div class="column is-5">
|
||||
<div class="field">
|
||||
<label class="label" for="lotTypeFieldEdit--fieldType"
|
||||
<label class="label" for="burialSiteTypeFieldEdit--fieldType"
|
||||
>Field Type</label
|
||||
>
|
||||
<div class="control">
|
||||
<div class="select is-fullwidth">
|
||||
<select
|
||||
id="lotTypeFieldEdit--fieldType"
|
||||
id="burialSiteTypeFieldEdit--fieldType"
|
||||
name="fieldType"
|
||||
>
|
||||
<option value="text">Text Field</option>
|
||||
|
|
@ -76,13 +76,13 @@
|
|||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="lotTypeFieldEdit--minLength"
|
||||
<label class="label" for="burialSiteTypeFieldEdit--minLength"
|
||||
>Minimum Length</label
|
||||
>
|
||||
<div class="control">
|
||||
<input
|
||||
class="input"
|
||||
id="lotTypeFieldEdit--minLength"
|
||||
id="burialSiteTypeFieldEdit--minLength"
|
||||
name="minLength"
|
||||
type="number"
|
||||
min="0"
|
||||
|
|
@ -95,13 +95,13 @@
|
|||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="lotTypeFieldEdit--maxLength"
|
||||
<label class="label" for="burialSiteTypeFieldEdit--maxLength"
|
||||
>Maximum Length</label
|
||||
>
|
||||
<div class="control">
|
||||
<input
|
||||
class="input"
|
||||
id="lotTypeFieldEdit--maxLength"
|
||||
id="burialSiteTypeFieldEdit--maxLength"
|
||||
name="maxLength"
|
||||
type="number"
|
||||
min="0"
|
||||
|
|
@ -114,13 +114,13 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="lotTypeFieldEdit--pattern"
|
||||
<label class="label" for="burialSiteTypeFieldEdit--pattern"
|
||||
>Regular Expression</label
|
||||
>
|
||||
<div class="control">
|
||||
<input
|
||||
class="input"
|
||||
id="lotTypeFieldEdit--pattern"
|
||||
id="burialSiteTypeFieldEdit--pattern"
|
||||
name="pattern"
|
||||
type="text"
|
||||
maxlength="100"
|
||||
|
|
@ -130,14 +130,14 @@
|
|||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="lotTypeFieldEdit--lotTypeFieldValues"
|
||||
<label class="label" for="burialSiteTypeFieldEdit--fieldValues"
|
||||
>Field Values</label
|
||||
>
|
||||
<div class="control">
|
||||
<textarea
|
||||
class="textarea"
|
||||
id="lotTypeFieldEdit--lotTypeFieldValues"
|
||||
name="lotTypeFieldValues"
|
||||
id="burialSiteTypeFieldEdit--fieldValues"
|
||||
name="fieldValues"
|
||||
></textarea>
|
||||
</div>
|
||||
<p class="help is-info">
|
||||
|
|
@ -153,7 +153,7 @@
|
|||
<button
|
||||
class="button is-success"
|
||||
type="submit"
|
||||
form="form--lotTypeFieldEdit"
|
||||
form="form--burialSiteTypeFieldEdit"
|
||||
>
|
||||
<span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span>
|
||||
<span>Update Field</span>
|
||||
|
|
@ -169,7 +169,7 @@
|
|||
</div>
|
||||
<div class="dropdown-menu">
|
||||
<div class="dropdown-content">
|
||||
<a class="dropdown-item" id="button--deleteLotTypeField" href="#">
|
||||
<a class="dropdown-item" id="button--deleteBurialSiteTypeField" href="#">
|
||||
<span class="icon is-small"
|
||||
><i class="fas fa-trash has-text-danger" aria-hidden="true"></i
|
||||
></span>
|
||||
|
|
@ -1,84 +1,86 @@
|
|||
"use strict";
|
||||
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
|
||||
/* eslint-disable max-lines */
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
(() => {
|
||||
const los = exports.los;
|
||||
const containerElement = document.querySelector('#container--lotTypes');
|
||||
let lotTypes = exports.lotTypes;
|
||||
delete exports.lotTypes;
|
||||
const expandedLotTypes = new Set();
|
||||
const containerElement = document.querySelector('#container--burialSiteTypes');
|
||||
let burialSiteTypes = exports.burialSiteTypes;
|
||||
delete exports.burialSiteTypes;
|
||||
const expandedBurialSiteTypes = new Set();
|
||||
function toggleBurialSiteTypeFields(clickEvent) {
|
||||
const toggleButtonElement = clickEvent.currentTarget;
|
||||
const lotTypeElement = toggleButtonElement.closest('.container--lotType');
|
||||
const burialSiteTypeId = Number.parseInt(lotTypeElement.dataset.burialSiteTypeId ?? '', 10);
|
||||
if (expandedLotTypes.has(burialSiteTypeId)) {
|
||||
expandedLotTypes.delete(burialSiteTypeId);
|
||||
const burialSiteTypeElement = toggleButtonElement.closest('.container--burialSiteType');
|
||||
const burialSiteTypeId = Number.parseInt(burialSiteTypeElement.dataset.burialSiteTypeId ?? '', 10);
|
||||
if (expandedBurialSiteTypes.has(burialSiteTypeId)) {
|
||||
expandedBurialSiteTypes.delete(burialSiteTypeId);
|
||||
}
|
||||
else {
|
||||
expandedLotTypes.add(burialSiteTypeId);
|
||||
expandedBurialSiteTypes.add(burialSiteTypeId);
|
||||
}
|
||||
// eslint-disable-next-line no-unsanitized/property
|
||||
toggleButtonElement.innerHTML = expandedLotTypes.has(burialSiteTypeId)
|
||||
toggleButtonElement.innerHTML = expandedBurialSiteTypes.has(burialSiteTypeId)
|
||||
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
|
||||
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>';
|
||||
const panelBlockElements = lotTypeElement.querySelectorAll('.panel-block');
|
||||
const panelBlockElements = burialSiteTypeElement.querySelectorAll('.panel-block');
|
||||
for (const panelBlockElement of panelBlockElements) {
|
||||
panelBlockElement.classList.toggle('is-hidden');
|
||||
}
|
||||
}
|
||||
function lotTypeResponseHandler(rawResponseJSON) {
|
||||
function burialSiteTypeResponseHandler(rawResponseJSON) {
|
||||
const responseJSON = rawResponseJSON;
|
||||
if (responseJSON.success) {
|
||||
lotTypes = responseJSON.lotTypes;
|
||||
renderLotTypes();
|
||||
burialSiteTypes = responseJSON.burialSiteTypes;
|
||||
renderBurialSiteTypes();
|
||||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
title: `Error Updating ${los.escapedAliases.Lot} Type`,
|
||||
title: `Error Updating Burial Site Type`,
|
||||
message: responseJSON.errorMessage ?? '',
|
||||
contextualColorName: 'danger'
|
||||
});
|
||||
}
|
||||
}
|
||||
function deleteLotType(clickEvent) {
|
||||
const burialSiteTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.burialSiteTypeId ?? '', 10);
|
||||
function deleteBurialSiteType(clickEvent) {
|
||||
const burialSiteTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--burialSiteType').dataset.burialSiteTypeId ?? '', 10);
|
||||
function doDelete() {
|
||||
cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteBurialSiteType`, {
|
||||
burialSiteTypeId
|
||||
}, lotTypeResponseHandler);
|
||||
}, burialSiteTypeResponseHandler);
|
||||
}
|
||||
bulmaJS.confirm({
|
||||
title: `Delete ${los.escapedAliases.Lot} Type`,
|
||||
message: `Are you sure you want to delete this ${los.escapedAliases.lot} type?`,
|
||||
title: `Delete Burial Site Type`,
|
||||
message: `Are you sure you want to delete this burial site type?`,
|
||||
contextualColorName: 'warning',
|
||||
okButton: {
|
||||
text: `Yes, Delete ${los.escapedAliases.Lot} Type`,
|
||||
text: `Yes, Delete Burial Site Type`,
|
||||
callbackFunction: doDelete
|
||||
}
|
||||
});
|
||||
}
|
||||
function openEditLotType(clickEvent) {
|
||||
const burialSiteTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.burialSiteTypeId ?? '', 10);
|
||||
const lotType = lotTypes.find((currentLotType) => burialSiteTypeId === currentLotType.burialSiteTypeId);
|
||||
function openEditBurialSiteType(clickEvent) {
|
||||
const burialSiteTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--burialSiteType').dataset.burialSiteTypeId ?? '', 10);
|
||||
const burialSiteType = burialSiteTypes.find((currentType) => burialSiteTypeId === currentType.burialSiteTypeId);
|
||||
let editCloseModalFunction;
|
||||
function doEdit(submitEvent) {
|
||||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateBurialSiteType`, submitEvent.currentTarget, (rawResponseJSON) => {
|
||||
const responseJSON = rawResponseJSON;
|
||||
lotTypeResponseHandler(responseJSON);
|
||||
burialSiteTypeResponseHandler(responseJSON);
|
||||
if (responseJSON.success) {
|
||||
editCloseModalFunction();
|
||||
}
|
||||
});
|
||||
}
|
||||
cityssm.openHtmlModal('adminLotTypes-editLotType', {
|
||||
cityssm.openHtmlModal('adminBurialSiteTypes-edit', {
|
||||
onshow(modalElement) {
|
||||
los.populateAliases(modalElement);
|
||||
modalElement.querySelector('#lotTypeEdit--burialSiteTypeId').value = burialSiteTypeId.toString();
|
||||
modalElement.querySelector('#lotTypeEdit--lotType').value = lotType.lotType;
|
||||
modalElement.querySelector('#burialSiteTypeEdit--burialSiteTypeId').value = burialSiteTypeId.toString();
|
||||
modalElement.querySelector('#burialSiteTypeEdit--burialSiteType').value = burialSiteType.burialSiteType;
|
||||
},
|
||||
onshown(modalElement, closeModalFunction) {
|
||||
editCloseModalFunction = closeModalFunction;
|
||||
modalElement.querySelector('#lotTypeEdit--lotType').focus();
|
||||
modalElement.querySelector('#burialSiteTypeEdit--burialSiteType').focus();
|
||||
modalElement.querySelector('form')?.addEventListener('submit', doEdit);
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
},
|
||||
|
|
@ -87,32 +89,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
});
|
||||
}
|
||||
function openAddLotTypeField(clickEvent) {
|
||||
const burialSiteTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.burialSiteTypeId ?? '', 10);
|
||||
function openAddBurialSiteTypeField(clickEvent) {
|
||||
const burialSiteTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--burialSiteType').dataset.burialSiteTypeId ?? '', 10);
|
||||
let addCloseModalFunction;
|
||||
function doAdd(submitEvent) {
|
||||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(`${los.urlPrefix}/admin/doAddBurialSiteTypeField`, submitEvent.currentTarget, (rawResponseJSON) => {
|
||||
const responseJSON = rawResponseJSON;
|
||||
expandedLotTypes.add(burialSiteTypeId);
|
||||
lotTypeResponseHandler(responseJSON);
|
||||
expandedBurialSiteTypes.add(burialSiteTypeId);
|
||||
burialSiteTypeResponseHandler(responseJSON);
|
||||
if (responseJSON.success) {
|
||||
addCloseModalFunction();
|
||||
openEditLotTypeField(burialSiteTypeId, responseJSON.lotTypeFieldId);
|
||||
openEditBurialSiteTypeField(burialSiteTypeId, responseJSON.burialSiteTypeFieldId);
|
||||
}
|
||||
});
|
||||
}
|
||||
cityssm.openHtmlModal('adminLotTypes-addBurialSiteTypeField', {
|
||||
cityssm.openHtmlModal('adminBurialSiteTypes-addField', {
|
||||
onshow(modalElement) {
|
||||
los.populateAliases(modalElement);
|
||||
if (burialSiteTypeId) {
|
||||
;
|
||||
modalElement.querySelector('#lotTypeFieldAdd--burialSiteTypeId').value = burialSiteTypeId.toString();
|
||||
modalElement.querySelector('#burialSiteTypeFieldAdd--burialSiteTypeId').value = burialSiteTypeId.toString();
|
||||
}
|
||||
},
|
||||
onshown(modalElement, closeModalFunction) {
|
||||
addCloseModalFunction = closeModalFunction;
|
||||
modalElement.querySelector('#lotTypeFieldAdd--lotTypeField').focus();
|
||||
modalElement.querySelector('#burialSiteTypeFieldAdd--burialSiteTypeField').focus();
|
||||
modalElement.querySelector('form')?.addEventListener('submit', doAdd);
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
},
|
||||
|
|
@ -121,24 +123,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
});
|
||||
}
|
||||
function moveLotType(clickEvent) {
|
||||
function moveBurialSiteType(clickEvent) {
|
||||
const buttonElement = clickEvent.currentTarget;
|
||||
const burialSiteTypeId = buttonElement.closest('.container--lotType').dataset.burialSiteTypeId;
|
||||
const burialSiteTypeId = buttonElement.closest('.container--burialSiteType').dataset.burialSiteTypeId;
|
||||
cityssm.postJSON(`${los.urlPrefix}/admin/${buttonElement.dataset.direction === 'up'
|
||||
? 'doMoveBurialSiteTypeUp'
|
||||
: 'doMoveBurialSiteTypeDown'}`, {
|
||||
: // eslint-disable-next-line no-secrets/no-secrets
|
||||
'doMoveBurialSiteTypeDown'}`, {
|
||||
burialSiteTypeId,
|
||||
moveToEnd: clickEvent.shiftKey ? '1' : '0'
|
||||
}, lotTypeResponseHandler);
|
||||
}, burialSiteTypeResponseHandler);
|
||||
}
|
||||
function openEditLotTypeField(burialSiteTypeId, lotTypeFieldId) {
|
||||
const lotType = lotTypes.find((currentLotType) => currentLotType.burialSiteTypeId === burialSiteTypeId);
|
||||
const lotTypeField = (lotType.BurialSiteTypeFields ?? []).find((currentLotTypeField) => currentLotTypeField.lotTypeFieldId === lotTypeFieldId);
|
||||
function openEditBurialSiteTypeField(burialSiteTypeId, burialSiteTypeFieldId) {
|
||||
const burialSiteType = burialSiteTypes.find((currentType) => currentType.burialSiteTypeId === burialSiteTypeId);
|
||||
const burialSiteTypeField = (burialSiteType.burialSiteTypeFields ?? []).find((currentField) => currentField.burialSiteTypeFieldId === burialSiteTypeFieldId);
|
||||
let fieldTypeElement;
|
||||
let minLengthInputElement;
|
||||
let maxLengthInputElement;
|
||||
let patternElement;
|
||||
let lotTypeFieldValuesElement;
|
||||
let fieldValuesElement;
|
||||
let editCloseModalFunction;
|
||||
function updateMaximumLengthMin() {
|
||||
maxLengthInputElement.min = minLengthInputElement.value;
|
||||
|
|
@ -149,21 +152,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
minLengthInputElement.disabled = true;
|
||||
maxLengthInputElement.disabled = true;
|
||||
patternElement.disabled = true;
|
||||
lotTypeFieldValuesElement.disabled = true;
|
||||
fieldValuesElement.disabled = true;
|
||||
break;
|
||||
}
|
||||
case 'select': {
|
||||
minLengthInputElement.disabled = true;
|
||||
maxLengthInputElement.disabled = true;
|
||||
patternElement.disabled = true;
|
||||
lotTypeFieldValuesElement.disabled = false;
|
||||
fieldValuesElement.disabled = false;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
minLengthInputElement.disabled = false;
|
||||
maxLengthInputElement.disabled = false;
|
||||
patternElement.disabled = false;
|
||||
lotTypeFieldValuesElement.disabled = true;
|
||||
fieldValuesElement.disabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -172,7 +175,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateBurialSiteTypeField`, submitEvent.currentTarget, (rawResponseJSON) => {
|
||||
const responseJSON = rawResponseJSON;
|
||||
lotTypeResponseHandler(responseJSON);
|
||||
burialSiteTypeResponseHandler(responseJSON);
|
||||
if (responseJSON.success) {
|
||||
editCloseModalFunction();
|
||||
}
|
||||
|
|
@ -180,10 +183,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
function doDelete() {
|
||||
cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteBurialSiteTypeField`, {
|
||||
lotTypeFieldId
|
||||
burialSiteTypeFieldId
|
||||
}, (rawResponseJSON) => {
|
||||
const responseJSON = rawResponseJSON;
|
||||
lotTypeResponseHandler(responseJSON);
|
||||
burialSiteTypeResponseHandler(responseJSON);
|
||||
if (responseJSON.success) {
|
||||
editCloseModalFunction();
|
||||
}
|
||||
|
|
@ -200,24 +203,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
});
|
||||
}
|
||||
cityssm.openHtmlModal('adminLotTypes-editLotTypeField', {
|
||||
cityssm.openHtmlModal('adminBurialSiteTypes-editField', {
|
||||
onshow(modalElement) {
|
||||
los.populateAliases(modalElement);
|
||||
modalElement.querySelector('#lotTypeFieldEdit--lotTypeFieldId').value = lotTypeField.lotTypeFieldId.toString();
|
||||
modalElement.querySelector('#lotTypeFieldEdit--lotTypeField').value = lotTypeField.lotTypeField ?? '';
|
||||
modalElement.querySelector('#lotTypeFieldEdit--isRequired').value = lotTypeField.isRequired ? '1' : '0';
|
||||
fieldTypeElement = modalElement.querySelector('#lotTypeFieldEdit--fieldType');
|
||||
fieldTypeElement.value = lotTypeField.fieldType;
|
||||
minLengthInputElement = modalElement.querySelector('#lotTypeFieldEdit--minLength');
|
||||
modalElement.querySelector('#burialSiteTypeFieldEdit--burialSiteTypeFieldId').value = burialSiteTypeField.burialSiteTypeFieldId.toString();
|
||||
modalElement.querySelector('#burialSiteTypeFieldEdit--burialSiteTypeField').value = burialSiteTypeField.burialSiteTypeField ?? '';
|
||||
modalElement.querySelector('#burialSiteTypeFieldEdit--isRequired').value = burialSiteTypeField.isRequired ?? false ? '1' : '0';
|
||||
fieldTypeElement = modalElement.querySelector('#burialSiteTypeFieldEdit--fieldType');
|
||||
fieldTypeElement.value = burialSiteTypeField.fieldType;
|
||||
minLengthInputElement = modalElement.querySelector('#burialSiteTypeFieldEdit--minLength');
|
||||
minLengthInputElement.value =
|
||||
lotTypeField.minLength?.toString() ?? '';
|
||||
maxLengthInputElement = modalElement.querySelector('#lotTypeFieldEdit--maxLength');
|
||||
burialSiteTypeField.minLength?.toString() ?? '';
|
||||
maxLengthInputElement = modalElement.querySelector('#burialSiteTypeFieldEdit--maxLength');
|
||||
maxLengthInputElement.value =
|
||||
lotTypeField.maxLength?.toString() ?? '';
|
||||
patternElement = modalElement.querySelector('#lotTypeFieldEdit--pattern');
|
||||
patternElement.value = lotTypeField.pattern ?? '';
|
||||
lotTypeFieldValuesElement = modalElement.querySelector('#lotTypeFieldEdit--lotTypeFieldValues');
|
||||
lotTypeFieldValuesElement.value = lotTypeField.lotTypeFieldValues ?? '';
|
||||
burialSiteTypeField.maxLength?.toString() ?? '';
|
||||
patternElement = modalElement.querySelector('#burialSiteTypeFieldEdit--pattern');
|
||||
patternElement.value = burialSiteTypeField.pattern ?? '';
|
||||
fieldValuesElement = modalElement.querySelector('#burialSiteTypeFieldEdit--fieldValues');
|
||||
fieldValuesElement.value = burialSiteTypeField.fieldValues ?? '';
|
||||
toggleInputFields();
|
||||
},
|
||||
onshown(modalElement, closeModalFunction) {
|
||||
|
|
@ -230,7 +233,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
updateMaximumLengthMin();
|
||||
fieldTypeElement.addEventListener('change', toggleInputFields);
|
||||
modalElement
|
||||
.querySelector('#button--deleteLotTypeField')
|
||||
.querySelector('#button--deleteBurialSiteTypeField')
|
||||
?.addEventListener('click', confirmDoDelete);
|
||||
},
|
||||
onremoved() {
|
||||
|
|
@ -239,103 +242,106 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
});
|
||||
}
|
||||
function openEditLotTypeFieldByClick(clickEvent) {
|
||||
function openEditBurialSiteTypeFieldByClick(clickEvent) {
|
||||
clickEvent.preventDefault();
|
||||
const lotTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotTypeField').dataset.lotTypeFieldId ?? '', 10);
|
||||
const burialSiteTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.burialSiteTypeId ?? '', 10);
|
||||
openEditLotTypeField(burialSiteTypeId, lotTypeFieldId);
|
||||
const burialSiteTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest('.container--burialSiteTypeField').dataset.burialSiteTypeFieldId ?? '', 10);
|
||||
const burialSiteTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--burialSiteType').dataset.burialSiteTypeId ?? '', 10);
|
||||
openEditBurialSiteTypeField(burialSiteTypeId, burialSiteTypeFieldId);
|
||||
}
|
||||
function moveLotTypeField(clickEvent) {
|
||||
function moveBurialSiteTypeField(clickEvent) {
|
||||
const buttonElement = clickEvent.currentTarget;
|
||||
const lotTypeFieldId = buttonElement.closest('.container--lotTypeField').dataset.lotTypeFieldId;
|
||||
const burialSiteTypeFieldId = buttonElement.closest('.container--burialSiteTypeField').dataset.burialSiteTypeFieldId;
|
||||
cityssm.postJSON(`${los.urlPrefix}/admin/${buttonElement.dataset.direction === 'up'
|
||||
? 'doMoveBurialSiteTypeFieldUp'
|
||||
: 'doMoveBurialSiteTypeFieldDown'}`, {
|
||||
lotTypeFieldId,
|
||||
: // eslint-disable-next-line no-secrets/no-secrets
|
||||
'doMoveBurialSiteTypeFieldDown'}`, {
|
||||
burialSiteTypeFieldId,
|
||||
moveToEnd: clickEvent.shiftKey ? '1' : '0'
|
||||
}, lotTypeResponseHandler);
|
||||
}, burialSiteTypeResponseHandler);
|
||||
}
|
||||
function renderBurialSiteTypeFields(panelElement, burialSiteTypeId, BurialSiteTypeFields) {
|
||||
if (BurialSiteTypeFields.length === 0) {
|
||||
function renderBurialSiteTypeFields(panelElement, burialSiteTypeId, burialSiteTypeFields) {
|
||||
if (burialSiteTypeFields.length === 0) {
|
||||
// eslint-disable-next-line no-unsanitized/method
|
||||
panelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block
|
||||
${expandedLotTypes.has(burialSiteTypeId) ? '' : ' is-hidden'}">
|
||||
${expandedBurialSiteTypes.has(burialSiteTypeId) ? '' : ' is-hidden'}">
|
||||
<div class="message is-info"><p class="message-body">There are no additional fields.</p></div>
|
||||
</div>`);
|
||||
}
|
||||
else {
|
||||
for (const lotTypeField of BurialSiteTypeFields) {
|
||||
for (const burialSiteTypeField of burialSiteTypeFields) {
|
||||
const panelBlockElement = document.createElement('div');
|
||||
panelBlockElement.className =
|
||||
'panel-block is-block container--lotTypeField';
|
||||
if (!expandedLotTypes.has(burialSiteTypeId)) {
|
||||
'panel-block is-block container--burialSiteTypeField';
|
||||
if (!expandedBurialSiteTypes.has(burialSiteTypeId)) {
|
||||
panelBlockElement.classList.add('is-hidden');
|
||||
}
|
||||
panelBlockElement.dataset.lotTypeFieldId =
|
||||
lotTypeField.lotTypeFieldId.toString();
|
||||
panelBlockElement.dataset.burialSiteTypeFieldId =
|
||||
burialSiteTypeField.burialSiteTypeFieldId.toString();
|
||||
// eslint-disable-next-line no-unsanitized/property
|
||||
panelBlockElement.innerHTML = `<div class="level is-mobile">
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
<a class="has-text-weight-bold button--editLotTypeField" href="#">
|
||||
${cityssm.escapeHTML(lotTypeField.lotTypeField ?? '')}
|
||||
<a class="has-text-weight-bold button--editBurialSiteTypeField" href="#">
|
||||
${cityssm.escapeHTML(burialSiteTypeField.burialSiteTypeField ?? '')}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-right">
|
||||
<div class="level-item">
|
||||
${los.getMoveUpDownButtonFieldHTML('button--moveLotTypeFieldUp', 'button--moveLotTypeFieldDown')}
|
||||
${los.getMoveUpDownButtonFieldHTML('button--moveBurialSiteTypeFieldUp',
|
||||
// eslint-disable-next-line no-secrets/no-secrets
|
||||
'button--moveBurialSiteTypeFieldDown')}
|
||||
</div>
|
||||
</div>
|
||||
</div>`;
|
||||
panelBlockElement
|
||||
.querySelector('.button--editLotTypeField')
|
||||
?.addEventListener('click', openEditLotTypeFieldByClick);
|
||||
panelBlockElement.querySelector('.button--moveLotTypeFieldUp').addEventListener('click', moveLotTypeField);
|
||||
panelBlockElement.querySelector('.button--moveLotTypeFieldDown').addEventListener('click', moveLotTypeField);
|
||||
.querySelector('.button--editBurialSiteTypeField')
|
||||
?.addEventListener('click', openEditBurialSiteTypeFieldByClick);
|
||||
panelBlockElement.querySelector('.button--moveBurialSiteTypeFieldUp').addEventListener('click', moveBurialSiteTypeField);
|
||||
panelBlockElement.querySelector('.button--moveBurialSiteTypeFieldDown').addEventListener('click', moveBurialSiteTypeField);
|
||||
panelElement.append(panelBlockElement);
|
||||
}
|
||||
}
|
||||
}
|
||||
function renderLotTypes() {
|
||||
function renderBurialSiteTypes() {
|
||||
containerElement.innerHTML = '';
|
||||
if (lotTypes.length === 0) {
|
||||
// eslint-disable-next-line no-unsanitized/method
|
||||
containerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning>
|
||||
<p class="message-body">There are no active ${los.escapedAliases.lot} types.</p>
|
||||
if (burialSiteTypes.length === 0) {
|
||||
containerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning">
|
||||
<p class="message-body">There are no active burial site types.</p>
|
||||
</div>`);
|
||||
return;
|
||||
}
|
||||
for (const lotType of lotTypes) {
|
||||
const lotTypeContainer = document.createElement('div');
|
||||
lotTypeContainer.className = 'panel container--lotType';
|
||||
lotTypeContainer.dataset.burialSiteTypeId = lotType.burialSiteTypeId.toString();
|
||||
for (const burialSiteType of burialSiteTypes) {
|
||||
const burialSiteTypeContainer = document.createElement('div');
|
||||
burialSiteTypeContainer.className = 'panel container--burialSiteType';
|
||||
burialSiteTypeContainer.dataset.burialSiteTypeId =
|
||||
burialSiteType.burialSiteTypeId.toString();
|
||||
// eslint-disable-next-line no-unsanitized/property
|
||||
lotTypeContainer.innerHTML = `<div class="panel-heading">
|
||||
burialSiteTypeContainer.innerHTML = `<div class="panel-heading">
|
||||
<div class="level is-mobile">
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
<button class="button is-small button--toggleBurialSiteTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">
|
||||
${expandedLotTypes.has(lotType.burialSiteTypeId)
|
||||
${expandedBurialSiteTypes.has(burialSiteType.burialSiteTypeId)
|
||||
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
|
||||
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'}
|
||||
</button>
|
||||
</div>
|
||||
<div class="level-item">
|
||||
<h2 class="title is-4">${cityssm.escapeHTML(lotType.lotType)}</h2>
|
||||
<h2 class="title is-4">${cityssm.escapeHTML(burialSiteType.burialSiteType)}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-right">
|
||||
<div class="level-item">
|
||||
<button class="button is-danger is-small button--deleteLotType" type="button">
|
||||
<button class="button is-danger is-small button--deleteBurialSiteType" type="button">
|
||||
<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>
|
||||
<span>Delete</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="level-item">
|
||||
<button class="button is-primary is-small button--editLotType" type="button">
|
||||
<button class="button is-primary is-small button--editBurialSiteType" type="button">
|
||||
<span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>
|
||||
<span>Edit ${los.escapedAliases.Lot} Type</span>
|
||||
<span>Edit Burial Site Type</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="level-item">
|
||||
|
|
@ -345,27 +351,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
</button>
|
||||
</div>
|
||||
<div class="level-item">
|
||||
${los.getMoveUpDownButtonFieldHTML('button--moveLotTypeUp', 'button--moveLotTypeDown')}
|
||||
${los.getMoveUpDownButtonFieldHTML('button--moveBurialSiteTypeUp', 'button--moveBurialSiteTypeDown')}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>`;
|
||||
renderBurialSiteTypeFields(lotTypeContainer, lotType.burialSiteTypeId, lotType.BurialSiteTypeFields ?? []);
|
||||
lotTypeContainer
|
||||
renderBurialSiteTypeFields(burialSiteTypeContainer, burialSiteType.burialSiteTypeId, burialSiteType.burialSiteTypeFields ?? []);
|
||||
burialSiteTypeContainer
|
||||
.querySelector('.button--toggleBurialSiteTypeFields')
|
||||
?.addEventListener('click', toggleBurialSiteTypeFields);
|
||||
lotTypeContainer
|
||||
.querySelector('.button--deleteLotType')
|
||||
?.addEventListener('click', deleteLotType);
|
||||
lotTypeContainer
|
||||
.querySelector('.button--editLotType')
|
||||
?.addEventListener('click', openEditLotType);
|
||||
lotTypeContainer
|
||||
burialSiteTypeContainer
|
||||
.querySelector('.button--deleteBurialSiteType')
|
||||
?.addEventListener('click', deleteBurialSiteType);
|
||||
burialSiteTypeContainer
|
||||
.querySelector('.button--editBurialSiteType')
|
||||
?.addEventListener('click', openEditBurialSiteType);
|
||||
burialSiteTypeContainer
|
||||
.querySelector('.button--addBurialSiteTypeField')
|
||||
?.addEventListener('click', openAddLotTypeField);
|
||||
lotTypeContainer.querySelector('.button--moveLotTypeUp').addEventListener('click', moveLotType);
|
||||
lotTypeContainer.querySelector('.button--moveLotTypeDown').addEventListener('click', moveLotType);
|
||||
containerElement.append(lotTypeContainer);
|
||||
?.addEventListener('click', openAddBurialSiteTypeField);
|
||||
burialSiteTypeContainer.querySelector('.button--moveBurialSiteTypeUp').addEventListener('click', moveBurialSiteType);
|
||||
burialSiteTypeContainer.querySelector('.button--moveBurialSiteTypeDown').addEventListener('click', moveBurialSiteType);
|
||||
containerElement.append(burialSiteTypeContainer);
|
||||
}
|
||||
}
|
||||
document
|
||||
|
|
@ -374,29 +380,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
let addCloseModalFunction;
|
||||
function doAdd(submitEvent) {
|
||||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(`${los.urlPrefix}/admin/doAddLotType`, submitEvent.currentTarget, (rawResponseJSON) => {
|
||||
cityssm.postJSON(`${los.urlPrefix}/admin/doAddBurialSiteType`, submitEvent.currentTarget, (rawResponseJSON) => {
|
||||
const responseJSON = rawResponseJSON;
|
||||
if (responseJSON.success) {
|
||||
addCloseModalFunction();
|
||||
lotTypes = responseJSON.lotTypes;
|
||||
renderLotTypes();
|
||||
burialSiteTypes = responseJSON.burialSiteTypes;
|
||||
renderBurialSiteTypes();
|
||||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
title: `Error Adding ${los.escapedAliases.Lot} Type`,
|
||||
title: `Error Adding Burial Site Type`,
|
||||
message: responseJSON.errorMessage ?? '',
|
||||
contextualColorName: 'danger'
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
cityssm.openHtmlModal('adminLotTypes-addBurialSiteType', {
|
||||
cityssm.openHtmlModal('adminBurialSiteTypes-add', {
|
||||
onshow(modalElement) {
|
||||
los.populateAliases(modalElement);
|
||||
},
|
||||
onshown(modalElement, closeModalFunction) {
|
||||
addCloseModalFunction = closeModalFunction;
|
||||
modalElement.querySelector('#lotTypeAdd--lotType').focus();
|
||||
modalElement.querySelector('#burialSiteTypeAdd--burialSiteType').focus();
|
||||
modalElement.querySelector('form')?.addEventListener('submit', doAdd);
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
},
|
||||
|
|
@ -405,5 +411,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
});
|
||||
});
|
||||
renderLotTypes();
|
||||
renderBurialSiteTypes();
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -1,8 +1,15 @@
|
|||
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
|
||||
/* eslint-disable max-lines */
|
||||
|
||||
import type { BulmaJS } from '@cityssm/bulma-js/types.js'
|
||||
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
|
||||
|
||||
import type { LOS } from '../../types/globalTypes.js'
|
||||
import type { LotType, LotTypeField } from '../../types/recordTypes.js'
|
||||
import type {
|
||||
BurialSiteType,
|
||||
BurialSiteTypeField
|
||||
} from '../../types/recordTypes.js'
|
||||
|
||||
import type { LOS } from './types.js'
|
||||
|
||||
declare const cityssm: cityssmGlobal
|
||||
declare const bulmaJS: BulmaJS
|
||||
|
|
@ -12,8 +19,8 @@ declare const exports: Record<string, unknown>
|
|||
type ResponseJSON =
|
||||
| {
|
||||
success: true
|
||||
lotTypes: LotType[]
|
||||
lotTypeFieldId?: number
|
||||
burialSiteTypes: BurialSiteType[]
|
||||
burialSiteTypeFieldId?: number
|
||||
}
|
||||
| {
|
||||
success: false
|
||||
|
|
@ -23,38 +30,40 @@ type ResponseJSON =
|
|||
const los = exports.los as LOS
|
||||
|
||||
const containerElement = document.querySelector(
|
||||
'#container--lotTypes'
|
||||
'#container--burialSiteTypes'
|
||||
) as HTMLElement
|
||||
|
||||
let lotTypes = exports.lotTypes as LotType[]
|
||||
delete exports.lotTypes
|
||||
let burialSiteTypes = exports.burialSiteTypes as BurialSiteType[]
|
||||
delete exports.burialSiteTypes
|
||||
|
||||
const expandedLotTypes = new Set<number>()
|
||||
const expandedBurialSiteTypes = new Set<number>()
|
||||
|
||||
function toggleBurialSiteTypeFields(clickEvent: Event): void {
|
||||
const toggleButtonElement = clickEvent.currentTarget as HTMLButtonElement
|
||||
|
||||
const lotTypeElement = toggleButtonElement.closest(
|
||||
'.container--lotType'
|
||||
const burialSiteTypeElement = toggleButtonElement.closest(
|
||||
'.container--burialSiteType'
|
||||
) as HTMLElement
|
||||
|
||||
const burialSiteTypeId = Number.parseInt(
|
||||
lotTypeElement.dataset.burialSiteTypeId ?? '',
|
||||
burialSiteTypeElement.dataset.burialSiteTypeId ?? '',
|
||||
10
|
||||
)
|
||||
|
||||
if (expandedLotTypes.has(burialSiteTypeId)) {
|
||||
expandedLotTypes.delete(burialSiteTypeId)
|
||||
if (expandedBurialSiteTypes.has(burialSiteTypeId)) {
|
||||
expandedBurialSiteTypes.delete(burialSiteTypeId)
|
||||
} else {
|
||||
expandedLotTypes.add(burialSiteTypeId)
|
||||
expandedBurialSiteTypes.add(burialSiteTypeId)
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-unsanitized/property
|
||||
toggleButtonElement.innerHTML = expandedLotTypes.has(burialSiteTypeId)
|
||||
toggleButtonElement.innerHTML = expandedBurialSiteTypes.has(
|
||||
burialSiteTypeId
|
||||
)
|
||||
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
|
||||
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'
|
||||
|
||||
const panelBlockElements = lotTypeElement.querySelectorAll(
|
||||
const panelBlockElements = burialSiteTypeElement.querySelectorAll(
|
||||
'.panel-block'
|
||||
) as NodeListOf<HTMLElement>
|
||||
|
||||
|
|
@ -63,25 +72,25 @@ type ResponseJSON =
|
|||
}
|
||||
}
|
||||
|
||||
function lotTypeResponseHandler(rawResponseJSON: unknown): void {
|
||||
function burialSiteTypeResponseHandler(rawResponseJSON: unknown): void {
|
||||
const responseJSON = rawResponseJSON as ResponseJSON
|
||||
if (responseJSON.success) {
|
||||
lotTypes = responseJSON.lotTypes
|
||||
renderLotTypes()
|
||||
burialSiteTypes = responseJSON.burialSiteTypes
|
||||
renderBurialSiteTypes()
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
title: `Error Updating ${los.escapedAliases.Lot} Type`,
|
||||
title: `Error Updating Burial Site Type`,
|
||||
message: responseJSON.errorMessage ?? '',
|
||||
contextualColorName: 'danger'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function deleteLotType(clickEvent: Event): void {
|
||||
function deleteBurialSiteType(clickEvent: Event): void {
|
||||
const burialSiteTypeId = Number.parseInt(
|
||||
(
|
||||
(clickEvent.currentTarget as HTMLElement).closest(
|
||||
'.container--lotType'
|
||||
'.container--burialSiteType'
|
||||
) as HTMLElement
|
||||
).dataset.burialSiteTypeId ?? '',
|
||||
10
|
||||
|
|
@ -93,34 +102,34 @@ type ResponseJSON =
|
|||
{
|
||||
burialSiteTypeId
|
||||
},
|
||||
lotTypeResponseHandler
|
||||
burialSiteTypeResponseHandler
|
||||
)
|
||||
}
|
||||
|
||||
bulmaJS.confirm({
|
||||
title: `Delete ${los.escapedAliases.Lot} Type`,
|
||||
message: `Are you sure you want to delete this ${los.escapedAliases.lot} type?`,
|
||||
title: `Delete Burial Site Type`,
|
||||
message: `Are you sure you want to delete this burial site type?`,
|
||||
contextualColorName: 'warning',
|
||||
okButton: {
|
||||
text: `Yes, Delete ${los.escapedAliases.Lot} Type`,
|
||||
text: `Yes, Delete Burial Site Type`,
|
||||
callbackFunction: doDelete
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function openEditLotType(clickEvent: Event): void {
|
||||
function openEditBurialSiteType(clickEvent: Event): void {
|
||||
const burialSiteTypeId = Number.parseInt(
|
||||
(
|
||||
(clickEvent.currentTarget as HTMLElement).closest(
|
||||
'.container--lotType'
|
||||
'.container--burialSiteType'
|
||||
) as HTMLElement
|
||||
).dataset.burialSiteTypeId ?? '',
|
||||
10
|
||||
)
|
||||
|
||||
const lotType = lotTypes.find(
|
||||
(currentLotType) => burialSiteTypeId === currentLotType.burialSiteTypeId
|
||||
) as LotType
|
||||
const burialSiteType = burialSiteTypes.find(
|
||||
(currentType) => burialSiteTypeId === currentType.burialSiteTypeId
|
||||
) as BurialSiteType
|
||||
|
||||
let editCloseModalFunction: () => void
|
||||
|
||||
|
|
@ -133,7 +142,7 @@ type ResponseJSON =
|
|||
(rawResponseJSON) => {
|
||||
const responseJSON = rawResponseJSON as ResponseJSON
|
||||
|
||||
lotTypeResponseHandler(responseJSON)
|
||||
burialSiteTypeResponseHandler(responseJSON)
|
||||
if (responseJSON.success) {
|
||||
editCloseModalFunction()
|
||||
}
|
||||
|
|
@ -141,25 +150,25 @@ type ResponseJSON =
|
|||
)
|
||||
}
|
||||
|
||||
cityssm.openHtmlModal('adminLotTypes-editLotType', {
|
||||
cityssm.openHtmlModal('adminBurialSiteTypes-edit', {
|
||||
onshow(modalElement) {
|
||||
los.populateAliases(modalElement)
|
||||
;(
|
||||
modalElement.querySelector(
|
||||
'#lotTypeEdit--burialSiteTypeId'
|
||||
'#burialSiteTypeEdit--burialSiteTypeId'
|
||||
) as HTMLInputElement
|
||||
).value = burialSiteTypeId.toString()
|
||||
;(
|
||||
modalElement.querySelector(
|
||||
'#lotTypeEdit--lotType'
|
||||
'#burialSiteTypeEdit--burialSiteType'
|
||||
) as HTMLInputElement
|
||||
).value = lotType.lotType
|
||||
).value = burialSiteType.burialSiteType
|
||||
},
|
||||
onshown(modalElement, closeModalFunction) {
|
||||
editCloseModalFunction = closeModalFunction
|
||||
;(
|
||||
modalElement.querySelector(
|
||||
'#lotTypeEdit--lotType'
|
||||
'#burialSiteTypeEdit--burialSiteType'
|
||||
) as HTMLInputElement
|
||||
).focus()
|
||||
|
||||
|
|
@ -173,11 +182,11 @@ type ResponseJSON =
|
|||
})
|
||||
}
|
||||
|
||||
function openAddLotTypeField(clickEvent: Event): void {
|
||||
function openAddBurialSiteTypeField(clickEvent: Event): void {
|
||||
const burialSiteTypeId = Number.parseInt(
|
||||
(
|
||||
(clickEvent.currentTarget as HTMLElement).closest(
|
||||
'.container--lotType'
|
||||
'.container--burialSiteType'
|
||||
) as HTMLElement
|
||||
).dataset.burialSiteTypeId ?? '',
|
||||
10
|
||||
|
|
@ -194,28 +203,28 @@ type ResponseJSON =
|
|||
(rawResponseJSON) => {
|
||||
const responseJSON = rawResponseJSON as ResponseJSON
|
||||
|
||||
expandedLotTypes.add(burialSiteTypeId)
|
||||
lotTypeResponseHandler(responseJSON)
|
||||
expandedBurialSiteTypes.add(burialSiteTypeId)
|
||||
burialSiteTypeResponseHandler(responseJSON)
|
||||
|
||||
if (responseJSON.success) {
|
||||
addCloseModalFunction()
|
||||
openEditLotTypeField(
|
||||
openEditBurialSiteTypeField(
|
||||
burialSiteTypeId,
|
||||
responseJSON.lotTypeFieldId as number
|
||||
responseJSON.burialSiteTypeFieldId as number
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
cityssm.openHtmlModal('adminLotTypes-addBurialSiteTypeField', {
|
||||
cityssm.openHtmlModal('adminBurialSiteTypes-addField', {
|
||||
onshow(modalElement) {
|
||||
los.populateAliases(modalElement)
|
||||
|
||||
if (burialSiteTypeId) {
|
||||
;(
|
||||
modalElement.querySelector(
|
||||
'#lotTypeFieldAdd--burialSiteTypeId'
|
||||
'#burialSiteTypeFieldAdd--burialSiteTypeId'
|
||||
) as HTMLInputElement
|
||||
).value = burialSiteTypeId.toString()
|
||||
}
|
||||
|
|
@ -224,7 +233,7 @@ type ResponseJSON =
|
|||
addCloseModalFunction = closeModalFunction
|
||||
;(
|
||||
modalElement.querySelector(
|
||||
'#lotTypeFieldAdd--lotTypeField'
|
||||
'#burialSiteTypeFieldAdd--burialSiteTypeField'
|
||||
) as HTMLInputElement
|
||||
).focus()
|
||||
|
||||
|
|
@ -238,45 +247,48 @@ type ResponseJSON =
|
|||
})
|
||||
}
|
||||
|
||||
function moveLotType(clickEvent: MouseEvent): void {
|
||||
function moveBurialSiteType(clickEvent: MouseEvent): void {
|
||||
const buttonElement = clickEvent.currentTarget as HTMLButtonElement
|
||||
|
||||
const burialSiteTypeId = (
|
||||
buttonElement.closest('.container--lotType') as HTMLElement
|
||||
buttonElement.closest('.container--burialSiteType') as HTMLElement
|
||||
).dataset.burialSiteTypeId
|
||||
|
||||
cityssm.postJSON(
|
||||
`${los.urlPrefix}/admin/${
|
||||
buttonElement.dataset.direction === 'up'
|
||||
? 'doMoveBurialSiteTypeUp'
|
||||
: 'doMoveBurialSiteTypeDown'
|
||||
: // eslint-disable-next-line no-secrets/no-secrets
|
||||
'doMoveBurialSiteTypeDown'
|
||||
}`,
|
||||
{
|
||||
burialSiteTypeId,
|
||||
moveToEnd: clickEvent.shiftKey ? '1' : '0'
|
||||
},
|
||||
lotTypeResponseHandler
|
||||
burialSiteTypeResponseHandler
|
||||
)
|
||||
}
|
||||
|
||||
function openEditLotTypeField(
|
||||
function openEditBurialSiteTypeField(
|
||||
burialSiteTypeId: number,
|
||||
lotTypeFieldId: number
|
||||
burialSiteTypeFieldId: number
|
||||
): void {
|
||||
const lotType = lotTypes.find(
|
||||
(currentLotType) => currentLotType.burialSiteTypeId === burialSiteTypeId
|
||||
) as LotType
|
||||
const burialSiteType = burialSiteTypes.find(
|
||||
(currentType) => currentType.burialSiteTypeId === burialSiteTypeId
|
||||
) as BurialSiteType
|
||||
|
||||
const lotTypeField = (lotType.BurialSiteTypeFields ?? []).find(
|
||||
(currentLotTypeField) =>
|
||||
currentLotTypeField.lotTypeFieldId === lotTypeFieldId
|
||||
) as LotTypeField
|
||||
const burialSiteTypeField = (
|
||||
burialSiteType.burialSiteTypeFields ?? []
|
||||
).find(
|
||||
(currentField) =>
|
||||
currentField.burialSiteTypeFieldId === burialSiteTypeFieldId
|
||||
) as BurialSiteTypeField
|
||||
|
||||
let fieldTypeElement: HTMLSelectElement
|
||||
let minLengthInputElement: HTMLInputElement
|
||||
let maxLengthInputElement: HTMLInputElement
|
||||
let patternElement: HTMLInputElement
|
||||
let lotTypeFieldValuesElement: HTMLTextAreaElement
|
||||
let fieldValuesElement: HTMLTextAreaElement
|
||||
|
||||
let editCloseModalFunction: () => void
|
||||
|
||||
|
|
@ -290,21 +302,21 @@ type ResponseJSON =
|
|||
minLengthInputElement.disabled = true
|
||||
maxLengthInputElement.disabled = true
|
||||
patternElement.disabled = true
|
||||
lotTypeFieldValuesElement.disabled = true
|
||||
fieldValuesElement.disabled = true
|
||||
break
|
||||
}
|
||||
case 'select': {
|
||||
minLengthInputElement.disabled = true
|
||||
maxLengthInputElement.disabled = true
|
||||
patternElement.disabled = true
|
||||
lotTypeFieldValuesElement.disabled = false
|
||||
fieldValuesElement.disabled = false
|
||||
break
|
||||
}
|
||||
default: {
|
||||
minLengthInputElement.disabled = false
|
||||
maxLengthInputElement.disabled = false
|
||||
patternElement.disabled = false
|
||||
lotTypeFieldValuesElement.disabled = true
|
||||
fieldValuesElement.disabled = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
|
@ -319,7 +331,7 @@ type ResponseJSON =
|
|||
(rawResponseJSON) => {
|
||||
const responseJSON = rawResponseJSON as ResponseJSON
|
||||
|
||||
lotTypeResponseHandler(responseJSON)
|
||||
burialSiteTypeResponseHandler(responseJSON)
|
||||
if (responseJSON.success) {
|
||||
editCloseModalFunction()
|
||||
}
|
||||
|
|
@ -331,12 +343,12 @@ type ResponseJSON =
|
|||
cityssm.postJSON(
|
||||
`${los.urlPrefix}/admin/doDeleteBurialSiteTypeField`,
|
||||
{
|
||||
lotTypeFieldId
|
||||
burialSiteTypeFieldId
|
||||
},
|
||||
(rawResponseJSON) => {
|
||||
const responseJSON = rawResponseJSON as ResponseJSON
|
||||
|
||||
lotTypeResponseHandler(responseJSON)
|
||||
burialSiteTypeResponseHandler(responseJSON)
|
||||
if (responseJSON.success) {
|
||||
editCloseModalFunction()
|
||||
}
|
||||
|
|
@ -357,56 +369,56 @@ type ResponseJSON =
|
|||
})
|
||||
}
|
||||
|
||||
cityssm.openHtmlModal('adminLotTypes-editLotTypeField', {
|
||||
cityssm.openHtmlModal('adminBurialSiteTypes-editField', {
|
||||
onshow(modalElement) {
|
||||
los.populateAliases(modalElement)
|
||||
;(
|
||||
modalElement.querySelector(
|
||||
'#lotTypeFieldEdit--lotTypeFieldId'
|
||||
'#burialSiteTypeFieldEdit--burialSiteTypeFieldId'
|
||||
) as HTMLInputElement
|
||||
).value = lotTypeField.lotTypeFieldId.toString()
|
||||
).value = burialSiteTypeField.burialSiteTypeFieldId.toString()
|
||||
;(
|
||||
modalElement.querySelector(
|
||||
'#lotTypeFieldEdit--lotTypeField'
|
||||
'#burialSiteTypeFieldEdit--burialSiteTypeField'
|
||||
) as HTMLInputElement
|
||||
).value = lotTypeField.lotTypeField ?? ''
|
||||
).value = burialSiteTypeField.burialSiteTypeField ?? ''
|
||||
;(
|
||||
modalElement.querySelector(
|
||||
'#lotTypeFieldEdit--isRequired'
|
||||
'#burialSiteTypeFieldEdit--isRequired'
|
||||
) as HTMLSelectElement
|
||||
).value = lotTypeField.isRequired ? '1' : '0'
|
||||
).value = burialSiteTypeField.isRequired ?? false ? '1' : '0'
|
||||
|
||||
fieldTypeElement = modalElement.querySelector(
|
||||
'#lotTypeFieldEdit--fieldType'
|
||||
'#burialSiteTypeFieldEdit--fieldType'
|
||||
) as HTMLSelectElement
|
||||
|
||||
fieldTypeElement.value = lotTypeField.fieldType
|
||||
fieldTypeElement.value = burialSiteTypeField.fieldType
|
||||
|
||||
minLengthInputElement = modalElement.querySelector(
|
||||
'#lotTypeFieldEdit--minLength'
|
||||
'#burialSiteTypeFieldEdit--minLength'
|
||||
) as HTMLInputElement
|
||||
|
||||
minLengthInputElement.value =
|
||||
lotTypeField.minLength?.toString() ?? ''
|
||||
burialSiteTypeField.minLength?.toString() ?? ''
|
||||
|
||||
maxLengthInputElement = modalElement.querySelector(
|
||||
'#lotTypeFieldEdit--maxLength'
|
||||
'#burialSiteTypeFieldEdit--maxLength'
|
||||
) as HTMLInputElement
|
||||
|
||||
maxLengthInputElement.value =
|
||||
lotTypeField.maxLength?.toString() ?? ''
|
||||
burialSiteTypeField.maxLength?.toString() ?? ''
|
||||
|
||||
patternElement = modalElement.querySelector(
|
||||
'#lotTypeFieldEdit--pattern'
|
||||
'#burialSiteTypeFieldEdit--pattern'
|
||||
) as HTMLInputElement
|
||||
|
||||
patternElement.value = lotTypeField.pattern ?? ''
|
||||
patternElement.value = burialSiteTypeField.pattern ?? ''
|
||||
|
||||
lotTypeFieldValuesElement = modalElement.querySelector(
|
||||
'#lotTypeFieldEdit--lotTypeFieldValues'
|
||||
fieldValuesElement = modalElement.querySelector(
|
||||
'#burialSiteTypeFieldEdit--fieldValues'
|
||||
) as HTMLTextAreaElement
|
||||
|
||||
lotTypeFieldValuesElement.value = lotTypeField.lotTypeFieldValues ?? ''
|
||||
fieldValuesElement.value = burialSiteTypeField.fieldValues ?? ''
|
||||
|
||||
toggleInputFields()
|
||||
},
|
||||
|
|
@ -425,7 +437,7 @@ type ResponseJSON =
|
|||
fieldTypeElement.addEventListener('change', toggleInputFields)
|
||||
|
||||
modalElement
|
||||
.querySelector('#button--deleteLotTypeField')
|
||||
.querySelector('#button--deleteBurialSiteTypeField')
|
||||
?.addEventListener('click', confirmDoDelete)
|
||||
},
|
||||
onremoved() {
|
||||
|
|
@ -435,166 +447,168 @@ type ResponseJSON =
|
|||
})
|
||||
}
|
||||
|
||||
function openEditLotTypeFieldByClick(clickEvent: Event): void {
|
||||
function openEditBurialSiteTypeFieldByClick(clickEvent: Event): void {
|
||||
clickEvent.preventDefault()
|
||||
|
||||
const lotTypeFieldId = Number.parseInt(
|
||||
const burialSiteTypeFieldId = Number.parseInt(
|
||||
(
|
||||
(clickEvent.currentTarget as HTMLElement).closest(
|
||||
'.container--lotTypeField'
|
||||
'.container--burialSiteTypeField'
|
||||
) as HTMLElement
|
||||
).dataset.lotTypeFieldId ?? '',
|
||||
).dataset.burialSiteTypeFieldId ?? '',
|
||||
10
|
||||
)
|
||||
|
||||
const burialSiteTypeId = Number.parseInt(
|
||||
(
|
||||
(clickEvent.currentTarget as HTMLElement).closest(
|
||||
'.container--lotType'
|
||||
'.container--burialSiteType'
|
||||
) as HTMLElement
|
||||
).dataset.burialSiteTypeId ?? '',
|
||||
10
|
||||
)
|
||||
|
||||
openEditLotTypeField(burialSiteTypeId, lotTypeFieldId)
|
||||
openEditBurialSiteTypeField(burialSiteTypeId, burialSiteTypeFieldId)
|
||||
}
|
||||
|
||||
function moveLotTypeField(clickEvent: MouseEvent): void {
|
||||
function moveBurialSiteTypeField(clickEvent: MouseEvent): void {
|
||||
const buttonElement = clickEvent.currentTarget as HTMLButtonElement
|
||||
|
||||
const lotTypeFieldId = (
|
||||
buttonElement.closest('.container--lotTypeField') as HTMLElement
|
||||
).dataset.lotTypeFieldId
|
||||
const burialSiteTypeFieldId = (
|
||||
buttonElement.closest('.container--burialSiteTypeField') as HTMLElement
|
||||
).dataset.burialSiteTypeFieldId
|
||||
|
||||
cityssm.postJSON(
|
||||
`${los.urlPrefix}/admin/${
|
||||
buttonElement.dataset.direction === 'up'
|
||||
? 'doMoveBurialSiteTypeFieldUp'
|
||||
: 'doMoveBurialSiteTypeFieldDown'
|
||||
: // eslint-disable-next-line no-secrets/no-secrets
|
||||
'doMoveBurialSiteTypeFieldDown'
|
||||
}`,
|
||||
{
|
||||
lotTypeFieldId,
|
||||
burialSiteTypeFieldId,
|
||||
moveToEnd: clickEvent.shiftKey ? '1' : '0'
|
||||
},
|
||||
lotTypeResponseHandler
|
||||
burialSiteTypeResponseHandler
|
||||
)
|
||||
}
|
||||
|
||||
function renderBurialSiteTypeFields(
|
||||
panelElement: HTMLElement,
|
||||
burialSiteTypeId: number,
|
||||
BurialSiteTypeFields: LotTypeField[]
|
||||
burialSiteTypeFields: BurialSiteTypeField[]
|
||||
): void {
|
||||
if (BurialSiteTypeFields.length === 0) {
|
||||
if (burialSiteTypeFields.length === 0) {
|
||||
// eslint-disable-next-line no-unsanitized/method
|
||||
panelElement.insertAdjacentHTML(
|
||||
'beforeend',
|
||||
`<div class="panel-block is-block
|
||||
${expandedLotTypes.has(burialSiteTypeId) ? '' : ' is-hidden'}">
|
||||
${expandedBurialSiteTypes.has(burialSiteTypeId) ? '' : ' is-hidden'}">
|
||||
<div class="message is-info"><p class="message-body">There are no additional fields.</p></div>
|
||||
</div>`
|
||||
)
|
||||
} else {
|
||||
for (const lotTypeField of BurialSiteTypeFields) {
|
||||
for (const burialSiteTypeField of burialSiteTypeFields) {
|
||||
const panelBlockElement = document.createElement('div')
|
||||
panelBlockElement.className =
|
||||
'panel-block is-block container--lotTypeField'
|
||||
'panel-block is-block container--burialSiteTypeField'
|
||||
|
||||
if (!expandedLotTypes.has(burialSiteTypeId)) {
|
||||
if (!expandedBurialSiteTypes.has(burialSiteTypeId)) {
|
||||
panelBlockElement.classList.add('is-hidden')
|
||||
}
|
||||
|
||||
panelBlockElement.dataset.lotTypeFieldId =
|
||||
lotTypeField.lotTypeFieldId.toString()
|
||||
panelBlockElement.dataset.burialSiteTypeFieldId =
|
||||
burialSiteTypeField.burialSiteTypeFieldId.toString()
|
||||
|
||||
// eslint-disable-next-line no-unsanitized/property
|
||||
panelBlockElement.innerHTML = `<div class="level is-mobile">
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
<a class="has-text-weight-bold button--editLotTypeField" href="#">
|
||||
${cityssm.escapeHTML(lotTypeField.lotTypeField ?? '')}
|
||||
<a class="has-text-weight-bold button--editBurialSiteTypeField" href="#">
|
||||
${cityssm.escapeHTML(burialSiteTypeField.burialSiteTypeField ?? '')}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-right">
|
||||
<div class="level-item">
|
||||
${los.getMoveUpDownButtonFieldHTML(
|
||||
'button--moveLotTypeFieldUp',
|
||||
'button--moveLotTypeFieldDown'
|
||||
'button--moveBurialSiteTypeFieldUp',
|
||||
// eslint-disable-next-line no-secrets/no-secrets
|
||||
'button--moveBurialSiteTypeFieldDown'
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
panelBlockElement
|
||||
.querySelector('.button--editLotTypeField')
|
||||
?.addEventListener('click', openEditLotTypeFieldByClick)
|
||||
.querySelector('.button--editBurialSiteTypeField')
|
||||
?.addEventListener('click', openEditBurialSiteTypeFieldByClick)
|
||||
;(
|
||||
panelBlockElement.querySelector(
|
||||
'.button--moveLotTypeFieldUp'
|
||||
'.button--moveBurialSiteTypeFieldUp'
|
||||
) as HTMLButtonElement
|
||||
).addEventListener('click', moveLotTypeField)
|
||||
).addEventListener('click', moveBurialSiteTypeField)
|
||||
;(
|
||||
panelBlockElement.querySelector(
|
||||
'.button--moveLotTypeFieldDown'
|
||||
'.button--moveBurialSiteTypeFieldDown'
|
||||
) as HTMLButtonElement
|
||||
).addEventListener('click', moveLotTypeField)
|
||||
).addEventListener('click', moveBurialSiteTypeField)
|
||||
|
||||
panelElement.append(panelBlockElement)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function renderLotTypes(): void {
|
||||
function renderBurialSiteTypes(): void {
|
||||
containerElement.innerHTML = ''
|
||||
|
||||
if (lotTypes.length === 0) {
|
||||
// eslint-disable-next-line no-unsanitized/method
|
||||
if (burialSiteTypes.length === 0) {
|
||||
containerElement.insertAdjacentHTML(
|
||||
'afterbegin',
|
||||
`<div class="message is-warning>
|
||||
<p class="message-body">There are no active ${los.escapedAliases.lot} types.</p>
|
||||
`<div class="message is-warning">
|
||||
<p class="message-body">There are no active burial site types.</p>
|
||||
</div>`
|
||||
)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
for (const lotType of lotTypes) {
|
||||
const lotTypeContainer = document.createElement('div')
|
||||
for (const burialSiteType of burialSiteTypes) {
|
||||
const burialSiteTypeContainer = document.createElement('div')
|
||||
|
||||
lotTypeContainer.className = 'panel container--lotType'
|
||||
burialSiteTypeContainer.className = 'panel container--burialSiteType'
|
||||
|
||||
lotTypeContainer.dataset.burialSiteTypeId = lotType.burialSiteTypeId.toString()
|
||||
burialSiteTypeContainer.dataset.burialSiteTypeId =
|
||||
burialSiteType.burialSiteTypeId.toString()
|
||||
|
||||
// eslint-disable-next-line no-unsanitized/property
|
||||
lotTypeContainer.innerHTML = `<div class="panel-heading">
|
||||
burialSiteTypeContainer.innerHTML = `<div class="panel-heading">
|
||||
<div class="level is-mobile">
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
<button class="button is-small button--toggleBurialSiteTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">
|
||||
${
|
||||
expandedLotTypes.has(lotType.burialSiteTypeId)
|
||||
expandedBurialSiteTypes.has(burialSiteType.burialSiteTypeId)
|
||||
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
|
||||
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'
|
||||
}
|
||||
</button>
|
||||
</div>
|
||||
<div class="level-item">
|
||||
<h2 class="title is-4">${cityssm.escapeHTML(lotType.lotType)}</h2>
|
||||
<h2 class="title is-4">${cityssm.escapeHTML(burialSiteType.burialSiteType)}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-right">
|
||||
<div class="level-item">
|
||||
<button class="button is-danger is-small button--deleteLotType" type="button">
|
||||
<button class="button is-danger is-small button--deleteBurialSiteType" type="button">
|
||||
<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>
|
||||
<span>Delete</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="level-item">
|
||||
<button class="button is-primary is-small button--editLotType" type="button">
|
||||
<button class="button is-primary is-small button--editBurialSiteType" type="button">
|
||||
<span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>
|
||||
<span>Edit ${los.escapedAliases.Lot} Type</span>
|
||||
<span>Edit Burial Site Type</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="level-item">
|
||||
|
|
@ -605,8 +619,8 @@ type ResponseJSON =
|
|||
</div>
|
||||
<div class="level-item">
|
||||
${los.getMoveUpDownButtonFieldHTML(
|
||||
'button--moveLotTypeUp',
|
||||
'button--moveLotTypeDown'
|
||||
'button--moveBurialSiteTypeUp',
|
||||
'button--moveBurialSiteTypeDown'
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -614,38 +628,38 @@ type ResponseJSON =
|
|||
</div>`
|
||||
|
||||
renderBurialSiteTypeFields(
|
||||
lotTypeContainer,
|
||||
lotType.burialSiteTypeId,
|
||||
lotType.BurialSiteTypeFields ?? []
|
||||
burialSiteTypeContainer,
|
||||
burialSiteType.burialSiteTypeId,
|
||||
burialSiteType.burialSiteTypeFields ?? []
|
||||
)
|
||||
|
||||
lotTypeContainer
|
||||
burialSiteTypeContainer
|
||||
.querySelector('.button--toggleBurialSiteTypeFields')
|
||||
?.addEventListener('click', toggleBurialSiteTypeFields)
|
||||
|
||||
lotTypeContainer
|
||||
.querySelector('.button--deleteLotType')
|
||||
?.addEventListener('click', deleteLotType)
|
||||
burialSiteTypeContainer
|
||||
.querySelector('.button--deleteBurialSiteType')
|
||||
?.addEventListener('click', deleteBurialSiteType)
|
||||
|
||||
lotTypeContainer
|
||||
.querySelector('.button--editLotType')
|
||||
?.addEventListener('click', openEditLotType)
|
||||
burialSiteTypeContainer
|
||||
.querySelector('.button--editBurialSiteType')
|
||||
?.addEventListener('click', openEditBurialSiteType)
|
||||
|
||||
lotTypeContainer
|
||||
burialSiteTypeContainer
|
||||
.querySelector('.button--addBurialSiteTypeField')
|
||||
?.addEventListener('click', openAddLotTypeField)
|
||||
?.addEventListener('click', openAddBurialSiteTypeField)
|
||||
;(
|
||||
lotTypeContainer.querySelector(
|
||||
'.button--moveLotTypeUp'
|
||||
burialSiteTypeContainer.querySelector(
|
||||
'.button--moveBurialSiteTypeUp'
|
||||
) as HTMLButtonElement
|
||||
).addEventListener('click', moveLotType)
|
||||
).addEventListener('click', moveBurialSiteType)
|
||||
;(
|
||||
lotTypeContainer.querySelector(
|
||||
'.button--moveLotTypeDown'
|
||||
burialSiteTypeContainer.querySelector(
|
||||
'.button--moveBurialSiteTypeDown'
|
||||
) as HTMLButtonElement
|
||||
).addEventListener('click', moveLotType)
|
||||
).addEventListener('click', moveBurialSiteType)
|
||||
|
||||
containerElement.append(lotTypeContainer)
|
||||
containerElement.append(burialSiteTypeContainer)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -658,18 +672,18 @@ type ResponseJSON =
|
|||
submitEvent.preventDefault()
|
||||
|
||||
cityssm.postJSON(
|
||||
`${los.urlPrefix}/admin/doAddLotType`,
|
||||
`${los.urlPrefix}/admin/doAddBurialSiteType`,
|
||||
submitEvent.currentTarget,
|
||||
(rawResponseJSON) => {
|
||||
const responseJSON = rawResponseJSON as ResponseJSON
|
||||
|
||||
if (responseJSON.success) {
|
||||
addCloseModalFunction()
|
||||
lotTypes = responseJSON.lotTypes
|
||||
renderLotTypes()
|
||||
burialSiteTypes = responseJSON.burialSiteTypes
|
||||
renderBurialSiteTypes()
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
title: `Error Adding ${los.escapedAliases.Lot} Type`,
|
||||
title: `Error Adding Burial Site Type`,
|
||||
message: responseJSON.errorMessage ?? '',
|
||||
contextualColorName: 'danger'
|
||||
})
|
||||
|
|
@ -678,7 +692,7 @@ type ResponseJSON =
|
|||
)
|
||||
}
|
||||
|
||||
cityssm.openHtmlModal('adminLotTypes-addBurialSiteType', {
|
||||
cityssm.openHtmlModal('adminBurialSiteTypes-add', {
|
||||
onshow(modalElement) {
|
||||
los.populateAliases(modalElement)
|
||||
},
|
||||
|
|
@ -686,7 +700,7 @@ type ResponseJSON =
|
|||
addCloseModalFunction = closeModalFunction
|
||||
;(
|
||||
modalElement.querySelector(
|
||||
'#lotTypeAdd--lotType'
|
||||
'#burialSiteTypeAdd--burialSiteType'
|
||||
) as HTMLInputElement
|
||||
).focus()
|
||||
|
||||
|
|
@ -700,5 +714,5 @@ type ResponseJSON =
|
|||
})
|
||||
})
|
||||
|
||||
renderLotTypes()
|
||||
renderBurialSiteTypes()
|
||||
})()
|
||||
|
|
|
|||
|
|
@ -29,23 +29,23 @@
|
|||
</h1>
|
||||
</div>
|
||||
<div class="column has-text-right is-narrow">
|
||||
<button class="button is-success" id="button--addLotType" type="button" accesskey="n">
|
||||
<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--lotTypes"></div>
|
||||
<div id="container--burialSiteTypes"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%- include('_footerA'); -%>
|
||||
|
||||
<script>
|
||||
exports.lotTypes = <%- JSON.stringify(lotTypes) %>;
|
||||
exports.burialSiteTypes = <%- JSON.stringify(burialSiteTypes) %>;
|
||||
</script>
|
||||
|
||||
<script src="<%= urlPrefix %>/javascripts/adminLotTypes.js"></script>
|
||||
<script src="<%= urlPrefix %>/javascripts/burialSiteTypes.admin.js"></script>
|
||||
|
||||
<%- include('_footerB'); -%>
|
||||
|
|
|
|||
Loading…
Reference in New Issue