-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.js
More file actions
115 lines (109 loc) · 3.95 KB
/
index.js
File metadata and controls
115 lines (109 loc) · 3.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
let verList = null;
let sortBy = "releaseTime";
let reverseSort = true;
function versionSort(element, byWhat) {
if(sortBy === byWhat) {
reverseSort = !reverseSort;
} else {
reverseSort = true;
sortBy = byWhat;
}
refreshVersions();
}
function createElement(version, isHeader) {
const entry = document.createElement("div");
const ahref = document.createElement(isHeader ? "b" : "a");
ahref.className = "version";
const span1 = document.createElement(isHeader ? "b" : "span");
span1.className = "type";
const span2 = document.createElement(isHeader ? "b" : "span");
span2.className = "datetime";
const span3 = document.createElement(isHeader ? "b" : "span");
span3.className = "datetime";
const span4 = document.createElement(isHeader ? "b" : "span");
span4.className = "hash";
const id = document.createTextNode(isHeader ? "Version" : version.id + ".json");
const type = document.createTextNode(isHeader ? "Type" : version.type);
const time = document.createTextNode(isHeader ? "Release time" : version.releaseTime);
const updateTime = document.createTextNode(isHeader ? "Update time" : version.time);
const sha1 = document.createTextNode(isHeader ? "SHA1 hash" : version.sha1);
if(!isHeader) {
ahref.href = version.url;
ahref.download = version.id + ".json";
} else {
ahref.onclick = () => versionSort(ahref, "version");
if(sortBy === "version") {
ahref.className += reverseSort ? " sort-reverse" : " sort"
}
span1.onclick = () => versionSort(span1, "type");
if(sortBy === "type") {
span1.className += reverseSort ? " sort-reverse" : " sort"
}
span2.onclick = () => versionSort(span2, "releaseTime");
if(sortBy === "releaseTime") {
span2.className += reverseSort ? " sort-reverse" : " sort"
}
span3.onclick = () => versionSort(span3, "time");
if(sortBy === "time") {
span3.className += reverseSort ? " sort-reverse" : " sort"
}
span4.onclick = () => versionSort(span4, "sha1");
if(sortBy === "sha1") {
span4.className += reverseSort ? " sort-reverse" : " sort"
}
}
ahref.appendChild(id);
span1.appendChild(type);
span2.appendChild(time);
span3.appendChild(updateTime);
span4.appendChild(sha1);
entry.appendChild(ahref);
entry.appendChild(span1);
entry.appendChild(span2);
entry.appendChild(span3);
entry.appendChild(span4);
entry.className = isHeader ? "header" : "entry";
return entry;
}
function refreshVersions() {
const versionsDiv = document.getElementById("jsonlist");
versionsDiv.innerHTML = "";
if(verList == null) {
return;
}
versionsDiv.appendChild(createElement(null, true));
verList.sort((verA, verB) => {
let compare = 0;
switch (sortBy) {
case "version":
compare = verA.id.localeCompare(verB.id);
break;
case "type":
compare = verA.type.localeCompare(verB.type);
break;
case "releaseTime":
compare = verA.releaseTime.localeCompare(verB.releaseTime);
break;
case "time":
compare = verA.time.localeCompare(verB.time);
break;
case "sha1":
compare = verA.sha1.localeCompare(verB.sha1);
break;
}
return reverseSort ? compare * -1 : compare;
})
verList.forEach(version => {
versionsDiv.appendChild(createElement(version, false));
});
}
function init() {
const versionsDiv = document.getElementById("jsonlist");
fetch('version_manifest_v2.json').then((response) => response.json()).then((json) => {
verList = json.versions;
refreshVersions();
}).catch((err) => {
versionsDiv.innerHTML = "<b>" + err.message + "</b>";
})
}
init();