add arcgis world imagery
[lantea.git] / js / library.js
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       }
24       else if (!aResult.length) {
25         var litem = document.createElement("li");
26         litem.textContent = "No tracks uploaded yet.";
27         tlist.appendChild(litem);
28       }
29       else {
30         for (var i = 0; i < aResult.length; i++) {
31           var litem = document.createElement("li");
32           litem.textContent = dtformat(aResult[i]["time_created"]) + " - ";
33           var llink = document.createElement("a");
34           var dlurl = gBackendURL + "/track_gpx?id=" + aResult[i]["id"];
35           llink.setAttribute("href", dlurl);
36           llink.textContent = aResult[i]["comment"];
37           litem.appendChild(llink);
38           if (aResult[i]["devicename"]) {
39             litem.appendChild(document.createTextNode(" (" + aResult[i]["devicename"] +  ")"));
40           }
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           }
55           tlist.appendChild(litem);
56         }
57       }
58     }
59   );
60 }
61
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
69 function hideLibrary() {
70   document.getElementById("libraryArea").classList.add("hidden");
71 }
72
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