reorder occupancy type

deepsource-autofix-76c6eb20
Dan Gowans 2022-09-06 09:52:13 -04:00
parent 739f88a44a
commit ef96f8545b
11 changed files with 205 additions and 3 deletions

View File

@ -0,0 +1,3 @@
import type { RequestHandler } from "express";
export declare const handler: RequestHandler;
export default handler;

View File

@ -0,0 +1,11 @@
import { moveOccupancyTypeDown } from "../../helpers/lotOccupancyDB/moveOccupancyTypeDown.js";
import { getOccupancyTypes } from "../../helpers/functions.cache.js";
export const handler = async (request, response) => {
const success = moveOccupancyTypeDown(request.body.occupancyTypeId);
const occupancyTypes = getOccupancyTypes();
response.json({
success,
occupancyTypes
});
};
export default handler;

View File

@ -0,0 +1,18 @@
import type { RequestHandler } from "express";
import { moveOccupancyTypeDown } from "../../helpers/lotOccupancyDB/moveOccupancyTypeDown.js";
import { getOccupancyTypes } from "../../helpers/functions.cache.js";
export const handler: RequestHandler = async (request, response) => {
const success = moveOccupancyTypeDown(request.body.occupancyTypeId);
const occupancyTypes = getOccupancyTypes();
response.json({
success,
occupancyTypes
});
};
export default handler;

View File

@ -0,0 +1,3 @@
import type { RequestHandler } from "express";
export declare const handler: RequestHandler;
export default handler;

View File

@ -0,0 +1,11 @@
import { moveOccupancyTypeUp } from "../../helpers/lotOccupancyDB/moveOccupancyTypeUp.js";
import { getOccupancyTypes } from "../../helpers/functions.cache.js";
export const handler = async (request, response) => {
const success = moveOccupancyTypeUp(request.body.occupancyTypeId);
const occupancyTypes = getOccupancyTypes();
response.json({
success,
occupancyTypes
});
};
export default handler;

View File

@ -0,0 +1,18 @@
import type { RequestHandler } from "express";
import { moveOccupancyTypeUp } from "../../helpers/lotOccupancyDB/moveOccupancyTypeUp.js";
import { getOccupancyTypes } from "../../helpers/functions.cache.js";
export const handler: RequestHandler = async (request, response) => {
const success = moveOccupancyTypeUp(request.body.occupancyTypeId);
const occupancyTypes = getOccupancyTypes();
response.json({
success,
occupancyTypes
});
};
export default handler;

View File

@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
(() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const containerElement = document.querySelector("#container--occupancyTypes");
const occupancyTypes = exports.occupancyTypes;
let occupancyTypes = exports.occupancyTypes;
delete exports.occupancyTypes;
const expandedOccupancyTypes = new Set();
const toggleOccupancyTypeFields = (clickEvent) => {
@ -24,6 +24,44 @@ Object.defineProperty(exports, "__esModule", { value: true });
panelBlockElement.classList.toggle("is-hidden");
}
};
const moveOccupancyTypeUp = (clickEvent) => {
clickEvent.preventDefault();
const occupancyTypeId = clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveOccupancyTypeUp", {
occupancyTypeId
}, (responseJSON) => {
if (responseJSON.success) {
occupancyTypes = responseJSON.occupancyTypes;
renderOccupancyTypes();
}
else {
bulmaJS.alert({
title: "Error Moving Occupancy Type",
message: responseJSON.errorMessage,
contextualColorName: "danger"
});
}
});
};
const moveOccupancyTypeDown = (clickEvent) => {
clickEvent.preventDefault();
const occupancyTypeId = clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveOccupancyTypeDown", {
occupancyTypeId
}, (responseJSON) => {
if (responseJSON.success) {
occupancyTypes = responseJSON.occupancyTypes;
renderOccupancyTypes();
}
else {
bulmaJS.alert({
title: "Error Moving Occupancy Type",
message: responseJSON.errorMessage,
contextualColorName: "danger"
});
}
});
};
const renderOccupancyTypes = () => {
if (occupancyTypes.length === 0) {
containerElement.innerHTML =
@ -142,6 +180,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
occupancyTypeContainer
.querySelector(".button--toggleOccupancyTypeFields")
.addEventListener("click", toggleOccupancyTypeFields);
occupancyTypeContainer
.querySelector(".button--moveOccupancyTypeUp")
.addEventListener("click", moveOccupancyTypeUp);
occupancyTypeContainer
.querySelector(".button--moveOccupancyTypeDown")
.addEventListener("click", moveOccupancyTypeDown);
containerElement.append(occupancyTypeContainer);
}
};

