68 lines · 2.0 KB · JavaScript
RawDownload
/* cgit.js: javacript functions for cgit * * Copyright (C) 2006-2018 cgit Development Team <cgit@lists.zx2c4.com> * * Licensed under GNU General Public License v2 *   (see COPYING for full license text) */ (function () { /* This follows the logic and suffixes used in ui-shared.c */ 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_next =    [ 60,         3600,        24 * 3600,     7 * 24 * 3600,  30 * 24 * 3600,  365 * 24 * 3600, 365 * 24 * 3600 ];var age_limit =   [ 7200,       24 * 7200,   7 * 24 * 7200, 30 * 24 * 7200, 365 * 25 * 7200, 365 * 25 * 7200 ];var update_next = [ 10,         5 * 60,      1800,          24 * 3600,      24 * 3600,       24 * 3600,       24 * 3600 ]; function render_age(e, age) {	var t, n; 	for (n = 0; n < age_classes.length; n++)		if (age < age_limit[n])			break; 	t = Math.round(age / age_next[n]) + " " + age_suffix[n]; 	if (e.textContent != t) {		e.textContent = t;		if (n == age_classes.length)			n--;		if (e.className != age_classes[n])			e.className = age_classes[n];	}} function aging() {	var n, next = 24 * 3600,	    now_ut = Math.round((new Date().getTime() / 1000)); 	for (n = 0; n < age_classes.length; n++) {		var m, elems = document.getElementsByClassName(age_classes[n]); 		if (elems.length && update_next[n] < next)			next = update_next[n]; 		for (m = 0; m < elems.length; m++) {			var age = now_ut - elems[m].getAttribute("data-ut"); 			render_age(elems[m], age);		}	} 	/*	 * We only need to come back when the age might have changed.	 * Eg, if everything is counted in hours already, once per	 * 5 minutes is accurate enough.	 */ 	window.setTimeout(aging, next * 1000);} document.addEventListener("DOMContentLoaded", function() {	/* we can do the aging on DOM content load since no layout dependency */	aging();}, false); })();