metamaps--metamaps/app/assets/javascripts/Jit/filter.js
2014-06-04 15:24:16 -04:00

183 lines
4.8 KiB
JavaScript

// create filters for maps
function switchVisible(category, duration) {
if (categoryVisible[category] == true) {
hideCategory(category, duration);
}
else if (categoryVisible[category] == false) {
showCategory(category, duration);
}
}
function hideCategory(category, duration) {
if (duration == null) duration = 500;
Mconsole.graph.eachNode( function (n) {
if (n.getData('metacode') == category) {
n.setData('alpha', 0.4, 'end');
n.eachAdjacency(function(adj) {
adj.setData('alpha', 0.4, 'end');
});
}
});
Mconsole.fx.animate({
modes: ['node-property:alpha',
'edge-property:alpha'],
duration: duration
});
}
function showCategory(category, duration) {
if (duration == null) duration = 500;
Mconsole.graph.eachNode( function (n) {
if (n.getData('metacode') == category) {
n.setData('alpha', 1, 'end');
n.eachAdjacency(function(adj) {
adj.setData('alpha', 1, 'end');
});
}
});
Mconsole.fx.animate({
modes: ['node-property:alpha',
'edge-property:alpha'],
duration: duration
});
}
// These functions toggle ALL nodes and synapses on the page
function hideAll(duration) {
if (duration == null) duration = 500;
Mconsole.graph.eachNode( function (n) {
n.setData('alpha', 0.4, 'end');
n.eachAdjacency(function(adj) {
adj.setData('alpha', 0.2, 'end');
});
});
Mconsole.fx.animate({
modes: ['node-property:alpha',
'edge-property:alpha'],
duration: duration
});
}
function showAll(duration) {
if (duration == null) duration = 500;
Mconsole.graph.eachNode( function (n) {
n.setData('alpha', 1, 'end');
n.eachAdjacency(function(adj) {
adj.setData('alpha', 0.4, 'end');
});
});
Mconsole.fx.animate({
modes: ['node-property:alpha',
'edge-property:alpha'],
duration: duration
});
}
function filterTopicsByMap(mapID) {
Mconsole.graph.eachNode(function (n) {
if (n.getData('inmaps').indexOf(parseInt(mapID)) !== -1) {
n.setData('alpha', 1, 'end');
}
else {
n.setData('alpha', 0.4, 'end');
}
Mconsole.fx.animate({
modes: ['node-property:alpha',
'edge-property:alpha'],
duration: 500
});
});
} // filterTopicsByName
function filterTopicsByMapper(mapperID) {
Mconsole.graph.eachNode(function (n) {
if (n.getData('userid').toString() == mapperID) {
n.setData('alpha', 1, 'end');
}
else {
n.setData('alpha', 0.4, 'end');
}
Mconsole.fx.animate({
modes: ['node-property:alpha',
'edge-property:alpha'],
duration: 500
});
});
} // filterTopicsByName
function filterTopicsByName(searchQuery) {
Mconsole.graph.eachNode(function (n) {
nodeName = n.name.toLowerCase();
if (nodeName.indexOf(searchQuery) !== -1 && searchQuery != "") {
n.setData('alpha', 1, 'end');
}
else {
n.setData('alpha', 0.4, 'end');
}
Mconsole.fx.animate({
modes: ['node-property:alpha',
'edge-property:alpha'],
duration: 500
});
});
} // filterTopicsByName
function clearCanvas() {
Mconsole.graph.eachNode(function(n) {
Mconsole.graph.removeNode(n.id);
});
Mconsole.plot();
}
function clearCanvasExceptRoot() {
var ids = new Array();
Mconsole.graph.eachNode(function(n) {
ids.push(n.id);
});
var root = Mconsole.graph.nodes[Mconsole.root];
ids.forEach(function(id, index) {
if (id != root.id) {
Mconsole.graph.removeNode(id);
}
});
fetchRelatives(root); //also runs Mconsole.plot()
}
/**
* Define all the dynamic interactions for the Filter By Metacode using Jquery
*/
$(document).ready(function() {
$('.sidebarFilterBox .showAll').click(function(e) {
showAll();
$('#filter_by_metacode ul li').removeClass('toggledOff');
for (var catVis in categoryVisible) {
categoryVisible[catVis] = true;
}
});
$('.sidebarFilterBox .hideAll').click(function(e) {
hideAll();
$('#filter_by_metacode ul li').addClass('toggledOff');
for (var catVis in categoryVisible) {
categoryVisible[catVis] = false;
}
});
// toggle visibility of topics with metacodes based on status in the filters list
$('#filter_by_metacode ul li').click(function(event) {
var category = $(this).children('img').attr('alt');
switchVisible(category);
// toggle the image and the boolean array value
if (categoryVisible[category] == true) {
$(this).addClass('toggledOff');
categoryVisible[category] = false;
}
else if (categoryVisible[category] == false) {
$(this).removeClass('toggledOff');
categoryVisible[category] = true;
}
});
});