diff --git a/app/routes/private_routes.js b/app/routes/private_routes.js index 28b1c0b..7600369 100644 --- a/app/routes/private_routes.js +++ b/app/routes/private_routes.js @@ -2,13 +2,13 @@ const logger = require("../utils/logger.util.js"); const path = require("path"); const fs = require("fs"); const uuid = require("uuid"); +const express = require('express'); const app_conf = require("../config/app.conf.js"); const map_conf = require("../config/map.conf.js"); const messages = require("../config/messages.conf.js"); const map = require("../utils/map.util.js"); -const express = require('express'); const router = express.Router(); function errorPageRenderer(res, emoji, message) { @@ -21,6 +21,28 @@ function errorPageRenderer(res, emoji, message) { }) } +router.get("/disable", async (req, res) => { + logger.info(`${req.method}: "${req.url}" => ${req.get("User-Agent")}`); + + fs.writeFileSync(map_conf.selected_map_path, ""); + + res.status(200).send(); +}); + +router.get("/enable", async (req, res) => { + logger.info(`${req.method}: "${req.url}" => ${req.get("User-Agent")}`); + + var requested_map = req.query["element"]; + + if (requested_map && map.mapExists(requested_map)) { + fs.writeFileSync(map_conf.selected_map_path, requested_map); + + res.status(200).send(); + } else { + res.status(400).send(); + } +}); + router.delete("/remove", async (req, res) => { logger.info(`${req.method}: "${req.url}" => ${req.get("User-Agent")}`); @@ -151,6 +173,11 @@ router.get("/", async (req, res) => { try { const maps = await map.getAvailableMaps(); + var selected_map_name = ""; + + if (fs.existsSync(map_conf.selected_map_path)) { + selected_map_name = fs.readFileSync(map_conf.selected_map_path, "utf-8"); + } if (Object.keys(maps).length) { var table_data = ""; @@ -182,6 +209,8 @@ router.get("/", async (req, res) => { program: app_conf.program, css_path: path.join(app_conf.paths.css.web, "stylesheet.css"), js_path: path.join(app_conf.paths.js.web, "index.js"), + map_name_msg: (selected_map_name != "" ? "Using: " + selected_map_name : ""), + disable_display: (selected_map_name != "" ? "block" : "none"), table_data: table_data }); } else { diff --git a/app/views/edit.ejs b/app/views/edit.ejs index ea0e269..152a679 100644 --- a/app/views/edit.ejs +++ b/app/views/edit.ejs @@ -27,7 +27,9 @@ <%= program %>
-
- + + + @@ -32,7 +34,7 @@
- +
diff --git a/src/javascript/edit.js b/src/javascript/edit.js index 0436906..8412624 100644 --- a/src/javascript/edit.js +++ b/src/javascript/edit.js @@ -1,4 +1,5 @@ const commit = document.getElementById("commit"); +const enable = document.getElementById("enable"); const download = document.getElementById("download"); const remove = document.getElementById("remove"); const motor_table = document.getElementById("motor_table"); @@ -27,6 +28,23 @@ function setEventListeners(element, cb) { }; } +setEventListeners(enable, async () => { + const map_filename = (new URLSearchParams(window.location.search)).get("element"); + + try { + const response = await fetch(`/app/enable?element=${map_filename}`, { + method: "GET" + }); + if (!response.ok) { + throw new Error(`Response status: ${response.status}`); + } else { + window.location.href = "/app"; + } + } catch (error) { + alert(`Could not enable map. ${error.message}`); + } +}); + setEventListeners(remove, async () => { const map_filename = (new URLSearchParams(window.location.search)).get("element"); diff --git a/src/javascript/index.js b/src/javascript/index.js index 1c90c6b..18cec0c 100644 --- a/src/javascript/index.js +++ b/src/javascript/index.js @@ -1,4 +1,5 @@ -const sql_table = document.getElementById("sql_table"); +const map_table = document.getElementById("map_table"); +const disable = document.getElementById("disable"); const upload = document.getElementById("upload"); const logout = document.getElementById("logout"); const add = document.getElementById("add"); @@ -19,6 +20,21 @@ function setEventListeners(element, cb) { }; } +setEventListeners(disable, async () => { + try { + const response = await fetch(`/app/disable`, { + method: "GET" + }); + if (!response.ok) { + throw new Error(`Response status: ${response.status}`); + } else { + window.location.href = "/app"; + } + } catch (error) { + alert(`Could not disable map. ${error.message}`); + } +}); + setEventListeners(upload, async () => { const input = document.getElementById("file_input"); const upload = (file) => { @@ -49,10 +65,10 @@ setEventListeners(logout, () => { window.location.href = `${window.location.protocol}//logout@${window.location.host}/`; }); -const sql_rows = sql_table.rows; +const map_rows = map_table.rows; -for (let i = 1; i < sql_rows.length; i++) { - setEventListeners(sql_rows[i], () => { - window.location.href = `/app/edit?element=${sql_rows[i].cells[0].innerText}`; +for (let i = 1; i < map_rows.length; i++) { + setEventListeners(map_rows[i], () => { + window.location.href = `/app/edit?element=${map_rows[i].cells[0].innerText}`; }); } \ No newline at end of file
Filename Name