git @ Cat's Eye Technologies klaus / fuzzyfind
Forgot this file Jonas Haag 8 years ago
1 changed file(s) with 73 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
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 %}