$(document).on('click', '.card-header', function(){ $(this).siblings().toggle(); }); // -------------------------------- // Details Panel // -------------------------------- rubrowser.node.on('click', function(d){ var namespace = d.id; var lines = d.lines; var dependents = rubrowser.relations.filter(function(i){ return i.target.id == namespace; }); var dependencies = rubrowser.relations.filter(function(i){ return i.source.id == namespace; }); var definitions = rubrowser.data.definitions.filter(function(i){ return i.namespace == namespace; }); var relations = rubrowser.data.relations.filter(function(i){ return i.resolved_namespace == namespace || i.caller == namespace; }); var content = $('
'); content.append(''); content.append('Defined in:'); var definitions_ol = $("
    "); for(var i=0; i"+definitions[i].file+":"+definitions[i].line.toString()+""); } content.append(definitions_ol); if( dependents.length > 0 ){ content.append('Dependents:'); var dependents_ol = $("
      "); for(var i=0; i"+dependents[i].source.id+""); } content.append(dependents_ol); } if( dependencies.length > 0 ){ content.append('Dependencies:'); var dependencies_ol = $("
        "); for(var i=0; i"+dependencies[i].target.id+""); } content.append(dependencies_ol); } $('#information_panel').html(content); return true; }); // -------------------------------- // Search Panel // -------------------------------- $(document).on('change', '#highlight_by_namespace', function(){ var highlights_entries = $(this).val().trim(); var highlights = _(highlights_entries.split("\n")); rubrowser.node.classed('highlighted_by_namespace', function(d){ if(highlights_entries.length == 0){ return false; } return highlights.some(function(i){ return d.id.indexOf(i) > -1; }); }); }); $(document).on('change', '#highlight_by_file_path', function(){ var highlights_entries = $(this).val().trim(); var highlights = _(highlights_entries.split("\n")); rubrowser.node.classed('highlighted_by_path', function(d){ if(highlights_entries.length == 0){ return false; } return highlights.some(function(i){ return _(d.files).some(function(f) { return f.indexOf(i) > -1; }); }); }); }); $(document).on('change', '#highlight_modules, #highlight_classes', function(){ var modules_highlighted = $('#highlight_modules').is(':checked'), classes_highlighted = $('#highlight_classes').is(':checked'); rubrowser.node.classed('highlighted_by_type', function(d){ return (d.type == 'Module' && modules_highlighted) || (d.type == 'Class' && classes_highlighted); }); }); // -------------------------------- // Ignore Panel // -------------------------------- var ignoring_functions = {}; function updateNodes() { function ignoreNode(d) { return _(ignoring_functions).some(function(ignoring_function) { return ignoring_function(d); }); } function notIgnoreNode(d){ return !ignoreNode(d); } function ignoreRelation(r){ return ignoreNode(r.source) || ignoreNode(r.target); } function notIgnoreRelation(r){ return !ignoreRelation(r); } var filtered_definitions = rubrowser.definitions.filter(notIgnoreNode); rubrowser.simulation.nodes(filtered_definitions); rubrowser.node.classed('ignored', ignoreNode); var filtered_relations = rubrowser.relations.filter(notIgnoreRelation); rubrowser.simulation.force("link").links(filtered_relations); rubrowser.link.classed('ignored', ignoreRelation); } $(document).on('change', '#ignore_by_namespace', function(){ var ignores_entries = $(this).val().trim(); var ignores = ignores_entries.split("\n"); if(ignores_entries.length == 0){ delete ignoring_functions["ignore_by_name"]; }else{ ignoring_functions["ignore_by_name"] = function(d){ return ignores.some(function(i){ return d.id.indexOf(i) > -1; }); } } updateNodes(); }); $(document).on('change', '#ignore_by_file_path', function(){ var ignores_entries = $(this).val().trim(); var ignores = ignores_entries.split("\n"); if(ignores_entries.length == 0){ delete ignoring_functions["ignore_by_file_path"]; }else{ ignoring_functions["ignore_by_file_path"] = function(d){ return ignores.some(function(i){ return _(d.files).every(function(f){ return f.indexOf(i) > -1; }); }); } } updateNodes(); }); $(document).on('change', '#ignore_modules, #ignore_classes', function(){ var modules_ignored = $('#ignore_modules').is(':checked'), classes_ignored = $('#ignore_classes').is(':checked'); if( modules_ignored ){ ignoring_functions["ignore_modules"] = function(d) { return d.type == 'Module'; } }else{ delete ignoring_functions["ignore_modules"]; } if( classes_ignored ){ ignoring_functions["ignore_classes"] = function(d) { return d.type == 'Class'; } }else{ delete ignoring_functions["ignore_classes"]; } updateNodes(); }); // -------------------------------- // Display Panel // -------------------------------- $(document).on('change', "#force_collide", function(){ var new_value = $(this).val(); rubrowser.simulation.force("forceCollide", d3.forceCollide(new_value)); }); $(document).on('change', "#hide_relations", function(){ var hide_relations = $('#hide_relations').is(':checked'); rubrowser.link.classed("hide_relation", hide_relations); }); $(document).on('change', "#hide_namespaces", function(){ var hide_namespaces = $('#hide_namespaces').is(':checked'); rubrowser.node.classed("hide_namespace", hide_namespaces); }); $(document).on('click', "#pause_simulation", function(){ rubrowser.simulation.stop(); }); $(document).on('click', "#fix_all", function(){ rubrowser.node.classed("fixed", true); rubrowser.node.each(function(d){ d.fx = d.x; d.fy = d.y; }); }); $(document).on('click', "#release_all", function(){ rubrowser.node.classed("fixed", false); rubrowser.node.each(function(d){ delete d["fx"]; delete d["fy"]; }); }); $(document).on('click', "#download_layout", function(){ var json = JSON.stringify(rubrowser.state.get()); var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(json)); element.setAttribute('download', 'layout.json'); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); });