in luigi/static/visualiser/js/visualiserApp.js [513:582]
function processHashChange(paint) {
var hash = decodeURIComponent(location.hash);
// Convert fragment params to object.
var fragmentQuery = URI.parseQuery(location.hash.replace('#', '')); // "http://example.org/#!/foo/bar/baz.html");
if (fragmentQuery.tab == "workers") {
switchTab("workerList");
} else if (fragmentQuery.tab == "resources") {
expandResources(fragmentQuery.resources);
switchTab("resourceList");
} else if (fragmentQuery.tab == "graph") {
var taskId = fragmentQuery.taskId;
var hideDone = fragmentQuery.hideDone === '1' ? true : false;
// Populate fields with values from hash.
$('#hideDoneCheckbox').prop('checked', hideDone);
$("#invertCheckbox").prop('checked', fragmentQuery.invert === '1' ? true : false);
$("#js-task-id").val(fragmentQuery.taskId);
// Empty errors.
$("#searchError").empty();
$("#searchError").removeClass();
var visType = fragmentQuery.visType || VISTYPE_DEFAULT;
if (taskId) {
var depGraphCallback = makeGraphCallback(visType, taskId, paint);
if (fragmentQuery.invert) {
luigi.getInverseDependencyGraph(taskId, depGraphCallback, !hideDone);
} else {
luigi.getDependencyGraph(taskId, depGraphCallback, !hideDone);
}
}
updateVisType(visType);
initVisualisation(visType);
switchTab("dependencyGraph");
} else {
// Tasks tab.
// Populate fields with values from hash.
if (fragmentQuery.length) {
$('select[name=taskTable_length]').val(fragmentQuery.length);
}
$("#serverSideCheckbox").prop('checked', fragmentQuery.filterOnServer === '1' ? true : false);
dt.search(fragmentQuery.search__search);
$('#familySidebar li').removeClass('active');
$('#familySidebar li .badge').removeClass('bg-green');
if (fragmentQuery.family) {
family_item = $('#familySidebar li[data-task="' + fragmentQuery.family + '"]');
family_item.addClass('active');
family_item.find('.badge').addClass('bg-green');
filterByTaskFamily(fragmentQuery.family, dt);
}
if (fragmentQuery.statuses) {
var statuses = JSON.parse(fragmentQuery.statuses);
$.each(statuses, function (status) {
toggleInfoBox($('#' + statuses[status] + '_info')[0], true);
});
filterByCategory(dt, statuses);
}
if (fragmentQuery.order) {
dt.order([fragmentQuery.order.split(',')]);
}
dt.draw();
switchTab("taskList");
}
}