View File

@ -17,7 +17,7 @@ declare const bulmaJS: BulmaJS;
"#container--occupancyTypes"
) as HTMLElement;
const occupancyTypes: recordTypes.OccupancyType[] = exports.occupancyTypes;
let occupancyTypes: recordTypes.OccupancyType[] = exports.occupancyTypes;
delete exports.occupancyTypes;
const expandedOccupancyTypes = new Set<number>();
@ -55,6 +55,72 @@ declare const bulmaJS: BulmaJS;
}
};
const moveOccupancyTypeUp = (clickEvent: Event) => {
clickEvent.preventDefault();
const occupancyTypeId = (
(clickEvent.currentTarget as HTMLElement).closest(
".container--occupancyType"
) as HTMLElement
).dataset.occupancyTypeId;
cityssm.postJSON(
urlPrefix + "/admin/doMoveOccupancyTypeUp",
{
occupancyTypeId
},
(responseJSON: {
success: boolean;
errorMessage?: string;
occupancyTypes?: recordTypes.OccupancyType[];
}) => {
if (responseJSON.success) {
occupancyTypes = responseJSON.occupancyTypes;
renderOccupancyTypes();
} else {
bulmaJS.alert({
title: "Error Moving Occupancy Type",
message: responseJSON.errorMessage,
contextualColorName: "danger"
});
}
}
);
};
const moveOccupancyTypeDown = (clickEvent: Event) => {
clickEvent.preventDefault();
const occupancyTypeId = (
(clickEvent.currentTarget as HTMLElement).closest(
".container--occupancyType"
) as HTMLElement
).dataset.occupancyTypeId;
cityssm.postJSON(
urlPrefix + "/admin/doMoveOccupancyTypeDown",
{
occupancyTypeId
},
(responseJSON: {
success: boolean;
errorMessage?: string;
occupancyTypes?: recordTypes.OccupancyType[];
}) => {
if (responseJSON.success) {
occupancyTypes = responseJSON.occupancyTypes;
renderOccupancyTypes();
} else {
bulmaJS.alert({
title: "Error Moving Occupancy Type",
message: responseJSON.errorMessage,
contextualColorName: "danger"
});
}
}
);
};
const renderOccupancyTypes = () => {
if (occupancyTypes.length === 0) {
containerElement.innerHTML =
@ -196,6 +262,14 @@ declare const bulmaJS: BulmaJS;
.querySelector(".button--toggleOccupancyTypeFields")
.addEventListener("click", toggleOccupancyTypeFields);
occupancyTypeContainer
.querySelector(".button--moveOccupancyTypeUp")
.addEventListener("click", moveOccupancyTypeUp);
occupancyTypeContainer
.querySelector(".button--moveOccupancyTypeDown")
.addEventListener("click", moveOccupancyTypeDown);
containerElement.append(occupancyTypeContainer);
}
};

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{document.querySelector("main").dataset.urlPrefix;const e=document.querySelector("#container--occupancyTypes"),a=exports.occupancyTypes;delete exports.occupancyTypes;const s=new Set,t=e=>{const a=e.currentTarget,t=a.closest(".container--occupancyType"),i=Number.parseInt(t.dataset.occupancyTypeId,10);s.has(i)?s.delete(i):s.add(i),a.innerHTML=s.has(i)?'<i class="fas fa-fw fa-minus" aria-hidden="true"></i>':'<i class="fas fa-fw fa-plus" aria-hidden="true"></i>';const c=t.querySelectorAll(".panel-block");for(const e of c)e.classList.toggle("is-hidden")};(()=>{if(0!==a.length){e.innerHTML="";for(const i of a){const a=document.createElement("div");if(a.className="panel container--occupancyType",a.dataset.occupancyTypeId=i.occupancyTypeId.toString(),a.innerHTML='<div class="panel-heading"><div class="level is-mobile"><div class="level-left"><div class="level-item"><button class="button is-small button--toggleOccupancyTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">'+(s.has(i.occupancyTypeId)?'<i class="fas fa-fw fa-minus" aria-hidden="true"></i>':'<i class="fas fa-fw fa-plus" aria-hidden="true"></i>')+'</button></div><div class="level-item"><h2 class="title is-4">'+cityssm.escapeHTML(i.occupancyType)+'</h2></div></div><div class="level-right"><div class="level-item"><button class="button is-primary is-small button--editOccupancyType" type="button"><span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span><span>Edit '+exports.aliases.occupancy+' Type</span></button></div><div class="level-item"><button class="button is-success is-small button--addOccupancyTypeField" type="button"><span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span><span>Add Field</span></button></div><div class="level-item"><div class="field has-addons"><div class="control"><button class="button is-small button--moveOccupancyTypeUp" 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--moveOccupancyTypeDown" 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>',0===i.occupancyTypeFields.length)a.insertAdjacentHTML("beforeend",'<div class="panel-block is-block'+(s.has(i.occupancyTypeId)?"":" is-hidden")+'"><div class="message is-info"><p class="message-body">There are no additional fields.</p></div></div>');else for(const e of i.occupancyTypeFields){const t=document.createElement("div");t.className="panel-block is-block container--occupancyTypeField",s.has(i.occupancyTypeId)||t.classList.add("is-hidden"),t.dataset.occupancyTypeFieldId=e.occupancyTypeFieldId.toString(),t.innerHTML='<div class="level is-mobile"><div class="level-left"><div class="level-item"><a class="has-text-weight-bold button--editOccupancyTypeField" href="#">'+cityssm.escapeHTML(e.occupancyTypeField)+'</a></div></div><div class="level-right"><div class="level-item"><div class="field has-addons"><div class="control"><button class="button is-small button--moveOccupancyTypeFieldUp" 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--moveOccupancyTypeFieldDown" 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>',a.append(t)}a.querySelector(".button--toggleOccupancyTypeFields").addEventListener("click",t),e.append(a)}}else e.innerHTML='<div class="message is-warning><p class="message-body">There are no active '+exports.aliases.occupancy.toLowerCase()+" types.</p></div>"})()})();
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,a=document.querySelector("#container--occupancyTypes");let s=exports.occupancyTypes;delete exports.occupancyTypes;const c=new Set,t=e=>{const a=e.currentTarget,s=a.closest(".container--occupancyType"),t=Number.parseInt(s.dataset.occupancyTypeId,10);c.has(t)?c.delete(t):c.add(t),a.innerHTML=c.has(t)?'<i class="fas fa-fw fa-minus" aria-hidden="true"></i>':'<i class="fas fa-fw fa-plus" aria-hidden="true"></i>';const i=s.querySelectorAll(".panel-block");for(const e of i)e.classList.toggle("is-hidden")},i=a=>{a.preventDefault();const c=a.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId;cityssm.postJSON(e+"/admin/doMoveOccupancyTypeUp",{occupancyTypeId:c},e=>{e.success?(s=e.occupancyTypes,o()):bulmaJS.alert({title:"Error Moving Occupancy Type",message:e.errorMessage,contextualColorName:"danger"})})},n=a=>{a.preventDefault();const c=a.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId;cityssm.postJSON(e+"/admin/doMoveOccupancyTypeDown",{occupancyTypeId:c},e=>{e.success?(s=e.occupancyTypes,o()):bulmaJS.alert({title:"Error Moving Occupancy Type",message:e.errorMessage,contextualColorName:"danger"})})},o=()=>{if(0!==s.length){a.innerHTML="";for(const e of s){const s=document.createElement("div");if(s.className="panel container--occupancyType",s.dataset.occupancyTypeId=e.occupancyTypeId.toString(),s.innerHTML='<div class="panel-heading"><div class="level is-mobile"><div class="level-left"><div class="level-item"><button class="button is-small button--toggleOccupancyTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">'+(c.has(e.occupancyTypeId)?'<i class="fas fa-fw fa-minus" aria-hidden="true"></i>':'<i class="fas fa-fw fa-plus" aria-hidden="true"></i>')+'</button></div><div class="level-item"><h2 class="title is-4">'+cityssm.escapeHTML(e.occupancyType)+'</h2></div></div><div class="level-right"><div class="level-item"><button class="button is-primary is-small button--editOccupancyType" type="button"><span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span><span>Edit '+exports.aliases.occupancy+' Type</span></button></div><div class="level-item"><button class="button is-success is-small button--addOccupancyTypeField" type="button"><span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span><span>Add Field</span></button></div><div class="level-item"><div class="field has-addons"><div class="control"><button class="button is-small button--moveOccupancyTypeUp" 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--moveOccupancyTypeDown" 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>',0===e.occupancyTypeFields.length)s.insertAdjacentHTML("beforeend",'<div class="panel-block is-block'+(c.has(e.occupancyTypeId)?"":" is-hidden")+'"><div class="message is-info"><p class="message-body">There are no additional fields.</p></div></div>');else for(const a of e.occupancyTypeFields){const t=document.createElement("div");t.className="panel-block is-block container--occupancyTypeField",c.has(e.occupancyTypeId)||t.classList.add("is-hidden"),t.dataset.occupancyTypeFieldId=a.occupancyTypeFieldId.toString(),t.innerHTML='<div class="level is-mobile"><div class="level-left"><div class="level-item"><a class="has-text-weight-bold button--editOccupancyTypeField" href="#">'+cityssm.escapeHTML(a.occupancyTypeField)+'</a></div></div><div class="level-right"><div class="level-item"><div class="field has-addons"><div class="control"><button class="button is-small button--moveOccupancyTypeFieldUp" 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--moveOccupancyTypeFieldDown" 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>',s.append(t)}s.querySelector(".button--toggleOccupancyTypeFields").addEventListener("click",t),s.querySelector(".button--moveOccupancyTypeUp").addEventListener("click",i),s.querySelector(".button--moveOccupancyTypeDown").addEventListener("click",n),a.append(s)}}else a.innerHTML='<div class="message is-warning><p class="message-body">There are no active '+exports.aliases.occupancy.toLowerCase()+" types.</p></div>"};o()})();

