Skip to content

Commit da71d1b

Browse files
KixironJoshua Nelson
authored and
Joshua Nelson
committed
Untangled JS
1 parent 061d128 commit da71d1b

File tree

3 files changed

+50
-107
lines changed

3 files changed

+50
-107
lines changed

templates/core/home.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ <h1 class="brand"><i class="fa fa-cubes fa-fw"></i> Docs.rs</h1>
7777
if ("key" in ev && typeof ev.key != "undefined") {
7878
return ev.key;
7979
}
80+
8081
return String.fromCharCode(ev.charCode || ev.keyCode);
8182
}
8283

@@ -94,6 +95,7 @@ <h1 class="brand"><i class="fa fa-cubes fa-fw"></i> Docs.rs</h1>
9495
if (ev.ctrlKey || ev.altKey || ev.metaKey || document.activeElement.tagName === "INPUT") {
9596
return;
9697
}
98+
9799
switch (getKey(ev)) {
98100
case "s":
99101
case "S":

templates/releases/build_queue.html

Lines changed: 0 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -36,91 +36,3 @@
3636
</div>
3737
</div>
3838
{%- endblock body -%}
39-
40-
{%- block javascript -%}
41-
<script type="text/javascript" charset="utf-8">
42-
function getKey(ev) {
43-
if ("key" in ev && typeof ev.key != "undefined") {
44-
return ev.key;
45-
}
46-
return String.fromCharCode(ev.charCode || ev.keyCode);
47-
}
48-
49-
document.getElementById("i-am-feeling-lucky-button").onclick = function () {
50-
var form = document.getElementsByClassName("landing-search-form");
51-
var input = document.createElement('input');
52-
input.type = 'hidden';
53-
input.name = 'i-am-feeling-lucky';
54-
input.value = 1;
55-
document.getElementsByClassName("landing-search-form")[0].appendChild(input);
56-
return true;
57-
};
58-
59-
function handleShortcut(ev) {
60-
if (ev.ctrlKey || ev.altKey || ev.metaKey || document.activeElement.tagName === "INPUT") {
61-
return;
62-
}
63-
switch (getKey(ev)) {
64-
case "s":
65-
case "S":
66-
ev.preventDefault();
67-
document.getElementById("search").focus();
68-
break;
69-
}
70-
}
71-
72-
document.onkeypress = handleShortcut;
73-
document.onkeydown = handleShortcut;
74-
75-
var active = null;
76-
77-
function handleKey(ev) {
78-
if (ev.ctrlKey || ev.altKey || ev.metaKey || document.activeElement.tagName === "INPUT") {
79-
return;
80-
}
81-
if (ev.which === 40) { // Down arrow
82-
ev.preventDefault();
83-
if (active === null) {
84-
active = document.getElementsByClassName("recent-releases-container")[0].getElementsByTagName("li")[0];
85-
} else if (active.nextElementSibling) {
86-
active.classList.remove("selected");
87-
active = active.nextElementSibling;
88-
}
89-
active.classList.add("selected");
90-
} else if (ev.which === 38) { // Up arrow
91-
ev.preventDefault();
92-
if (active === null) {
93-
active = document.getElementsByClassName("recent-releases-container")[0].getElementsByTagName("li")[0];
94-
} else if (active.previousElementSibling) {
95-
active.classList.remove("selected");
96-
active = active.previousElementSibling;
97-
}
98-
active.classList.add("selected");
99-
active.focus();
100-
} else if (ev.which === 13) { // Return
101-
if (active !== null) {
102-
document.location.href = active.getElementsByTagName("a")[0].href;
103-
}
104-
} else {
105-
switch (getKey(ev)) {
106-
case "s":
107-
case "S":
108-
ev.preventDefault();
109-
document.getElementsByClassName("search-input-nav")[0].focus();
110-
break;
111-
}
112-
}
113-
}
114-
document.onkeypress = handleKey;
115-
document.onkeydown = handleKey;
116-
var crates =
117-
Array.prototype.slice.call(document.getElementsByClassName("recent-releases-container")[0].getElementsByTagName("li"));
118-
for (var i = 0; i < crates.length; ++i) {
119-
crates[i].addEventListener("mouseover", function (event) {
120-
this.classList.remove("selected"); active = null;
121-
}); crates[i].addEventListener("mouseout", function (event) {
122-
this.classList.remove("selected"); active = null;
123-
});
124-
}
125-
</script>
126-
{%- endblock javascript -%}

templates/releases/releases.html

Lines changed: 48 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -87,30 +87,59 @@
8787
return String.fromCharCode(ev.charCode || ev.keyCode);
8888
}
8989

90-
document.getElementById("i-am-feeling-lucky-button").onclick = function () {
91-
var form = document.getElementsByClassName("landing-search-form");
92-
var input = document.createElement('input');
93-
input.type = 'hidden';
94-
input.name = 'i-am-feeling-lucky';
95-
input.value = 1;
96-
document.getElementsByClassName("landing-search-form")[0].appendChild(input);
97-
return true;
98-
};
99-
100-
function handleShortcut(ev) {
90+
var active = null;
91+
function handleKey(ev) {
10192
if (ev.ctrlKey || ev.altKey || ev.metaKey || document.activeElement.tagName === "INPUT") {
10293
return;
10394
}
104-
switch (getKey(ev)) {
105-
case "s":
106-
case "S":
107-
ev.preventDefault();
108-
document.getElementById("search").focus();
109-
break;
95+
96+
if (ev.which === 40) { // Down arrow
97+
ev.preventDefault();
98+
if (active === null) {
99+
active = document.getElementsByClassName("recent-releases-container")[0].getElementsByTagName("li")[0];
100+
} else if (active.nextElementSibling) {
101+
active.classList.remove("selected");
102+
active = active.nextElementSibling;
103+
}
104+
active.classList.add("selected");
105+
} else if (ev.which === 38) { // Up arrow
106+
ev.preventDefault();
107+
if (active === null) {
108+
active = document.getElementsByClassName("recent-releases-container")[0].getElementsByTagName("li")[0];
109+
} else if (active.previousElementSibling) {
110+
active.classList.remove("selected");
111+
active = active.previousElementSibling;
112+
}
113+
active.classList.add("selected");
114+
active.focus();
115+
} else if (ev.which === 13) { // Return
116+
if (active !== null) {
117+
document.location.href = active.getElementsByTagName("a")[0].href;
118+
}
119+
} else {
120+
switch (getKey(ev)) {
121+
case "s":
122+
case "S":
123+
ev.preventDefault();
124+
document.getElementsByClassName("search-input-nav")[0].focus();
125+
break;
126+
}
110127
}
111128
}
112129

113-
document.onkeypress = handleShortcut;
114-
document.onkeydown = handleShortcut;
130+
document.onkeypress = handleKey;
131+
document.onkeydown = handleKey;
132+
133+
var crates = Array.prototype.slice.call(document.getElementsByClassName("recent-releases-container")[0].getElementsByTagName("li"));
134+
for (var i = 0; i < crates.length; ++i) {
135+
crates[i].addEventListener("mouseover", function (event) {
136+
this.classList.remove("selected");
137+
active = null;
138+
});
139+
crates[i].addEventListener("mouseout", function (event) {
140+
this.classList.remove("selected");
141+
active = null;
142+
});
143+
}
115144
</script>
116145
{%- endblock javascript -%}

0 commit comments

Comments
 (0)