Changes to "Garradin" between 2020-11-24 10:33:29 and 2020-11-25 13:23:15

24
25
26
27
28
29
30












31
32












33
34
35
36
37


























38
39
40
41
42
43
44
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91







+
+
+
+
+
+
+
+
+
+
+
+


+
+
+
+
+
+
+
+
+
+
+
+


-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+








#gnav li a {
display: block;
padding: .5em 1em;
margin: 0 .5em;
background: #ddf;
color: black;
text-align: center;
text-decoration: none;
}

#gnav li a:hover {
text-decoration: underline;
background: #eef;
}

#gnav small {
display: block;
color: #333;
}`;

function isNewerVersion (oldVer, newVer) {
	const oldParts = oldVer.split('.')
	const newParts = newVer.split('.')
	for (var i = 0; i < newParts.length; i++) {
		const a = ~~newParts[i] // parse int
		const b = ~~oldParts[i] // parse int
		if (a > b) return true
		if (a < b) return false
	}
	return false
}

fetch('./juvlist').then((r) => {
	r.json().then((list) => {
		let last = list.slice(-1)[0];
		let version = last.name.match(/garradin-(.*)\.tar\.bz2/);
		document.querySelector('#gnav ul').innerHTML += `<li><a href="./uv/${last.name}">Télécharger la version ${version[1]}</a></li>`;
		let last;
		let selected;

		list.forEach((file) => {
			var v = file.name.match(/^garradin-(.*)\.tar\.bz2/);

			if (!v) {
				return;
			}

			if (!last || isNewerVersion(last, v[1])) {
				last = v[1];
				selected = file;
			}
		});

		let days = ((+new Date)/1000 - selected.mtime) / 3600 / 24;

		if (days < 31) {
			time = Math.ceil(days) + ' jours';
		}
		else if (days >= 31) {
			time = Math.round(days / 30.5) + ' mois';
		}

		document.querySelector('#gnav ul').innerHTML += `<li><a href="./uv/${selected.name}">Télécharger la version ${last} <small>(sortie il y a ${time})</small></a></li>`;
	});
});
</script>

# Garradin, le gestionnaire d'association

Garradin est un logiciel de gestion de petite et moyenne association. Son but est de permettre :