delete occupancy type field

deepsource-autofix-76c6eb20
Dan Gowans 2022-09-16 13:24:27 -04:00
parent 08f5731867
commit bea375613f
12 changed files with 194 additions and 1 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 { deleteOccupancyTypeField } from "../../helpers/lotOccupancyDB/deleteOccupancyTypeField.js";
import { getOccupancyTypes } from "../../helpers/functions.cache.js";
export const handler = async (request, response) => {
const success = deleteOccupancyTypeField(request.body.occupancyTypeFieldId, request.session);
const occupancyTypes = getOccupancyTypes();
response.json({
success,
occupancyTypes
});
};
export default handler;

View File

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

View File

@ -0,0 +1,3 @@
import type * as recordTypes from "../../types/recordTypes";
export declare const deleteOccupancyTypeField: (occupancyTypeFieldId: number | string, requestSession: recordTypes.PartialSession) => boolean;
export default deleteOccupancyTypeField;

View File

@ -0,0 +1,17 @@
import sqlite from "better-sqlite3";
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
import { clearOccupancyTypesCache } from "../functions.cache.js";
export const deleteOccupancyTypeField = (occupancyTypeFieldId, requestSession) => {
const database = sqlite(databasePath);
const rightNowMillis = Date.now();
const result = database
.prepare("update OccupancyTypeFields" +
" set recordDelete_userName = ?," +
" recordDelete_timeMillis = ?" +
" where occupancyTypeFieldId = ?")
.run(requestSession.user.userName, rightNowMillis, occupancyTypeFieldId);
database.close();
clearOccupancyTypesCache();
return result.changes > 0;
};
export default deleteOccupancyTypeField;

View File

@ -0,0 +1,33 @@
import sqlite from "better-sqlite3";
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
import { clearOccupancyTypesCache } from "../functions.cache.js";
import type * as recordTypes from "../../types/recordTypes";
export const deleteOccupancyTypeField = (
occupancyTypeFieldId: number | string,
requestSession: recordTypes.PartialSession
): boolean => {
const database = sqlite(databasePath);
const rightNowMillis = Date.now();
const result = database
.prepare(
"update OccupancyTypeFields" +
" set recordDelete_userName = ?," +
" recordDelete_timeMillis = ?" +
" where occupancyTypeFieldId = ?"
)
.run(requestSession.user.userName, rightNowMillis, occupancyTypeFieldId);
database.close();
clearOccupancyTypesCache();
return result.changes > 0;
};
export default deleteOccupancyTypeField;

View File

