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 %>
-
- + Add
+ <%= map_name_msg %>
+ ⏹ Disable
+ + Add
🡅
Upload
🡄 Logout
@@ -32,7 +34,7 @@
Main
-
+
| Filename |
Name |
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