function renderSidebar()

in luigi/static/visualiser/js/visualiserApp.js [184:232]


    function renderSidebar(tasks) {
        // tasks is a list of task names
        var counts = {};
        $.each(tasks, function(i) {
            var name = tasks[i];
            if (counts[name] === undefined) {
                counts[name] = 0;
            }
            counts[name] += 1;
        });
        var taskList = [];
        $.each(counts, function (name) {
            var dotIndex = name.indexOf('.');
            var prefix = 'Others';
            if (dotIndex > 0) {
                prefix = name.slice(0, dotIndex);
            }
            var prefixList = taskList.find(function (pref) {
                return pref.name == prefix;
            })
            if (prefixList) {
                prefixList.tasks.push({name: name, count: counts[name]});
            } else {
                prefixList = {
                    name: prefix,
                    tasks: [{name: name, count: counts[name]}]
                }
                taskList.push(prefixList);
            }

        });
        taskList.sort(function(a,b){
            if (a.name == 'Others') {
                if (b.name == 'Others') {
                    return 0;
                }
                return 1;
            } else if (b.name == 'Others') {
                return -1;
            }
            return a.name.localeCompare(b.name);
        });
        taskList.forEach(function(p){
            p.tasks.sort(function(a,b){
                return a.name.localeCompare(b.name);
            });
        });
        return renderTemplate("sidebarTemplate", {"tasks": taskList});
    }