View File

@ -12,6 +12,8 @@ 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_occupancyTypes from "../handlers/admin-get/occupancyTypes.js";
import handler_doMoveOccupancyTypeUp from "../handlers/admin-post/doMoveOccupancyTypeUp.js";
import handler_doMoveOccupancyTypeDown from "../handlers/admin-post/doMoveOccupancyTypeDown.js";
import handler_tables from "../handlers/admin-get/tables.js";
import handler_doAddWorkOrderType from "../handlers/admin-post/doAddWorkOrderType.js";
import handler_doUpdateWorkOrderType from "../handlers/admin-post/doUpdateWorkOrderType.js";
@ -41,6 +43,8 @@ router.post("/doMoveFeeUp", permissionHandlers.adminPostHandler, handler_doMoveF
router.post("/doMoveFeeDown", permissionHandlers.adminPostHandler, handler_doMoveFeeDown);
router.post("/doDeleteFee", permissionHandlers.adminPostHandler, handler_doDeleteFee);
router.get("/occupancyTypes", permissionHandlers.adminGetHandler, handler_occupancyTypes);
router.post("/doMoveOccupancyTypeUp", permissionHandlers.adminPostHandler, handler_doMoveOccupancyTypeUp);
router.post("/doMoveOccupancyTypeDown", permissionHandlers.adminPostHandler, handler_doMoveOccupancyTypeDown);
router.get("/tables", permissionHandlers.adminGetHandler, handler_tables);
router.post("/doAddWorkOrderType", permissionHandlers.adminPostHandler, handler_doAddWorkOrderType);
router.post("/doUpdateWorkOrderType", permissionHandlers.adminPostHandler, handler_doUpdateWorkOrderType);

View File

@ -22,6 +22,9 @@ import handler_doDeleteFee from "../handlers/admin-post/doDeleteFee.js";
import handler_occupancyTypes from "../handlers/admin-get/occupancyTypes.js";
import handler_doMoveOccupancyTypeUp from "../handlers/admin-post/doMoveOccupancyTypeUp.js";
import handler_doMoveOccupancyTypeDown from "../handlers/admin-post/doMoveOccupancyTypeDown.js";
// Config Table Management
import handler_tables from "../handlers/admin-get/tables.js";
@ -118,6 +121,19 @@ router.get(
handler_occupancyTypes
);
router.post(
"/doMoveOccupancyTypeUp",
permissionHandlers.adminPostHandler,
handler_doMoveOccupancyTypeUp
);
router.post(
"/doMoveOccupancyTypeDown",
permissionHandlers.adminPostHandler,
handler_doMoveOccupancyTypeDown
);
/*
* Config Tables
*/