add arcgis world imagery
[lantea.git] / js / library.js
CommitLineData
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
5function 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
62function 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
69function hideLibrary() {
70 document.getElementById("libraryArea").classList.add("hidden");
71}
72
ba819f24
RK
73function 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