Diff options
Diffstat (limited to '')
-rw-r--r--assets/cgit.js56
1 file changed, 26 insertions, 30 deletions
diff --git a/assets/cgit.js b/assets/cgit.js
index 90f06c0..f62eb06 100644
--- a/assets/cgit.js
+++ b/assets/cgit.js
@@ -22,19 +22,18 @@ var YEAR = 365 * DAY;
var MONTH = YEAR / 12;
// The five arrays are indexed together by the bucket an age falls into.
-// The search in render_age can stop one place past the last class, so
-// age_suffix and age_unit repeat their final entry. Each limit is twice the
-// next unit up, matching the thresholds cgit_print_age compares against.
+// Each limit is twice the next unit up, matching the thresholds
+// cgit_print_age compares against, and an age past the last is in years.
var age_classes = [ "age-mins", "age-hours", "age-days", "age-weeks", "age-months", "age-years" ];
-var age_suffix = [ "min.", "hours", "days", "weeks", "months", "years", "years" ];
-var age_unit = [ MINUTE, HOUR, DAY, WEEK, MONTH, YEAR, YEAR ];
-var age_limit = [ 2 * HOUR, 2 * DAY, 2 * WEEK, 2 * MONTH, 2 * YEAR, 2 * YEAR ];
+var age_suffix = [ "min.", "hours", "days", "weeks", "months", "years" ];
+var age_unit = [ MINUTE, HOUR, DAY, WEEK, MONTH, YEAR ];
+var age_limit = [ 2 * HOUR, 2 * DAY, 2 * WEEK, 2 * MONTH, 2 * YEAR ];
var update_delay = [ 10, 5 * MINUTE, 30 * MINUTE, DAY, DAY, DAY ];
function render_age(element, age) {
var text, bucket;
- for (bucket = 0; bucket < age_classes.length; bucket++)
+ for (bucket = 0; bucket < age_limit.length; bucket++)
if (age < age_limit[bucket])
break;
@@ -45,10 +44,6 @@ function render_age(element, age) {
// for nothing.
if (element.textContent != text) {
element.textContent = text;
- // An age past the last limit is still counted in years, but there
- // is no class beyond age-years to put on it.
- if (bucket == age_classes.length)
- bucket--;
if (element.className != age_classes[bucket])
element.className = age_classes[bucket];
}
@@ -63,11 +58,11 @@ function render_age(element, age) {
*/
function update_ages() {
var bucket, elements, i, age;
- var delay = 24 * 3600;
+ var delay = DAY;
var now = Math.round(new Date().getTime() / 1000);
for (bucket = 0; bucket < age_classes.length; bucket++) {
- elements = document.getElementsByClassName(age_classes[bucket]);
+ elements = document.querySelectorAll("." + age_classes[bucket]);
if (elements.length && update_delay[bucket] < delay)
delay = update_delay[bucket];
@@ -91,7 +86,7 @@ function refresh_ages() {
window.setTimeout(refresh_ages, update_ages() * 1000);
}
-document.addEventListener("DOMContentLoaded", refresh_ages, false);
+document.addEventListener("DOMContentLoaded", refresh_ages);
// A site script that adds rows of its own can ask for one pass over them.
window.cgit = window.cgit || {};
@@ -153,13 +148,14 @@ function place_bar() {
table.appendChild(bar);
// A browser only scrolls to a fragment that names a real id, which a range
- // never does, so bring the start of one into view here.
+ // never does, so bring the start of one into view here. The scroll margin
+ // on the anchors centres it the way it centres a single line.
if (match[2])
- first.scrollIntoView({ block: "center" });
+ first.scrollIntoView();
}
-document.addEventListener("DOMContentLoaded", place_bar, false);
-window.addEventListener("hashchange", place_bar, false);
+document.addEventListener("DOMContentLoaded", place_bar);
+window.addEventListener("hashchange", place_bar);
// A site script that moves the lines about can ask for the bar to be laid
// again.
@@ -176,18 +172,18 @@ window.cgit.highlightLines = place_bar;
(function () {
-function fade_tabs(list) {
- var hidden = list.scrollWidth - list.clientWidth;
-
- // A fractional scroll position can stop a pixel short of either end.
- list.classList.toggle("fade-start", list.scrollLeft > 1);
- list.classList.toggle("fade-end", list.scrollLeft < hidden - 1);
-}
-
function fit_tabs() {
var list = document.querySelector("nav.tabs ul");
var active, list_box, tab_box;
+ function fade_tabs() {
+ var hidden = list.scrollWidth - list.clientWidth;
+
+ // A fractional scroll position can stop a pixel short of either end.
+ list.classList.toggle("fade-start", list.scrollLeft > 1);
+ list.classList.toggle("fade-end", list.scrollLeft < hidden - 1);
+ }
+
if (!list)
return;
active = list.querySelector("a.active");
@@ -196,11 +192,11 @@ function fit_tabs() {
tab_box = active.getBoundingClientRect();
list.scrollLeft += tab_box.left - list_box.left - (list_box.width - tab_box.width) / 2;
}
- fade_tabs(list);
- list.addEventListener("scroll", function () { fade_tabs(list); }, { passive: true });
- window.addEventListener("resize", function () { fade_tabs(list); }, false);
+ fade_tabs();
+ list.addEventListener("scroll", fade_tabs, { passive: true });
+ window.addEventListener("resize", fade_tabs);
}
-document.addEventListener("DOMContentLoaded", fit_tabs, false);
+document.addEventListener("DOMContentLoaded", fit_tabs);
})();