UNPKG

clustergrammer

Version:

This is a clustergram implemented in D3.js. I started from the example http://bost.ocks.org/mike/miserables/ and added the following features

76 lines (61 loc) 2.29 kB
var exit_existing_row = require('../exit/exit_existing_row'); var enter_existing_row = require('./enter_existing_row'); var update_split_tiles = require('../update/update_split_tiles'); var mouseover_tile = require('../matrix/mouseover_tile'); var mouseout_tile = require('../matrix/mouseout_tile'); var fine_position_tile = require('../matrix/fine_position_tile'); // TODO add tip back to arguments module.exports = function eeu_existing_row(params, ini_inp_row_data, delays, duration, row_selection, tip) { var inp_row_data = ini_inp_row_data.row_data; // remove zero values from var row_values = _.filter(inp_row_data, function(num){ return num.value !=0; }); // bind data to tiles var cur_row_tiles = d3.select(row_selection) .selectAll('.tile') .data(row_values, function(d){ return d.col_name; }); exit_existing_row(params, delays, cur_row_tiles, inp_row_data, row_selection); /////////////////////////// // Update /////////////////////////// // update tiles in x direction var update_row_tiles = cur_row_tiles .on('mouseover', function(...args) { mouseover_tile(params, this, tip, args); }) .on('mouseout', function mouseout() { mouseout_tile(params, this, tip); }); var col_nodes_names = params.network_data.col_nodes_names; if (delays.run_transition){ update_row_tiles .transition().delay(delays.update).duration(duration) .attr('width', params.viz.rect_width) .attr('height', params.viz.rect_height) .attr('transform', function(d) { if (_.contains(col_nodes_names, d.col_name)){ return fine_position_tile(params, d); } else { return 'translate(0,0)'; } }); } else { update_row_tiles .attr('width', params.viz.rect_width) .attr('height', params.viz.rect_height) .attr('transform', function(d) { if (_.contains(col_nodes_names, d.col_name)){ return fine_position_tile(params, d); } else { return 'translate(0,0)'; } }); } if (params.matrix.tile_type == 'updn'){ update_split_tiles(params, inp_row_data, row_selection, delays, duration, cur_row_tiles, tip); } enter_existing_row(params, delays, duration, cur_row_tiles, tip); };