From 1edb2e3e883d9e9257fa49330bfbbb64a624be6c Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Wed, 4 Jan 2023 14:55:08 -0500 Subject: [PATCH] reduce move duplication --- handlers/admin-post/doMoveLotTypeDown.js | 2 +- handlers/admin-post/doMoveLotTypeDown.ts | 2 +- handlers/admin-post/doMoveLotTypeFieldDown.js | 2 +- handlers/admin-post/doMoveLotTypeFieldDown.ts | 2 +- handlers/admin-post/doMoveLotTypeFieldUp.js | 2 +- handlers/admin-post/doMoveLotTypeFieldUp.ts | 2 +- handlers/admin-post/doMoveLotTypeUp.js | 2 +- handlers/admin-post/doMoveLotTypeUp.ts | 2 +- public-typescript/adminLotTypes.js | 54 +++--- public-typescript/adminLotTypes.ts | 169 +++++++----------- public/javascripts/adminLotTypes.min.js | 2 +- 11 files changed, 99 insertions(+), 142 deletions(-) diff --git a/handlers/admin-post/doMoveLotTypeDown.js b/handlers/admin-post/doMoveLotTypeDown.js index 2c99d00e..19b391a9 100644 --- a/handlers/admin-post/doMoveLotTypeDown.js +++ b/handlers/admin-post/doMoveLotTypeDown.js @@ -1,7 +1,7 @@ import { moveLotTypeDown, moveLotTypeDownToBottom } from "../../helpers/lotOccupancyDB/moveLotTypeDown.js"; import { getLotTypes } from "../../helpers/functions.cache.js"; export const handler = async (request, response) => { - const success = request.body.moveToBottom === "1" + const success = request.body.moveToEnd === "1" ? moveLotTypeDownToBottom(request.body.lotTypeId) : moveLotTypeDown(request.body.lotTypeId); const lotTypes = getLotTypes(); diff --git a/handlers/admin-post/doMoveLotTypeDown.ts b/handlers/admin-post/doMoveLotTypeDown.ts index a7aef985..b23b77c1 100644 --- a/handlers/admin-post/doMoveLotTypeDown.ts +++ b/handlers/admin-post/doMoveLotTypeDown.ts @@ -9,7 +9,7 @@ import { getLotTypes } from "../../helpers/functions.cache.js"; export const handler: RequestHandler = async (request, response) => { const success = - request.body.moveToBottom === "1" + request.body.moveToEnd === "1" ? moveLotTypeDownToBottom(request.body.lotTypeId) : moveLotTypeDown(request.body.lotTypeId); diff --git a/handlers/admin-post/doMoveLotTypeFieldDown.js b/handlers/admin-post/doMoveLotTypeFieldDown.js index 774ebf99..fe5edc3e 100644 --- a/handlers/admin-post/doMoveLotTypeFieldDown.js +++ b/handlers/admin-post/doMoveLotTypeFieldDown.js @@ -1,7 +1,7 @@ import { moveLotTypeFieldDown, moveLotTypeFieldDownToBottom } from "../../helpers/lotOccupancyDB/moveLotTypeFieldDown.js"; import { getLotTypes } from "../../helpers/functions.cache.js"; export const handler = async (request, response) => { - const success = request.body.moveToBottom === "1" + const success = request.body.moveToEnd === "1" ? moveLotTypeFieldDownToBottom(request.body.lotTypeFieldId) : moveLotTypeFieldDown(request.body.lotTypeFieldId); const lotTypes = getLotTypes(); diff --git a/handlers/admin-post/doMoveLotTypeFieldDown.ts b/handlers/admin-post/doMoveLotTypeFieldDown.ts index 930ec9aa..8a3d91f6 100644 --- a/handlers/admin-post/doMoveLotTypeFieldDown.ts +++ b/handlers/admin-post/doMoveLotTypeFieldDown.ts @@ -9,7 +9,7 @@ import { getLotTypes } from "../../helpers/functions.cache.js"; export const handler: RequestHandler = async (request, response) => { const success = - request.body.moveToBottom === "1" + request.body.moveToEnd === "1" ? moveLotTypeFieldDownToBottom(request.body.lotTypeFieldId) : moveLotTypeFieldDown(request.body.lotTypeFieldId); diff --git a/handlers/admin-post/doMoveLotTypeFieldUp.js b/handlers/admin-post/doMoveLotTypeFieldUp.js index 688b1051..dbfd7ffa 100644 --- a/handlers/admin-post/doMoveLotTypeFieldUp.js +++ b/handlers/admin-post/doMoveLotTypeFieldUp.js @@ -1,7 +1,7 @@ import { moveLotTypeFieldUp, moveLotTypeFieldUpToTop } from "../../helpers/lotOccupancyDB/moveLotTypeFieldUp.js"; import { getLotTypes } from "../../helpers/functions.cache.js"; export const handler = async (request, response) => { - const success = request.body.moveToTop === "1" + const success = request.body.moveToEnd === "1" ? moveLotTypeFieldUpToTop(request.body.lotTypeFieldId) : moveLotTypeFieldUp(request.body.lotTypeFieldId); const lotTypes = getLotTypes(); diff --git a/handlers/admin-post/doMoveLotTypeFieldUp.ts b/handlers/admin-post/doMoveLotTypeFieldUp.ts index ab1a5787..479d8762 100644 --- a/handlers/admin-post/doMoveLotTypeFieldUp.ts +++ b/handlers/admin-post/doMoveLotTypeFieldUp.ts @@ -9,7 +9,7 @@ import { getLotTypes } from "../../helpers/functions.cache.js"; export const handler: RequestHandler = async (request, response) => { const success = - request.body.moveToTop === "1" + request.body.moveToEnd === "1" ? moveLotTypeFieldUpToTop(request.body.lotTypeFieldId) : moveLotTypeFieldUp(request.body.lotTypeFieldId); diff --git a/handlers/admin-post/doMoveLotTypeUp.js b/handlers/admin-post/doMoveLotTypeUp.js index c5096590..1deb548b 100644 --- a/handlers/admin-post/doMoveLotTypeUp.js +++ b/handlers/admin-post/doMoveLotTypeUp.js @@ -1,7 +1,7 @@ import { moveLotTypeUp, moveLotTypeUpToTop } from "../../helpers/lotOccupancyDB/moveLotTypeUp.js"; import { getLotTypes } from "../../helpers/functions.cache.js"; export const handler = async (request, response) => { - const success = request.body.moveToTop === "1" + const success = request.body.moveToEnd === "1" ? moveLotTypeUpToTop(request.body.lotTypeId) : moveLotTypeUp(request.body.lotTypeId); const lotTypes = getLotTypes(); diff --git a/handlers/admin-post/doMoveLotTypeUp.ts b/handlers/admin-post/doMoveLotTypeUp.ts index 8f62d9f2..530c0578 100644 --- a/handlers/admin-post/doMoveLotTypeUp.ts +++ b/handlers/admin-post/doMoveLotTypeUp.ts @@ -6,7 +6,7 @@ import { getLotTypes } from "../../helpers/functions.cache.js"; export const handler: RequestHandler = async (request, response) => { const success = - request.body.moveToTop === "1" + request.body.moveToEnd === "1" ? moveLotTypeUpToTop(request.body.lotTypeId) : moveLotTypeUp(request.body.lotTypeId); diff --git a/public-typescript/adminLotTypes.js b/public-typescript/adminLotTypes.js index a6f97de3..aadc6af1 100644 --- a/public-typescript/adminLotTypes.js +++ b/public-typescript/adminLotTypes.js @@ -121,20 +121,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); } }); } - function moveLotTypeUp(clickEvent) { - clickEvent.preventDefault(); - const lotTypeId = clickEvent.currentTarget.closest(".container--lotType").dataset.lotTypeId; - cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotTypeUp", { + function moveLotType(clickEvent) { + const buttonElement = clickEvent.currentTarget; + const lotTypeId = buttonElement.closest(".container--lotType").dataset + .lotTypeId; + cityssm.postJSON(los.urlPrefix + + "/admin/" + + (buttonElement.dataset.direction === "up" + ? "doMoveLotTypeUp" + : "doMoveLotTypeDown"), { lotTypeId, - moveToTop: clickEvent.shiftKey ? "1" : "0" - }, lotTypeResponseHandler); - } - function moveLotTypeDown(clickEvent) { - clickEvent.preventDefault(); - const lotTypeId = clickEvent.currentTarget.closest(".container--lotType").dataset.lotTypeId; - cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotTypeDown", { - lotTypeId, - moveToBottom: clickEvent.shiftKey ? "1" : "0" + moveToEnd: clickEvent.shiftKey ? "1" : "0" }, lotTypeResponseHandler); } function openEditLotTypeField(lotTypeId, lotTypeFieldId) { @@ -235,20 +232,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest(".container--lotType").dataset.lotTypeId, 10); openEditLotTypeField(lotTypeId, lotTypeFieldId); } - function moveLotTypeFieldUp(clickEvent) { - clickEvent.preventDefault(); - const lotTypeFieldId = clickEvent.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId; - cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotTypeFieldUp", { + function moveLotTypeField(clickEvent) { + const buttonElement = clickEvent.currentTarget; + const lotTypeFieldId = buttonElement.closest(".container--lotTypeField") + .dataset.lotTypeFieldId; + cityssm.postJSON(los.urlPrefix + + "/admin/" + + (buttonElement.dataset.direction === "up" + ? "doMoveLotTypeFieldUp" + : "doMoveLotTypeFieldDown"), { lotTypeFieldId, - moveToTop: clickEvent.shiftKey ? "1" : "0" - }, lotTypeResponseHandler); - } - function moveLotTypeFieldDown(clickEvent) { - clickEvent.preventDefault(); - const lotTypeFieldId = clickEvent.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId; - cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotTypeFieldDown", { - lotTypeFieldId, - moveToBottom: clickEvent.shiftKey ? "1" : "0" + moveToEnd: clickEvent.shiftKey ? "1" : "0" }, lotTypeResponseHandler); } function renderLotTypeFields(panelElement, lotTypeId, lotTypeFields) { @@ -287,8 +281,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); panelBlockElement .querySelector(".button--editLotTypeField") .addEventListener("click", openEditLotTypeFieldByClick); - panelBlockElement.querySelector(".button--moveLotTypeFieldUp").addEventListener("click", moveLotTypeFieldUp); - panelBlockElement.querySelector(".button--moveLotTypeFieldDown").addEventListener("click", moveLotTypeFieldDown); + panelBlockElement.querySelector(".button--moveLotTypeFieldUp").addEventListener("click", moveLotTypeField); + panelBlockElement.querySelector(".button--moveLotTypeFieldDown").addEventListener("click", moveLotTypeField); panelElement.append(panelBlockElement); } } @@ -362,8 +356,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); lotTypeContainer .querySelector(".button--addLotTypeField") .addEventListener("click", openAddLotTypeField); - lotTypeContainer.querySelector(".button--moveLotTypeUp").addEventListener("click", moveLotTypeUp); - lotTypeContainer.querySelector(".button--moveLotTypeDown").addEventListener("click", moveLotTypeDown); + lotTypeContainer.querySelector(".button--moveLotTypeUp").addEventListener("click", moveLotType); + lotTypeContainer.querySelector(".button--moveLotTypeDown").addEventListener("click", moveLotType); containerElement.append(lotTypeContainer); } } diff --git a/public-typescript/adminLotTypes.ts b/public-typescript/adminLotTypes.ts index 844cda65..e3a4cb48 100644 --- a/public-typescript/adminLotTypes.ts +++ b/public-typescript/adminLotTypes.ts @@ -216,35 +216,21 @@ declare const bulmaJS: BulmaJS; }); } - function moveLotTypeUp(clickEvent: MouseEvent) { - clickEvent.preventDefault(); + function moveLotType(clickEvent: MouseEvent) { + const buttonElement = clickEvent.currentTarget as HTMLButtonElement; - const lotTypeId = ( - (clickEvent.currentTarget as HTMLElement).closest(".container--lotType") as HTMLElement - ).dataset.lotTypeId; + const lotTypeId = (buttonElement.closest(".container--lotType") as HTMLElement).dataset + .lotTypeId; cityssm.postJSON( - los.urlPrefix + "/admin/doMoveLotTypeUp", + los.urlPrefix + + "/admin/" + + (buttonElement.dataset.direction === "up" + ? "doMoveLotTypeUp" + : "doMoveLotTypeDown"), { lotTypeId, - moveToTop: clickEvent.shiftKey ? "1" : "0" - }, - lotTypeResponseHandler - ); - } - - function moveLotTypeDown(clickEvent: MouseEvent) { - clickEvent.preventDefault(); - - const lotTypeId = ( - (clickEvent.currentTarget as HTMLElement).closest(".container--lotType") as HTMLElement - ).dataset.lotTypeId; - - cityssm.postJSON( - los.urlPrefix + "/admin/doMoveLotTypeDown", - { - lotTypeId, - moveToBottom: clickEvent.shiftKey ? "1" : "0" + moveToEnd: clickEvent.shiftKey ? "1" : "0" }, lotTypeResponseHandler ); @@ -428,39 +414,21 @@ declare const bulmaJS: BulmaJS; openEditLotTypeField(lotTypeId, lotTypeFieldId); } - function moveLotTypeFieldUp(clickEvent: MouseEvent) { - clickEvent.preventDefault(); + function moveLotTypeField(clickEvent: MouseEvent) { + const buttonElement = clickEvent.currentTarget as HTMLButtonElement; - const lotTypeFieldId = ( - (clickEvent.currentTarget as HTMLElement).closest( - ".container--lotTypeField" - ) as HTMLElement - ).dataset.lotTypeFieldId; + const lotTypeFieldId = (buttonElement.closest(".container--lotTypeField") as HTMLElement) + .dataset.lotTypeFieldId; cityssm.postJSON( - los.urlPrefix + "/admin/doMoveLotTypeFieldUp", + los.urlPrefix + + "/admin/" + + (buttonElement.dataset.direction === "up" + ? "doMoveLotTypeFieldUp" + : "doMoveLotTypeFieldDown"), { lotTypeFieldId, - moveToTop: clickEvent.shiftKey ? "1" : "0" - }, - lotTypeResponseHandler - ); - } - - function moveLotTypeFieldDown(clickEvent: MouseEvent) { - clickEvent.preventDefault(); - - const lotTypeFieldId = ( - (clickEvent.currentTarget as HTMLElement).closest( - ".container--lotTypeField" - ) as HTMLElement - ).dataset.lotTypeFieldId; - - cityssm.postJSON( - los.urlPrefix + "/admin/doMoveLotTypeFieldDown", - { - lotTypeFieldId, - moveToBottom: clickEvent.shiftKey ? "1" : "0" + moveToEnd: clickEvent.shiftKey ? "1" : "0" }, lotTypeResponseHandler ); @@ -520,13 +488,13 @@ declare const bulmaJS: BulmaJS; panelBlockElement.querySelector( ".button--moveLotTypeFieldUp" ) as HTMLButtonElement - ).addEventListener("click", moveLotTypeFieldUp); + ).addEventListener("click", moveLotTypeField); ( panelBlockElement.querySelector( ".button--moveLotTypeFieldDown" ) as HTMLButtonElement - ).addEventListener("click", moveLotTypeFieldDown); + ).addEventListener("click", moveLotTypeField); panelElement.append(panelBlockElement); } @@ -622,68 +590,63 @@ declare const bulmaJS: BulmaJS; ( lotTypeContainer.querySelector(".button--moveLotTypeUp") as HTMLButtonElement - ).addEventListener("click", moveLotTypeUp); + ).addEventListener("click", moveLotType); ( lotTypeContainer.querySelector(".button--moveLotTypeDown") as HTMLButtonElement - ).addEventListener("click", moveLotTypeDown); + ).addEventListener("click", moveLotType); containerElement.append(lotTypeContainer); } } - document.querySelector("#button--addLotType")!.addEventListener( - "click", - () => { - let addCloseModalFunction: () => void; + document.querySelector("#button--addLotType")!.addEventListener("click", () => { + let addCloseModalFunction: () => void; - function doAdd(submitEvent: SubmitEvent): void { - submitEvent.preventDefault(); + function doAdd(submitEvent: SubmitEvent): void { + submitEvent.preventDefault(); - cityssm.postJSON( - los.urlPrefix + "/admin/doAddLotType", - submitEvent.currentTarget, - (responseJSON: { - success: boolean; - errorMessage?: string; - lotTypes?: recordTypes.LotType[]; - }) => { - if (responseJSON.success) { - addCloseModalFunction(); - lotTypes = responseJSON.lotTypes!; - renderLotTypes(); - } else { - bulmaJS.alert({ - title: "Error Adding " + exports.aliases.lot + " Type", - message: responseJSON.errorMessage || "", - contextualColorName: "danger" - }); - } + cityssm.postJSON( + los.urlPrefix + "/admin/doAddLotType", + submitEvent.currentTarget, + (responseJSON: { + success: boolean; + errorMessage?: string; + lotTypes?: recordTypes.LotType[]; + }) => { + if (responseJSON.success) { + addCloseModalFunction(); + lotTypes = responseJSON.lotTypes!; + renderLotTypes(); + } else { + bulmaJS.alert({ + title: "Error Adding " + exports.aliases.lot + " Type", + message: responseJSON.errorMessage || "", + contextualColorName: "danger" + }); } - ); - } - - cityssm.openHtmlModal("adminLotTypes-addLotType", { - onshow(modalElement) { - los.populateAliases(modalElement); - }, - onshown(modalElement, closeModalFunction) { - addCloseModalFunction = closeModalFunction; - - ( - modalElement.querySelector("#lotTypeAdd--lotType") as HTMLInputElement - ).focus(); - - modalElement.querySelector("form")!.addEventListener("submit", doAdd); - - bulmaJS.toggleHtmlClipped(); - }, - onremoved() { - bulmaJS.toggleHtmlClipped(); } - }); + ); } - ); + + cityssm.openHtmlModal("adminLotTypes-addLotType", { + onshow(modalElement) { + los.populateAliases(modalElement); + }, + onshown(modalElement, closeModalFunction) { + addCloseModalFunction = closeModalFunction; + + (modalElement.querySelector("#lotTypeAdd--lotType") as HTMLInputElement).focus(); + + modalElement.querySelector("form")!.addEventListener("submit", doAdd); + + bulmaJS.toggleHtmlClipped(); + }, + onremoved() { + bulmaJS.toggleHtmlClipped(); + } + }); + }); renderLotTypes(); })(); diff --git a/public/javascripts/adminLotTypes.min.js b/public/javascripts/adminLotTypes.min.js index c4b9d05f..97ecb641 100644 --- a/public/javascripts/adminLotTypes.min.js +++ b/public/javascripts/adminLotTypes.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#container--lotTypes");let l=exports.lotTypes;delete exports.lotTypes;const o=new Set;function s(e){const t=e.currentTarget,l=t.closest(".container--lotType"),s=Number.parseInt(l.dataset.lotTypeId,10);o.has(s)?o.delete(s):o.add(s),t.innerHTML=o.has(s)?'':'';const i=l.querySelectorAll(".panel-block");for(const e of i)e.classList.toggle("is-hidden")}function i(e){e.success?(l=e.lotTypes,v()):bulmaJS.alert({title:`Error Updating ${exports.aliases.lot} Type`,message:e.errorMessage||"",contextualColorName:"danger"})}function a(t){const l=Number.parseInt(t.currentTarget.closest(".container--lotType").dataset.lotTypeId,10);bulmaJS.confirm({title:`Delete ${exports.aliases.lot} Type`,message:`Are you sure you want to delete this ${exports.aliases.lot.toLowerCase()} type?`,contextualColorName:"warning",okButton:{text:`Yes, Delete ${exports.aliases.lot} Type`,callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteLotType",{lotTypeId:l},i)}}})}function n(t){const o=Number.parseInt(t.currentTarget.closest(".container--lotType").dataset.lotTypeId,10),s=l.find(e=>o===e.lotTypeId);let a;const n=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateLotType",t.currentTarget,e=>{i(e),e.success&&a()})};cityssm.openHtmlModal("adminLotTypes-editLotType",{onshow(t){e.populateAliases(t),t.querySelector("#lotTypeEdit--lotTypeId").value=o.toString(),t.querySelector("#lotTypeEdit--lotType").value=s.lotType},onshown(e,t){a=t,e.querySelector("#lotTypeEdit--lotType").focus(),e.querySelector("form").addEventListener("submit",n),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function d(t){const l=Number.parseInt(t.currentTarget.closest(".container--lotType").dataset.lotTypeId,10);let s;const a=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddLotTypeField",t.currentTarget,e=>{o.add(l),i(e),e.success&&(s(),p(l,e.lotTypeFieldId))})};cityssm.openHtmlModal("adminLotTypes-addLotTypeField",{onshow(t){e.populateAliases(t),l&&(t.querySelector("#lotTypeFieldAdd--lotTypeId").value=l.toString())},onshown(e,t){s=t,e.querySelector("#lotTypeFieldAdd--lotTypeField").focus(),e.querySelector("form").addEventListener("submit",a),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function r(t){t.preventDefault();const l=t.currentTarget.closest(".container--lotType").dataset.lotTypeId;cityssm.postJSON(e.urlPrefix+"/admin/doMoveLotTypeUp",{lotTypeId:l,moveToTop:t.shiftKey?"1":"0"},i)}function c(t){t.preventDefault();const l=t.currentTarget.closest(".container--lotType").dataset.lotTypeId;cityssm.postJSON(e.urlPrefix+"/admin/doMoveLotTypeDown",{lotTypeId:l,moveToBottom:t.shiftKey?"1":"0"},i)}function p(t,o){const s=l.find(e=>e.lotTypeId===t).lotTypeFields.find(e=>e.lotTypeFieldId===o);let a,n,d,r,c;function p(){n.min=a.value}function u(){""===r.value?(a.disabled=!1,n.disabled=!1,d.disabled=!1):(a.disabled=!0,n.disabled=!0,d.disabled=!0)}function y(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateLotTypeField",t.currentTarget,e=>{i(e),e.success&&c()})}function T(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteLotTypeField",{lotTypeFieldId:o},e=>{i(e),e.success&&c()})}function m(){bulmaJS.confirm({title:"Delete Field",message:"Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",contextualColorName:"warning",okButton:{text:"Yes, Delete Field",callbackFunction:T}})}cityssm.openHtmlModal("adminLotTypes-editLotTypeField",{onshow(t){e.populateAliases(t),t.querySelector("#lotTypeFieldEdit--lotTypeFieldId").value=s.lotTypeFieldId.toString(),t.querySelector("#lotTypeFieldEdit--lotTypeField").value=s.lotTypeField,t.querySelector("#lotTypeFieldEdit--isRequired").value=s.isRequired?"1":"0",(a=t.querySelector("#lotTypeFieldEdit--minimumLength")).value=s.minimumLength.toString(),(n=t.querySelector("#lotTypeFieldEdit--maximumLength")).value=s.maximumLength.toString(),(d=t.querySelector("#lotTypeFieldEdit--pattern")).value=s.pattern,(r=t.querySelector("#lotTypeFieldEdit--lotTypeFieldValues")).value=s.lotTypeFieldValues,u()},onshown(e,t){c=t,bulmaJS.init(e),bulmaJS.toggleHtmlClipped(),cityssm.enableNavBlocker(),e.querySelector("form").addEventListener("submit",y),a.addEventListener("keyup",p),p(),r.addEventListener("keyup",u),e.querySelector("#button--deleteLotTypeField").addEventListener("click",m)},onremoved(){bulmaJS.toggleHtmlClipped(),cityssm.disableNavBlocker()}})}function u(e){e.preventDefault();const t=Number.parseInt(e.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId,10);p(Number.parseInt(e.currentTarget.closest(".container--lotType").dataset.lotTypeId,10),t)}function y(t){t.preventDefault();const l=t.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId;cityssm.postJSON(e.urlPrefix+"/admin/doMoveLotTypeFieldUp",{lotTypeFieldId:l,moveToTop:t.shiftKey?"1":"0"},i)}function T(t){t.preventDefault();const l=t.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId;cityssm.postJSON(e.urlPrefix+"/admin/doMoveLotTypeFieldDown",{lotTypeFieldId:l,moveToBottom:t.shiftKey?"1":"0"},i)}function m(t,l,s){if(0===s.length)t.insertAdjacentHTML("beforeend",'

There are no additional fields.

');else for(const i of s){const s=document.createElement("div");s.className="panel-block is-block container--lotTypeField",o.has(l)||s.classList.add("is-hidden"),s.dataset.lotTypeFieldId=i.lotTypeFieldId.toString(),s.innerHTML='
'+e.getMoveUpDownButtonFieldHTML("button--moveLotTypeFieldUp","button--moveLotTypeFieldDown")+"
",s.querySelector(".button--editLotTypeField").addEventListener("click",u),s.querySelector(".button--moveLotTypeFieldUp").addEventListener("click",y),s.querySelector(".button--moveLotTypeFieldDown").addEventListener("click",T),t.append(s)}}function v(){if(t.innerHTML="",0!==l.length)for(const i of l){const l=document.createElement("div");l.className="panel container--lotType",l.dataset.lotTypeId=i.lotTypeId.toString(),l.innerHTML='

'+cityssm.escapeHTML(i.lotType)+'

'+e.getMoveUpDownButtonFieldHTML("button--moveLotTypeUp","button--moveLotTypeDown")+"
",m(l,i.lotTypeId,i.lotTypeFields),l.querySelector(".button--toggleLotTypeFields").addEventListener("click",s),l.querySelector(".button--deleteLotType").addEventListener("click",a),l.querySelector(".button--editLotType").addEventListener("click",n),l.querySelector(".button--addLotTypeField").addEventListener("click",d),l.querySelector(".button--moveLotTypeUp").addEventListener("click",r),l.querySelector(".button--moveLotTypeDown").addEventListener("click",c),t.append(l)}else t.insertAdjacentHTML("afterbegin",`
There are no active ${exports.aliases.lot.toLowerCase()} types.

\n
`)}document.querySelector("#button--addLotType").addEventListener("click",()=>{let t;function o(o){o.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddLotType",o.currentTarget,e=>{e.success?(t(),l=e.lotTypes,v()):bulmaJS.alert({title:"Error Adding "+exports.aliases.lot+" Type",message:e.errorMessage||"",contextualColorName:"danger"})})}cityssm.openHtmlModal("adminLotTypes-addLotType",{onshow(t){e.populateAliases(t)},onshown(e,l){t=l,e.querySelector("#lotTypeAdd--lotType").focus(),e.querySelector("form").addEventListener("submit",o),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}),v()})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#container--lotTypes");let l=exports.lotTypes;delete exports.lotTypes;const o=new Set;function s(e){const t=e.currentTarget,l=t.closest(".container--lotType"),s=Number.parseInt(l.dataset.lotTypeId,10);o.has(s)?o.delete(s):o.add(s),t.innerHTML=o.has(s)?'':'';const i=l.querySelectorAll(".panel-block");for(const e of i)e.classList.toggle("is-hidden")}function i(e){e.success?(l=e.lotTypes,T()):bulmaJS.alert({title:`Error Updating ${exports.aliases.lot} Type`,message:e.errorMessage||"",contextualColorName:"danger"})}function a(t){const l=Number.parseInt(t.currentTarget.closest(".container--lotType").dataset.lotTypeId,10);bulmaJS.confirm({title:`Delete ${exports.aliases.lot} Type`,message:`Are you sure you want to delete this ${exports.aliases.lot.toLowerCase()} type?`,contextualColorName:"warning",okButton:{text:`Yes, Delete ${exports.aliases.lot} Type`,callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteLotType",{lotTypeId:l},i)}}})}function d(t){const o=Number.parseInt(t.currentTarget.closest(".container--lotType").dataset.lotTypeId,10),s=l.find(e=>o===e.lotTypeId);let a;const d=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateLotType",t.currentTarget,e=>{i(e),e.success&&a()})};cityssm.openHtmlModal("adminLotTypes-editLotType",{onshow(t){e.populateAliases(t),t.querySelector("#lotTypeEdit--lotTypeId").value=o.toString(),t.querySelector("#lotTypeEdit--lotType").value=s.lotType},onshown(e,t){a=t,e.querySelector("#lotTypeEdit--lotType").focus(),e.querySelector("form").addEventListener("submit",d),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function n(t){const l=Number.parseInt(t.currentTarget.closest(".container--lotType").dataset.lotTypeId,10);let s;const a=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddLotTypeField",t.currentTarget,e=>{o.add(l),i(e),e.success&&(s(),c(l,e.lotTypeFieldId))})};cityssm.openHtmlModal("adminLotTypes-addLotTypeField",{onshow(t){e.populateAliases(t),l&&(t.querySelector("#lotTypeFieldAdd--lotTypeId").value=l.toString())},onshown(e,t){s=t,e.querySelector("#lotTypeFieldAdd--lotTypeField").focus(),e.querySelector("form").addEventListener("submit",a),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function r(t){const l=t.currentTarget,o=l.closest(".container--lotType").dataset.lotTypeId;cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===l.dataset.direction?"doMoveLotTypeUp":"doMoveLotTypeDown"),{lotTypeId:o,moveToEnd:t.shiftKey?"1":"0"},i)}function c(t,o){const s=l.find(e=>e.lotTypeId===t).lotTypeFields.find(e=>e.lotTypeFieldId===o);let a,d,n,r,c;function p(){d.min=a.value}function u(){""===r.value?(a.disabled=!1,d.disabled=!1,n.disabled=!1):(a.disabled=!0,d.disabled=!0,n.disabled=!0)}function y(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateLotTypeField",t.currentTarget,e=>{i(e),e.success&&c()})}function T(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteLotTypeField",{lotTypeFieldId:o},e=>{i(e),e.success&&c()})}function m(){bulmaJS.confirm({title:"Delete Field",message:"Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",contextualColorName:"warning",okButton:{text:"Yes, Delete Field",callbackFunction:T}})}cityssm.openHtmlModal("adminLotTypes-editLotTypeField",{onshow(t){e.populateAliases(t),t.querySelector("#lotTypeFieldEdit--lotTypeFieldId").value=s.lotTypeFieldId.toString(),t.querySelector("#lotTypeFieldEdit--lotTypeField").value=s.lotTypeField,t.querySelector("#lotTypeFieldEdit--isRequired").value=s.isRequired?"1":"0",(a=t.querySelector("#lotTypeFieldEdit--minimumLength")).value=s.minimumLength.toString(),(d=t.querySelector("#lotTypeFieldEdit--maximumLength")).value=s.maximumLength.toString(),(n=t.querySelector("#lotTypeFieldEdit--pattern")).value=s.pattern,(r=t.querySelector("#lotTypeFieldEdit--lotTypeFieldValues")).value=s.lotTypeFieldValues,u()},onshown(e,t){c=t,bulmaJS.init(e),bulmaJS.toggleHtmlClipped(),cityssm.enableNavBlocker(),e.querySelector("form").addEventListener("submit",y),a.addEventListener("keyup",p),p(),r.addEventListener("keyup",u),e.querySelector("#button--deleteLotTypeField").addEventListener("click",m)},onremoved(){bulmaJS.toggleHtmlClipped(),cityssm.disableNavBlocker()}})}function p(e){e.preventDefault();const t=Number.parseInt(e.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId,10);c(Number.parseInt(e.currentTarget.closest(".container--lotType").dataset.lotTypeId,10),t)}function u(t){const l=t.currentTarget,o=l.closest(".container--lotTypeField").dataset.lotTypeFieldId;cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===l.dataset.direction?"doMoveLotTypeFieldUp":"doMoveLotTypeFieldDown"),{lotTypeFieldId:o,moveToEnd:t.shiftKey?"1":"0"},i)}function y(t,l,s){if(0===s.length)t.insertAdjacentHTML("beforeend",'

There are no additional fields.

');else for(const i of s){const s=document.createElement("div");s.className="panel-block is-block container--lotTypeField",o.has(l)||s.classList.add("is-hidden"),s.dataset.lotTypeFieldId=i.lotTypeFieldId.toString(),s.innerHTML='
'+e.getMoveUpDownButtonFieldHTML("button--moveLotTypeFieldUp","button--moveLotTypeFieldDown")+"
",s.querySelector(".button--editLotTypeField").addEventListener("click",p),s.querySelector(".button--moveLotTypeFieldUp").addEventListener("click",u),s.querySelector(".button--moveLotTypeFieldDown").addEventListener("click",u),t.append(s)}}function T(){if(t.innerHTML="",0!==l.length)for(const i of l){const l=document.createElement("div");l.className="panel container--lotType",l.dataset.lotTypeId=i.lotTypeId.toString(),l.innerHTML='

'+cityssm.escapeHTML(i.lotType)+'

'+e.getMoveUpDownButtonFieldHTML("button--moveLotTypeUp","button--moveLotTypeDown")+"
",y(l,i.lotTypeId,i.lotTypeFields),l.querySelector(".button--toggleLotTypeFields").addEventListener("click",s),l.querySelector(".button--deleteLotType").addEventListener("click",a),l.querySelector(".button--editLotType").addEventListener("click",d),l.querySelector(".button--addLotTypeField").addEventListener("click",n),l.querySelector(".button--moveLotTypeUp").addEventListener("click",r),l.querySelector(".button--moveLotTypeDown").addEventListener("click",r),t.append(l)}else t.insertAdjacentHTML("afterbegin",`
There are no active ${exports.aliases.lot.toLowerCase()} types.

\n
`)}document.querySelector("#button--addLotType").addEventListener("click",()=>{let t;function o(o){o.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddLotType",o.currentTarget,e=>{e.success?(t(),l=e.lotTypes,T()):bulmaJS.alert({title:"Error Adding "+exports.aliases.lot+" Type",message:e.errorMessage||"",contextualColorName:"danger"})})}cityssm.openHtmlModal("adminLotTypes-addLotType",{onshow(t){e.populateAliases(t)},onshown(e,l){t=l,e.querySelector("#lotTypeAdd--lotType").focus(),e.querySelector("form").addEventListener("submit",o),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}),T()})(); \ No newline at end of file