Commit | Line | Data |
---|---|---|
867ee0af RK |
1 | /* This Source Code Form is subject to the terms of the Mozilla Public |
2 | * License, v. 2.0. If a copy of the MPL was not distributed with this file, | |
3 | * You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
4 | ||
5 | function showLibrary() { | |
6 | document.getElementById("libraryArea").classList.remove("hidden"); | |
7 | var tlist = document.getElementById("libTrackList"); | |
8 | while (tlist.firstChild) { tlist.removeChild(tlist.firstChild); } | |
9 | var litem = document.createElement("li"); | |
10 | var load_img = document.createElement("img"); | |
11 | load_img.setAttribute("src", "style/loading_action.png"); | |
12 | litem.appendChild(load_img); | |
13 | litem.textContent = "Loading list..."; | |
14 | litem.id = "libLoadingItem"; | |
15 | tlist.appendChild(litem); | |
16 | fetchBackend("tracks", "GET", null, | |
17 | function(aResult, aStatusCode) { | |
18 | document.getElementById("libLoadingItem").classList.add("hidden"); | |
19 | if (aStatusCode >= 400) { | |
20 | var litem = document.createElement("li"); | |
21 | litem.textContent = "Error: " + aResult; | |
22 | tlist.appendChild(litem); | |
23 | } | |
d08d3308 RK |
24 | else if (!aResult.length) { |
25 | var litem = document.createElement("li"); | |
26 | litem.textContent = "No tracks uploaded yet."; | |
27 | tlist.appendChild(litem); | |
28 | } | |
867ee0af RK |
29 | else { |
30 | for (var i = 0; i < aResult.length; i++) { | |
31 | var litem = document.createElement("li"); | |
ba819f24 | 32 | litem.textContent = dtformat(aResult[i]["time_created"]) + " - "; |
846a4dac | 33 | var llink = document.createElement("a"); |
3b76e071 RK |
34 | var dlurl = gBackendURL + "/track_gpx?id=" + aResult[i]["id"]; |
35 | llink.setAttribute("href", dlurl); | |
846a4dac RK |
36 | llink.textContent = aResult[i]["comment"]; |
37 | litem.appendChild(llink); | |
38 | if (aResult[i]["devicename"]) { | |
39 | litem.appendChild(document.createTextNode(" (" + aResult[i]["devicename"] + ")")); | |
40 | } | |
3b76e071 RK |
41 | if (userData && userData["permissions"].includes("admin")) { |
42 | // Show load entry for debugging purposes | |
43 | litem.appendChild(document.createTextNode(" ")); | |
44 | var ldbtn = document.createElement("button"); | |
45 | ldbtn.onclick = loadButtonClicked; | |
46 | ldbtn.textContent = "load"; | |
47 | ldbtn.classList.add("minorbutton"); | |
48 | ldbtn.dataset.id = aResult[i]["id"]; | |
49 | litem.appendChild(ldbtn); | |
50 | litem.appendChild(document.createTextNode(" ")); | |
51 | var lderror = document.createElement("span"); | |
52 | lderror.classList.add("statusmsg"); | |
53 | litem.appendChild(lderror); | |
54 | } | |
867ee0af RK |
55 | tlist.appendChild(litem); |
56 | } | |
57 | } | |
58 | } | |
59 | ); | |
60 | } | |
61 | ||
3b76e071 RK |
62 | function loadButtonClicked(aEvent) { |
63 | var feedbackspan = aEvent.target.nextElementSibling; | |
64 | feedbackspan.textContent = ""; | |
65 | feedbackspan.classList.remove("error"); | |
66 | loadTrackFromBackend(aEvent.target.dataset.id, feedbackspan, hideLibrary); | |
67 | } | |
68 | ||
867ee0af RK |
69 | function hideLibrary() { |
70 | document.getElementById("libraryArea").classList.add("hidden"); | |
71 | } | |
72 | ||
ba819f24 RK |
73 | function dtformat(aUnixTimestamp) { |
74 | // Library display time format: YYYY-MM-DD HH:mm | |
75 | // Note that JS has millisecond timestamps while standard/unix has seconds. | |
76 | var tsDate = new Date(aUnixTimestamp * 1000); | |
77 | // Note that .getUTCMonth() returns a number between 0 and 11 (0 for January)! | |
78 | return tsDate.getUTCFullYear() + "-" + | |
79 | (tsDate.getUTCMonth() < 9 ? "0" : "") + (tsDate.getUTCMonth() + 1 ) + "-" + | |
80 | (tsDate.getUTCDate() < 10 ? "0" : "") + tsDate.getUTCDate() + " " + | |
81 | (tsDate.getUTCHours() < 10 ? "0" : "") + tsDate.getUTCHours() + ":" + | |
82 | (tsDate.getUTCMinutes() < 10 ? "0" : "") + tsDate.getUTCMinutes(); | |
83 | } | |
84 |