add occupancy type field
parent
0ba94ae199
commit
b6808f1559
|
|
@ -0,0 +1,3 @@
|
|||
import type { RequestHandler } from "express";
|
||||
export declare const handler: RequestHandler;
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
import { addOccupancyTypeField } from "../../helpers/lotOccupancyDB/addOccupancyTypeField.js";
|
||||
import { getOccupancyTypes } from "../../helpers/functions.cache.js";
|
||||
export const handler = async (request, response) => {
|
||||
const occupancyTypeFieldId = addOccupancyTypeField(request.body, request.session);
|
||||
const occupancyTypes = getOccupancyTypes();
|
||||
response.json({
|
||||
success: true,
|
||||
occupancyTypeFieldId,
|
||||
occupancyTypes
|
||||
});
|
||||
};
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
import type { RequestHandler } from "express";
|
||||
|
||||
import { addOccupancyTypeField } from "../../helpers/lotOccupancyDB/addOccupancyTypeField.js";
|
||||
|
||||
import { getOccupancyTypes } from "../../helpers/functions.cache.js";
|
||||
|
||||
export const handler: RequestHandler = async (request, response) => {
|
||||
const occupancyTypeFieldId = addOccupancyTypeField(request.body, request.session);
|
||||
|
||||
const occupancyTypes = getOccupancyTypes();
|
||||
|
||||
response.json({
|
||||
success: true,
|
||||
occupancyTypeFieldId,
|
||||
occupancyTypes
|
||||
});
|
||||
};
|
||||
|
||||
export default handler;
|
||||
|
|
@ -2,9 +2,9 @@ import type * as recordTypes from "../../types/recordTypes";
|
|||
interface AddOccupancyTypeFieldForm {
|
||||
occupancyTypeId: string | number;
|
||||
occupancyTypeField: string;
|
||||
occupancyTypeFieldValues: string;
|
||||
occupancyTypeFieldValues?: string;
|
||||
isRequired?: string;
|
||||
pattern: string;
|
||||
pattern?: string;
|
||||
minimumLength: string | number;
|
||||
maximumLength: string | number;
|
||||
orderNumber?: number;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { clearOccupancyTypesCache } from "../functions.cache.js";
|
||||
export const addOccupancyTypeField = (occupancyTypeFieldForm, requestSession) => {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
@ -12,8 +13,9 @@ export const addOccupancyTypeField = (occupancyTypeFieldForm, requestSession) =>
|
|||
" recordCreate_userName, recordCreate_timeMillis," +
|
||||
" recordUpdate_userName, recordUpdate_timeMillis)" +
|
||||
" values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
|
||||
.run(occupancyTypeFieldForm.occupancyTypeId, occupancyTypeFieldForm.occupancyTypeField, occupancyTypeFieldForm.occupancyTypeFieldValues, occupancyTypeFieldForm.isRequired ? 1 : 0, occupancyTypeFieldForm.pattern, occupancyTypeFieldForm.minimumLength || 0, occupancyTypeFieldForm.maximumLength || 100, occupancyTypeFieldForm.orderNumber || 0, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis);
|
||||
.run(occupancyTypeFieldForm.occupancyTypeId, occupancyTypeFieldForm.occupancyTypeField, occupancyTypeFieldForm.occupancyTypeFieldValues || "", occupancyTypeFieldForm.isRequired ? 1 : 0, occupancyTypeFieldForm.pattern || "", occupancyTypeFieldForm.minimumLength || 0, occupancyTypeFieldForm.maximumLength || 100, occupancyTypeFieldForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis);
|
||||
database.close();
|
||||
clearOccupancyTypesCache();
|
||||
return result.lastInsertRowid;
|
||||
};
|
||||
export default addOccupancyTypeField;
|
||||
|
|
|
|||
|
|
@ -3,13 +3,14 @@ import sqlite from "better-sqlite3";
|
|||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import { clearOccupancyTypesCache } from "../functions.cache.js";
|
||||
|
||||
interface AddOccupancyTypeFieldForm {
|
||||
occupancyTypeId: string | number;
|
||||
occupancyTypeField: string;
|
||||
occupancyTypeFieldValues: string;
|
||||
occupancyTypeFieldValues?: string;
|
||||
isRequired?: string;
|
||||
pattern: string;
|
||||
pattern?: string;
|
||||
minimumLength: string | number;
|
||||
maximumLength: string | number;
|
||||
orderNumber?: number;
|
||||
|
|
@ -37,12 +38,12 @@ export const addOccupancyTypeField = (
|
|||
.run(
|
||||
occupancyTypeFieldForm.occupancyTypeId,
|
||||
occupancyTypeFieldForm.occupancyTypeField,
|
||||
occupancyTypeFieldForm.occupancyTypeFieldValues,
|
||||
occupancyTypeFieldForm.occupancyTypeFieldValues || "",
|
||||
occupancyTypeFieldForm.isRequired ? 1 : 0,
|
||||
occupancyTypeFieldForm.pattern,
|
||||
occupancyTypeFieldForm.pattern || "",
|
||||
occupancyTypeFieldForm.minimumLength || 0,
|
||||
occupancyTypeFieldForm.maximumLength || 100,
|
||||
occupancyTypeFieldForm.orderNumber || 0,
|
||||
occupancyTypeFieldForm.orderNumber || -1,
|
||||
requestSession.user.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
|
|
@ -51,6 +52,8 @@ export const addOccupancyTypeField = (
|
|||
|
||||
database.close();
|
||||
|
||||
clearOccupancyTypesCache();
|
||||
|
||||
return result.lastInsertRowid as number;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
};
|
||||
bulmaJS.confirm({
|
||||
title: "Delete " + exports.aliases.occupancy + " Type",
|
||||
message: "Are you sure you want to delete this " + exports.aliases.occupancy.toLowerCase() + " type?",
|
||||
message: "Are you sure you want to delete this " +
|
||||
exports.aliases.occupancy.toLowerCase() +
|
||||
" type?",
|
||||
contextualColorName: "warning",
|
||||
okButton: {
|
||||
text: "Yes, Delete " + exports.aliases.occupancy + " Type",
|
||||
|
|
@ -100,6 +102,48 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
});
|
||||
};
|
||||
const openAddOccupancyTypeField = (clickEvent) => {
|
||||
const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId, 10);
|
||||
const occupancyType = occupancyTypes.find((currentOccupancyType) => {
|
||||
return occupancyTypeId === currentOccupancyType.occupancyTypeId;
|
||||
});
|
||||
let addCloseModalFunction;
|
||||
const doAdd = (submitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(urlPrefix + "/admin/doAddOccupancyTypeField", submitEvent.currentTarget, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
expandedOccupancyTypes.add(occupancyTypeId);
|
||||
addCloseModalFunction();
|
||||
occupancyTypes = responseJSON.occupancyTypes;
|
||||
renderOccupancyTypes();
|
||||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Adding Field",
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyTypeField", {
|
||||
onshow: (modalElement) => {
|
||||
los.populateAliases(modalElement);
|
||||
modalElement.querySelector("#occupancyTypeFieldAdd--occupancyTypeId").value = occupancyTypeId.toString();
|
||||
},
|
||||
onshown: (modalElement, closeModalFunction) => {
|
||||
addCloseModalFunction = closeModalFunction;
|
||||
modalElement.querySelector("#occupancyTypeFieldAdd--occupancyTypeField").focus();
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
.addEventListener("submit", doAdd);
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
},
|
||||
onremoved: () => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
}
|
||||
});
|
||||
};
|
||||
const moveOccupancyTypeUp = (clickEvent) => {
|
||||
clickEvent.preventDefault();
|
||||
const occupancyTypeId = clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId;
|
||||
|
|
@ -266,12 +310,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
occupancyTypeContainer
|
||||
.querySelector(".button--toggleOccupancyTypeFields")
|
||||
.addEventListener("click", toggleOccupancyTypeFields);
|
||||
occupancyTypeContainer
|
||||
.querySelector(".button--deleteOccupancyType")
|
||||
.addEventListener("click", deleteOccupancyType);
|
||||
occupancyTypeContainer
|
||||
.querySelector(".button--editOccupancyType")
|
||||
.addEventListener("click", openEditOccupancyType);
|
||||
occupancyTypeContainer
|
||||
.querySelector(".button--deleteOccupancyType")
|
||||
.addEventListener("click", deleteOccupancyType);
|
||||
.querySelector(".button--addOccupancyTypeField")
|
||||
.addEventListener("click", openAddOccupancyTypeField);
|
||||
occupancyTypeContainer
|
||||
.querySelector(".button--moveOccupancyTypeUp")
|
||||
.addEventListener("click", moveOccupancyTypeUp);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,6 @@ declare const bulmaJS: BulmaJS;
|
|||
);
|
||||
|
||||
const doDelete = () => {
|
||||
|
||||
cityssm.postJSON(
|
||||
urlPrefix + "/admin/doDeleteOccupancyType",
|
||||
{
|
||||
|
|
@ -98,7 +97,10 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
bulmaJS.confirm({
|
||||
title: "Delete " + exports.aliases.occupancy + " Type",
|
||||
message: "Are you sure you want to delete this " + exports.aliases.occupancy.toLowerCase() + " type?",
|
||||
message:
|
||||
"Are you sure you want to delete this " +
|
||||
exports.aliases.occupancy.toLowerCase() +
|
||||
" type?",
|
||||
contextualColorName: "warning",
|
||||
okButton: {
|
||||
text: "Yes, Delete " + exports.aliases.occupancy + " Type",
|
||||
|
|
@ -189,6 +191,81 @@ declare const bulmaJS: BulmaJS;
|
|||
});
|
||||
};
|
||||
|
||||
const openAddOccupancyTypeField = (clickEvent: Event) => {
|
||||
const occupancyTypeId = Number.parseInt(
|
||||
(
|
||||
(clickEvent.currentTarget as HTMLElement).closest(
|
||||
".container--occupancyType"
|
||||
) as HTMLElement
|
||||
).dataset.occupancyTypeId,
|
||||
10
|
||||
);
|
||||
|
||||
const occupancyType = occupancyTypes.find((currentOccupancyType) => {
|
||||
return occupancyTypeId === currentOccupancyType.occupancyTypeId;
|
||||
});
|
||||
|
||||
let addCloseModalFunction: () => void;
|
||||
|
||||
const doAdd = (submitEvent: SubmitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
|
||||
cityssm.postJSON(
|
||||
urlPrefix + "/admin/doAddOccupancyTypeField",
|
||||
submitEvent.currentTarget,
|
||||
(responseJSON: {
|
||||
success: boolean;
|
||||
errorMessage?: string;
|
||||
occupancyTypes?: recordTypes.OccupancyType[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
expandedOccupancyTypes.add(occupancyTypeId);
|
||||
|
||||
addCloseModalFunction();
|
||||
occupancyTypes = responseJSON.occupancyTypes;
|
||||
renderOccupancyTypes();
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Adding Field",
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyTypeField", {
|
||||
onshow: (modalElement) => {
|
||||
los.populateAliases(modalElement);
|
||||
|
||||
(
|
||||
modalElement.querySelector(
|
||||
"#occupancyTypeFieldAdd--occupancyTypeId"
|
||||
) as HTMLInputElement
|
||||
).value = occupancyTypeId.toString();
|
||||
},
|
||||
onshown: (modalElement, closeModalFunction) => {
|
||||
addCloseModalFunction = closeModalFunction;
|
||||
|
||||
(
|
||||
modalElement.querySelector(
|
||||
"#occupancyTypeFieldAdd--occupancyTypeField"
|
||||
) as HTMLInputElement
|
||||
).focus();
|
||||
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
.addEventListener("submit", doAdd);
|
||||
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
},
|
||||
onremoved: () => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const moveOccupancyTypeUp = (clickEvent: Event) => {
|
||||
clickEvent.preventDefault();
|
||||
|
||||
|
|
@ -408,13 +485,17 @@ declare const bulmaJS: BulmaJS;
|
|||
.querySelector(".button--toggleOccupancyTypeFields")
|
||||
.addEventListener("click", toggleOccupancyTypeFields);
|
||||
|
||||
occupancyTypeContainer
|
||||
.querySelector(".button--deleteOccupancyType")
|
||||
.addEventListener("click", deleteOccupancyType);
|
||||
|
||||
occupancyTypeContainer
|
||||
.querySelector(".button--editOccupancyType")
|
||||
.addEventListener("click", openEditOccupancyType);
|
||||
|
||||
occupancyTypeContainer
|
||||
.querySelector(".button--deleteOccupancyType")
|
||||
.addEventListener("click", deleteOccupancyType);
|
||||
.querySelector(".button--addOccupancyTypeField")
|
||||
.addEventListener("click", openAddOccupancyTypeField);
|
||||
|
||||
occupancyTypeContainer
|
||||
.querySelector(".button--moveOccupancyTypeUp")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
<div class="modal">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-card" style="width:900px">
|
||||
<header class="modal-card-head">
|
||||
<h3 class="modal-card-title">
|
||||
Add <span class="alias" data-alias="Occupancy"></span> Type Field
|
||||
</h3>
|
||||
<button class="delete is-close-modal-button" aria-label="close" type="button"></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<form id="form--occupancyTypeFieldAdd">
|
||||
<input class="input" id="occupancyTypeFieldAdd--occupancyTypeId" name="occupancyTypeId" type="hidden" />
|
||||
<div class="field">
|
||||
<label class="label" for="occupancyTypeFieldAdd--occupancyTypeField">New Field</label>
|
||||
<div class="control">
|
||||
<input class="input" id="occupancyTypeFieldAdd--occupancyTypeField" name="occupancyTypeField" type="text" maxlength="100" required />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
<footer class="modal-card-foot justify-right">
|
||||
<button class="button is-success" type="submit" form="form--occupancyTypeFieldAdd">
|
||||
<span class="icon"><i class="fas fa-plus" aria-hidden="true"></i></span>
|
||||
<span>Add Field</span>
|
||||
</button>
|
||||
<button class="button is-close-modal-button" type="button">Cancel</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -17,6 +17,7 @@ import handler_doUpdateOccupancyType from "../handlers/admin-post/doUpdateOccupa
|
|||
import handler_doMoveOccupancyTypeUp from "../handlers/admin-post/doMoveOccupancyTypeUp.js";
|
||||
import handler_doMoveOccupancyTypeDown from "../handlers/admin-post/doMoveOccupancyTypeDown.js";
|
||||
import handler_doDeleteOccupancyType from "../handlers/admin-post/doDeleteOccupancyType.js";
|
||||
import handler_doAddOccupancyTypeField from "../handlers/admin-post/doAddOccupancyTypeField.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";
|
||||
|
|
@ -51,6 +52,7 @@ router.post("/doUpdateOccupancyType", permissionHandlers.adminPostHandler, handl
|
|||
router.post("/doMoveOccupancyTypeUp", permissionHandlers.adminPostHandler, handler_doMoveOccupancyTypeUp);
|
||||
router.post("/doMoveOccupancyTypeDown", permissionHandlers.adminPostHandler, handler_doMoveOccupancyTypeDown);
|
||||
router.post("/doDeleteOccupancyType", permissionHandlers.adminPostHandler, handler_doDeleteOccupancyType);
|
||||
router.post("/doAddOccupancyTypeField", permissionHandlers.adminPostHandler, handler_doAddOccupancyTypeField);
|
||||
router.get("/tables", permissionHandlers.adminGetHandler, handler_tables);
|
||||
router.post("/doAddWorkOrderType", permissionHandlers.adminPostHandler, handler_doAddWorkOrderType);
|
||||
router.post("/doUpdateWorkOrderType", permissionHandlers.adminPostHandler, handler_doUpdateWorkOrderType);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@ import handler_doMoveOccupancyTypeUp from "../handlers/admin-post/doMoveOccupanc
|
|||
import handler_doMoveOccupancyTypeDown from "../handlers/admin-post/doMoveOccupancyTypeDown.js";
|
||||
import handler_doDeleteOccupancyType from "../handlers/admin-post/doDeleteOccupancyType.js";
|
||||
|
||||
import handler_doAddOccupancyTypeField from "../handlers/admin-post/doAddOccupancyTypeField.js";
|
||||
|
||||
// Config Table Management
|
||||
|
||||
import handler_tables from "../handlers/admin-get/tables.js";
|
||||
|
|
@ -154,6 +156,13 @@ router.post(
|
|||
handler_doDeleteOccupancyType
|
||||
);
|
||||
|
||||
// Occupancy Type Fields
|
||||
|
||||
router.post(
|
||||
"/doAddOccupancyTypeField",
|
||||
permissionHandlers.adminPostHandler,
|
||||
handler_doAddOccupancyTypeField
|
||||
);
|
||||
|
||||
/*
|
||||
* Config Tables
|
||||
|
|
|
|||
Loading…
Reference in New Issue