From 5aa7c4f9499135dd12162045e441f5215ee050aa Mon Sep 17 00:00:00 2001 From: Maksymilian Jopek Date: Sun, 26 Mar 2023 18:31:50 +0200 Subject: Full working app --- scripts/edit-data.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 scripts/edit-data.js (limited to 'scripts/edit-data.js') diff --git a/scripts/edit-data.js b/scripts/edit-data.js new file mode 100644 index 0000000..90b8785 --- /dev/null +++ b/scripts/edit-data.js @@ -0,0 +1,62 @@ +"use strict"; +document.body.onkeydown = e => { + if (e.key === "Escape") { + INPUT.value = ""; + INPUT.dataset.id = ""; + MENU.style.display = "none"; + } +}; +const MENU = document.getElementsByTagName("div")[0]; +const INPUT = document.getElementsByTagName("input")[0]; +const IMG = document.getElementsByTagName("img")[0]; +const MAP = document.getElementsByTagName("map")[0]; +const ERR = document.getElementsByTagName("div")[1]; +const Y_DATA = JSON.parse(document.getElementsByTagName("span")[0].innerHTML); +const ORIG_SRC = IMG.src; +function showMenu(id, value) { + if (value !== -1 && value !== null && value !== undefined) + INPUT.value = value.toString(); + INPUT.dataset.id = id.toString(); + MENU.style.display = "block"; +} +async function menuClick(action) { + if (action !== "cancel" && (parseFloat(INPUT.value) < Y_DATA[0] || parseFloat(INPUT.value) > Y_DATA[Y_DATA.length - 1])) { + ERR.innerHTML = "Too small or to big number"; + return; + } + if (action !== "cancel") { + let data; + if (action === "save") + data = parseFloat(INPUT.value); + else if (action === "condition") + data = -1; + else if (action === "null") + data = null; + else + throw new Error("New chart data has unknown type"); + await fetch("/php/save-data.php", { + method: "POST", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + }, + body: JSON.stringify({ data, id: INPUT.dataset.id }), + }); + // IMG.src = `${IMG.src.split('?')[0]}?${Date.now()}`; + IMG.src = ORIG_SRC + "cache=" + Date.now(); + setNewImgMap(); + } + INPUT.value = ""; + INPUT.dataset.id = ""; + MENU.style.display = "none"; +} +async function setNewImgMap() { + MAP.innerHTML = await (await fetch("/php/get-img-map.php")).text(); +} +function input() { + const v = INPUT.value; + if (!/[\d\.]/.test(v[v.length - 1]) || v.split('.').length > 2) { + console.log(2); + INPUT.value = v.substr(0, v.length - 1); + } +} -- cgit v1.3.1