543 lines
19 KiB
JavaScript
543 lines
19 KiB
JavaScript
// create filters for maps, and for card views
|
|
|
|
// keep an array of which metacodes are currently visible.
|
|
var categoryVisible = new Object();
|
|
|
|
categoryVisible['Group'] = true;
|
|
categoryVisible['Person'] = true;
|
|
categoryVisible['Bizarre'] = true;
|
|
categoryVisible['Catalyst'] = true;
|
|
categoryVisible['Closed'] = true;
|
|
categoryVisible['Experience'] = true;
|
|
categoryVisible['Future Dev'] = true;
|
|
categoryVisible['Idea'] = true;
|
|
categoryVisible['Implication'] = true;
|
|
categoryVisible['Insight'] = true;
|
|
categoryVisible['Intention'] = true;
|
|
categoryVisible['Knowledge'] = true;
|
|
categoryVisible['Location'] = true;
|
|
categoryVisible['Open Issue'] = true;
|
|
categoryVisible['Opinion'] = true;
|
|
categoryVisible['Opportunity'] = true;
|
|
categoryVisible['Platform'] = true;
|
|
categoryVisible['Problem'] = true;
|
|
categoryVisible['Question'] = true;
|
|
categoryVisible['Reference'] = true;
|
|
categoryVisible['Requirement'] = true;
|
|
categoryVisible['Resource'] = true;
|
|
categoryVisible['Role'] = true;
|
|
categoryVisible['Task'] = true;
|
|
categoryVisible['Tool'] = true;
|
|
categoryVisible['Trajectory'] = true;
|
|
categoryVisible['Action'] = true;
|
|
categoryVisible['Activity'] = true;
|
|
|
|
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
|
|
});
|
|
}
|
|
|
|
// Define the Find/Filters possibilities
|
|
var findTopics = ['name','metacode', 'mapper (by name)', 'map (by name)']
|
|
var findSynapses = ['topics (by name)', 'directionality', 'mapper (by name)', 'map (by name)']
|
|
var findMaps = ['name', 'topic (by name)', 'mapper (by name)', 'synapse (by topics)']
|
|
var findMappers = ['name', 'topic (by name)', 'map (by name)', 'synapse (by topics)']
|
|
|
|
// These functions toggle ALL nodes and synapses on the page
|
|
function hideAll(duration) {
|
|
if (duration == null) duration = 500;
|
|
Mconsole.graph.eachNode( function (n) {
|
|
if (!(n.getData('greenCircle') || n.getData('whiteCircle'))) {
|
|
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 showAll(duration) {
|
|
if (duration == null) duration = 500;
|
|
Mconsole.graph.eachNode( function (n) {
|
|
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
|
|
});
|
|
}
|
|
|
|
/// Traverse the Graph and only show the searched for nodes
|
|
function onCanvasSearch(searchQuery, mapID, mapperID) {
|
|
searchQuery = name.toLowerCase();
|
|
Mconsole.graph.eachNode(function (n) {
|
|
nodeName = n.name.toLowerCase();
|
|
if (name != null) {
|
|
if (nodeName.indexOf(searchQuery) !== -1 && searchQuery != "") {
|
|
n.setData('whiteCircle', true);
|
|
}
|
|
else {
|
|
n.setData('whiteCircle', false);
|
|
}
|
|
}
|
|
else if (mapID != null) {
|
|
if (n.getData('inmaps').indexOf(parseInt(mapID)) !== -1) {
|
|
n.setData('whiteCircle', true);
|
|
}
|
|
else {
|
|
n.setData('whiteCircle', false);
|
|
}
|
|
}
|
|
else if (mapperID != null) {
|
|
if (n.getData('userid').toString() == mapperID) {
|
|
n.setData('whiteCircle', true);
|
|
}
|
|
else {
|
|
n.setData('whiteCircle', false);
|
|
}
|
|
}
|
|
Mconsole.plot();
|
|
});
|
|
}//onCanvasSearch
|
|
|
|
function clearCanvas() {
|
|
Mconsole.graph.eachNode(function(n) {
|
|
Mconsole.graph.removeNode(n.id);
|
|
//TODO shouldn't we use disposeLabel? Yes, but it breaks things so it's
|
|
//hide for now
|
|
Mconsole.labels.hideLabel(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);
|
|
//TODO is hideLabel correct? Maybe it is...
|
|
Mconsole.labels.hideLabel(id);
|
|
$('#topic_' + id + '_label').hide();
|
|
}
|
|
});
|
|
fetchRelatives(root); //also runs Mconsole.plot()
|
|
}
|
|
|
|
function clearFoundData() {
|
|
Mconsole.graph.eachNode( function(n) {
|
|
if (n.getData('greenCircle') === true) {
|
|
Mconsole.graph.removeNode(n.id);
|
|
//TODO is hideLabel correct? Maybe it is...
|
|
Mconsole.labels.hideLabel(n.id);
|
|
$('#topic_' + n.id + '_label').hide();
|
|
}
|
|
});
|
|
Mconsole.plot();
|
|
}
|
|
|
|
/**
|
|
* Define all the dynamic interactions for the FIND/FILTER using Jquery
|
|
*/
|
|
|
|
$(document).ready(function() {
|
|
// this sets up the initial opening of the find box
|
|
$('#sideOptionFind').bind('click',function(){
|
|
if (!findOpen) openFind();
|
|
});
|
|
|
|
// this sets up the closing of the find box, and the toggling between open and closed.
|
|
$('#closeFind').bind('click',function(){
|
|
if (findOpen) closeFind();
|
|
});
|
|
|
|
// this is where interactions within the find box begin
|
|
//on keyup, start the countdown
|
|
$('#topic_by_name_input').typing({
|
|
start: function (event, $elem) {
|
|
// grab the checkboxes to see if the search is on the canvas, in the commons, or both
|
|
onCanvasChecked = $("#onCanvas").is(':checked');
|
|
inCommonsChecked = $("#inCommons").is(':checked');
|
|
clearFoundData();
|
|
|
|
// only have the autocomplete enabled if they are searching in the commons
|
|
if (onCanvasChecked && inCommonsChecked){
|
|
$('#topic_by_name_input').autocomplete( "option", "disabled", true );
|
|
}
|
|
else if (onCanvasChecked){
|
|
setTimeout(function(){showAll();},0);
|
|
$('#topic_by_name_input').autocomplete( "option", "disabled", true );
|
|
}
|
|
else if (inCommonsChecked){
|
|
$('#topic_by_name_input').autocomplete( "option", "disabled", true );
|
|
}
|
|
else {
|
|
alert('You either need to have searching On Your Canvas or In the Commons enabled');
|
|
}
|
|
},
|
|
stop: function (event, $elem) {
|
|
// grab the checkboxes to see if the search is on the canvas, in the commons, or both
|
|
onCanvasChecked = $("#onCanvas").is(':checked');
|
|
inCommonsChecked = $("#inCommons").is(':checked');
|
|
|
|
var topicName = $('#topic_by_name_input').val();
|
|
// run a search on the canvas or in the commons (or both)
|
|
if (onCanvasChecked) {
|
|
setTimeout(function() {
|
|
onCanvasSearch(topicName, null, null);
|
|
}, 0);
|
|
}
|
|
if (inCommonsChecked) {
|
|
$('#topicsByName').val(topicName);
|
|
$('#topicsByUser').val("");
|
|
$('#topicsByMap').val("");
|
|
$('#get_topics_form').submit();
|
|
}
|
|
|
|
if (topicName == "") {
|
|
clearFoundData();
|
|
}
|
|
},
|
|
delay: 2000
|
|
});
|
|
|
|
$('#sideOptionFind .select_content').change(function() {
|
|
firstVal = $(this).children("option[value='topics']").attr('selected');
|
|
secondVal = $(this).children("option[value='maps']").attr('selected');
|
|
thirdVal = $(this).children("option[value='mappers']").attr('selected');
|
|
if (firstVal == 'selected') {
|
|
$('#sideOptionFind .select_type').children("option[value='metacode']").removeAttr('disabled');
|
|
$('#sideOptionFind .select_type').children("option[value='map (by name)']").removeAttr('disabled');
|
|
$('#sideOptionFind .select_type').children("option[value='mapper (by name)']").removeAttr('disabled');
|
|
$('.find').css('display','none');
|
|
$('.find_topic_by_name').css('display','block');
|
|
$('#topic_by_name_input').focus();
|
|
}
|
|
else if ( secondVal == 'selected' ) {
|
|
if ( $("#sideOptionFind .select_type").val() != "name") {
|
|
$("#sideOptionFind .select_type").val('name');
|
|
$('#sideOptionFind').animate({
|
|
width: '305px',
|
|
height: '76px'
|
|
}, 300, function() {
|
|
// Animation complete.
|
|
});
|
|
}
|
|
$('#sideOptionFind .select_type').children("option[value='metacode']").attr('disabled','disabled');
|
|
$('#sideOptionFind .select_type').children("option[value='map (by name)']").attr('disabled','disabled');
|
|
$('#sideOptionFind .select_type').children("option[value='mapper (by name)']").attr('disabled','disabled');
|
|
$('.find').css('display','none');
|
|
$('.find_map_by_name').css('display','block');
|
|
$('#map_by_name_input').focus();
|
|
}
|
|
else if ( thirdVal == 'selected' ) {
|
|
$("#sideOptionFind .select_type").val('name');
|
|
$('#sideOptionFind .select_type').children("option[value='metacode']").attr('disabled','disabled');
|
|
$('#sideOptionFind .select_type').children("option[value='map (by name)']").attr('disabled','disabled');
|
|
$('#sideOptionFind .select_type').children("option[value='mapper (by name)']").attr('disabled','disabled');
|
|
$('.find').css('display','none');
|
|
$('.find_mapper_by_name').css('display','block');
|
|
$('#mapper_by_name_input').focus();
|
|
}
|
|
});
|
|
|
|
$('#sideOptionFind .select_type').change(function() {
|
|
firstVal = $(this).children("option[value='name']").attr('selected');
|
|
secondVal = $(this).children("option[value='metacode']").attr('selected');
|
|
thirdVal = $(this).children("option[value='map (by name)']").attr('selected');
|
|
fourthVal = $(this).children("option[value='mapper (by name)']").attr('selected');
|
|
if (firstVal === 'selected') {
|
|
$('.find').fadeOut('fast', function() {
|
|
showAll();
|
|
$('.find_topic_by_metacode ul li').not('#hideAll, #showAll').removeClass('toggledOff');
|
|
for (var catVis in categoryVisible) {
|
|
categoryVisible[catVis] = true;
|
|
}
|
|
$('#sideOptionFind').animate({
|
|
width: '305px',
|
|
height: '76px'
|
|
}, 300, function() {
|
|
$('.find_topic_by_name').css('display','block');
|
|
$('#topic_by_name_input').focus();
|
|
});
|
|
});
|
|
}
|
|
else if ( secondVal === 'selected' ) {
|
|
$('.find').fadeOut('fast', function() {
|
|
$('#sideOptionFind').animate({
|
|
width: '380px',
|
|
height: '463px'
|
|
}, 300, function() {
|
|
$('.find_topic_by_metacode').fadeIn('fast');
|
|
});
|
|
});
|
|
}
|
|
else if ( thirdVal === 'selected' ) {
|
|
$('.find').fadeOut('fast', function() {
|
|
$('#sideOptionFind').animate({
|
|
width: '305px',
|
|
height: '76px'
|
|
}, 300, function() {
|
|
$('.find_map_by_name').css('display','block');
|
|
$('#map_by_name_input').focus();
|
|
});
|
|
});
|
|
}
|
|
else if ( fourthVal === 'selected' ) {
|
|
$('.find').fadeOut('fast', function() {
|
|
$('#sideOptionFind').animate({
|
|
width: '305px',
|
|
height: '76px'
|
|
}, 300, function() {
|
|
$('.find_mapper_by_name').css('display','block');
|
|
$('#mapper_by_name_input').focus();
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
$('.find_topic_by_name #topic_by_name_input').bind('railsAutocomplete.select', function(event, data) {
|
|
/* Do something here */
|
|
if (data.item.id != undefined) {
|
|
window.open("/topics/" + data.item.id)
|
|
}
|
|
$('.find_topic_by_name #topic_by_name_input').val('');
|
|
});
|
|
|
|
$('.find_topic_by_name').bind('submit', function(event, data) {
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('.find_map_by_name #map_by_name_input').bind('railsAutocomplete.select', function(event, data) {
|
|
firstVal = $('#sideOptionFind .select_content').children("option[value='topics']").attr('selected');
|
|
secondVal = $('#sideOptionFind .select_content').children("option[value='maps']").attr('selected');
|
|
thirdVal = $('#sideOptionFind .select_content').children("option[value='mappers']").attr('selected');
|
|
if (firstVal == 'selected') {
|
|
// grab the checkboxes to see if the search is on the canvas, in the commons, or both
|
|
firstNewVal = $("#onCanvas").attr('checked');
|
|
secondNewVal = $("#inCommons").attr('checked');
|
|
|
|
// only have the autocomplete enabled if they are searching in the commons
|
|
if (firstNewVal == "checked" && secondNewVal == "checked") {
|
|
setTimeout(function(){onCanvasSearch(null,data.item.id,null);},0);
|
|
$('#topicsByMap').val(data.item.id);
|
|
$('#topicsByUser').val("");
|
|
$('#topicsByName').val("");
|
|
$('#get_topics_form').submit();
|
|
}
|
|
else if (firstNewVal == "checked") {
|
|
setTimeout(function(){onCanvasSearch(null,data.item.id,null);},0);
|
|
}
|
|
else if (secondNewVal == "checked"){
|
|
$('#topicsByMap').val(data.item.id);
|
|
$('#topicsByUser').val("");
|
|
$('#topicsByName').val("");
|
|
$('#get_topics_form').submit();
|
|
}
|
|
else {
|
|
alert('You either need to have searching On Your Canvas or In the Commons enabled');
|
|
}
|
|
}
|
|
else if ( secondVal == 'selected' ) {
|
|
if (data.item.id != undefined) {
|
|
window.open("/maps/" + data.item.id);
|
|
}
|
|
$('.find_map_by_name #map_by_name_input').val('');
|
|
}
|
|
else if ( thirdVal == 'selected' ) {
|
|
//nothing
|
|
}
|
|
});
|
|
|
|
$('.find_map_by_name').bind('submit', function(event, data){
|
|
event.preventDefault();
|
|
});
|
|
|
|
$('.find_mapper_by_name #mapper_by_name_input').bind('railsAutocomplete.select', function(event, data){
|
|
firstVal = $('#sideOptionFind .select_content').children("option[value='topics']").attr('selected');
|
|
secondVal = $('#sideOptionFind .select_content').children("option[value='maps']").attr('selected');
|
|
thirdVal = $('#sideOptionFind .select_content').children("option[value='mappers']").attr('selected');
|
|
if ( firstVal == 'selected') {
|
|
// grab the checkboxes to see if the search is on the canvas, in the commons, or both
|
|
firstNewVal = $("#onCanvas").attr('checked');
|
|
secondNewVal = $("#inCommons").attr('checked');
|
|
|
|
// only have the autocomplete enabled if they are searching in the commons
|
|
if (firstNewVal == "checked" && secondNewVal == "checked"){
|
|
setTimeout(function(){onCanvasSearch(null,null,data.item.id.toString());},0);
|
|
$('#topicsByUser').val(data.item.id);
|
|
$('#topicsByMap').val("");
|
|
$('#topicsByName').val("");
|
|
$('#get_topics_form').submit();
|
|
}
|
|
else if (firstNewVal == "checked"){
|
|
setTimeout(function(){onCanvasSearch(null,null,data.item.id.toString());},0);
|
|
}
|
|
else if (secondNewVal == "checked"){
|
|
$('#topicsByUser').val(data.item.id);
|
|
$('#topicsByMap').val("");
|
|
$('#topicsByName').val("");
|
|
$('#get_topics_form').submit();
|
|
}
|
|
else {
|
|
alert('You either need to have searching On Your Canvas or In the Commons enabled');
|
|
}
|
|
}
|
|
else if ( secondVal == 'selected' ) {
|
|
//nothing
|
|
}
|
|
else if ( thirdVal == 'selected' ) {
|
|
if (data.item.id != undefined) {
|
|
window.open("/users/" + data.item.id);
|
|
}
|
|
$('.find_mapper_by_name #mapper_by_name_input').val('');
|
|
}
|
|
});
|
|
|
|
$('.find_mapper_by_name').bind('submit', function(event, data){
|
|
event.preventDefault();
|
|
});
|
|
|
|
// toggle visibility of topics with metacodes based on status in the filters list
|
|
$('.find_topic_by_metacode ul li').click(function(event) {
|
|
obj = document.getElementById('container');
|
|
|
|
var switchAll = $(this).attr('id');
|
|
if ( switchAll === "showAll" || switchAll === "hideAll") {
|
|
if (switchAll == "showAll") {
|
|
showAll();
|
|
$('.find_topic_by_metacode ul li').not('#hideAll, #showAll').removeClass('toggledOff');
|
|
for (var catVis in categoryVisible) {
|
|
categoryVisible[catVis] = true;
|
|
}
|
|
}
|
|
else if (switchAll == "hideAll") {
|
|
hideAll();
|
|
$('.find_topic_by_metacode ul li').not('#hideAll, #showAll').addClass('toggledOff');
|
|
for (var catVis in categoryVisible) {
|
|
categoryVisible[catVis] = false;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
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;
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
function openFind() {
|
|
findOpen = true;
|
|
if (analyzeOpen) closeAnalyze();
|
|
if (organizeOpen) closeOrganize();
|
|
$('#sideOptionFind, #closeFind').css('z-index','10');
|
|
$('#sideOptionAnalyze').css('z-index','9');
|
|
$('#sideOptionOrganize').css('z-index','8');
|
|
firstVal = $('#sideOptionFind option[value="name"]').attr('selected');
|
|
secondVal = $('#sideOptionFind option[value="metacode"]').attr('selected');
|
|
thirdVal = $('#sideOptionFind option[value="map (by name)"]').attr('selected');
|
|
fourthVal = $('#sideOptionFind option[value="mapper (by name)"]').attr('selected');
|
|
if ( firstVal === 'selected' || thirdVal === 'selected' || fourthVal === 'selected' ) {
|
|
$('#sideOptionFind').animate({
|
|
width: '305px',
|
|
height: '76px'
|
|
}, 100, function() {
|
|
$('#topic_by_name_input').focus();
|
|
});
|
|
} else if ( secondVal === 'selected') {
|
|
$('#sideOptionFind').animate({
|
|
width: '380px',
|
|
height: '463px'
|
|
}, 100, function() {
|
|
// Animation complete.
|
|
});
|
|
} else if ( thirdVal === 'selected' ) {
|
|
$('#sideOptionFind').animate({
|
|
width: '305px',
|
|
height: '76px'
|
|
}, 100, function() {
|
|
$('#map_by_name_input').focus();
|
|
});
|
|
} else if ( fourthVal === 'selected' ) {
|
|
$('#sideOptionFind').animate({
|
|
width: '305px',
|
|
height: '76px'
|
|
}, 100, function() {
|
|
$('#mapper_by_name_input').focus();
|
|
});
|
|
}
|
|
$('#closeFind, #findWhere').css('display','block');
|
|
$('#sideOptionFind').css('cursor','default');
|
|
}
|
|
|
|
function closeFind() {
|
|
clearFoundData();
|
|
|
|
findOpen = false;
|
|
$('#closeFind, #findWhere').css('display','none');
|
|
$('#sideOptionFind').css('cursor','pointer');
|
|
$('#sideOptionFind').animate({
|
|
width: '45px',
|
|
height: '32px'
|
|
}, 100);
|
|
}//closeFind
|