Forgot this file
Jonas Haag
8 years ago
0 | {% extends 'base.html' %} | |
1 | ||
2 | {% block extra_header %}{% endblock %} {# hide branch selector #} | |
3 | ||
4 | {% block title %} | |
5 | List of files - {{ super() }} | |
6 | {% endblock %} | |
7 | ||
8 | {% block content %} | |
9 | ||
10 | {% include 'tree.inc.html' %} | |
11 | ||
12 | <div id=file-search> | |
13 | <h2>Find files</h2> | |
14 | ||
15 | <input placeholder="Type in some letters..."> | |
16 | <ul id=file-search-results> | |
17 | </ul> | |
18 | </div> | |
19 | ||
20 | <script> | |
21 | (function() { | |
22 | var searchbar = document.querySelector("#file-search input"); | |
23 | var result = document.querySelector("#file-search-results"); | |
24 | ||
25 | var showResults = function (response) { | |
26 | while (result.childNodes.length) { | |
27 | result.removeChild(result.childNodes[0]); | |
28 | } | |
29 | for (var i = 0; i < response.files.length; ++i) { | |
30 | var li = document.createElement("li"); | |
31 | var a = document.createElement("a"); | |
32 | a.setAttribute("href", response.files[i].url); | |
33 | a.innerHTML = response.files[i].path; | |
34 | li.appendChild(a); | |
35 | result.appendChild(li); | |
36 | } | |
37 | } | |
38 | ||
39 | var requestTimeout = null; | |
40 | var request = null; | |
41 | var cache = {}; | |
42 | searchbar.addEventListener('keyup', function () { | |
43 | var value = this.value; | |
44 | if (cache[value]) { | |
45 | showResults(cache[value]); | |
46 | } else { | |
47 | var url = document.location.origin + "/api" + document.location.pathname + "?q=" + encodeURI(value); | |
48 | clearTimeout(requestTimeout); | |
49 | if (request != null) { | |
50 | request.abort(); | |
51 | request = null; | |
52 | } | |
53 | requestTimeout = setTimeout(function () { | |
54 | request = new XMLHttpRequest(); | |
55 | request.onreadystatechange = function () { | |
56 | if (request.readyState == 4 && request.responseText) { | |
57 | var response = JSON.parse(request.responseText); | |
58 | cache[value] = response; | |
59 | showResults(response); | |
60 | } | |
61 | }; | |
62 | request.open('GET', url, true); | |
63 | request.send(); | |
64 | }, 150); | |
65 | } | |
66 | }); | |
67 | ||
68 | searchbar.focus(); | |
69 | })(); | |
70 | </script> | |
71 | ||
72 | {% endblock %} |