time pickers
parent
0c0a565bdb
commit
a594b81dd5
|
|
@ -179,7 +179,8 @@ span.button.is-static {
|
|||
|
||||
.datetimepicker-clear-button {
|
||||
transform: none;
|
||||
margin-right: 0.5rem;
|
||||
margin-right: 0.25rem;
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -102,6 +102,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
},
|
||||
onshown: (modalElement, closeModalFunction) => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
los.initializeDatePickers(modalElement);
|
||||
los.initializeTimePickers(modalElement);
|
||||
modalElement.querySelector("#lotCommentEdit--lotComment").focus();
|
||||
editFormElement = modalElement.querySelector("form");
|
||||
editFormElement.addEventListener("submit", editComment);
|
||||
|
|
|
|||
|
|
@ -164,6 +164,9 @@ declare const bulmaJS: BulmaJS;
|
|||
onshown: (modalElement, closeModalFunction) => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
|
||||
los.initializeDatePickers(modalElement);
|
||||
los.initializeTimePickers(modalElement);
|
||||
|
||||
(
|
||||
modalElement.querySelector("#lotCommentEdit--lotComment") as HTMLTextAreaElement
|
||||
).focus();
|
||||
|
|
|
|||
|
|
@ -35,8 +35,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
message: exports.aliases.occupancy +
|
||||
" Updated Successfully",
|
||||
message: exports.aliases.occupancy + " Updated Successfully",
|
||||
contextualColorName: "success"
|
||||
});
|
||||
}
|
||||
|
|
@ -54,7 +53,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
for (const formInputElement of formInputElements) {
|
||||
formInputElement.addEventListener("change", setUnsavedChanges);
|
||||
}
|
||||
los.initializeDatePickers(formElement);
|
||||
if (!isCreate) {
|
||||
document
|
||||
.querySelector("#button--deleteLotOccupancy")
|
||||
|
|
@ -67,9 +65,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
if (responseJSON.success) {
|
||||
cityssm.disableNavBlocker();
|
||||
window.location.href =
|
||||
urlPrefix +
|
||||
"/lotOccupancies?t=" +
|
||||
Date.now();
|
||||
urlPrefix + "/lotOccupancies?t=" + Date.now();
|
||||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
|
|
@ -119,10 +115,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
lotOccupancyFieldsContainerElement.innerHTML = "";
|
||||
let occupancyTypeFieldIds = "";
|
||||
for (const occupancyTypeField of responseJSON.occupancyTypeFields) {
|
||||
occupancyTypeFieldIds +=
|
||||
"," + occupancyTypeField.occupancyTypeFieldId;
|
||||
const fieldName = "lotOccupancyFieldValue_" +
|
||||
occupancyTypeField.occupancyTypeFieldId;
|
||||
occupancyTypeFieldIds += "," + occupancyTypeField.occupancyTypeFieldId;
|
||||
const fieldName = "lotOccupancyFieldValue_" + occupancyTypeField.occupancyTypeFieldId;
|
||||
const fieldId = "lotOccupancy--" + fieldName;
|
||||
const fieldElement = document.createElement("div");
|
||||
fieldElement.className = "field";
|
||||
|
|
@ -139,20 +133,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
inputElement.id = fieldId;
|
||||
inputElement.name = fieldName;
|
||||
inputElement.type = "text";
|
||||
inputElement.required =
|
||||
occupancyTypeField.isRequired;
|
||||
inputElement.minLength =
|
||||
occupancyTypeField.minimumLength;
|
||||
inputElement.maxLength =
|
||||
occupancyTypeField.maximumLength;
|
||||
if (occupancyTypeField.pattern &&
|
||||
occupancyTypeField.pattern !== "") {
|
||||
inputElement.pattern =
|
||||
occupancyTypeField.pattern;
|
||||
inputElement.required = occupancyTypeField.isRequired;
|
||||
inputElement.minLength = occupancyTypeField.minimumLength;
|
||||
inputElement.maxLength = occupancyTypeField.maximumLength;
|
||||
if (occupancyTypeField.pattern && occupancyTypeField.pattern !== "") {
|
||||
inputElement.pattern = occupancyTypeField.pattern;
|
||||
}
|
||||
fieldElement
|
||||
.querySelector(".control")
|
||||
.append(inputElement);
|
||||
fieldElement.querySelector(".control").append(inputElement);
|
||||
}
|
||||
else {
|
||||
fieldElement.querySelector(".control").innerHTML =
|
||||
|
|
@ -201,8 +188,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
cancelButton: {
|
||||
text: "Revert the Change",
|
||||
callbackFunction: () => {
|
||||
occupancyTypeIdElement.value =
|
||||
originalOccupancyTypeId;
|
||||
occupancyTypeIdElement.value = originalOccupancyTypeId;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -211,16 +197,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
const lotNameElement = document.querySelector("#lotOccupancy--lotName");
|
||||
lotNameElement.addEventListener("click", (clickEvent) => {
|
||||
const currentLotName = clickEvent.currentTarget
|
||||
.value;
|
||||
const currentLotName = clickEvent.currentTarget.value;
|
||||
let lotSelectCloseModalFunction;
|
||||
let lotSelectFormElement;
|
||||
let lotSelectResultsElement;
|
||||
const selectLot = (clickEvent) => {
|
||||
clickEvent.preventDefault();
|
||||
const selectedLotElement = clickEvent.currentTarget;
|
||||
document.querySelector("#lotOccupancy--lotId").value = selectedLotElement.dataset.lotId;
|
||||
document.querySelector("#lotOccupancy--lotName").value = selectedLotElement.dataset.lotName;
|
||||
document.querySelector("#lotOccupancy--lotId").value =
|
||||
selectedLotElement.dataset.lotId;
|
||||
document.querySelector("#lotOccupancy--lotName").value =
|
||||
selectedLotElement.dataset.lotName;
|
||||
setUnsavedChanges();
|
||||
lotSelectCloseModalFunction();
|
||||
};
|
||||
|
|
@ -261,9 +248,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
cityssm.escapeHTML(lot.lotStatus) +
|
||||
"<br />" +
|
||||
'<span class="is-size-7">' +
|
||||
(lot.lotOccupancyCount > 0
|
||||
? "Currently Occupied"
|
||||
: "") +
|
||||
(lot.lotOccupancyCount > 0 ? "Currently Occupied" : "") +
|
||||
"</span>" +
|
||||
"</div>") +
|
||||
"</div>";
|
||||
|
|
@ -282,7 +267,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
bulmaJS.toggleHtmlClipped();
|
||||
lotSelectCloseModalFunction = closeModalFunction;
|
||||
const lotNameFilterElement = modalElement.querySelector("#lotSelect--lotName");
|
||||
if (document.querySelector("#lotOccupancy--lotId").value !== "") {
|
||||
if (document.querySelector("#lotOccupancy--lotId").value !==
|
||||
"") {
|
||||
lotNameFilterElement.value = currentLotName;
|
||||
}
|
||||
lotNameFilterElement.focus();
|
||||
|
|
@ -292,8 +278,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
if (currentLotName !== "") {
|
||||
occupancyStatusFilterElement.value = "";
|
||||
}
|
||||
lotSelectFormElement =
|
||||
modalElement.querySelector("#form--lotSelect");
|
||||
lotSelectFormElement = modalElement.querySelector("#form--lotSelect");
|
||||
lotSelectResultsElement = modalElement.querySelector("#resultsContainer--lotSelect");
|
||||
lotSelectFormElement.addEventListener("submit", (submitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
|
|
@ -305,25 +290,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
});
|
||||
});
|
||||
document
|
||||
.querySelector(".is-lot-view-button")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector(".is-lot-view-button").addEventListener("click", () => {
|
||||
const lotId = document.querySelector("#lotOccupancy--lotId").value;
|
||||
if (lotId) {
|
||||
window.open(urlPrefix + "/lots/" + lotId);
|
||||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
message: "No " +
|
||||
exports.aliases.lot.toLowerCase() +
|
||||
" selected.",
|
||||
message: "No " + exports.aliases.lot.toLowerCase() + " selected.",
|
||||
contextualColorName: "info"
|
||||
});
|
||||
}
|
||||
});
|
||||
document
|
||||
.querySelector(".is-clear-lot-button")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector(".is-clear-lot-button").addEventListener("click", () => {
|
||||
if (lotNameElement.disabled) {
|
||||
bulmaJS.alert({
|
||||
message: "You need to unlock the field before clearing it.",
|
||||
|
|
@ -336,21 +315,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
setUnsavedChanges();
|
||||
}
|
||||
});
|
||||
los.initializeDatePickers(formElement);
|
||||
document
|
||||
.querySelector("#lotOccupancy--occupancyStartDateString")
|
||||
.addEventListener("change", () => {
|
||||
document.querySelector("#lotOccupancy--occupancyEndDateString").min = document.querySelector("#lotOccupancy--occupancyStartDateString").value;
|
||||
const endDatePicker = document.querySelector("#lotOccupancy--occupancyEndDateString")
|
||||
.bulmaCalendar.datePicker;
|
||||
endDatePicker.min = document.querySelector("#lotOccupancy--occupancyStartDateString").value;
|
||||
endDatePicker.refresh();
|
||||
});
|
||||
los.initializeUnlockFieldButtons(formElement);
|
||||
if (!isCreate) {
|
||||
let lotOccupancyOccupants = exports.lotOccupancyOccupants;
|
||||
delete exports.lotOccupancyOccupants;
|
||||
const openEditLotOccupancyOccupant = (clickEvent) => {
|
||||
const lotOccupantIndex = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset
|
||||
.lotOccupantIndex, 10);
|
||||
const lotOccupantIndex = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotOccupantIndex, 10);
|
||||
const lotOccupancyOccupant = lotOccupancyOccupants.find((currentLotOccupancyOccupant) => {
|
||||
return (currentLotOccupancyOccupant.lotOccupantIndex ===
|
||||
lotOccupantIndex);
|
||||
return currentLotOccupancyOccupant.lotOccupantIndex === lotOccupantIndex;
|
||||
});
|
||||
let editFormElement;
|
||||
let editCloseModalFunction;
|
||||
|
|
@ -358,15 +339,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(urlPrefix + "/lotOccupancies/doUpdateLotOccupancyOccupant", editFormElement, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyOccupants =
|
||||
responseJSON.lotOccupancyOccupants;
|
||||
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
|
||||
editCloseModalFunction();
|
||||
renderLotOccupancyOccupants();
|
||||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Updating " +
|
||||
exports.aliases.occupant,
|
||||
title: "Error Updating " + exports.aliases.occupant,
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
|
|
@ -382,10 +361,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
let lotOccupantTypeSelected = false;
|
||||
for (const lotOccupantType of exports.lotOccupantTypes) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value =
|
||||
lotOccupantType.lotOccupantTypeId.toString();
|
||||
optionElement.textContent =
|
||||
lotOccupantType.lotOccupantType;
|
||||
optionElement.value = lotOccupantType.lotOccupantTypeId.toString();
|
||||
optionElement.textContent = lotOccupantType.lotOccupantType;
|
||||
if (lotOccupantType.lotOccupantTypeId ===
|
||||
lotOccupancyOccupant.lotOccupantTypeId) {
|
||||
optionElement.selected = true;
|
||||
|
|
@ -395,10 +372,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
if (!lotOccupantTypeSelected) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value =
|
||||
lotOccupancyOccupant.lotOccupantTypeId.toString();
|
||||
optionElement.textContent =
|
||||
lotOccupancyOccupant.lotOccupantType;
|
||||
optionElement.value = lotOccupancyOccupant.lotOccupantTypeId.toString();
|
||||
optionElement.textContent = lotOccupancyOccupant.lotOccupantType;
|
||||
optionElement.selected = true;
|
||||
lotOccupantTypeSelectElement.append(optionElement);
|
||||
}
|
||||
|
|
@ -423,21 +398,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
});
|
||||
};
|
||||
const deleteLotOccupancyOccupant = (clickEvent) => {
|
||||
const lotOccupantIndex = clickEvent.currentTarget.closest("tr").dataset.lotOccupantIndex;
|
||||
const lotOccupantIndex = clickEvent.currentTarget.closest("tr").dataset
|
||||
.lotOccupantIndex;
|
||||
const doDelete = () => {
|
||||
cityssm.postJSON(urlPrefix + "/lotOccupancies/doDeleteLotOccupancyOccupant", {
|
||||
lotOccupancyId,
|
||||
lotOccupantIndex
|
||||
}, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyOccupants =
|
||||
responseJSON.lotOccupancyOccupants;
|
||||
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
|
||||
renderLotOccupancyOccupants();
|
||||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Removing " +
|
||||
exports.aliases.occupant,
|
||||
title: "Error Removing " + exports.aliases.occupant,
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
|
|
@ -469,8 +443,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
return;
|
||||
}
|
||||
const tableElement = document.createElement("table");
|
||||
tableElement.className =
|
||||
"table is-fullwidth is-striped is-hoverable";
|
||||
tableElement.className = "table is-fullwidth is-striped is-hoverable";
|
||||
tableElement.innerHTML =
|
||||
"<thead><tr>" +
|
||||
"<th>" +
|
||||
|
|
@ -492,9 +465,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
"<td>" +
|
||||
cityssm.escapeHTML(lotOccupancyOccupant.lotOccupantType) +
|
||||
"</td>" +
|
||||
("<td>" +
|
||||
cityssm.escapeHTML(lotOccupancyOccupant.occupantName) +
|
||||
"</td>") +
|
||||
("<td>" + cityssm.escapeHTML(lotOccupancyOccupant.occupantName) + "</td>") +
|
||||
("<td>" +
|
||||
cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) +
|
||||
"<br />" +
|
||||
|
|
@ -534,24 +505,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
occupantsContainer.append(tableElement);
|
||||
};
|
||||
document
|
||||
.querySelector("#button--addOccupant")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector("#button--addOccupant").addEventListener("click", () => {
|
||||
let addFormElement;
|
||||
let addCloseModalFunction;
|
||||
const addOccupant = (submitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(urlPrefix + "/lotOccupancies/doAddLotOccupancyOccupant", addFormElement, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyOccupants =
|
||||
responseJSON.lotOccupancyOccupants;
|
||||
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
|
||||
addCloseModalFunction();
|
||||
renderLotOccupancyOccupants();
|
||||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Adding " +
|
||||
exports.aliases.occupant,
|
||||
title: "Error Adding " + exports.aliases.occupant,
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
|
|
@ -565,10 +532,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
const lotOccupantTypeSelectElement = modalElement.querySelector("#lotOccupancyOccupantAdd--lotOccupantTypeId");
|
||||
for (const lotOccupantType of exports.lotOccupantTypes) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value =
|
||||
lotOccupantType.lotOccupantTypeId.toString();
|
||||
optionElement.textContent =
|
||||
lotOccupantType.lotOccupantType;
|
||||
optionElement.value = lotOccupantType.lotOccupantTypeId.toString();
|
||||
optionElement.textContent = lotOccupantType.lotOccupantType;
|
||||
lotOccupantTypeSelectElement.append(optionElement);
|
||||
}
|
||||
modalElement.querySelector("#lotOccupancyOccupantAdd--occupantCity").value = exports.occupantCityDefault;
|
||||
|
|
@ -595,8 +560,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset
|
||||
.lotOccupancyCommentId, 10);
|
||||
const lotOccupancyComment = lotOccupancyComments.find((currentLotOccupancyComment) => {
|
||||
return (currentLotOccupancyComment.lotOccupancyCommentId ===
|
||||
lotOccupancyCommentId);
|
||||
return currentLotOccupancyComment.lotOccupancyCommentId === lotOccupancyCommentId;
|
||||
});
|
||||
let editFormElement;
|
||||
let editCloseModalFunction;
|
||||
|
|
@ -604,8 +568,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(urlPrefix + "/lotOccupancies/doUpdateLotOccupancyComment", editFormElement, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyComments =
|
||||
responseJSON.lotOccupancyComments;
|
||||
lotOccupancyComments = responseJSON.lotOccupancyComments;
|
||||
editCloseModalFunction();
|
||||
renderLotOccupancyComments();
|
||||
}
|
||||
|
|
@ -629,6 +592,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
},
|
||||
onshown: (modalElement, closeModalFunction) => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
los.initializeDatePickers(modalElement);
|
||||
los.initializeTimePickers(modalElement);
|
||||
modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyComment").focus();
|
||||
editFormElement = modalElement.querySelector("form");
|
||||
editFormElement.addEventListener("submit", editComment);
|
||||
|
|
@ -648,8 +613,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
lotOccupancyCommentId
|
||||
}, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyComments =
|
||||
responseJSON.lotOccupancyComments;
|
||||
lotOccupancyComments = responseJSON.lotOccupancyComments;
|
||||
renderLotOccupancyComments();
|
||||
}
|
||||
else {
|
||||
|
|
@ -681,8 +645,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
return;
|
||||
}
|
||||
const tableElement = document.createElement("table");
|
||||
tableElement.className =
|
||||
"table is-fullwidth is-striped is-hoverable";
|
||||
tableElement.className = "table is-fullwidth is-striped is-hoverable";
|
||||
tableElement.innerHTML =
|
||||
"<thead><tr>" +
|
||||
"<th>Commentor</th>" +
|
||||
|
|
@ -703,8 +666,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
lotOccupancyComment.lotOccupancyCommentDateString +
|
||||
(lotOccupancyComment.lotOccupancyCommentTime === 0
|
||||
? ""
|
||||
: " " +
|
||||
lotOccupancyComment.lotOccupancyCommentTimeString) +
|
||||
: " " + lotOccupancyComment.lotOccupancyCommentTimeString) +
|
||||
"</td>" +
|
||||
"<td>" +
|
||||
cityssm.escapeHTML(lotOccupancyComment.lotOccupancyComment) +
|
||||
|
|
@ -731,17 +693,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
containerElement.innerHTML = "";
|
||||
containerElement.append(tableElement);
|
||||
};
|
||||
document
|
||||
.querySelector("#button--addComment")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector("#button--addComment").addEventListener("click", () => {
|
||||
let addFormElement;
|
||||
let addCloseModalFunction;
|
||||
const addComment = (submitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(urlPrefix + "/lotOccupancies/doAddLotOccupancyComment", addFormElement, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyComments =
|
||||
responseJSON.lotOccupancyComments;
|
||||
lotOccupancyComments = responseJSON.lotOccupancyComments;
|
||||
addCloseModalFunction();
|
||||
renderLotOccupancyComments();
|
||||
}
|
||||
|
|
@ -848,10 +807,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
for (const lotOccupancyFee of lotOccupancyFees) {
|
||||
const tableRowElement = document.createElement("tr");
|
||||
tableRowElement.className = "container--lotOccupancyFee";
|
||||
tableRowElement.dataset.feeId =
|
||||
lotOccupancyFee.feeId.toString();
|
||||
tableRowElement.dataset.includeQuantity =
|
||||
lotOccupancyFee.includeQuantity ? "1" : "0";
|
||||
tableRowElement.dataset.feeId = lotOccupancyFee.feeId.toString();
|
||||
tableRowElement.dataset.includeQuantity = lotOccupancyFee.includeQuantity
|
||||
? "1"
|
||||
: "0";
|
||||
tableRowElement.innerHTML =
|
||||
'<td colspan="' +
|
||||
(lotOccupancyFee.quantity === 1 ? "5" : "1") +
|
||||
|
|
@ -879,22 +838,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
tableRowElement
|
||||
.querySelector("button")
|
||||
.addEventListener("click", deleteLotOccupancyFee);
|
||||
lotOccupancyFeesContainerElement
|
||||
.querySelector("tbody")
|
||||
.append(tableRowElement);
|
||||
feeAmountTotal +=
|
||||
lotOccupancyFee.feeAmount * lotOccupancyFee.quantity;
|
||||
taxAmountTotal +=
|
||||
lotOccupancyFee.taxAmount * lotOccupancyFee.quantity;
|
||||
lotOccupancyFeesContainerElement.querySelector("tbody").append(tableRowElement);
|
||||
feeAmountTotal += lotOccupancyFee.feeAmount * lotOccupancyFee.quantity;
|
||||
taxAmountTotal += lotOccupancyFee.taxAmount * lotOccupancyFee.quantity;
|
||||
}
|
||||
lotOccupancyFeesContainerElement.querySelector("#lotOccupancyFees--feeAmountTotal").textContent = "$" + feeAmountTotal.toFixed(2);
|
||||
lotOccupancyFeesContainerElement.querySelector("#lotOccupancyFees--taxAmountTotal").textContent = "$" + taxAmountTotal.toFixed(2);
|
||||
lotOccupancyFeesContainerElement.querySelector("#lotOccupancyFees--grandTotal").textContent = "$" + (feeAmountTotal + taxAmountTotal).toFixed(2);
|
||||
renderLotOccupancyTransactions();
|
||||
};
|
||||
document
|
||||
.querySelector("#button--addFee")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector("#button--addFee").addEventListener("click", () => {
|
||||
if (hasUnsavedChanges) {
|
||||
bulmaJS.alert({
|
||||
message: "Please save all unsaved changes before adding fees.",
|
||||
|
|
@ -912,8 +865,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
quantity
|
||||
}, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyFees =
|
||||
responseJSON.lotOccupancyFees;
|
||||
lotOccupancyFees = responseJSON.lotOccupancyFees;
|
||||
renderLotOccupancyFees();
|
||||
filterFees();
|
||||
}
|
||||
|
|
@ -952,8 +904,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
const feeId = Number.parseInt(clickEvent.currentTarget.dataset.feeId, 10);
|
||||
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId, 10);
|
||||
const feeCategory = feeCategories.find((currentFeeCategory) => {
|
||||
return (currentFeeCategory.feeCategoryId ===
|
||||
feeCategoryId);
|
||||
return currentFeeCategory.feeCategoryId === feeCategoryId;
|
||||
});
|
||||
const fee = feeCategory.fees.find((currentFee) => {
|
||||
return currentFee.feeId === feeId;
|
||||
|
|
@ -966,15 +917,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
};
|
||||
const filterFees = () => {
|
||||
const filterStringPieces = feeFilterElement.value
|
||||
.trim()
|
||||
.toLowerCase()
|
||||
.split(" ");
|
||||
const filterStringPieces = feeFilterElement.value.trim().toLowerCase().split(" ");
|
||||
feeFilterResultsElement.innerHTML = "";
|
||||
for (const feeCategory of feeCategories) {
|
||||
const categoryContainerElement = document.createElement("div");
|
||||
categoryContainerElement.className =
|
||||
"container--feeCategory";
|
||||
categoryContainerElement.className = "container--feeCategory";
|
||||
categoryContainerElement.dataset.feeCategoryId =
|
||||
feeCategory.feeCategoryId.toString();
|
||||
categoryContainerElement.innerHTML =
|
||||
|
|
@ -991,9 +938,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
let includeFee = true;
|
||||
for (const filterStringPiece of filterStringPieces) {
|
||||
if (!fee.feeName
|
||||
.toLowerCase()
|
||||
.includes(filterStringPiece)) {
|
||||
if (!fee.feeName.toLowerCase().includes(filterStringPiece)) {
|
||||
includeFee = false;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1003,24 +948,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
hasFees = true;
|
||||
const panelBlockElement = document.createElement("a");
|
||||
panelBlockElement.className =
|
||||
"panel-block is-block container--fee";
|
||||
panelBlockElement.dataset.feeId =
|
||||
fee.feeId.toString();
|
||||
panelBlockElement.className = "panel-block is-block container--fee";
|
||||
panelBlockElement.dataset.feeId = fee.feeId.toString();
|
||||
panelBlockElement.href = "#";
|
||||
panelBlockElement.innerHTML =
|
||||
"<strong>" +
|
||||
cityssm.escapeHTML(fee.feeName) +
|
||||
"</strong><br />" +
|
||||
"<small>" +
|
||||
cityssm
|
||||
.escapeHTML(fee.feeDescription)
|
||||
.replace(/\n/g, "<br />") +
|
||||
cityssm.escapeHTML(fee.feeDescription).replace(/\n/g, "<br />") +
|
||||
"</small>";
|
||||
panelBlockElement.addEventListener("click", tryAddFee);
|
||||
categoryContainerElement
|
||||
.querySelector(".panel")
|
||||
.append(panelBlockElement);
|
||||
categoryContainerElement.querySelector(".panel").append(panelBlockElement);
|
||||
}
|
||||
if (hasFees) {
|
||||
feeFilterResultsElement.append(categoryContainerElement);
|
||||
|
|
@ -1058,22 +997,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
const getTransactionGrandTotal = () => {
|
||||
let transactionGrandTotal = 0;
|
||||
for (const lotOccupancyTransaction of lotOccupancyTransactions) {
|
||||
transactionGrandTotal +=
|
||||
lotOccupancyTransaction.transactionAmount;
|
||||
transactionGrandTotal += lotOccupancyTransaction.transactionAmount;
|
||||
}
|
||||
return transactionGrandTotal;
|
||||
};
|
||||
const deleteLotOccupancyTransaction = (clickEvent) => {
|
||||
const transactionIndex = clickEvent.currentTarget.closest(".container--lotOccupancyTransaction").dataset.transactionIndex;
|
||||
const doDelete = () => {
|
||||
cityssm.postJSON(urlPrefix +
|
||||
"/lotOccupancies/doDeleteLotOccupancyTransaction", {
|
||||
cityssm.postJSON(urlPrefix + "/lotOccupancies/doDeleteLotOccupancyTransaction", {
|
||||
lotOccupancyId,
|
||||
transactionIndex
|
||||
}, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyTransactions =
|
||||
responseJSON.lotOccupancyTransactions;
|
||||
lotOccupancyTransactions = responseJSON.lotOccupancyTransactions;
|
||||
renderLotOccupancyTransactions();
|
||||
}
|
||||
else {
|
||||
|
|
@ -1124,11 +1060,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
"</table>";
|
||||
let transactionGrandTotal = 0;
|
||||
for (const lotOccupancyTransaction of lotOccupancyTransactions) {
|
||||
transactionGrandTotal +=
|
||||
lotOccupancyTransaction.transactionAmount;
|
||||
transactionGrandTotal += lotOccupancyTransaction.transactionAmount;
|
||||
const tableRowElement = document.createElement("tr");
|
||||
tableRowElement.className =
|
||||
"container--lotOccupancyTransaction";
|
||||
tableRowElement.className = "container--lotOccupancyTransaction";
|
||||
tableRowElement.dataset.transactionIndex =
|
||||
lotOccupancyTransaction.transactionIndex.toString();
|
||||
tableRowElement.innerHTML =
|
||||
|
|
@ -1172,17 +1106,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
"</div>");
|
||||
}
|
||||
};
|
||||
document
|
||||
.querySelector("#button--addTransaction")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector("#button--addTransaction").addEventListener("click", () => {
|
||||
let addCloseModalFunction;
|
||||
const doAddTransaction = (submitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(urlPrefix +
|
||||
"/lotOccupancies/doAddLotOccupancyTransaction", submitEvent.currentTarget, (responseJSON) => {
|
||||
cityssm.postJSON(urlPrefix + "/lotOccupancies/doAddLotOccupancyTransaction", submitEvent.currentTarget, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyTransactions =
|
||||
responseJSON.lotOccupancyTransactions;
|
||||
lotOccupancyTransactions = responseJSON.lotOccupancyTransactions;
|
||||
addCloseModalFunction();
|
||||
renderLotOccupancyTransactions();
|
||||
}
|
||||
|
|
@ -1209,9 +1139,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
onshown: (modalElement, closeModalFunction) => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
addCloseModalFunction = closeModalFunction;
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
.addEventListener("submit", doAddTransaction);
|
||||
modalElement.querySelector("form").addEventListener("submit", doAddTransaction);
|
||||
},
|
||||
onremoved: () => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
|
|
|
|||
|
|
@ -16,9 +16,7 @@ declare const bulmaJS: BulmaJS;
|
|||
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
|
||||
|
||||
const lotOccupancyId = (
|
||||
document.querySelector(
|
||||
"#lotOccupancy--lotOccupancyId"
|
||||
) as HTMLInputElement
|
||||
document.querySelector("#lotOccupancy--lotOccupancyId") as HTMLInputElement
|
||||
).value;
|
||||
const isCreate = lotOccupancyId === "";
|
||||
|
||||
|
|
@ -41,9 +39,7 @@ declare const bulmaJS: BulmaJS;
|
|||
cityssm.disableNavBlocker();
|
||||
};
|
||||
|
||||
const formElement = document.querySelector(
|
||||
"#form--lotOccupancy"
|
||||
) as HTMLFormElement;
|
||||
const formElement = document.querySelector("#form--lotOccupancy") as HTMLFormElement;
|
||||
|
||||
formElement.addEventListener("submit", (formEvent) => {
|
||||
formEvent.preventDefault();
|
||||
|
|
@ -70,9 +66,7 @@ declare const bulmaJS: BulmaJS;
|
|||
Date.now();
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
message:
|
||||
exports.aliases.occupancy +
|
||||
" Updated Successfully",
|
||||
message: exports.aliases.occupancy + " Updated Successfully",
|
||||
contextualColorName: "success"
|
||||
});
|
||||
}
|
||||
|
|
@ -93,8 +87,6 @@ declare const bulmaJS: BulmaJS;
|
|||
formInputElement.addEventListener("change", setUnsavedChanges);
|
||||
}
|
||||
|
||||
los.initializeDatePickers(formElement);
|
||||
|
||||
if (!isCreate) {
|
||||
document
|
||||
.querySelector("#button--deleteLotOccupancy")
|
||||
|
|
@ -107,16 +99,11 @@ declare const bulmaJS: BulmaJS;
|
|||
{
|
||||
lotOccupancyId
|
||||
},
|
||||
(responseJSON: {
|
||||
success: boolean;
|
||||
errorMessage?: string;
|
||||
}) => {
|
||||
(responseJSON: { success: boolean; errorMessage?: string }) => {
|
||||
if (responseJSON.success) {
|
||||
cityssm.disableNavBlocker();
|
||||
window.location.href =
|
||||
urlPrefix +
|
||||
"/lotOccupancies?t=" +
|
||||
Date.now();
|
||||
urlPrefix + "/lotOccupancies?t=" + Date.now();
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Deleting Record",
|
||||
|
|
@ -168,9 +155,7 @@ declare const bulmaJS: BulmaJS;
|
|||
{
|
||||
occupancyTypeId: occupancyTypeIdElement.value
|
||||
},
|
||||
(responseJSON: {
|
||||
occupancyTypeFields: recordTypes.OccupancyTypeField[];
|
||||
}) => {
|
||||
(responseJSON: { occupancyTypeFields: recordTypes.OccupancyTypeField[] }) => {
|
||||
if (responseJSON.occupancyTypeFields.length === 0) {
|
||||
lotOccupancyFieldsContainerElement.innerHTML =
|
||||
'<div class="message is-info">' +
|
||||
|
|
@ -187,12 +172,10 @@ declare const bulmaJS: BulmaJS;
|
|||
let occupancyTypeFieldIds = "";
|
||||
|
||||
for (const occupancyTypeField of responseJSON.occupancyTypeFields) {
|
||||
occupancyTypeFieldIds +=
|
||||
"," + occupancyTypeField.occupancyTypeFieldId;
|
||||
occupancyTypeFieldIds += "," + occupancyTypeField.occupancyTypeFieldId;
|
||||
|
||||
const fieldName =
|
||||
"lotOccupancyFieldValue_" +
|
||||
occupancyTypeField.occupancyTypeFieldId;
|
||||
"lotOccupancyFieldValue_" + occupancyTypeField.occupancyTypeFieldId;
|
||||
|
||||
const fieldId = "lotOccupancy--" + fieldName;
|
||||
|
||||
|
|
@ -207,11 +190,8 @@ declare const bulmaJS: BulmaJS;
|
|||
fieldElement.querySelector("label").textContent =
|
||||
occupancyTypeField.occupancyTypeField;
|
||||
|
||||
if (
|
||||
occupancyTypeField.occupancyTypeFieldValues === ""
|
||||
) {
|
||||
const inputElement =
|
||||
document.createElement("input");
|
||||
if (occupancyTypeField.occupancyTypeFieldValues === "") {
|
||||
const inputElement = document.createElement("input");
|
||||
|
||||
inputElement.className = "input";
|
||||
|
||||
|
|
@ -221,24 +201,15 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
inputElement.type = "text";
|
||||
|
||||
inputElement.required =
|
||||
occupancyTypeField.isRequired;
|
||||
inputElement.minLength =
|
||||
occupancyTypeField.minimumLength;
|
||||
inputElement.maxLength =
|
||||
occupancyTypeField.maximumLength;
|
||||
inputElement.required = occupancyTypeField.isRequired;
|
||||
inputElement.minLength = occupancyTypeField.minimumLength;
|
||||
inputElement.maxLength = occupancyTypeField.maximumLength;
|
||||
|
||||
if (
|
||||
occupancyTypeField.pattern &&
|
||||
occupancyTypeField.pattern !== ""
|
||||
) {
|
||||
inputElement.pattern =
|
||||
occupancyTypeField.pattern;
|
||||
if (occupancyTypeField.pattern && occupancyTypeField.pattern !== "") {
|
||||
inputElement.pattern = occupancyTypeField.pattern;
|
||||
}
|
||||
|
||||
fieldElement
|
||||
.querySelector(".control")
|
||||
.append(inputElement);
|
||||
fieldElement.querySelector(".control").append(inputElement);
|
||||
} else {
|
||||
fieldElement.querySelector(".control").innerHTML =
|
||||
'<div class="select is-fullwidth"><select id="' +
|
||||
|
|
@ -252,7 +223,8 @@ declare const bulmaJS: BulmaJS;
|
|||
fieldElement.querySelector("select").required =
|
||||
occupancyTypeField.isRequired;
|
||||
|
||||
const optionValues = occupancyTypeField.occupancyTypeFieldValues.split("\n");
|
||||
const optionValues =
|
||||
occupancyTypeField.occupancyTypeFieldValues.split("\n");
|
||||
|
||||
for (const optionValue of optionValues) {
|
||||
const optionElement = document.createElement("option");
|
||||
|
|
@ -296,8 +268,7 @@ declare const bulmaJS: BulmaJS;
|
|||
cancelButton: {
|
||||
text: "Revert the Change",
|
||||
callbackFunction: () => {
|
||||
occupancyTypeIdElement.value =
|
||||
originalOccupancyTypeId;
|
||||
occupancyTypeIdElement.value = originalOccupancyTypeId;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -307,13 +278,10 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
// Lot Selector
|
||||
|
||||
const lotNameElement = document.querySelector(
|
||||
"#lotOccupancy--lotName"
|
||||
) as HTMLInputElement;
|
||||
const lotNameElement = document.querySelector("#lotOccupancy--lotName") as HTMLInputElement;
|
||||
|
||||
lotNameElement.addEventListener("click", (clickEvent) => {
|
||||
const currentLotName = (clickEvent.currentTarget as HTMLInputElement)
|
||||
.value;
|
||||
const currentLotName = (clickEvent.currentTarget as HTMLInputElement).value;
|
||||
|
||||
let lotSelectCloseModalFunction: () => void;
|
||||
|
||||
|
|
@ -325,16 +293,10 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
const selectedLotElement = clickEvent.currentTarget as HTMLElement;
|
||||
|
||||
(
|
||||
document.querySelector(
|
||||
"#lotOccupancy--lotId"
|
||||
) as HTMLInputElement
|
||||
).value = selectedLotElement.dataset.lotId;
|
||||
(
|
||||
document.querySelector(
|
||||
"#lotOccupancy--lotName"
|
||||
) as HTMLInputElement
|
||||
).value = selectedLotElement.dataset.lotName;
|
||||
(document.querySelector("#lotOccupancy--lotId") as HTMLInputElement).value =
|
||||
selectedLotElement.dataset.lotId;
|
||||
(document.querySelector("#lotOccupancy--lotName") as HTMLInputElement).value =
|
||||
selectedLotElement.dataset.lotName;
|
||||
|
||||
setUnsavedChanges();
|
||||
|
||||
|
|
@ -387,9 +349,7 @@ declare const bulmaJS: BulmaJS;
|
|||
cityssm.escapeHTML(lot.lotStatus as string) +
|
||||
"<br />" +
|
||||
'<span class="is-size-7">' +
|
||||
(lot.lotOccupancyCount > 0
|
||||
? "Currently Occupied"
|
||||
: "") +
|
||||
(lot.lotOccupancyCount > 0 ? "Currently Occupied" : "") +
|
||||
"</span>" +
|
||||
"</div>") +
|
||||
"</div>";
|
||||
|
|
@ -419,11 +379,8 @@ declare const bulmaJS: BulmaJS;
|
|||
) as HTMLInputElement;
|
||||
|
||||
if (
|
||||
(
|
||||
document.querySelector(
|
||||
"#lotOccupancy--lotId"
|
||||
) as HTMLInputElement
|
||||
).value !== ""
|
||||
(document.querySelector("#lotOccupancy--lotId") as HTMLInputElement).value !==
|
||||
""
|
||||
) {
|
||||
lotNameFilterElement.value = currentLotName;
|
||||
}
|
||||
|
|
@ -434,27 +391,20 @@ declare const bulmaJS: BulmaJS;
|
|||
const occupancyStatusFilterElement = modalElement.querySelector(
|
||||
"#lotSelect--occupancyStatus"
|
||||
) as HTMLSelectElement;
|
||||
occupancyStatusFilterElement.addEventListener(
|
||||
"change",
|
||||
searchLots
|
||||
);
|
||||
occupancyStatusFilterElement.addEventListener("change", searchLots);
|
||||
|
||||
if (currentLotName !== "") {
|
||||
occupancyStatusFilterElement.value = "";
|
||||
}
|
||||
|
||||
lotSelectFormElement =
|
||||
modalElement.querySelector("#form--lotSelect");
|
||||
lotSelectFormElement = modalElement.querySelector("#form--lotSelect");
|
||||
lotSelectResultsElement = modalElement.querySelector(
|
||||
"#resultsContainer--lotSelect"
|
||||
);
|
||||
|
||||
lotSelectFormElement.addEventListener(
|
||||
"submit",
|
||||
(submitEvent) => {
|
||||
lotSelectFormElement.addEventListener("submit", (submitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
searchLots();
|
||||
},
|
||||
|
|
@ -464,31 +414,20 @@ declare const bulmaJS: BulmaJS;
|
|||
});
|
||||
});
|
||||
|
||||
document
|
||||
.querySelector(".is-lot-view-button")
|
||||
.addEventListener("click", () => {
|
||||
const lotId = (
|
||||
document.querySelector(
|
||||
"#lotOccupancy--lotId"
|
||||
) as HTMLInputElement
|
||||
).value;
|
||||
document.querySelector(".is-lot-view-button").addEventListener("click", () => {
|
||||
const lotId = (document.querySelector("#lotOccupancy--lotId") as HTMLInputElement).value;
|
||||
|
||||
if (lotId) {
|
||||
window.open(urlPrefix + "/lots/" + lotId);
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
message:
|
||||
"No " +
|
||||
exports.aliases.lot.toLowerCase() +
|
||||
" selected.",
|
||||
message: "No " + exports.aliases.lot.toLowerCase() + " selected.",
|
||||
contextualColorName: "info"
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
document
|
||||
.querySelector(".is-clear-lot-button")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector(".is-clear-lot-button").addEventListener("click", () => {
|
||||
if (lotNameElement.disabled) {
|
||||
bulmaJS.alert({
|
||||
message: "You need to unlock the field before clearing it.",
|
||||
|
|
@ -496,29 +435,28 @@ declare const bulmaJS: BulmaJS;
|
|||
});
|
||||
} else {
|
||||
lotNameElement.value = "(No " + exports.aliases.lot + ")";
|
||||
(
|
||||
document.querySelector(
|
||||
"#lotOccupancy--lotId"
|
||||
) as HTMLInputElement
|
||||
).value = "";
|
||||
(document.querySelector("#lotOccupancy--lotId") as HTMLInputElement).value = "";
|
||||
setUnsavedChanges();
|
||||
}
|
||||
});
|
||||
|
||||
// Start Date
|
||||
|
||||
los.initializeDatePickers(formElement);
|
||||
|
||||
document
|
||||
.querySelector("#lotOccupancy--occupancyStartDateString")
|
||||
.addEventListener("change", () => {
|
||||
(
|
||||
document.querySelector(
|
||||
"#lotOccupancy--occupancyEndDateString"
|
||||
) as HTMLInputElement
|
||||
).min = (
|
||||
const endDatePicker = document.querySelector("#lotOccupancy--occupancyEndDateString")
|
||||
.bulmaCalendar.datePicker;
|
||||
|
||||
endDatePicker.min = (
|
||||
document.querySelector(
|
||||
"#lotOccupancy--occupancyStartDateString"
|
||||
) as HTMLInputElement
|
||||
).value;
|
||||
|
||||
endDatePicker.refresh();
|
||||
});
|
||||
|
||||
los.initializeUnlockFieldButtons(formElement);
|
||||
|
|
@ -534,17 +472,13 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
const openEditLotOccupancyOccupant = (clickEvent: Event) => {
|
||||
const lotOccupantIndex = Number.parseInt(
|
||||
(clickEvent.currentTarget as HTMLElement).closest("tr").dataset
|
||||
.lotOccupantIndex,
|
||||
(clickEvent.currentTarget as HTMLElement).closest("tr").dataset.lotOccupantIndex,
|
||||
10
|
||||
);
|
||||
|
||||
const lotOccupancyOccupant = lotOccupancyOccupants.find(
|
||||
(currentLotOccupancyOccupant) => {
|
||||
return (
|
||||
currentLotOccupancyOccupant.lotOccupantIndex ===
|
||||
lotOccupantIndex
|
||||
);
|
||||
return currentLotOccupancyOccupant.lotOccupantIndex === lotOccupantIndex;
|
||||
}
|
||||
);
|
||||
|
||||
|
|
@ -563,15 +497,12 @@ declare const bulmaJS: BulmaJS;
|
|||
lotOccupancyOccupants?: recordTypes.LotOccupancyOccupant[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyOccupants =
|
||||
responseJSON.lotOccupancyOccupants;
|
||||
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
|
||||
editCloseModalFunction();
|
||||
renderLotOccupancyOccupants();
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
title:
|
||||
"Error Updating " +
|
||||
exports.aliases.occupant,
|
||||
title: "Error Updating " + exports.aliases.occupant,
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
|
|
@ -595,8 +526,7 @@ declare const bulmaJS: BulmaJS;
|
|||
) as HTMLInputElement
|
||||
).value = lotOccupantIndex.toString();
|
||||
|
||||
const lotOccupantTypeSelectElement =
|
||||
modalElement.querySelector(
|
||||
const lotOccupantTypeSelectElement = modalElement.querySelector(
|
||||
"#lotOccupancyOccupantEdit--lotOccupantTypeId"
|
||||
) as HTMLSelectElement;
|
||||
|
||||
|
|
@ -604,10 +534,8 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
for (const lotOccupantType of exports.lotOccupantTypes as recordTypes.LotOccupantType[]) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value =
|
||||
lotOccupantType.lotOccupantTypeId.toString();
|
||||
optionElement.textContent =
|
||||
lotOccupantType.lotOccupantType;
|
||||
optionElement.value = lotOccupantType.lotOccupantTypeId.toString();
|
||||
optionElement.textContent = lotOccupantType.lotOccupantType;
|
||||
|
||||
if (
|
||||
lotOccupantType.lotOccupantTypeId ===
|
||||
|
|
@ -623,10 +551,8 @@ declare const bulmaJS: BulmaJS;
|
|||
if (!lotOccupantTypeSelected) {
|
||||
const optionElement = document.createElement("option");
|
||||
|
||||
optionElement.value =
|
||||
lotOccupancyOccupant.lotOccupantTypeId.toString();
|
||||
optionElement.textContent =
|
||||
lotOccupancyOccupant.lotOccupantType as string;
|
||||
optionElement.value = lotOccupancyOccupant.lotOccupantTypeId.toString();
|
||||
optionElement.textContent = lotOccupancyOccupant.lotOccupantType as string;
|
||||
optionElement.selected = true;
|
||||
|
||||
lotOccupantTypeSelectElement.append(optionElement);
|
||||
|
|
@ -689,9 +615,8 @@ declare const bulmaJS: BulmaJS;
|
|||
};
|
||||
|
||||
const deleteLotOccupancyOccupant = (clickEvent: Event) => {
|
||||
const lotOccupantIndex = (
|
||||
clickEvent.currentTarget as HTMLElement
|
||||
).closest("tr").dataset.lotOccupantIndex;
|
||||
const lotOccupantIndex = (clickEvent.currentTarget as HTMLElement).closest("tr").dataset
|
||||
.lotOccupantIndex;
|
||||
|
||||
const doDelete = () => {
|
||||
cityssm.postJSON(
|
||||
|
|
@ -706,14 +631,11 @@ declare const bulmaJS: BulmaJS;
|
|||
lotOccupancyOccupants: recordTypes.LotOccupancyOccupant[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyOccupants =
|
||||
responseJSON.lotOccupancyOccupants;
|
||||
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
|
||||
renderLotOccupancyOccupants();
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
title:
|
||||
"Error Removing " +
|
||||
exports.aliases.occupant,
|
||||
title: "Error Removing " + exports.aliases.occupant,
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
|
|
@ -755,8 +677,7 @@ declare const bulmaJS: BulmaJS;
|
|||
}
|
||||
|
||||
const tableElement = document.createElement("table");
|
||||
tableElement.className =
|
||||
"table is-fullwidth is-striped is-hoverable";
|
||||
tableElement.className = "table is-fullwidth is-striped is-hoverable";
|
||||
|
||||
tableElement.innerHTML =
|
||||
"<thead><tr>" +
|
||||
|
|
@ -779,40 +700,24 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
tableRowElement.innerHTML =
|
||||
"<td>" +
|
||||
cityssm.escapeHTML(
|
||||
lotOccupancyOccupant.lotOccupantType as string
|
||||
) +
|
||||
cityssm.escapeHTML(lotOccupancyOccupant.lotOccupantType as string) +
|
||||
"</td>" +
|
||||
("<td>" + cityssm.escapeHTML(lotOccupancyOccupant.occupantName) + "</td>") +
|
||||
("<td>" +
|
||||
cityssm.escapeHTML(lotOccupancyOccupant.occupantName) +
|
||||
"</td>") +
|
||||
("<td>" +
|
||||
cityssm.escapeHTML(
|
||||
lotOccupancyOccupant.occupantAddress1
|
||||
) +
|
||||
cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) +
|
||||
"<br />" +
|
||||
(lotOccupancyOccupant.occupantAddress2
|
||||
? cityssm.escapeHTML(
|
||||
lotOccupancyOccupant.occupantAddress2
|
||||
) + "<br />"
|
||||
? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress2) + "<br />"
|
||||
: "") +
|
||||
(lotOccupancyOccupant.occupantCity
|
||||
? cityssm.escapeHTML(
|
||||
lotOccupancyOccupant.occupantCity
|
||||
) + ", "
|
||||
? cityssm.escapeHTML(lotOccupancyOccupant.occupantCity) + ", "
|
||||
: "") +
|
||||
cityssm.escapeHTML(
|
||||
lotOccupancyOccupant.occupantProvince
|
||||
) +
|
||||
cityssm.escapeHTML(lotOccupancyOccupant.occupantProvince) +
|
||||
"<br />" +
|
||||
cityssm.escapeHTML(
|
||||
lotOccupancyOccupant.occupantPostalCode
|
||||
) +
|
||||
cityssm.escapeHTML(lotOccupancyOccupant.occupantPostalCode) +
|
||||
"</td>") +
|
||||
("<td>" +
|
||||
cityssm.escapeHTML(
|
||||
lotOccupancyOccupant.occupantPhoneNumber
|
||||
) +
|
||||
cityssm.escapeHTML(lotOccupancyOccupant.occupantPhoneNumber) +
|
||||
"</td>") +
|
||||
('<td class="is-hidden-print">' +
|
||||
'<div class="buttons are-small is-justify-content-end">' +
|
||||
|
|
@ -841,9 +746,7 @@ declare const bulmaJS: BulmaJS;
|
|||
occupantsContainer.append(tableElement);
|
||||
};
|
||||
|
||||
document
|
||||
.querySelector("#button--addOccupant")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector("#button--addOccupant").addEventListener("click", () => {
|
||||
let addFormElement: HTMLFormElement;
|
||||
let addCloseModalFunction: () => void;
|
||||
|
||||
|
|
@ -859,15 +762,12 @@ declare const bulmaJS: BulmaJS;
|
|||
lotOccupancyOccupants?: recordTypes.LotOccupancyOccupant[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyOccupants =
|
||||
responseJSON.lotOccupancyOccupants;
|
||||
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
|
||||
addCloseModalFunction();
|
||||
renderLotOccupancyOccupants();
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
title:
|
||||
"Error Adding " +
|
||||
exports.aliases.occupant,
|
||||
title: "Error Adding " + exports.aliases.occupant,
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
|
|
@ -886,18 +786,14 @@ declare const bulmaJS: BulmaJS;
|
|||
) as HTMLInputElement
|
||||
).value = lotOccupancyId;
|
||||
|
||||
const lotOccupantTypeSelectElement =
|
||||
modalElement.querySelector(
|
||||
const lotOccupantTypeSelectElement = modalElement.querySelector(
|
||||
"#lotOccupancyOccupantAdd--lotOccupantTypeId"
|
||||
) as HTMLSelectElement;
|
||||
|
||||
for (const lotOccupantType of exports.lotOccupantTypes as recordTypes.LotOccupantType[]) {
|
||||
const optionElement =
|
||||
document.createElement("option");
|
||||
optionElement.value =
|
||||
lotOccupantType.lotOccupantTypeId.toString();
|
||||
optionElement.textContent =
|
||||
lotOccupantType.lotOccupantType;
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value = lotOccupantType.lotOccupantTypeId.toString();
|
||||
optionElement.textContent = lotOccupantType.lotOccupantType;
|
||||
lotOccupantTypeSelectElement.append(optionElement);
|
||||
}
|
||||
|
||||
|
|
@ -940,8 +836,7 @@ declare const bulmaJS: BulmaJS;
|
|||
*/
|
||||
|
||||
if (!isCreate) {
|
||||
let lotOccupancyComments: recordTypes.LotOccupancyComment[] =
|
||||
exports.lotOccupancyComments;
|
||||
let lotOccupancyComments: recordTypes.LotOccupancyComment[] = exports.lotOccupancyComments;
|
||||
delete exports.lotOccupancyComments;
|
||||
|
||||
const openEditLotOccupancyComment = (clickEvent: Event) => {
|
||||
|
|
@ -951,14 +846,9 @@ declare const bulmaJS: BulmaJS;
|
|||
10
|
||||
);
|
||||
|
||||
const lotOccupancyComment = lotOccupancyComments.find(
|
||||
(currentLotOccupancyComment) => {
|
||||
return (
|
||||
currentLotOccupancyComment.lotOccupancyCommentId ===
|
||||
lotOccupancyCommentId
|
||||
);
|
||||
}
|
||||
);
|
||||
const lotOccupancyComment = lotOccupancyComments.find((currentLotOccupancyComment) => {
|
||||
return currentLotOccupancyComment.lotOccupancyCommentId === lotOccupancyCommentId;
|
||||
});
|
||||
|
||||
let editFormElement: HTMLFormElement;
|
||||
let editCloseModalFunction: () => void;
|
||||
|
|
@ -975,8 +865,7 @@ declare const bulmaJS: BulmaJS;
|
|||
lotOccupancyComments?: recordTypes.LotOccupancyComment[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyComments =
|
||||
responseJSON.lotOccupancyComments;
|
||||
lotOccupancyComments = responseJSON.lotOccupancyComments;
|
||||
editCloseModalFunction();
|
||||
renderLotOccupancyComments();
|
||||
} else {
|
||||
|
|
@ -1024,6 +913,9 @@ declare const bulmaJS: BulmaJS;
|
|||
onshown: (modalElement, closeModalFunction) => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
|
||||
los.initializeDatePickers(modalElement);
|
||||
los.initializeTimePickers(modalElement);
|
||||
|
||||
(
|
||||
modalElement.querySelector(
|
||||
"#lotOccupancyCommentEdit--lotOccupancyComment"
|
||||
|
|
@ -1061,8 +953,7 @@ declare const bulmaJS: BulmaJS;
|
|||
lotOccupancyComments: recordTypes.LotOccupancyComment[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyComments =
|
||||
responseJSON.lotOccupancyComments;
|
||||
lotOccupancyComments = responseJSON.lotOccupancyComments;
|
||||
renderLotOccupancyComments();
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
|
|
@ -1100,8 +991,7 @@ declare const bulmaJS: BulmaJS;
|
|||
}
|
||||
|
||||
const tableElement = document.createElement("table");
|
||||
tableElement.className =
|
||||
"table is-fullwidth is-striped is-hoverable";
|
||||
tableElement.className = "table is-fullwidth is-striped is-hoverable";
|
||||
tableElement.innerHTML =
|
||||
"<thead><tr>" +
|
||||
"<th>Commentor</th>" +
|
||||
|
|
@ -1118,21 +1008,16 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
tableRowElement.innerHTML =
|
||||
"<td>" +
|
||||
cityssm.escapeHTML(
|
||||
lotOccupancyComment.recordCreate_userName
|
||||
) +
|
||||
cityssm.escapeHTML(lotOccupancyComment.recordCreate_userName) +
|
||||
"</td>" +
|
||||
"<td>" +
|
||||
lotOccupancyComment.lotOccupancyCommentDateString +
|
||||
(lotOccupancyComment.lotOccupancyCommentTime === 0
|
||||
? ""
|
||||
: " " +
|
||||
lotOccupancyComment.lotOccupancyCommentTimeString) +
|
||||
: " " + lotOccupancyComment.lotOccupancyCommentTimeString) +
|
||||
"</td>" +
|
||||
"<td>" +
|
||||
cityssm.escapeHTML(
|
||||
lotOccupancyComment.lotOccupancyComment
|
||||
) +
|
||||
cityssm.escapeHTML(lotOccupancyComment.lotOccupancyComment) +
|
||||
"</td>" +
|
||||
('<td class="is-hidden-print">' +
|
||||
'<div class="buttons are-small is-justify-content-end">' +
|
||||
|
|
@ -1160,9 +1045,7 @@ declare const bulmaJS: BulmaJS;
|
|||
containerElement.append(tableElement);
|
||||
};
|
||||
|
||||
document
|
||||
.querySelector("#button--addComment")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector("#button--addComment").addEventListener("click", () => {
|
||||
let addFormElement: HTMLFormElement;
|
||||
let addCloseModalFunction: () => void;
|
||||
|
||||
|
|
@ -1178,8 +1061,7 @@ declare const bulmaJS: BulmaJS;
|
|||
lotOccupancyComments?: recordTypes.LotOccupancyComment[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyComments =
|
||||
responseJSON.lotOccupancyComments;
|
||||
lotOccupancyComments = responseJSON.lotOccupancyComments;
|
||||
addCloseModalFunction();
|
||||
renderLotOccupancyComments();
|
||||
} else {
|
||||
|
|
@ -1231,8 +1113,7 @@ declare const bulmaJS: BulmaJS;
|
|||
*/
|
||||
|
||||
if (!isCreate) {
|
||||
let lotOccupancyFees: recordTypes.LotOccupancyFee[] =
|
||||
exports.lotOccupancyFees;
|
||||
let lotOccupancyFees: recordTypes.LotOccupancyFee[] = exports.lotOccupancyFees;
|
||||
delete exports.lotOccupancyFees;
|
||||
|
||||
const lotOccupancyFeesContainerElement = document.querySelector(
|
||||
|
|
@ -1332,10 +1213,10 @@ declare const bulmaJS: BulmaJS;
|
|||
for (const lotOccupancyFee of lotOccupancyFees) {
|
||||
const tableRowElement = document.createElement("tr");
|
||||
tableRowElement.className = "container--lotOccupancyFee";
|
||||
tableRowElement.dataset.feeId =
|
||||
lotOccupancyFee.feeId.toString();
|
||||
tableRowElement.dataset.includeQuantity =
|
||||
lotOccupancyFee.includeQuantity ? "1" : "0";
|
||||
tableRowElement.dataset.feeId = lotOccupancyFee.feeId.toString();
|
||||
tableRowElement.dataset.includeQuantity = lotOccupancyFee.includeQuantity
|
||||
? "1"
|
||||
: "0";
|
||||
|
||||
tableRowElement.innerHTML =
|
||||
'<td colspan="' +
|
||||
|
|
@ -1354,9 +1235,7 @@ declare const bulmaJS: BulmaJS;
|
|||
"</td>" +
|
||||
"<td>=</td>") +
|
||||
'<td class="has-text-right">$' +
|
||||
(
|
||||
lotOccupancyFee.feeAmount * lotOccupancyFee.quantity
|
||||
).toFixed(2) +
|
||||
(lotOccupancyFee.feeAmount * lotOccupancyFee.quantity).toFixed(2) +
|
||||
"</td>" +
|
||||
('<td class="is-hidden-print">' +
|
||||
'<button class="button is-small is-danger is-light" data-tooltip="Delete Fee" type="button">' +
|
||||
|
|
@ -1368,14 +1247,10 @@ declare const bulmaJS: BulmaJS;
|
|||
.querySelector("button")
|
||||
.addEventListener("click", deleteLotOccupancyFee);
|
||||
|
||||
lotOccupancyFeesContainerElement
|
||||
.querySelector("tbody")
|
||||
.append(tableRowElement);
|
||||
lotOccupancyFeesContainerElement.querySelector("tbody").append(tableRowElement);
|
||||
|
||||
feeAmountTotal +=
|
||||
lotOccupancyFee.feeAmount * lotOccupancyFee.quantity;
|
||||
taxAmountTotal +=
|
||||
lotOccupancyFee.taxAmount * lotOccupancyFee.quantity;
|
||||
feeAmountTotal += lotOccupancyFee.feeAmount * lotOccupancyFee.quantity;
|
||||
taxAmountTotal += lotOccupancyFee.taxAmount * lotOccupancyFee.quantity;
|
||||
}
|
||||
|
||||
(
|
||||
|
|
@ -1397,13 +1272,10 @@ declare const bulmaJS: BulmaJS;
|
|||
renderLotOccupancyTransactions();
|
||||
};
|
||||
|
||||
document
|
||||
.querySelector("#button--addFee")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector("#button--addFee").addEventListener("click", () => {
|
||||
if (hasUnsavedChanges) {
|
||||
bulmaJS.alert({
|
||||
message:
|
||||
"Please save all unsaved changes before adding fees.",
|
||||
message: "Please save all unsaved changes before adding fees.",
|
||||
contextualColorName: "warning"
|
||||
});
|
||||
return;
|
||||
|
|
@ -1414,10 +1286,7 @@ declare const bulmaJS: BulmaJS;
|
|||
let feeFilterElement: HTMLInputElement;
|
||||
let feeFilterResultsElement: HTMLElement;
|
||||
|
||||
const doAddFee = (
|
||||
feeId: number,
|
||||
quantity: number | string = 1
|
||||
) => {
|
||||
const doAddFee = (feeId: number, quantity: number | string = 1) => {
|
||||
cityssm.postJSON(
|
||||
urlPrefix + "/lotOccupancies/doAddLotOccupancyFee",
|
||||
{
|
||||
|
|
@ -1431,8 +1300,7 @@ declare const bulmaJS: BulmaJS;
|
|||
lotOccupancyFees?: recordTypes.LotOccupancyFee[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyFees =
|
||||
responseJSON.lotOccupancyFees;
|
||||
lotOccupancyFees = responseJSON.lotOccupancyFees;
|
||||
renderLotOccupancyFees();
|
||||
filterFees();
|
||||
} else {
|
||||
|
|
@ -1492,14 +1360,9 @@ declare const bulmaJS: BulmaJS;
|
|||
10
|
||||
);
|
||||
|
||||
const feeCategory = feeCategories.find(
|
||||
(currentFeeCategory) => {
|
||||
return (
|
||||
currentFeeCategory.feeCategoryId ===
|
||||
feeCategoryId
|
||||
);
|
||||
}
|
||||
);
|
||||
const feeCategory = feeCategories.find((currentFeeCategory) => {
|
||||
return currentFeeCategory.feeCategoryId === feeCategoryId;
|
||||
});
|
||||
|
||||
const fee = feeCategory.fees.find((currentFee) => {
|
||||
return currentFee.feeId === feeId;
|
||||
|
|
@ -1513,18 +1376,13 @@ declare const bulmaJS: BulmaJS;
|
|||
};
|
||||
|
||||
const filterFees = () => {
|
||||
const filterStringPieces = feeFilterElement.value
|
||||
.trim()
|
||||
.toLowerCase()
|
||||
.split(" ");
|
||||
const filterStringPieces = feeFilterElement.value.trim().toLowerCase().split(" ");
|
||||
|
||||
feeFilterResultsElement.innerHTML = "";
|
||||
|
||||
for (const feeCategory of feeCategories) {
|
||||
const categoryContainerElement =
|
||||
document.createElement("div");
|
||||
categoryContainerElement.className =
|
||||
"container--feeCategory";
|
||||
const categoryContainerElement = document.createElement("div");
|
||||
categoryContainerElement.className = "container--feeCategory";
|
||||
categoryContainerElement.dataset.feeCategoryId =
|
||||
feeCategory.feeCategoryId.toString();
|
||||
categoryContainerElement.innerHTML =
|
||||
|
|
@ -1549,11 +1407,7 @@ declare const bulmaJS: BulmaJS;
|
|||
let includeFee = true;
|
||||
|
||||
for (const filterStringPiece of filterStringPieces) {
|
||||
if (
|
||||
!fee.feeName
|
||||
.toLowerCase()
|
||||
.includes(filterStringPiece)
|
||||
) {
|
||||
if (!fee.feeName.toLowerCase().includes(filterStringPiece)) {
|
||||
includeFee = false;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1565,12 +1419,9 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
hasFees = true;
|
||||
|
||||
const panelBlockElement =
|
||||
document.createElement("a");
|
||||
panelBlockElement.className =
|
||||
"panel-block is-block container--fee";
|
||||
panelBlockElement.dataset.feeId =
|
||||
fee.feeId.toString();
|
||||
const panelBlockElement = document.createElement("a");
|
||||
panelBlockElement.className = "panel-block is-block container--fee";
|
||||
panelBlockElement.dataset.feeId = fee.feeId.toString();
|
||||
panelBlockElement.href = "#";
|
||||
|
||||
panelBlockElement.innerHTML =
|
||||
|
|
@ -1578,34 +1429,23 @@ declare const bulmaJS: BulmaJS;
|
|||
cityssm.escapeHTML(fee.feeName) +
|
||||
"</strong><br />" +
|
||||
"<small>" +
|
||||
cityssm
|
||||
.escapeHTML(fee.feeDescription)
|
||||
.replace(/\n/g, "<br />") +
|
||||
cityssm.escapeHTML(fee.feeDescription).replace(/\n/g, "<br />") +
|
||||
"</small>";
|
||||
|
||||
panelBlockElement.addEventListener(
|
||||
"click",
|
||||
tryAddFee
|
||||
);
|
||||
panelBlockElement.addEventListener("click", tryAddFee);
|
||||
|
||||
categoryContainerElement
|
||||
.querySelector(".panel")
|
||||
.append(panelBlockElement);
|
||||
categoryContainerElement.querySelector(".panel").append(panelBlockElement);
|
||||
}
|
||||
|
||||
if (hasFees) {
|
||||
feeFilterResultsElement.append(
|
||||
categoryContainerElement
|
||||
);
|
||||
feeFilterResultsElement.append(categoryContainerElement);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
cityssm.openHtmlModal("lotOccupancy-addFee", {
|
||||
onshow: (modalElement) => {
|
||||
feeFilterElement = modalElement.querySelector(
|
||||
"#feeSelect--feeName"
|
||||
);
|
||||
feeFilterElement = modalElement.querySelector("#feeSelect--feeName");
|
||||
feeFilterResultsElement = modalElement.querySelector(
|
||||
"#resultsContainer--feeSelect"
|
||||
);
|
||||
|
|
@ -1615,16 +1455,11 @@ declare const bulmaJS: BulmaJS;
|
|||
{
|
||||
lotOccupancyId
|
||||
},
|
||||
(responseJSON: {
|
||||
feeCategories: recordTypes.FeeCategory[];
|
||||
}) => {
|
||||
(responseJSON: { feeCategories: recordTypes.FeeCategory[] }) => {
|
||||
feeCategories = responseJSON.feeCategories;
|
||||
|
||||
feeFilterElement.disabled = false;
|
||||
feeFilterElement.addEventListener(
|
||||
"keyup",
|
||||
filterFees
|
||||
);
|
||||
feeFilterElement.addEventListener("keyup", filterFees);
|
||||
feeFilterElement.focus();
|
||||
|
||||
filterFees();
|
||||
|
|
@ -1655,8 +1490,7 @@ declare const bulmaJS: BulmaJS;
|
|||
let transactionGrandTotal = 0;
|
||||
|
||||
for (const lotOccupancyTransaction of lotOccupancyTransactions) {
|
||||
transactionGrandTotal +=
|
||||
lotOccupancyTransaction.transactionAmount;
|
||||
transactionGrandTotal += lotOccupancyTransaction.transactionAmount;
|
||||
}
|
||||
|
||||
return transactionGrandTotal;
|
||||
|
|
@ -1671,8 +1505,7 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
const doDelete = () => {
|
||||
cityssm.postJSON(
|
||||
urlPrefix +
|
||||
"/lotOccupancies/doDeleteLotOccupancyTransaction",
|
||||
urlPrefix + "/lotOccupancies/doDeleteLotOccupancyTransaction",
|
||||
{
|
||||
lotOccupancyId,
|
||||
transactionIndex
|
||||
|
|
@ -1683,8 +1516,7 @@ declare const bulmaJS: BulmaJS;
|
|||
lotOccupancyTransactions?: recordTypes.LotOccupancyTransaction[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyTransactions =
|
||||
responseJSON.lotOccupancyTransactions;
|
||||
lotOccupancyTransactions = responseJSON.lotOccupancyTransactions;
|
||||
renderLotOccupancyTransactions();
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
|
|
@ -1741,12 +1573,10 @@ declare const bulmaJS: BulmaJS;
|
|||
let transactionGrandTotal = 0;
|
||||
|
||||
for (const lotOccupancyTransaction of lotOccupancyTransactions) {
|
||||
transactionGrandTotal +=
|
||||
lotOccupancyTransaction.transactionAmount;
|
||||
transactionGrandTotal += lotOccupancyTransaction.transactionAmount;
|
||||
|
||||
const tableRowElement = document.createElement("tr");
|
||||
tableRowElement.className =
|
||||
"container--lotOccupancyTransaction";
|
||||
tableRowElement.className = "container--lotOccupancyTransaction";
|
||||
tableRowElement.dataset.transactionIndex =
|
||||
lotOccupancyTransaction.transactionIndex.toString();
|
||||
|
||||
|
|
@ -1755,14 +1585,10 @@ declare const bulmaJS: BulmaJS;
|
|||
lotOccupancyTransaction.transactionDateString +
|
||||
"</td>" +
|
||||
("<td>" +
|
||||
cityssm.escapeHTML(
|
||||
lotOccupancyTransaction.externalReceiptNumber
|
||||
) +
|
||||
cityssm.escapeHTML(lotOccupancyTransaction.externalReceiptNumber) +
|
||||
"<br />" +
|
||||
"<small>" +
|
||||
cityssm.escapeHTML(
|
||||
lotOccupancyTransaction.transactionNote
|
||||
) +
|
||||
cityssm.escapeHTML(lotOccupancyTransaction.transactionNote) +
|
||||
"</small>" +
|
||||
"</td>") +
|
||||
('<td class="has-text-right">$' +
|
||||
|
|
@ -1808,17 +1634,14 @@ declare const bulmaJS: BulmaJS;
|
|||
}
|
||||
};
|
||||
|
||||
document
|
||||
.querySelector("#button--addTransaction")
|
||||
.addEventListener("click", () => {
|
||||
document.querySelector("#button--addTransaction").addEventListener("click", () => {
|
||||
let addCloseModalFunction: () => void;
|
||||
|
||||
const doAddTransaction = (submitEvent: SubmitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
|
||||
cityssm.postJSON(
|
||||
urlPrefix +
|
||||
"/lotOccupancies/doAddLotOccupancyTransaction",
|
||||
urlPrefix + "/lotOccupancies/doAddLotOccupancyTransaction",
|
||||
submitEvent.currentTarget,
|
||||
(responseJSON: {
|
||||
success: boolean;
|
||||
|
|
@ -1826,8 +1649,7 @@ declare const bulmaJS: BulmaJS;
|
|||
lotOccupancyTransactions?: recordTypes.LotOccupancyTransaction[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
lotOccupancyTransactions =
|
||||
responseJSON.lotOccupancyTransactions;
|
||||
lotOccupancyTransactions = responseJSON.lotOccupancyTransactions;
|
||||
addCloseModalFunction();
|
||||
renderLotOccupancyTransactions();
|
||||
} else {
|
||||
|
|
@ -1852,17 +1674,13 @@ declare const bulmaJS: BulmaJS;
|
|||
).value = lotOccupancyId.toString();
|
||||
|
||||
const feeGrandTotal = getFeeGrandTotal();
|
||||
const transactionGrandTotal =
|
||||
getTransactionGrandTotal();
|
||||
const transactionGrandTotal = getTransactionGrandTotal();
|
||||
|
||||
const transactionAmountElement =
|
||||
modalElement.querySelector(
|
||||
const transactionAmountElement = modalElement.querySelector(
|
||||
"#lotOccupancyTransactionAdd--transactionAmount"
|
||||
) as HTMLInputElement;
|
||||
|
||||
transactionAmountElement.min = (
|
||||
-1 * transactionGrandTotal
|
||||
).toFixed(2);
|
||||
transactionAmountElement.min = (-1 * transactionGrandTotal).toFixed(2);
|
||||
transactionAmountElement.max = Math.max(
|
||||
feeGrandTotal - transactionGrandTotal,
|
||||
0
|
||||
|
|
@ -1877,9 +1695,7 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
addCloseModalFunction = closeModalFunction;
|
||||
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
.addEventListener("submit", doAddTransaction);
|
||||
modalElement.querySelector("form").addEventListener("submit", doAddTransaction);
|
||||
},
|
||||
onremoved: () => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
|
|
|
|||
|
|
@ -43,9 +43,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
};
|
||||
const datePickerBaseOptions = {
|
||||
type: "date",
|
||||
dateFormat: "yyyy-MM-dd",
|
||||
showFooter: false,
|
||||
color: "info"
|
||||
color: "info",
|
||||
displayMode: "dialog"
|
||||
};
|
||||
const initializeDatePickers = (containerElement) => {
|
||||
const dateElements = containerElement.querySelectorAll("input[type='date']");
|
||||
|
|
@ -64,7 +66,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
cal.on("save", () => {
|
||||
dateElement.dispatchEvent(new Event("change"));
|
||||
});
|
||||
const clearButtonElement = containerElement.querySelector("#" + cal._id + " .datetimepicker-clear-button");
|
||||
const datepickerElement = containerElement.querySelector("#" + cal._id);
|
||||
const datePickerNavButtonElements = datepickerElement.querySelectorAll(".datepicker-nav button.is-text");
|
||||
for (const datePickerNavButtonElement of datePickerNavButtonElements) {
|
||||
datePickerNavButtonElement.classList.add("is-" + datePickerBaseOptions.color);
|
||||
datePickerNavButtonElement.classList.remove("is-text");
|
||||
}
|
||||
const clearButtonElement = datepickerElement.querySelector(".datetimepicker-clear-button");
|
||||
if (clearButtonElement) {
|
||||
if (dateElement.required) {
|
||||
clearButtonElement.remove();
|
||||
|
|
@ -72,7 +80,44 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
else {
|
||||
clearButtonElement.dataset.tooltip = "Clear";
|
||||
clearButtonElement.innerHTML =
|
||||
'<i class="fas fa-times" aria-hidden="true"></i>';
|
||||
'<span class="has-text-weight-bold" aria-hidden="true">×</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
const timePickerBaseOptions = {
|
||||
type: "time",
|
||||
timeFormat: "hh:mm",
|
||||
color: "info",
|
||||
displayMode: "dialog",
|
||||
validateLabel: "Set Time",
|
||||
minuteSteps: 1
|
||||
};
|
||||
const initializeTimePickers = (containerElement) => {
|
||||
const timeElements = containerElement.querySelectorAll("input[type='time']");
|
||||
for (const timeElement of timeElements) {
|
||||
const timePickerOptions = Object.assign({}, timePickerBaseOptions);
|
||||
if (timeElement.required) {
|
||||
timePickerOptions.showClearButton = false;
|
||||
}
|
||||
const cal = exports.bulmaCalendar.attach(timeElement, timePickerOptions)[0];
|
||||
cal.on("save", () => {
|
||||
timeElement.dispatchEvent(new Event("change"));
|
||||
});
|
||||
const timePickerElement = containerElement.querySelector("#" + cal._id);
|
||||
const timePickerCancelButtonElement = timePickerElement.querySelector(".datetimepicker-footer-cancel");
|
||||
if (timePickerCancelButtonElement) {
|
||||
timePickerCancelButtonElement.remove();
|
||||
}
|
||||
const clearButtonElement = timePickerElement.querySelector(".datetimepicker-clear-button");
|
||||
if (clearButtonElement) {
|
||||
if (timeElement.required) {
|
||||
clearButtonElement.remove();
|
||||
}
|
||||
else {
|
||||
clearButtonElement.dataset.tooltip = "Clear";
|
||||
clearButtonElement.innerHTML =
|
||||
'<span class="has-text-weight-bold" aria-hidden="true">×</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -122,6 +167,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
highlightMap,
|
||||
initializeUnlockFieldButtons,
|
||||
initializeDatePickers,
|
||||
initializeTimePickers,
|
||||
populateAliases,
|
||||
getRandomColor
|
||||
};
|
||||
|
|
|
|||
|
|
@ -74,9 +74,11 @@ declare const cityssm: cityssmGlobal;
|
|||
};
|
||||
|
||||
const datePickerBaseOptions: BulmaCalendarOptions = {
|
||||
type: "date",
|
||||
dateFormat: "yyyy-MM-dd",
|
||||
showFooter: false,
|
||||
color: "info"
|
||||
color: "info",
|
||||
displayMode: "dialog"
|
||||
};
|
||||
|
||||
const initializeDatePickers = (containerElement: HTMLElement) => {
|
||||
|
|
@ -108,9 +110,25 @@ declare const cityssm: cityssmGlobal;
|
|||
dateElement.dispatchEvent(new Event("change"));
|
||||
});
|
||||
|
||||
// style the clear button
|
||||
const clearButtonElement = containerElement.querySelector(
|
||||
"#" + cal._id + " .datetimepicker-clear-button"
|
||||
// Get the datepicker container element
|
||||
|
||||
const datepickerElement = containerElement.querySelector("#" + cal._id) as HTMLElement;
|
||||
|
||||
// Override the previous and next month button styles
|
||||
|
||||
const datePickerNavButtonElements = datepickerElement.querySelectorAll(
|
||||
".datepicker-nav button.is-text"
|
||||
);
|
||||
|
||||
for (const datePickerNavButtonElement of datePickerNavButtonElements) {
|
||||
datePickerNavButtonElement.classList.add("is-" + datePickerBaseOptions.color);
|
||||
datePickerNavButtonElement.classList.remove("is-text");
|
||||
}
|
||||
|
||||
// Override the clear button style
|
||||
|
||||
const clearButtonElement = datepickerElement.querySelector(
|
||||
".datetimepicker-clear-button"
|
||||
) as HTMLElement;
|
||||
|
||||
if (clearButtonElement) {
|
||||
|
|
@ -119,7 +137,66 @@ declare const cityssm: cityssmGlobal;
|
|||
} else {
|
||||
clearButtonElement.dataset.tooltip = "Clear";
|
||||
clearButtonElement.innerHTML =
|
||||
'<i class="fas fa-times" aria-hidden="true"></i>';
|
||||
'<span class="has-text-weight-bold" aria-hidden="true">×</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const timePickerBaseOptions: BulmaCalendarOptions = {
|
||||
type: "time",
|
||||
timeFormat: "hh:mm",
|
||||
color: "info",
|
||||
displayMode: "dialog",
|
||||
validateLabel: "Set Time",
|
||||
minuteSteps: 1
|
||||
};
|
||||
|
||||
const initializeTimePickers = (containerElement: HTMLElement) => {
|
||||
const timeElements = containerElement.querySelectorAll(
|
||||
"input[type='time']"
|
||||
) as NodeListOf<HTMLInputElement>;
|
||||
|
||||
for (const timeElement of timeElements) {
|
||||
const timePickerOptions = Object.assign({}, timePickerBaseOptions);
|
||||
|
||||
if (timeElement.required) {
|
||||
timePickerOptions.showClearButton = false;
|
||||
}
|
||||
|
||||
const cal = exports.bulmaCalendar.attach(timeElement, timePickerOptions)[0];
|
||||
|
||||
// trigger change event on original element
|
||||
cal.on("save", () => {
|
||||
timeElement.dispatchEvent(new Event("change"));
|
||||
});
|
||||
|
||||
// Get the datepicker container element
|
||||
const timePickerElement = containerElement.querySelector("#" + cal._id) as HTMLElement;
|
||||
|
||||
// Remove "cancel" button
|
||||
|
||||
const timePickerCancelButtonElement = timePickerElement.querySelector(
|
||||
".datetimepicker-footer-cancel"
|
||||
);
|
||||
|
||||
if (timePickerCancelButtonElement) {
|
||||
timePickerCancelButtonElement.remove();
|
||||
}
|
||||
|
||||
// Override the clear button style
|
||||
|
||||
const clearButtonElement = timePickerElement.querySelector(
|
||||
".datetimepicker-clear-button"
|
||||
) as HTMLElement;
|
||||
|
||||
if (clearButtonElement) {
|
||||
if (timeElement.required) {
|
||||
clearButtonElement.remove();
|
||||
} else {
|
||||
clearButtonElement.dataset.tooltip = "Clear";
|
||||
clearButtonElement.innerHTML =
|
||||
'<span class="has-text-weight-bold" aria-hidden="true">×</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -187,6 +264,7 @@ declare const cityssm: cityssmGlobal;
|
|||
highlightMap,
|
||||
initializeUnlockFieldButtons,
|
||||
initializeDatePickers,
|
||||
initializeTimePickers,
|
||||
populateAliases,
|
||||
getRandomColor
|
||||
};
|
||||
|
|
|
|||
|
|
@ -812,8 +812,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
},
|
||||
onshown: (modalElement, closeModalFunction) => {
|
||||
editCloseModalFunction = closeModalFunction;
|
||||
los.initializeDatePickers(modalElement);
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
los.initializeDatePickers(modalElement);
|
||||
los.initializeTimePickers(modalElement);
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
.addEventListener("submit", doEdit);
|
||||
|
|
@ -963,6 +964,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
addModalElement = modalElement;
|
||||
addCloseModalFunction = closeModalFunction;
|
||||
los.initializeDatePickers(modalElement);
|
||||
los.initializeTimePickers(modalElement);
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
|
|
|
|||
|
|
@ -1196,9 +1196,11 @@ declare const bulmaJS: BulmaJS;
|
|||
onshown: (modalElement, closeModalFunction) => {
|
||||
editCloseModalFunction = closeModalFunction;
|
||||
|
||||
los.initializeDatePickers(modalElement);
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
|
||||
los.initializeDatePickers(modalElement);
|
||||
los.initializeTimePickers(modalElement);
|
||||
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
.addEventListener("submit", doEdit);
|
||||
|
|
@ -1407,6 +1409,7 @@ declare const bulmaJS: BulmaJS;
|
|||
addCloseModalFunction = closeModalFunction;
|
||||
|
||||
los.initializeDatePickers(modalElement);
|
||||
los.initializeTimePickers(modalElement);
|
||||
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
|
||||
|
|
|
|||
|
|
@ -21,16 +21,22 @@
|
|||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="lotCommentEdit--lotCommentDateString">Comment Date</label>
|
||||
<div class="control">
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" id="lotCommentEdit--lotCommentDateString" name="lotCommentDateString" type="date" required />
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-calendar" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="lotCommentEdit--lotCommentTimeString">Comment Time</label>
|
||||
<div class="control">
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" id="lotCommentEdit--lotCommentTimeString" name="lotCommentTimeString" type="time" required />
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-clock" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -21,16 +21,22 @@
|
|||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="lotOccupancyCommentEdit--lotOccupancyCommentDateString">Comment Date</label>
|
||||
<div class="control">
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" id="lotOccupancyCommentEdit--lotOccupancyCommentDateString" name="lotOccupancyCommentDateString" type="date" required />
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-calendar" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="lotOccupancyCommentEdit--lotOccupancyCommentTimeString">Comment Time</label>
|
||||
<div class="control">
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" id="lotOccupancyCommentEdit--lotOccupancyCommentTimeString" name="lotOccupancyCommentTimeString" type="time" required />
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-clock" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -36,8 +36,11 @@
|
|||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="milestoneAdd--workOrderMilestoneTimeString">Milestone Time</label>
|
||||
<div class="control">
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" id="milestoneAdd--workOrderMilestoneTimeString" name="workOrderMilestoneTimeString" type="time" />
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-clock" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -37,8 +37,11 @@
|
|||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="milestoneEdit--workOrderMilestoneTimeString">Milestone Time</label>
|
||||
<div class="control">
|
||||
<div class="control has-icons-left">
|
||||
<input class="input" id="milestoneEdit--workOrderMilestoneTimeString" name="workOrderMilestoneTimeString" type="time" />
|
||||
<span class="icon is-left">
|
||||
<i class="fas fa-clock" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=exports.los,e=document.querySelector("main").dataset.urlPrefix,o=document.querySelector("#lot--lotId").value,l=""===o,s=document.querySelector("#form--lot");s.addEventListener("submit",t=>{t.preventDefault(),cityssm.postJSON(e+"/lots/"+(l?"doCreateLot":"doUpdateLot"),s,t=>{t.success?l?window.location.href=e+"/lots/"+t.lotId+"/edit":bulmaJS.alert({message:exports.aliases.lot+" Updated Successfully",contextualColorName:"success"}):bulmaJS.alert({title:"Error Updating "+exports.aliases.lot,message:t.errorMessage,contextualColorName:"danger"})})}),t.initializeUnlockFieldButtons(s),l||document.querySelector("#button--deleteLot").addEventListener("click",t=>{t.preventDefault();bulmaJS.confirm({title:"Delete "+exports.aliases.lot,message:"Are you sure you want to delete this "+exports.aliases.lot.toLowerCase()+"?",contextualColorName:"warning",okButton:{text:"Yes, Delete "+exports.aliases.lot,callbackFunction:()=>{cityssm.postJSON(e+"/lots/doDeleteLot",{lotId:o},t=>{t.success?(cityssm.disableNavBlocker(),window.location.href=e+"/lots/?t="+Date.now()):bulmaJS.alert({title:"Error Deleting "+exports.aliases.lot,message:t.errorMessage,contextualColorName:"danger"})})}}})});let n=exports.lotComments;delete exports.lotComments;const r=l=>{const s=Number.parseInt(l.currentTarget.closest("tr").dataset.lotCommentId,10),r=n.find(t=>t.lotCommentId===s);let a,i;const d=t=>{t.preventDefault(),cityssm.postJSON(e+"/lots/doUpdateLotComment",a,t=>{t.success?(n=t.lotComments,i(),m()):bulmaJS.alert({title:"Error Updating Comment",message:t.errorMessage,contextualColorName:"danger"})})};cityssm.openHtmlModal("lot-editComment",{onshow:e=>{t.populateAliases(e),e.querySelector("#lotCommentEdit--lotId").value=o,e.querySelector("#lotCommentEdit--lotCommentId").value=s.toString(),e.querySelector("#lotCommentEdit--lotComment").value=r.lotComment,e.querySelector("#lotCommentEdit--lotCommentDateString").value=r.lotCommentDateString,e.querySelector("#lotCommentEdit--lotCommentTimeString").value=r.lotCommentTimeString},onshown:(t,e)=>{bulmaJS.toggleHtmlClipped(),t.querySelector("#lotCommentEdit--lotComment").focus(),(a=t.querySelector("form")).addEventListener("submit",d),i=e},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})},a=t=>{const l=Number.parseInt(t.currentTarget.closest("tr").dataset.lotCommentId,10);bulmaJS.confirm({title:"Remove Comment?",message:"Are you sure you want to remove this comment?",okButton:{text:"Yes, Remove Comment",callbackFunction:()=>{cityssm.postJSON(e+"/lots/doDeleteLotComment",{lotId:o,lotCommentId:l},t=>{t.success?(n=t.lotComments,m()):bulmaJS.alert({title:"Error Removing Comment",message:t.errorMessage,contextualColorName:"danger"})})}},contextualColorName:"warning"})},m=()=>{const t=document.querySelector("#container--lotComments");if(0===n.length)return void(t.innerHTML='<div class="message is-info"><p class="message-body">There are no comments to display.</p></div>');const e=document.createElement("table");e.className="table is-fullwidth is-striped is-hoverable",e.innerHTML='<thead><tr><th>Commentor</th><th>Comment Date</th><th>Comment</th><th class="is-hidden-print"><span class="is-sr-only">Options</span></th></tr></thead><tbody></tbody>';for(const t of n){const o=document.createElement("tr");o.dataset.lotCommentId=t.lotCommentId.toString(),o.innerHTML="<td>"+cityssm.escapeHTML(t.recordCreate_userName)+"</td><td>"+t.lotCommentDateString+(0===t.lotCommentTime?"":" "+t.lotCommentTimeString)+"</td><td>"+cityssm.escapeHTML(t.lotComment)+'</td><td class="is-hidden-print"><div class="buttons are-small is-justify-content-end"><button class="button is-primary button--edit" type="button"><span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span> <span>Edit</span></button><button class="button is-light is-danger button--delete" data-tooltip="Delete Comment" type="button" aria-label="Delete"><i class="fas fa-trash" aria-hidden="true"></i></button></div></td>',o.querySelector(".button--edit").addEventListener("click",r),o.querySelector(".button--delete").addEventListener("click",a),e.querySelector("tbody").append(o)}t.innerHTML="",t.append(e)},i=()=>{let l;const s=t=>{t.preventDefault(),cityssm.postJSON(e+"/lots/doAddLotComment",t.currentTarget,t=>{t.success&&(n=t.lotComments,m(),l())})};cityssm.openHtmlModal("lot-addComment",{onshow(e){t.populateAliases(e),e.querySelector("#lotCommentAdd--lotId").value=o,e.querySelector("form").addEventListener("submit",s)},onshown(t,e){bulmaJS.toggleHtmlClipped(),l=e,t.querySelector("#lotCommentAdd--lotComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#lotComments--add").focus()}})};l||(document.querySelector("#lotComments--add").addEventListener("click",i),m())})();
|
||||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=exports.los,e=document.querySelector("main").dataset.urlPrefix,o=document.querySelector("#lot--lotId").value,l=""===o,s=document.querySelector("#form--lot");s.addEventListener("submit",t=>{t.preventDefault(),cityssm.postJSON(e+"/lots/"+(l?"doCreateLot":"doUpdateLot"),s,t=>{t.success?l?window.location.href=e+"/lots/"+t.lotId+"/edit":bulmaJS.alert({message:exports.aliases.lot+" Updated Successfully",contextualColorName:"success"}):bulmaJS.alert({title:"Error Updating "+exports.aliases.lot,message:t.errorMessage,contextualColorName:"danger"})})}),t.initializeUnlockFieldButtons(s),l||document.querySelector("#button--deleteLot").addEventListener("click",t=>{t.preventDefault();bulmaJS.confirm({title:"Delete "+exports.aliases.lot,message:"Are you sure you want to delete this "+exports.aliases.lot.toLowerCase()+"?",contextualColorName:"warning",okButton:{text:"Yes, Delete "+exports.aliases.lot,callbackFunction:()=>{cityssm.postJSON(e+"/lots/doDeleteLot",{lotId:o},t=>{t.success?(cityssm.disableNavBlocker(),window.location.href=e+"/lots/?t="+Date.now()):bulmaJS.alert({title:"Error Deleting "+exports.aliases.lot,message:t.errorMessage,contextualColorName:"danger"})})}}})});let n=exports.lotComments;delete exports.lotComments;const r=l=>{const s=Number.parseInt(l.currentTarget.closest("tr").dataset.lotCommentId,10),r=n.find(t=>t.lotCommentId===s);let a,i;const d=t=>{t.preventDefault(),cityssm.postJSON(e+"/lots/doUpdateLotComment",a,t=>{t.success?(n=t.lotComments,i(),m()):bulmaJS.alert({title:"Error Updating Comment",message:t.errorMessage,contextualColorName:"danger"})})};cityssm.openHtmlModal("lot-editComment",{onshow:e=>{t.populateAliases(e),e.querySelector("#lotCommentEdit--lotId").value=o,e.querySelector("#lotCommentEdit--lotCommentId").value=s.toString(),e.querySelector("#lotCommentEdit--lotComment").value=r.lotComment,e.querySelector("#lotCommentEdit--lotCommentDateString").value=r.lotCommentDateString,e.querySelector("#lotCommentEdit--lotCommentTimeString").value=r.lotCommentTimeString},onshown:(e,o)=>{bulmaJS.toggleHtmlClipped(),t.initializeDatePickers(e),t.initializeTimePickers(e),e.querySelector("#lotCommentEdit--lotComment").focus(),(a=e.querySelector("form")).addEventListener("submit",d),i=o},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})},a=t=>{const l=Number.parseInt(t.currentTarget.closest("tr").dataset.lotCommentId,10);bulmaJS.confirm({title:"Remove Comment?",message:"Are you sure you want to remove this comment?",okButton:{text:"Yes, Remove Comment",callbackFunction:()=>{cityssm.postJSON(e+"/lots/doDeleteLotComment",{lotId:o,lotCommentId:l},t=>{t.success?(n=t.lotComments,m()):bulmaJS.alert({title:"Error Removing Comment",message:t.errorMessage,contextualColorName:"danger"})})}},contextualColorName:"warning"})},m=()=>{const t=document.querySelector("#container--lotComments");if(0===n.length)return void(t.innerHTML='<div class="message is-info"><p class="message-body">There are no comments to display.</p></div>');const e=document.createElement("table");e.className="table is-fullwidth is-striped is-hoverable",e.innerHTML='<thead><tr><th>Commentor</th><th>Comment Date</th><th>Comment</th><th class="is-hidden-print"><span class="is-sr-only">Options</span></th></tr></thead><tbody></tbody>';for(const t of n){const o=document.createElement("tr");o.dataset.lotCommentId=t.lotCommentId.toString(),o.innerHTML="<td>"+cityssm.escapeHTML(t.recordCreate_userName)+"</td><td>"+t.lotCommentDateString+(0===t.lotCommentTime?"":" "+t.lotCommentTimeString)+"</td><td>"+cityssm.escapeHTML(t.lotComment)+'</td><td class="is-hidden-print"><div class="buttons are-small is-justify-content-end"><button class="button is-primary button--edit" type="button"><span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span> <span>Edit</span></button><button class="button is-light is-danger button--delete" data-tooltip="Delete Comment" type="button" aria-label="Delete"><i class="fas fa-trash" aria-hidden="true"></i></button></div></td>',o.querySelector(".button--edit").addEventListener("click",r),o.querySelector(".button--delete").addEventListener("click",a),e.querySelector("tbody").append(o)}t.innerHTML="",t.append(e)},i=()=>{let l;const s=t=>{t.preventDefault(),cityssm.postJSON(e+"/lots/doAddLotComment",t.currentTarget,t=>{t.success&&(n=t.lotComments,m(),l())})};cityssm.openHtmlModal("lot-addComment",{onshow(e){t.populateAliases(e),e.querySelector("#lotCommentAdd--lotId").value=o,e.querySelector("form").addEventListener("submit",s)},onshown(t,e){bulmaJS.toggleHtmlClipped(),l=e,t.querySelector("#lotCommentAdd--lotComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#lotComments--add").focus()}})};l||(document.querySelector("#lotComments--add").addEventListener("click",i),m())})();
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=e=>{const t=e.currentTarget.closest(".field").querySelector("input, select");if(t.classList.remove("is-readonly"),"INPUT"===t.tagName)t.readOnly=!1,t.disabled=!1;else{const e=t.querySelectorAll("option");for(const t of e)t.disabled=!1}t.focus()},t={dateFormat:"yyyy-MM-dd",showFooter:!1,color:"info"},o=["red","green","orange","blue","pink","yellow","purple"],a=["bright","light","dark"],s={highlightMap:(e,t,o)=>{let a,s=t;for(;!(a=e.querySelector("#"+s))&&s.includes("-");)s=s.slice(0,Math.max(0,s.lastIndexOf("-")));if(a){a.style.fill=null,a.classList.add("highlight","is-"+o);const e=a.querySelectorAll("path");for(const t of e)t.style.fill=null}},initializeUnlockFieldButtons:t=>{const o=t.querySelectorAll(".is-unlock-field-button");for(const t of o)t.addEventListener("click",e)},initializeDatePickers:e=>{const o=e.querySelectorAll("input[type='date']");for(const a of o){const o=Object.assign({},t);a.required&&(o.showClearButton=!1),a.min&&(o.minDate=cityssm.dateStringToDate(a.min)),a.max&&(o.maxDate=cityssm.dateStringToDate(a.max));const s=exports.bulmaCalendar.attach(a,o)[0];s.on("save",()=>{a.dispatchEvent(new Event("change"))});const l=e.querySelector("#"+s._id+" .datetimepicker-clear-button");l&&(a.required?l.remove():(l.dataset.tooltip="Clear",l.innerHTML='<i class="fas fa-times" aria-hidden="true"></i>'))}},populateAliases:e=>{const t=e.querySelectorAll(".alias");for(const e of t)switch(e.dataset.alias){case"Lot":e.textContent=exports.aliases.lot;break;case"lot":e.textContent=exports.aliases.lot.toLowerCase();break;case"Occupancy":e.textContent=exports.aliases.occupancy;break;case"occupancy":e.textContent=exports.aliases.occupancy.toLowerCase();break;case"Occupant":e.textContent=exports.aliases.occupant;break;case"occupant":e.textContent=exports.aliases.occupant.toLowerCase();break;case"ExternalReceiptNumber":e.textContent=exports.aliases.externalReceiptNumber}},getRandomColor:e=>{let t=e;return t.length<2&&(t+="a1"),exports.randomColor({seed:t+t,hue:o[t.codePointAt(t.length-1)%o.length],luminosity:a[t.codePointAt(t.length-2)%a.length]})}};exports.los=s})();
|
||||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=e=>{const t=e.currentTarget.closest(".field").querySelector("input, select");if(t.classList.remove("is-readonly"),"INPUT"===t.tagName)t.readOnly=!1,t.disabled=!1;else{const e=t.querySelectorAll("option");for(const t of e)t.disabled=!1}t.focus()},t={type:"date",dateFormat:"yyyy-MM-dd",showFooter:!1,color:"info",displayMode:"dialog"},o={type:"time",timeFormat:"hh:mm",color:"info",displayMode:"dialog",validateLabel:"Set Time",minuteSteps:1},a=["red","green","orange","blue","pink","yellow","purple"],s=["bright","light","dark"],l={highlightMap:(e,t,o)=>{let a,s=t;for(;!(a=e.querySelector("#"+s))&&s.includes("-");)s=s.slice(0,Math.max(0,s.lastIndexOf("-")));if(a){a.style.fill=null,a.classList.add("highlight","is-"+o);const e=a.querySelectorAll("path");for(const t of e)t.style.fill=null}},initializeUnlockFieldButtons:t=>{const o=t.querySelectorAll(".is-unlock-field-button");for(const t of o)t.addEventListener("click",e)},initializeDatePickers:e=>{const o=e.querySelectorAll("input[type='date']");for(const a of o){const o=Object.assign({},t);a.required&&(o.showClearButton=!1),a.min&&(o.minDate=cityssm.dateStringToDate(a.min)),a.max&&(o.maxDate=cityssm.dateStringToDate(a.max));const s=exports.bulmaCalendar.attach(a,o)[0];s.on("save",()=>{a.dispatchEvent(new Event("change"))});const l=e.querySelector("#"+s._id),r=l.querySelectorAll(".datepicker-nav button.is-text");for(const e of r)e.classList.add("is-"+t.color),e.classList.remove("is-text");const n=l.querySelector(".datetimepicker-clear-button");n&&(a.required?n.remove():(n.dataset.tooltip="Clear",n.innerHTML='<span class="has-text-weight-bold" aria-hidden="true">×</span>'))}},initializeTimePickers:e=>{const t=e.querySelectorAll("input[type='time']");for(const a of t){const t=Object.assign({},o);a.required&&(t.showClearButton=!1);const s=exports.bulmaCalendar.attach(a,t)[0];s.on("save",()=>{a.dispatchEvent(new Event("change"))});const l=e.querySelector("#"+s._id),r=l.querySelector(".datetimepicker-footer-cancel");r&&r.remove();const n=l.querySelector(".datetimepicker-clear-button");n&&(a.required?n.remove():(n.dataset.tooltip="Clear",n.innerHTML='<span class="has-text-weight-bold" aria-hidden="true">×</span>'))}},populateAliases:e=>{const t=e.querySelectorAll(".alias");for(const e of t)switch(e.dataset.alias){case"Lot":e.textContent=exports.aliases.lot;break;case"lot":e.textContent=exports.aliases.lot.toLowerCase();break;case"Occupancy":e.textContent=exports.aliases.occupancy;break;case"occupancy":e.textContent=exports.aliases.occupancy.toLowerCase();break;case"Occupant":e.textContent=exports.aliases.occupant;break;case"occupant":e.textContent=exports.aliases.occupant.toLowerCase();break;case"ExternalReceiptNumber":e.textContent=exports.aliases.externalReceiptNumber}},getRandomColor:e=>{let t=e;return t.length<2&&(t+="a1"),exports.randomColor({seed:t+t,hue:a[t.codePointAt(t.length-1)%a.length],luminosity:s[t.codePointAt(t.length-2)%s.length]})}};exports.los=l})();
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,7 @@
|
|||
export interface LOS {
|
||||
highlightMap: (mapContainerElement: HTMLElement, mapKey: string, contextualClass: "success" | "danger") => void;
|
||||
initializeDatePickers: (containerElement: HTMLElement) => void;
|
||||
initializeTimePickers: (containerElement: HTMLElement) => void;
|
||||
initializeUnlockFieldButtons: (containerElement: HTMLElement) => void;
|
||||
populateAliases: (containerElement: HTMLElement) => void;
|
||||
getRandomColor: (seedString: string) => string;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ export interface LOS {
|
|||
contextualClass: "success" | "danger"
|
||||
) => void;
|
||||
initializeDatePickers: (containerElement: HTMLElement) => void;
|
||||
initializeTimePickers: (containerElement: HTMLElement) => void;
|
||||
initializeUnlockFieldButtons: (containerElement: HTMLElement) => void;
|
||||
populateAliases: (containerElement: HTMLElement) => void;
|
||||
getRandomColor: (seedString: string) => string;
|
||||
|
|
|
|||
Loading…
Reference in New Issue