delete map
parent
cb3cff1253
commit
e0761624bc
|
|
@ -0,0 +1,3 @@
|
||||||
|
import type { RequestHandler } from "express";
|
||||||
|
export declare const handler: RequestHandler;
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
import { deleteMap } from "../../helpers/lotOccupancyDB/deleteMap.js";
|
||||||
|
export const handler = async (request, response) => {
|
||||||
|
const success = deleteMap(request.body.mapId, request.session);
|
||||||
|
response.json({
|
||||||
|
success
|
||||||
|
});
|
||||||
|
};
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
import type {
|
||||||
|
RequestHandler
|
||||||
|
} from "express";
|
||||||
|
|
||||||
|
import {
|
||||||
|
deleteMap
|
||||||
|
} from "../../helpers/lotOccupancyDB/deleteMap.js";
|
||||||
|
|
||||||
|
|
||||||
|
export const handler: RequestHandler = async (request, response) => {
|
||||||
|
|
||||||
|
const success = deleteMap(request.body.mapId, request.session);
|
||||||
|
|
||||||
|
response.json({
|
||||||
|
success
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
import type * as recordTypes from "../../types/recordTypes";
|
||||||
|
export declare const deleteMap: (mapId: number | string, requestSession: recordTypes.PartialSession) => boolean;
|
||||||
|
export default deleteMap;
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
import sqlite from "better-sqlite3";
|
||||||
|
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||||
|
export const deleteMap = (mapId, requestSession) => {
|
||||||
|
const database = sqlite(databasePath);
|
||||||
|
const rightNowMillis = Date.now();
|
||||||
|
const result = database
|
||||||
|
.prepare("update Maps" +
|
||||||
|
" set recordDelete_userName = ?," +
|
||||||
|
" recordDelete_timeMillis = ?" +
|
||||||
|
" where mapId = ?")
|
||||||
|
.run(requestSession.user.userName, rightNowMillis, mapId);
|
||||||
|
database.close();
|
||||||
|
return (result.changes > 0);
|
||||||
|
};
|
||||||
|
export default deleteMap;
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
import sqlite from "better-sqlite3";
|
||||||
|
|
||||||
|
import {
|
||||||
|
lotOccupancyDB as databasePath
|
||||||
|
} from "../../data/databasePaths.js";
|
||||||
|
|
||||||
|
import type * as recordTypes from "../../types/recordTypes";
|
||||||
|
|
||||||
|
|
||||||
|
export const deleteMap =
|
||||||
|
(mapId: number | string,
|
||||||
|
requestSession: recordTypes.PartialSession): boolean => {
|
||||||
|
|
||||||
|
const database = sqlite(databasePath);
|
||||||
|
|
||||||
|
const rightNowMillis = Date.now();
|
||||||
|
|
||||||
|
const result = database
|
||||||
|
.prepare("update Maps" +
|
||||||
|
" set recordDelete_userName = ?," +
|
||||||
|
" recordDelete_timeMillis = ?" +
|
||||||
|
" where mapId = ?")
|
||||||
|
.run(requestSession.user.userName,
|
||||||
|
rightNowMillis,
|
||||||
|
mapId);
|
||||||
|
|
||||||
|
database.close();
|
||||||
|
|
||||||
|
return (result.changes > 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export default deleteMap;
|
||||||
|
|
@ -29,4 +29,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
mapForm.addEventListener("submit", updateMap);
|
mapForm.addEventListener("submit", updateMap);
|
||||||
|
if (!isCreate) {
|
||||||
|
document.querySelector("#button--deleteMap").addEventListener("click", (clickEvent) => {
|
||||||
|
clickEvent.preventDefault();
|
||||||
|
const doDelete = () => {
|
||||||
|
cityssm.postJSON(urlPrefix + "/maps/doDeleteMap", {
|
||||||
|
mapId
|
||||||
|
}, (responseJSON) => {
|
||||||
|
if (responseJSON.success) {
|
||||||
|
window.location.href = urlPrefix + "/maps?t=" + Date.now();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bulmaJS.alert({
|
||||||
|
title: "Error Deleting " + exports.aliases.map,
|
||||||
|
message: responseJSON.errorMessage,
|
||||||
|
contextualColorName: "danger"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
bulmaJS.confirm({
|
||||||
|
title: "Delete " + exports.aliases.map,
|
||||||
|
message: "Are you sure you want to delete this " + exports.aliases.map.toLowerCase() + "?",
|
||||||
|
contextualColorName: "warning",
|
||||||
|
okButton: {
|
||||||
|
text: "Yes, Delete " + exports.aliases.map + "?",
|
||||||
|
callbackFunction: doDelete
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
/* eslint-disable unicorn/prefer-module */
|
/* eslint-disable unicorn/prefer-module */
|
||||||
|
|
||||||
import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
|
import type {
|
||||||
import type { BulmaJS } from "@cityssm/bulma-js/types";
|
cityssmGlobal
|
||||||
|
} from "@cityssm/bulma-webapp-js/src/types";
|
||||||
|
import type {
|
||||||
|
BulmaJS
|
||||||
|
} from "@cityssm/bulma-js/types";
|
||||||
|
|
||||||
declare const cityssm: cityssmGlobal;
|
declare const cityssm: cityssmGlobal;
|
||||||
declare const bulmaJS: BulmaJS;
|
declare const bulmaJS: BulmaJS;
|
||||||
|
|
@ -20,7 +24,10 @@ declare const bulmaJS: BulmaJS;
|
||||||
|
|
||||||
cityssm.postJSON(urlPrefix + "/maps/" + (isCreate ? "doCreateMap" : "doUpdateMap"),
|
cityssm.postJSON(urlPrefix + "/maps/" + (isCreate ? "doCreateMap" : "doUpdateMap"),
|
||||||
mapForm,
|
mapForm,
|
||||||
(responseJSON: { success: boolean; mapId?: number, errorMessage?: string}) => {
|
(responseJSON: {
|
||||||
|
success: boolean;mapId ? : number,
|
||||||
|
errorMessage ? : string
|
||||||
|
}) => {
|
||||||
|
|
||||||
if (responseJSON.success) {
|
if (responseJSON.success) {
|
||||||
if (isCreate) {
|
if (isCreate) {
|
||||||
|
|
@ -42,4 +49,42 @@ declare const bulmaJS: BulmaJS;
|
||||||
};
|
};
|
||||||
|
|
||||||
mapForm.addEventListener("submit", updateMap);
|
mapForm.addEventListener("submit", updateMap);
|
||||||
|
|
||||||
|
if (!isCreate) {
|
||||||
|
|
||||||
|
document.querySelector("#button--deleteMap").addEventListener("click", (clickEvent) => {
|
||||||
|
clickEvent.preventDefault();
|
||||||
|
|
||||||
|
const doDelete = () => {
|
||||||
|
|
||||||
|
cityssm.postJSON(urlPrefix + "/maps/doDeleteMap", {
|
||||||
|
mapId
|
||||||
|
},
|
||||||
|
(responseJSON: {
|
||||||
|
success: boolean;errorMessage ? : string;
|
||||||
|
}) => {
|
||||||
|
|
||||||
|
if (responseJSON.success) {
|
||||||
|
window.location.href = urlPrefix + "/maps?t=" + Date.now();
|
||||||
|
} else {
|
||||||
|
bulmaJS.alert({
|
||||||
|
title: "Error Deleting " + exports.aliases.map,
|
||||||
|
message: responseJSON.errorMessage,
|
||||||
|
contextualColorName: "danger"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
bulmaJS.confirm({
|
||||||
|
title: "Delete " + exports.aliases.map,
|
||||||
|
message: "Are you sure you want to delete this " + exports.aliases.map.toLowerCase() + "?",
|
||||||
|
contextualColorName: "warning",
|
||||||
|
okButton: {
|
||||||
|
text: "Yes, Delete " + exports.aliases.map + "?",
|
||||||
|
callbackFunction: doDelete
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
})();
|
})();
|
||||||
|
|
@ -1 +1 @@
|
||||||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,a=""===document.querySelector("#map--mapId").value,t=document.querySelector("#form--map");t.addEventListener("submit",s=>{s.preventDefault(),cityssm.postJSON(e+"/maps/"+(a?"doCreateMap":"doUpdateMap"),t,t=>{t.success?a?window.location.href=e+"/maps/"+t.mapId+"/edit":bulmaJS.alert({message:exports.aliases.map+" Updated Successfully",contextualColorName:"success"}):bulmaJS.alert({title:"Error Updating "+exports.aliases.map,message:t.errorMessage,contextualColorName:"danger"})})})})();
|
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,t=document.querySelector("#map--mapId").value,a=""===t,s=document.querySelector("#form--map");s.addEventListener("submit",t=>{t.preventDefault(),cityssm.postJSON(e+"/maps/"+(a?"doCreateMap":"doUpdateMap"),s,t=>{t.success?a?window.location.href=e+"/maps/"+t.mapId+"/edit":bulmaJS.alert({message:exports.aliases.map+" Updated Successfully",contextualColorName:"success"}):bulmaJS.alert({title:"Error Updating "+exports.aliases.map,message:t.errorMessage,contextualColorName:"danger"})})}),a||document.querySelector("#button--deleteMap").addEventListener("click",a=>{a.preventDefault();bulmaJS.confirm({title:"Delete "+exports.aliases.map,message:"Are you sure you want to delete this "+exports.aliases.map.toLowerCase()+"?",contextualColorName:"warning",okButton:{text:"Yes, Delete "+exports.aliases.map+"?",callbackFunction:()=>{cityssm.postJSON(e+"/maps/doDeleteMap",{mapId:t},t=>{t.success?window.location.href=e+"/maps?t="+Date.now():bulmaJS.alert({title:"Error Deleting "+exports.aliases.map,message:t.errorMessage,contextualColorName:"danger"})})}}})})})();
|
||||||
|
|
@ -6,6 +6,7 @@ import handler_new from "../handlers/maps-get/new.js";
|
||||||
import handler_edit from "../handlers/maps-get/edit.js";
|
import handler_edit from "../handlers/maps-get/edit.js";
|
||||||
import handler_doCreateMap from "../handlers/maps-post/doCreateMap.js";
|
import handler_doCreateMap from "../handlers/maps-post/doCreateMap.js";
|
||||||
import handler_doUpdateMap from "../handlers/maps-post/doUpdateMap.js";
|
import handler_doUpdateMap from "../handlers/maps-post/doUpdateMap.js";
|
||||||
|
import handler_doDeleteMap from "../handlers/maps-post/doDeleteMap.js";
|
||||||
export const router = Router();
|
export const router = Router();
|
||||||
router.get("/", handler_search);
|
router.get("/", handler_search);
|
||||||
router.get("/new", permissionHandlers.updateGetHandler, handler_new);
|
router.get("/new", permissionHandlers.updateGetHandler, handler_new);
|
||||||
|
|
@ -13,4 +14,5 @@ router.get("/:mapId", handler_view);
|
||||||
router.get("/:mapId/edit", permissionHandlers.updateGetHandler, handler_edit);
|
router.get("/:mapId/edit", permissionHandlers.updateGetHandler, handler_edit);
|
||||||
router.post("/doCreateMap", permissionHandlers.updatePostHandler, handler_doCreateMap);
|
router.post("/doCreateMap", permissionHandlers.updatePostHandler, handler_doCreateMap);
|
||||||
router.post("/doUpdateMap", permissionHandlers.updatePostHandler, handler_doUpdateMap);
|
router.post("/doUpdateMap", permissionHandlers.updatePostHandler, handler_doUpdateMap);
|
||||||
|
router.post("/doDeleteMap", permissionHandlers.updatePostHandler, handler_doDeleteMap);
|
||||||
export default router;
|
export default router;
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import handler_edit from "../handlers/maps-get/edit.js";
|
||||||
|
|
||||||
import handler_doCreateMap from "../handlers/maps-post/doCreateMap.js";
|
import handler_doCreateMap from "../handlers/maps-post/doCreateMap.js";
|
||||||
import handler_doUpdateMap from "../handlers/maps-post/doUpdateMap.js";
|
import handler_doUpdateMap from "../handlers/maps-post/doUpdateMap.js";
|
||||||
|
import handler_doDeleteMap from "../handlers/maps-post/doDeleteMap.js";
|
||||||
|
|
||||||
|
|
||||||
export const router = Router();
|
export const router = Router();
|
||||||
|
|
@ -45,4 +46,9 @@ router.post("/doUpdateMap",
|
||||||
handler_doUpdateMap);
|
handler_doUpdateMap);
|
||||||
|
|
||||||
|
|
||||||
|
router.post("/doDeleteMap",
|
||||||
|
permissionHandlers.updatePostHandler,
|
||||||
|
handler_doDeleteMap);
|
||||||
|
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
|
@ -160,8 +160,31 @@
|
||||||
<div class="has-text-right is-hidden-print">
|
<div class="has-text-right is-hidden-print">
|
||||||
<button class="button is-primary" type="submit">
|
<button class="button is-primary" type="submit">
|
||||||
<span class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
|
<span class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
|
||||||
<span>Update <%= configFunctions.getProperty("aliases.map") %></span>
|
<span>
|
||||||
|
<%= (isCreate ? "Create": "Update") %>
|
||||||
|
<%= configFunctions.getProperty("aliases.map") %>
|
||||||
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
<% if (!isCreate) { %>
|
||||||
|
<div class="dropdown is-right ml-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--deleteMap" href="#">
|
||||||
|
<span class="icon is-small"><i class="fas fa-trash has-text-danger" aria-hidden="true"></i></span>
|
||||||
|
<span>Delete <%= configFunctions.getProperty("aliases.map") %></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue