sorting fees and fee categories
parent
bea0bc0c83
commit
2cb0bf3697
|
|
@ -0,0 +1,3 @@
|
||||||
|
import type { RequestHandler } from "express";
|
||||||
|
export declare const handler: RequestHandler;
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { moveFeeCategoryDown } from "../../helpers/lotOccupancyDB/moveFeeCategoryDown.js";
|
||||||
|
import { getFeeCategories } from "../../helpers/lotOccupancyDB/getFeeCategories.js";
|
||||||
|
export const handler = async (request, response) => {
|
||||||
|
const success = moveFeeCategoryDown(request.body.feeCategoryId);
|
||||||
|
const feeCategories = getFeeCategories({}, {
|
||||||
|
includeFees: true
|
||||||
|
});
|
||||||
|
response.json({
|
||||||
|
success,
|
||||||
|
feeCategories
|
||||||
|
});
|
||||||
|
};
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
import type {
|
||||||
|
RequestHandler
|
||||||
|
} from "express";
|
||||||
|
|
||||||
|
import {
|
||||||
|
moveFeeCategoryDown
|
||||||
|
} from "../../helpers/lotOccupancyDB/moveFeeCategoryDown.js";
|
||||||
|
|
||||||
|
import {
|
||||||
|
getFeeCategories
|
||||||
|
} from "../../helpers/lotOccupancyDB/getFeeCategories.js";
|
||||||
|
|
||||||
|
|
||||||
|
export const handler: RequestHandler = async (request, response) => {
|
||||||
|
|
||||||
|
const success = moveFeeCategoryDown(request.body.feeCategoryId);
|
||||||
|
|
||||||
|
const feeCategories = getFeeCategories({}, {
|
||||||
|
includeFees: true
|
||||||
|
});
|
||||||
|
|
||||||
|
response.json({
|
||||||
|
success,
|
||||||
|
feeCategories
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
import type { RequestHandler } from "express";
|
||||||
|
export declare const handler: RequestHandler;
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { moveFeeCategoryUp } from "../../helpers/lotOccupancyDB/moveFeeCategoryUp.js";
|
||||||
|
import { getFeeCategories } from "../../helpers/lotOccupancyDB/getFeeCategories.js";
|
||||||
|
export const handler = async (request, response) => {
|
||||||
|
const success = moveFeeCategoryUp(request.body.feeCategoryId);
|
||||||
|
const feeCategories = getFeeCategories({}, {
|
||||||
|
includeFees: true
|
||||||
|
});
|
||||||
|
response.json({
|
||||||
|
success,
|
||||||
|
feeCategories
|
||||||
|
});
|
||||||
|
};
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
import type {
|
||||||
|
RequestHandler
|
||||||
|
} from "express";
|
||||||
|
|
||||||
|
import {
|
||||||
|
moveFeeCategoryUp
|
||||||
|
} from "../../helpers/lotOccupancyDB/moveFeeCategoryUp.js";
|
||||||
|
|
||||||
|
import {
|
||||||
|
getFeeCategories
|
||||||
|
} from "../../helpers/lotOccupancyDB/getFeeCategories.js";
|
||||||
|
|
||||||
|
|
||||||
|
export const handler: RequestHandler = async (request, response) => {
|
||||||
|
|
||||||
|
const success = moveFeeCategoryUp(request.body.feeCategoryId);
|
||||||
|
|
||||||
|
const feeCategories = getFeeCategories({}, {
|
||||||
|
includeFees: true
|
||||||
|
});
|
||||||
|
|
||||||
|
response.json({
|
||||||
|
success,
|
||||||
|
feeCategories
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
import type { RequestHandler } from "express";
|
||||||
|
export declare const handler: RequestHandler;
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { moveFeeDown } from "../../helpers/lotOccupancyDB/moveFeeDown.js";
|
||||||
|
import { getFeeCategories } from "../../helpers/lotOccupancyDB/getFeeCategories.js";
|
||||||
|
export const handler = async (request, response) => {
|
||||||
|
const success = moveFeeDown(request.body.feeId);
|
||||||
|
const feeCategories = getFeeCategories({}, {
|
||||||
|
includeFees: true
|
||||||
|
});
|
||||||
|
response.json({
|
||||||
|
success,
|
||||||
|
feeCategories
|
||||||
|
});
|
||||||
|
};
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
import type {
|
||||||
|
RequestHandler
|
||||||
|
} from "express";
|
||||||
|
|
||||||
|
import {
|
||||||
|
moveFeeDown
|
||||||
|
} from "../../helpers/lotOccupancyDB/moveFeeDown.js";
|
||||||
|
|
||||||
|
import {
|
||||||
|
getFeeCategories
|
||||||
|
} from "../../helpers/lotOccupancyDB/getFeeCategories.js";
|
||||||
|
|
||||||
|
|
||||||
|
export const handler: RequestHandler = async (request, response) => {
|
||||||
|
|
||||||
|
const success = moveFeeDown(request.body.feeId);
|
||||||
|
|
||||||
|
const feeCategories = getFeeCategories({}, {
|
||||||
|
includeFees: true
|
||||||
|
});
|
||||||
|
|
||||||
|
response.json({
|
||||||
|
success,
|
||||||
|
feeCategories
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
import type { RequestHandler } from "express";
|
||||||
|
export declare const handler: RequestHandler;
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { moveFeeUp } from "../../helpers/lotOccupancyDB/moveFeeUp.js";
|
||||||
|
import { getFeeCategories } from "../../helpers/lotOccupancyDB/getFeeCategories.js";
|
||||||
|
export const handler = async (request, response) => {
|
||||||
|
const success = moveFeeUp(request.body.feeId);
|
||||||
|
const feeCategories = getFeeCategories({}, {
|
||||||
|
includeFees: true
|
||||||
|
});
|
||||||
|
response.json({
|
||||||
|
success,
|
||||||
|
feeCategories
|
||||||
|
});
|
||||||
|
};
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
import type {
|
||||||
|
RequestHandler
|
||||||
|
} from "express";
|
||||||
|
|
||||||
|
import {
|
||||||
|
moveFeeUp
|
||||||
|
} from "../../helpers/lotOccupancyDB/moveFeeUp.js";
|
||||||
|
|
||||||
|
import {
|
||||||
|
getFeeCategories
|
||||||
|
} from "../../helpers/lotOccupancyDB/getFeeCategories.js";
|
||||||
|
|
||||||
|
|
||||||
|
export const handler: RequestHandler = async (request, response) => {
|
||||||
|
|
||||||
|
const success = moveFeeUp(request.body.feeId);
|
||||||
|
|
||||||
|
const feeCategories = getFeeCategories({}, {
|
||||||
|
includeFees: true
|
||||||
|
});
|
||||||
|
|
||||||
|
response.json({
|
||||||
|
success,
|
||||||
|
feeCategories
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export default handler;
|
||||||
|
|
@ -33,18 +33,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
"</button>" +
|
"</button>" +
|
||||||
"</div>" :
|
"</div>" :
|
||||||
"") +
|
"") +
|
||||||
"<div class=\"level-item\">" +
|
("<div class=\"level-item\">" +
|
||||||
"<button class=\"button is-small is-primary button--editFeeCategory\" type=\"button\">" +
|
"<button class=\"button is-small is-primary button--editFeeCategory\" type=\"button\">" +
|
||||||
"<span class=\"icon is-small\"><i class=\"fas fa-pencil-alt\" aria-hidden=\"true\"></i></span>" +
|
"<span class=\"icon is-small\"><i class=\"fas fa-pencil-alt\" aria-hidden=\"true\"></i></span>" +
|
||||||
"<span>Edit Category</span>" +
|
"<span>Edit Category</span>" +
|
||||||
"</button>" +
|
"</button>" +
|
||||||
"</div>" +
|
"</div>") +
|
||||||
"<div class=\"level-item\">" +
|
("<div class=\"level-item\">" +
|
||||||
"<button class=\"button is-small is-success button--addFee\" type=\"button\">" +
|
"<button class=\"button is-small is-success button--addFee\" type=\"button\">" +
|
||||||
"<span class=\"icon is-small\"><i class=\"fas fa-plus\" aria-hidden=\"true\"></i></span>" +
|
"<span class=\"icon is-small\"><i class=\"fas fa-plus\" aria-hidden=\"true\"></i></span>" +
|
||||||
"<span>Add Fee</span>" +
|
"<span>Add Fee</span>" +
|
||||||
"</button>" +
|
"</button>" +
|
||||||
"</div>" +
|
"</div>") +
|
||||||
|
("<div class=\"level-item\">" +
|
||||||
|
"<div class=\"field has-addons\">" +
|
||||||
|
"<div class=\"control\">" +
|
||||||
|
"<button class=\"button is-small button--moveFeeCategoryUp\" data-tooltip=\"Move Up\" type=\"button\" aria-label=\"Move Up\">" +
|
||||||
|
"<i class=\"fas fa-arrow-up\" aria-hidden=\"true\"></i>" +
|
||||||
|
"</button>" +
|
||||||
|
"</div>" +
|
||||||
|
"<div class=\"control\">" +
|
||||||
|
"<button class=\"button is-small button--moveFeeCategoryDown\" data-tooltip=\"Move Down\" type=\"button\" aria-label=\"Move Down\">" +
|
||||||
|
"<i class=\"fas fa-arrow-down\" aria-hidden=\"true\"></i>" +
|
||||||
|
"</button>" +
|
||||||
|
"</div>" +
|
||||||
|
"</div>" +
|
||||||
|
"</div>") +
|
||||||
"</div>") +
|
"</div>") +
|
||||||
"</div>");
|
"</div>");
|
||||||
if (feeCategory.fees.length === 0) {
|
if (feeCategory.fees.length === 0) {
|
||||||
|
|
@ -98,26 +112,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
"<small>Quantity</small>" :
|
"<small>Quantity</small>" :
|
||||||
"") +
|
"") +
|
||||||
"</div>") +
|
"</div>") +
|
||||||
|
("<div class=\"column is-narrow\">" +
|
||||||
|
"<div class=\"field has-addons\">" +
|
||||||
|
"<div class=\"control\">" +
|
||||||
|
"<button class=\"button is-small button--moveFeeUp\" data-tooltip=\"Move Up\" type=\"button\" aria-label=\"Move Up\">" +
|
||||||
|
"<i class=\"fas fa-arrow-up\" aria-hidden=\"true\"></i>" +
|
||||||
|
"</button>" +
|
||||||
|
"</div>" +
|
||||||
|
"<div class=\"control\">" +
|
||||||
|
"<button class=\"button is-small button--moveFeeDown\" data-tooltip=\"Move Down\" type=\"button\" aria-label=\"Move Down\">" +
|
||||||
|
"<i class=\"fas fa-arrow-down\" aria-hidden=\"true\"></i>" +
|
||||||
|
"</button>" +
|
||||||
|
"</div>" +
|
||||||
|
"</div>" +
|
||||||
|
"</div>") +
|
||||||
"</div>";
|
"</div>";
|
||||||
panelBlockElement.querySelector("a").addEventListener("click", openEditFee);
|
panelBlockElement.querySelector("a").addEventListener("click", openEditFee);
|
||||||
|
panelBlockElement.querySelector(".button--moveFeeUp").addEventListener("click", moveFeeUp);
|
||||||
|
panelBlockElement.querySelector(".button--moveFeeDown").addEventListener("click", moveFeeDown);
|
||||||
panelElement.append(panelBlockElement);
|
panelElement.append(panelBlockElement);
|
||||||
}
|
}
|
||||||
feeCategoryContainerElement.append(panelElement);
|
feeCategoryContainerElement.append(panelElement);
|
||||||
}
|
}
|
||||||
|
if (feeCategory.fees.length === 0) {
|
||||||
|
feeCategoryContainerElement.querySelector(".button--deleteFeeCategory")
|
||||||
|
.addEventListener("click", confirmDeleteFeeCategory);
|
||||||
|
}
|
||||||
|
feeCategoryContainerElement.querySelector(".button--editFeeCategory")
|
||||||
|
.addEventListener("click", openEditFeeCategory);
|
||||||
|
feeCategoryContainerElement.querySelector(".button--addFee")
|
||||||
|
.addEventListener("click", openAddFee);
|
||||||
|
feeCategoryContainerElement.querySelector(".button--moveFeeCategoryUp")
|
||||||
|
.addEventListener("click", moveFeeCategoryUp);
|
||||||
|
feeCategoryContainerElement.querySelector(".button--moveFeeCategoryDown")
|
||||||
|
.addEventListener("click", moveFeeCategoryDown);
|
||||||
feeCategoriesContainerElement.append(feeCategoryContainerElement);
|
feeCategoriesContainerElement.append(feeCategoryContainerElement);
|
||||||
}
|
}
|
||||||
const deleteCategoryButtonElements = feeCategoriesContainerElement.querySelectorAll(".button--deleteFeeCategory");
|
|
||||||
for (const deleteCategoryButtonElement of deleteCategoryButtonElements) {
|
|
||||||
deleteCategoryButtonElement.addEventListener("click", confirmDeleteFeeCategory);
|
|
||||||
}
|
|
||||||
const editCategoryButtonElements = feeCategoriesContainerElement.querySelectorAll(".button--editFeeCategory");
|
|
||||||
for (const editCategoryButtonElement of editCategoryButtonElements) {
|
|
||||||
editCategoryButtonElement.addEventListener("click", openEditFeeCategory);
|
|
||||||
}
|
|
||||||
const addFeeButtonElements = feeCategoriesContainerElement.querySelectorAll(".button--addFee");
|
|
||||||
for (const addFeeButtonElement of addFeeButtonElements) {
|
|
||||||
addFeeButtonElement.addEventListener("click", openAddFee);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
document.querySelector("#button--addFeeCategory").addEventListener("click", () => {
|
document.querySelector("#button--addFeeCategory").addEventListener("click", () => {
|
||||||
let addCloseModalFunction;
|
let addCloseModalFunction;
|
||||||
|
|
@ -218,6 +248,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const moveFeeCategoryUp = (clickEvent) => {
|
||||||
|
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId, 10);
|
||||||
|
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeCategoryUp", {
|
||||||
|
feeCategoryId
|
||||||
|
}, (responseJSON) => {
|
||||||
|
if (responseJSON.success) {
|
||||||
|
feeCategories = responseJSON.feeCategories;
|
||||||
|
renderFeeCategories();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bulmaJS.alert({
|
||||||
|
title: "Error Moving Fee Category",
|
||||||
|
message: responseJSON.errorMessage,
|
||||||
|
contextualColorName: "danger"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const moveFeeCategoryDown = (clickEvent) => {
|
||||||
|
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId, 10);
|
||||||
|
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeCategoryDown", {
|
||||||
|
feeCategoryId
|
||||||
|
}, (responseJSON) => {
|
||||||
|
if (responseJSON.success) {
|
||||||
|
feeCategories = responseJSON.feeCategories;
|
||||||
|
renderFeeCategories();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bulmaJS.alert({
|
||||||
|
title: "Error Moving Fee Category",
|
||||||
|
message: responseJSON.errorMessage,
|
||||||
|
contextualColorName: "danger"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
const openAddFee = (clickEvent) => {
|
const openAddFee = (clickEvent) => {
|
||||||
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId, 10);
|
const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId, 10);
|
||||||
let addCloseModalFunction;
|
let addCloseModalFunction;
|
||||||
|
|
@ -470,5 +536,43 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const moveFeeUp = (clickEvent) => {
|
||||||
|
const feeContainerElement = clickEvent.currentTarget.closest(".container--fee");
|
||||||
|
const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10);
|
||||||
|
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeUp", {
|
||||||
|
feeId
|
||||||
|
}, (responseJSON) => {
|
||||||
|
if (responseJSON.success) {
|
||||||
|
feeCategories = responseJSON.feeCategories;
|
||||||
|
renderFeeCategories();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bulmaJS.alert({
|
||||||
|
title: "Error Moving Fee",
|
||||||
|
message: responseJSON.errorMessage,
|
||||||
|
contextualColorName: "danger"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const moveFeeDown = (clickEvent) => {
|
||||||
|
const feeContainerElement = clickEvent.currentTarget.closest(".container--fee");
|
||||||
|
const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10);
|
||||||
|
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeDown", {
|
||||||
|
feeId
|
||||||
|
}, (responseJSON) => {
|
||||||
|
if (responseJSON.success) {
|
||||||
|
feeCategories = responseJSON.feeCategories;
|
||||||
|
renderFeeCategories();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bulmaJS.alert({
|
||||||
|
title: "Error Moving Fee",
|
||||||
|
message: responseJSON.errorMessage,
|
||||||
|
contextualColorName: "danger"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
renderFeeCategories();
|
renderFeeCategories();
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -59,18 +59,32 @@ declare const bulmaJS: BulmaJS;
|
||||||
"</button>" +
|
"</button>" +
|
||||||
"</div>" :
|
"</div>" :
|
||||||
"") +
|
"") +
|
||||||
"<div class=\"level-item\">" +
|
("<div class=\"level-item\">" +
|
||||||
"<button class=\"button is-small is-primary button--editFeeCategory\" type=\"button\">" +
|
"<button class=\"button is-small is-primary button--editFeeCategory\" type=\"button\">" +
|
||||||
"<span class=\"icon is-small\"><i class=\"fas fa-pencil-alt\" aria-hidden=\"true\"></i></span>" +
|
"<span class=\"icon is-small\"><i class=\"fas fa-pencil-alt\" aria-hidden=\"true\"></i></span>" +
|
||||||
"<span>Edit Category</span>" +
|
"<span>Edit Category</span>" +
|
||||||
"</button>" +
|
"</button>" +
|
||||||
"</div>" +
|
"</div>") +
|
||||||
"<div class=\"level-item\">" +
|
("<div class=\"level-item\">" +
|
||||||
"<button class=\"button is-small is-success button--addFee\" type=\"button\">" +
|
"<button class=\"button is-small is-success button--addFee\" type=\"button\">" +
|
||||||
"<span class=\"icon is-small\"><i class=\"fas fa-plus\" aria-hidden=\"true\"></i></span>" +
|
"<span class=\"icon is-small\"><i class=\"fas fa-plus\" aria-hidden=\"true\"></i></span>" +
|
||||||
"<span>Add Fee</span>" +
|
"<span>Add Fee</span>" +
|
||||||
"</button>" +
|
"</button>" +
|
||||||
"</div>" +
|
"</div>") +
|
||||||
|
("<div class=\"level-item\">" +
|
||||||
|
"<div class=\"field has-addons\">" +
|
||||||
|
"<div class=\"control\">" +
|
||||||
|
"<button class=\"button is-small button--moveFeeCategoryUp\" data-tooltip=\"Move Up\" type=\"button\" aria-label=\"Move Up\">" +
|
||||||
|
"<i class=\"fas fa-arrow-up\" aria-hidden=\"true\"></i>" +
|
||||||
|
"</button>" +
|
||||||
|
"</div>" +
|
||||||
|
"<div class=\"control\">" +
|
||||||
|
"<button class=\"button is-small button--moveFeeCategoryDown\" data-tooltip=\"Move Down\" type=\"button\" aria-label=\"Move Down\">" +
|
||||||
|
"<i class=\"fas fa-arrow-down\" aria-hidden=\"true\"></i>" +
|
||||||
|
"</button>" +
|
||||||
|
"</div>" +
|
||||||
|
"</div>" +
|
||||||
|
"</div>") +
|
||||||
"</div>") +
|
"</div>") +
|
||||||
"</div>");
|
"</div>");
|
||||||
|
|
||||||
|
|
@ -129,36 +143,52 @@ declare const bulmaJS: BulmaJS;
|
||||||
"<small>Quantity</small>" :
|
"<small>Quantity</small>" :
|
||||||
"") +
|
"") +
|
||||||
"</div>") +
|
"</div>") +
|
||||||
|
("<div class=\"column is-narrow\">" +
|
||||||
|
"<div class=\"field has-addons\">" +
|
||||||
|
"<div class=\"control\">" +
|
||||||
|
"<button class=\"button is-small button--moveFeeUp\" data-tooltip=\"Move Up\" type=\"button\" aria-label=\"Move Up\">" +
|
||||||
|
"<i class=\"fas fa-arrow-up\" aria-hidden=\"true\"></i>" +
|
||||||
|
"</button>" +
|
||||||
|
"</div>" +
|
||||||
|
"<div class=\"control\">" +
|
||||||
|
"<button class=\"button is-small button--moveFeeDown\" data-tooltip=\"Move Down\" type=\"button\" aria-label=\"Move Down\">" +
|
||||||
|
"<i class=\"fas fa-arrow-down\" aria-hidden=\"true\"></i>" +
|
||||||
|
"</button>" +
|
||||||
|
"</div>" +
|
||||||
|
"</div>" +
|
||||||
|
"</div>") +
|
||||||
"</div>";
|
"</div>";
|
||||||
|
|
||||||
panelBlockElement.querySelector("a").addEventListener("click", openEditFee);
|
panelBlockElement.querySelector("a").addEventListener("click", openEditFee);
|
||||||
|
|
||||||
|
panelBlockElement.querySelector(".button--moveFeeUp").addEventListener("click", moveFeeUp);
|
||||||
|
panelBlockElement.querySelector(".button--moveFeeDown").addEventListener("click", moveFeeDown);
|
||||||
|
|
||||||
panelElement.append(panelBlockElement);
|
panelElement.append(panelBlockElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
feeCategoryContainerElement.append(panelElement);
|
feeCategoryContainerElement.append(panelElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (feeCategory.fees.length === 0) {
|
||||||
|
feeCategoryContainerElement.querySelector(".button--deleteFeeCategory")
|
||||||
|
.addEventListener("click", confirmDeleteFeeCategory);
|
||||||
|
}
|
||||||
|
|
||||||
|
feeCategoryContainerElement.querySelector(".button--editFeeCategory")
|
||||||
|
.addEventListener("click", openEditFeeCategory);
|
||||||
|
|
||||||
|
feeCategoryContainerElement.querySelector(".button--addFee")
|
||||||
|
.addEventListener("click", openAddFee);
|
||||||
|
|
||||||
|
feeCategoryContainerElement.querySelector(".button--moveFeeCategoryUp")
|
||||||
|
.addEventListener("click", moveFeeCategoryUp);
|
||||||
|
|
||||||
|
feeCategoryContainerElement.querySelector(".button--moveFeeCategoryDown")
|
||||||
|
.addEventListener("click", moveFeeCategoryDown);
|
||||||
|
|
||||||
feeCategoriesContainerElement.append(feeCategoryContainerElement);
|
feeCategoriesContainerElement.append(feeCategoryContainerElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
const deleteCategoryButtonElements = feeCategoriesContainerElement.querySelectorAll(".button--deleteFeeCategory");
|
|
||||||
|
|
||||||
for (const deleteCategoryButtonElement of deleteCategoryButtonElements) {
|
|
||||||
deleteCategoryButtonElement.addEventListener("click", confirmDeleteFeeCategory);
|
|
||||||
}
|
|
||||||
|
|
||||||
const editCategoryButtonElements = feeCategoriesContainerElement.querySelectorAll(".button--editFeeCategory");
|
|
||||||
|
|
||||||
for (const editCategoryButtonElement of editCategoryButtonElements) {
|
|
||||||
editCategoryButtonElement.addEventListener("click", openEditFeeCategory);
|
|
||||||
}
|
|
||||||
|
|
||||||
const addFeeButtonElements = feeCategoriesContainerElement.querySelectorAll(".button--addFee");
|
|
||||||
|
|
||||||
for (const addFeeButtonElement of addFeeButtonElements) {
|
|
||||||
addFeeButtonElement.addEventListener("click", openAddFee);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -270,21 +300,23 @@ declare const bulmaJS: BulmaJS;
|
||||||
const doDelete = () => {
|
const doDelete = () => {
|
||||||
|
|
||||||
cityssm.postJSON(urlPrefix + "/admin/doDeleteFeeCategory", {
|
cityssm.postJSON(urlPrefix + "/admin/doDeleteFeeCategory", {
|
||||||
feeCategoryId
|
feeCategoryId
|
||||||
},
|
},
|
||||||
(responseJSON: {success: boolean; errorMessage?: string; feeCategories?: recordTypes.FeeCategory[];}) => {
|
(responseJSON: {
|
||||||
|
success: boolean;errorMessage ? : string;feeCategories ? : recordTypes.FeeCategory[];
|
||||||
|
}) => {
|
||||||
|
|
||||||
if (responseJSON.success) {
|
if (responseJSON.success) {
|
||||||
feeCategories = responseJSON.feeCategories;
|
feeCategories = responseJSON.feeCategories;
|
||||||
renderFeeCategories();
|
renderFeeCategories();
|
||||||
} else {
|
} else {
|
||||||
bulmaJS.alert({
|
bulmaJS.alert({
|
||||||
title: "Error Updating Fee Category",
|
title: "Error Updating Fee Category",
|
||||||
message: responseJSON.errorMessage,
|
message: responseJSON.errorMessage,
|
||||||
contextualColorName: "danger"
|
contextualColorName: "danger"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
bulmaJS.confirm({
|
bulmaJS.confirm({
|
||||||
|
|
@ -298,6 +330,56 @@ declare const bulmaJS: BulmaJS;
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const moveFeeCategoryUp = (clickEvent: Event) => {
|
||||||
|
|
||||||
|
const feeCategoryId = Number.parseInt(((clickEvent.currentTarget as HTMLElement).closest(".container--feeCategory") as HTMLElement).dataset.feeCategoryId, 10);
|
||||||
|
|
||||||
|
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeCategoryUp", {
|
||||||
|
feeCategoryId
|
||||||
|
},
|
||||||
|
(responseJSON: {
|
||||||
|
success: boolean;
|
||||||
|
errorMessage ? : string;
|
||||||
|
feeCategories ? : recordTypes.FeeCategory[];
|
||||||
|
}) => {
|
||||||
|
if (responseJSON.success) {
|
||||||
|
feeCategories = responseJSON.feeCategories;
|
||||||
|
renderFeeCategories();
|
||||||
|
} else {
|
||||||
|
bulmaJS.alert({
|
||||||
|
title: "Error Moving Fee Category",
|
||||||
|
message: responseJSON.errorMessage,
|
||||||
|
contextualColorName: "danger"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const moveFeeCategoryDown = (clickEvent: Event) => {
|
||||||
|
|
||||||
|
const feeCategoryId = Number.parseInt(((clickEvent.currentTarget as HTMLElement).closest(".container--feeCategory") as HTMLElement).dataset.feeCategoryId, 10);
|
||||||
|
|
||||||
|
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeCategoryDown", {
|
||||||
|
feeCategoryId
|
||||||
|
},
|
||||||
|
(responseJSON: {
|
||||||
|
success: boolean;
|
||||||
|
errorMessage ? : string;
|
||||||
|
feeCategories ? : recordTypes.FeeCategory[];
|
||||||
|
}) => {
|
||||||
|
if (responseJSON.success) {
|
||||||
|
feeCategories = responseJSON.feeCategories;
|
||||||
|
renderFeeCategories();
|
||||||
|
} else {
|
||||||
|
bulmaJS.alert({
|
||||||
|
title: "Error Moving Fee Category",
|
||||||
|
message: responseJSON.errorMessage,
|
||||||
|
contextualColorName: "danger"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fees
|
* Fees
|
||||||
*/
|
*/
|
||||||
|
|
@ -664,6 +746,61 @@ declare const bulmaJS: BulmaJS;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const moveFeeUp = (clickEvent: Event) => {
|
||||||
|
|
||||||
|
const feeContainerElement = (clickEvent.currentTarget as HTMLElement).closest(".container--fee") as HTMLElement;
|
||||||
|
|
||||||
|
const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10);
|
||||||
|
|
||||||
|
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeUp", {
|
||||||
|
feeId
|
||||||
|
},
|
||||||
|
(responseJSON: {
|
||||||
|
success: boolean;
|
||||||
|
errorMessage ? : string;
|
||||||
|
feeCategories ? : recordTypes.FeeCategory[];
|
||||||
|
}) => {
|
||||||
|
if (responseJSON.success) {
|
||||||
|
feeCategories = responseJSON.feeCategories;
|
||||||
|
renderFeeCategories();
|
||||||
|
} else {
|
||||||
|
bulmaJS.alert({
|
||||||
|
title: "Error Moving Fee",
|
||||||
|
message: responseJSON.errorMessage,
|
||||||
|
contextualColorName: "danger"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const moveFeeDown = (clickEvent: Event) => {
|
||||||
|
|
||||||
|
const feeContainerElement = (clickEvent.currentTarget as HTMLElement).closest(".container--fee") as HTMLElement;
|
||||||
|
|
||||||
|
const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10);
|
||||||
|
|
||||||
|
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeDown", {
|
||||||
|
feeId
|
||||||
|
},
|
||||||
|
(responseJSON: {
|
||||||
|
success: boolean;
|
||||||
|
errorMessage ? : string;
|
||||||
|
feeCategories ? : recordTypes.FeeCategory[];
|
||||||
|
}) => {
|
||||||
|
if (responseJSON.success) {
|
||||||
|
feeCategories = responseJSON.feeCategories;
|
||||||
|
renderFeeCategories();
|
||||||
|
} else {
|
||||||
|
bulmaJS.alert({
|
||||||
|
title: "Error Moving Fee",
|
||||||
|
message: responseJSON.errorMessage,
|
||||||
|
contextualColorName: "danger"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize
|
* Initialize
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -3,9 +3,13 @@ import * as permissionHandlers from "../handlers/permissions.js";
|
||||||
import handler_fees from "../handlers/admin-get/fees.js";
|
import handler_fees from "../handlers/admin-get/fees.js";
|
||||||
import handler_doAddFeeCategory from "../handlers/admin-post/doAddFeeCategory.js";
|
import handler_doAddFeeCategory from "../handlers/admin-post/doAddFeeCategory.js";
|
||||||
import handler_doUpdateFeeCategory from "../handlers/admin-post/doUpdateFeeCategory.js";
|
import handler_doUpdateFeeCategory from "../handlers/admin-post/doUpdateFeeCategory.js";
|
||||||
|
import handler_doMoveFeeCategoryUp from "../handlers/admin-post/doMoveFeeCategoryUp.js";
|
||||||
|
import handler_doMoveFeeCategoryDown from "../handlers/admin-post/doMoveFeeCategoryDown.js";
|
||||||
import handler_doDeleteFeeCategory from "../handlers/admin-post/doDeleteFeeCategory.js";
|
import handler_doDeleteFeeCategory from "../handlers/admin-post/doDeleteFeeCategory.js";
|
||||||
import handler_doAddFee from "../handlers/admin-post/doAddFee.js";
|
import handler_doAddFee from "../handlers/admin-post/doAddFee.js";
|
||||||
import handler_doUpdateFee from "../handlers/admin-post/doUpdateFee.js";
|
import handler_doUpdateFee from "../handlers/admin-post/doUpdateFee.js";
|
||||||
|
import handler_doMoveFeeUp from "../handlers/admin-post/doMoveFeeUp.js";
|
||||||
|
import handler_doMoveFeeDown from "../handlers/admin-post/doMoveFeeDown.js";
|
||||||
import handler_doDeleteFee from "../handlers/admin-post/doDeleteFee.js";
|
import handler_doDeleteFee from "../handlers/admin-post/doDeleteFee.js";
|
||||||
import handler_tables from "../handlers/admin-get/tables.js";
|
import handler_tables from "../handlers/admin-get/tables.js";
|
||||||
import handler_doAddWorkOrderType from "../handlers/admin-post/doAddWorkOrderType.js";
|
import handler_doAddWorkOrderType from "../handlers/admin-post/doAddWorkOrderType.js";
|
||||||
|
|
@ -27,9 +31,13 @@ export const router = Router();
|
||||||
router.get("/fees", permissionHandlers.adminGetHandler, handler_fees);
|
router.get("/fees", permissionHandlers.adminGetHandler, handler_fees);
|
||||||
router.post("/doAddFeeCategory", permissionHandlers.adminPostHandler, handler_doAddFeeCategory);
|
router.post("/doAddFeeCategory", permissionHandlers.adminPostHandler, handler_doAddFeeCategory);
|
||||||
router.post("/doUpdateFeeCategory", permissionHandlers.adminPostHandler, handler_doUpdateFeeCategory);
|
router.post("/doUpdateFeeCategory", permissionHandlers.adminPostHandler, handler_doUpdateFeeCategory);
|
||||||
|
router.post("/doMoveFeeCategoryUp", permissionHandlers.adminPostHandler, handler_doMoveFeeCategoryUp);
|
||||||
|
router.post("/doMoveFeeCategoryDown", permissionHandlers.adminPostHandler, handler_doMoveFeeCategoryDown);
|
||||||
router.post("/doDeleteFeeCategory", permissionHandlers.adminPostHandler, handler_doDeleteFeeCategory);
|
router.post("/doDeleteFeeCategory", permissionHandlers.adminPostHandler, handler_doDeleteFeeCategory);
|
||||||
router.post("/doAddFee", permissionHandlers.adminPostHandler, handler_doAddFee);
|
router.post("/doAddFee", permissionHandlers.adminPostHandler, handler_doAddFee);
|
||||||
router.post("/doUpdateFee", permissionHandlers.adminPostHandler, handler_doUpdateFee);
|
router.post("/doUpdateFee", permissionHandlers.adminPostHandler, handler_doUpdateFee);
|
||||||
|
router.post("/doMoveFeeUp", permissionHandlers.adminPostHandler, handler_doMoveFeeUp);
|
||||||
|
router.post("/doMoveFeeDown", permissionHandlers.adminPostHandler, handler_doMoveFeeDown);
|
||||||
router.post("/doDeleteFee", permissionHandlers.adminPostHandler, handler_doDeleteFee);
|
router.post("/doDeleteFee", permissionHandlers.adminPostHandler, handler_doDeleteFee);
|
||||||
router.get("/tables", permissionHandlers.adminGetHandler, handler_tables);
|
router.get("/tables", permissionHandlers.adminGetHandler, handler_tables);
|
||||||
router.post("/doAddWorkOrderType", permissionHandlers.adminPostHandler, handler_doAddWorkOrderType);
|
router.post("/doAddWorkOrderType", permissionHandlers.adminPostHandler, handler_doAddWorkOrderType);
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,14 @@ import * as permissionHandlers from "../handlers/permissions.js";
|
||||||
import handler_fees from "../handlers/admin-get/fees.js";
|
import handler_fees from "../handlers/admin-get/fees.js";
|
||||||
import handler_doAddFeeCategory from "../handlers/admin-post/doAddFeeCategory.js";
|
import handler_doAddFeeCategory from "../handlers/admin-post/doAddFeeCategory.js";
|
||||||
import handler_doUpdateFeeCategory from "../handlers/admin-post/doUpdateFeeCategory.js";
|
import handler_doUpdateFeeCategory from "../handlers/admin-post/doUpdateFeeCategory.js";
|
||||||
|
import handler_doMoveFeeCategoryUp from "../handlers/admin-post/doMoveFeeCategoryUp.js";
|
||||||
|
import handler_doMoveFeeCategoryDown from "../handlers/admin-post/doMoveFeeCategoryDown.js";
|
||||||
import handler_doDeleteFeeCategory from "../handlers/admin-post/doDeleteFeeCategory.js";
|
import handler_doDeleteFeeCategory from "../handlers/admin-post/doDeleteFeeCategory.js";
|
||||||
|
|
||||||
import handler_doAddFee from "../handlers/admin-post/doAddFee.js";
|
import handler_doAddFee from "../handlers/admin-post/doAddFee.js";
|
||||||
import handler_doUpdateFee from "../handlers/admin-post/doUpdateFee.js";
|
import handler_doUpdateFee from "../handlers/admin-post/doUpdateFee.js";
|
||||||
|
import handler_doMoveFeeUp from "../handlers/admin-post/doMoveFeeUp.js";
|
||||||
|
import handler_doMoveFeeDown from "../handlers/admin-post/doMoveFeeDown.js";
|
||||||
import handler_doDeleteFee from "../handlers/admin-post/doDeleteFee.js";
|
import handler_doDeleteFee from "../handlers/admin-post/doDeleteFee.js";
|
||||||
|
|
||||||
import handler_tables from "../handlers/admin-get/tables.js";
|
import handler_tables from "../handlers/admin-get/tables.js";
|
||||||
|
|
@ -51,6 +55,14 @@ router.post("/doUpdateFeeCategory",
|
||||||
permissionHandlers.adminPostHandler,
|
permissionHandlers.adminPostHandler,
|
||||||
handler_doUpdateFeeCategory);
|
handler_doUpdateFeeCategory);
|
||||||
|
|
||||||
|
router.post("/doMoveFeeCategoryUp",
|
||||||
|
permissionHandlers.adminPostHandler,
|
||||||
|
handler_doMoveFeeCategoryUp);
|
||||||
|
|
||||||
|
router.post("/doMoveFeeCategoryDown",
|
||||||
|
permissionHandlers.adminPostHandler,
|
||||||
|
handler_doMoveFeeCategoryDown);
|
||||||
|
|
||||||
router.post("/doDeleteFeeCategory",
|
router.post("/doDeleteFeeCategory",
|
||||||
permissionHandlers.adminPostHandler,
|
permissionHandlers.adminPostHandler,
|
||||||
handler_doDeleteFeeCategory);
|
handler_doDeleteFeeCategory);
|
||||||
|
|
@ -63,6 +75,14 @@ router.post("/doUpdateFee",
|
||||||
permissionHandlers.adminPostHandler,
|
permissionHandlers.adminPostHandler,
|
||||||
handler_doUpdateFee);
|
handler_doUpdateFee);
|
||||||
|
|
||||||
|
router.post("/doMoveFeeUp",
|
||||||
|
permissionHandlers.adminPostHandler,
|
||||||
|
handler_doMoveFeeUp);
|
||||||
|
|
||||||
|
router.post("/doMoveFeeDown",
|
||||||
|
permissionHandlers.adminPostHandler,
|
||||||
|
handler_doMoveFeeDown);
|
||||||
|
|
||||||
router.post("/doDeleteFee",
|
router.post("/doDeleteFee",
|
||||||
permissionHandlers.adminPostHandler,
|
permissionHandlers.adminPostHandler,
|
||||||
handler_doDeleteFee);
|
handler_doDeleteFee);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue