in site/js/projects.js [769:824]
function renderProjectsByCategory() {
var obj = document.getElementById('list');
obj.innerHTML = "";
var projectsSorted = sortProjects();
var cats = [];
var ccount = {};
var i;
for (i in projects) {
if (projects[i].category) {
var a = projects[i].category.split(/,\s*/);
var x;
for (x in a) {
x = a[x].toLowerCase(); // must agree with downcase below
if (cats.indexOf(x) < 0) {
cats.push(x);
ccount[x] = 0;
}
ccount[x]++;
}
}
}
cats.sort();
// Construct category list
var ul = document.createElement('ul');
var l;
for (l in cats) {
var lang = cats[l];
var li = document.createElement('li');
li.innerHTML = "<h3><a id='" + lang + "'>" + lang + " (" + ccount[lang] + ")</a>"+linkToHere(lang)+":</h3>";
var cul = document.createElement('ul');
for (i in projectsSorted) {
i = projectsSorted[i];
var project = projects[i];
if (project.category) {
var a = project.category.split(/,\s*/);
for (x in a) {
x = a[x].toLowerCase(); // must agree with downcase above
if (x == lang) {
appendLiInnerHTML(cul, projectIcon(project.name) + projectLink(i));
}
}
}
}
li.appendChild(cul);
ul.appendChild(li);
}
obj.appendChild(ul);
if (location.hash.length > 1) {
setTimeout(function() { location.href = location.href;}, 250);
}
}