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