aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/edit-data.js
blob: 90b8785aa8baf5c96f63acc267fa2b3e4affdac3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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);
    }
}