@ -229,6 +229,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}); });
}; };
const doDelete = () => {
const _doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteOccupancyTypeField", {
occupancyTypeFieldId
}, (responseJSON) => {
if (responseJSON.success) {
occupancyTypes = responseJSON.occupancyTypes;
editCloseModalFunction();
renderOccupancyTypes();
}
else {
bulmaJS.alert({
title: "Error Deleting Field",
message: responseJSON.errorMessage,
contextualColorName: "danger"
});
}
});
};
bulmaJS.confirm({
title: "Delete Field",
message: "Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",
contextualColorName: "warning",
okButton: {
text: "Yes, Delete Field",
callbackFunction: _doDelete
}
});
};
cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyTypeField", { cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyTypeField", {
onshow: (modalElement) => { onshow: (modalElement) => {
los.populateAliases(modalElement); los.populateAliases(modalElement);
@ -250,6 +279,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}, },
onshown: (modalElement, closeModalFunction) => { onshown: (modalElement, closeModalFunction) => {
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
bulmaJS.init(modalElement);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
cityssm.enableNavBlocker(); cityssm.enableNavBlocker();
modalElement modalElement
@ -258,6 +288,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin); minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin);
updateMaximumLengthMin(); updateMaximumLengthMin();
occupancyTypeFieldValuesElement.addEventListener("keyup", toggleInputFields); occupancyTypeFieldValuesElement.addEventListener("keyup", toggleInputFields);
modalElement
.querySelector("#button--deleteOccupancyTypeField")
.addEventListener("click", doDelete);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();

View File

@ -6,6 +6,7 @@ import type * as recordTypes from "../types/recordTypes";
import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types"; import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
import type { BulmaJS } from "@cityssm/bulma-js/types"; import type { BulmaJS } from "@cityssm/bulma-js/types";
import { response } from "express";
declare const cityssm: cityssmGlobal; declare const cityssm: cityssmGlobal;
declare const bulmaJS: BulmaJS; declare const bulmaJS: BulmaJS;
@ -406,6 +407,45 @@ declare const bulmaJS: BulmaJS;
); );
}; };
const doDelete = () => {
const _doDelete = () => {
cityssm.postJSON(
urlPrefix + "/admin/doDeleteOccupancyTypeField",
{
occupancyTypeFieldId
},
(responseJSON: {
success: boolean;
errorMessage?: string;
occupancyTypes?: recordTypes.OccupancyType[];
}) => {
if (responseJSON.success) {
occupancyTypes = responseJSON.occupancyTypes;
editCloseModalFunction();
renderOccupancyTypes();
} else {
bulmaJS.alert({
title: "Error Deleting Field",
message: responseJSON.errorMessage,
contextualColorName: "danger"
});
}
}
);
};
bulmaJS.confirm({
title: "Delete Field",
message:
"Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",
contextualColorName: "warning",
okButton: {
text: "Yes, Delete Field",
callbackFunction: _doDelete
}
});
};
cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyTypeField", { cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyTypeField", {
onshow: (modalElement) => { onshow: (modalElement) => {
los.populateAliases(modalElement); los.populateAliases(modalElement);
@ -460,6 +500,7 @@ declare const bulmaJS: BulmaJS;
onshown: (modalElement, closeModalFunction) => { onshown: (modalElement, closeModalFunction) => {
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
bulmaJS.init(modalElement);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
cityssm.enableNavBlocker(); cityssm.enableNavBlocker();
@ -477,6 +518,10 @@ declare const bulmaJS: BulmaJS;
"keyup", "keyup",
toggleInputFields toggleInputFields
); );
modalElement
.querySelector("#button--deleteOccupancyTypeField")
.addEventListener("click", doDelete);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();

View File

@ -81,6 +81,24 @@
<span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span>
<span>Update Field</span> <span>Update Field</span>
</button> </button>
<div class="dropdown is-up is-right mr-2">
<div class="dropdown-trigger">
<button class="button" type="button">
<span>More Options</span>
<span class="icon is-small">
<i class="fas fa-angle-down" aria-hidden="true"></i>
</span>
</button>
</div>
<div class="dropdown-menu">
<div class="dropdown-content">
<a class="dropdown-item" id="button--deleteOccupancyTypeField" href="#">
<span class="icon is-small"><i class="fas fa-trash has-text-danger" aria-hidden="true"></i></span>
<span>Delete Field</span>
</a>
</div>
</div>
</div>
<button class="button is-close-modal-button" type="button">Cancel</button> <button class="button is-close-modal-button" type="button">Cancel</button>
</footer> </footer>
</div> </div>

File diff suppressed because one or more lines are too long

View File

@ -19,6 +19,7 @@ import handler_doMoveOccupancyTypeDown from "../handlers/admin-post/doMoveOccupa
import handler_doDeleteOccupancyType from "../handlers/admin-post/doDeleteOccupancyType.js"; import handler_doDeleteOccupancyType from "../handlers/admin-post/doDeleteOccupancyType.js";
import handler_doAddOccupancyTypeField from "../handlers/admin-post/doAddOccupancyTypeField.js"; import handler_doAddOccupancyTypeField from "../handlers/admin-post/doAddOccupancyTypeField.js";
import handler_doUpdateOccupancyTypeField from "../handlers/admin-post/doUpdateOccupancyTypeField.js"; import handler_doUpdateOccupancyTypeField from "../handlers/admin-post/doUpdateOccupancyTypeField.js";
import handler_doDeleteOccupancyTypeField from "../handlers/admin-post/doDeleteOccupancyTypeField.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";
import handler_doUpdateWorkOrderType from "../handlers/admin-post/doUpdateWorkOrderType.js"; import handler_doUpdateWorkOrderType from "../handlers/admin-post/doUpdateWorkOrderType.js";
@ -60,6 +61,7 @@ router.post("/doMoveOccupancyTypeDown", permissionHandlers.adminPostHandler, han
router.post("/doDeleteOccupancyType", permissionHandlers.adminPostHandler, handler_doDeleteOccupancyType); router.post("/doDeleteOccupancyType", permissionHandlers.adminPostHandler, handler_doDeleteOccupancyType);
router.post("/doAddOccupancyTypeField", permissionHandlers.adminPostHandler, handler_doAddOccupancyTypeField); router.post("/doAddOccupancyTypeField", permissionHandlers.adminPostHandler, handler_doAddOccupancyTypeField);
router.post("/doUpdateOccupancyTypeField", permissionHandlers.adminPostHandler, handler_doUpdateOccupancyTypeField); router.post("/doUpdateOccupancyTypeField", permissionHandlers.adminPostHandler, handler_doUpdateOccupancyTypeField);
router.post("/doDeleteOccupancyTypeField", permissionHandlers.adminPostHandler, handler_doDeleteOccupancyTypeField);
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);
router.post("/doUpdateWorkOrderType", permissionHandlers.adminPostHandler, handler_doUpdateWorkOrderType); router.post("/doUpdateWorkOrderType", permissionHandlers.adminPostHandler, handler_doUpdateWorkOrderType);

View File

@ -30,6 +30,7 @@ import handler_doDeleteOccupancyType from "../handlers/admin-post/doDeleteOccupa
import handler_doAddOccupancyTypeField from "../handlers/admin-post/doAddOccupancyTypeField.js"; import handler_doAddOccupancyTypeField from "../handlers/admin-post/doAddOccupancyTypeField.js";
import handler_doUpdateOccupancyTypeField from "../handlers/admin-post/doUpdateOccupancyTypeField.js"; import handler_doUpdateOccupancyTypeField from "../handlers/admin-post/doUpdateOccupancyTypeField.js";
import handler_doDeleteOccupancyTypeField from "../handlers/admin-post/doDeleteOccupancyTypeField.js";
// Config Table Management // Config Table Management
@ -177,6 +178,12 @@ router.post(
handler_doUpdateOccupancyTypeField handler_doUpdateOccupancyTypeField
); );
router.post(
"/doDeleteOccupancyTypeField",
permissionHandlers.adminPostHandler,
handler_doDeleteOccupancyTypeField
);
/* /*
* Config Tables * Config Tables
*/ */