var ipc = require('ipc'),
    _   = require('lodash')

init();

ipc.on('internals', update);

var isInitialised = false,
    root;

function init() {
  root = d3.select('#vis').append('ul');
}

// var id = _.partial(_.pluck, _, 'id');

function key(d) { return d.id || d.name || d.ip; }

function update(obj) {
  var datas = _.pairs(obj);
  // Div for each data type
  var div = root.selectAll('div').data(datas, function (d) { return d[0]; });
  var divEnter = div
    .enter()
    .append('div');

  divEnter
    .append('p')
    .text(function (d) { return d[0]; });

  divEnter
    .append('ul');

  var li = div.select('ul').selectAll('li').data(function (d) { return d[1]; }, key);
  var liEnter = li
    .enter()
    .append('li')
    .text(key);
}
@@ -250,23 +250,84 @@
 d) %7B
- return d.id %7C%7C
+%0A  if (d.id) %7B%0A    return d.id + '(' + d.name + ')';%0A  %7D%0A  else %7B%0A    return
  d.n
@@ -338,17 +338,21 @@
 %7C%7C d.ip;
- 
+%0A  %7D%0A
 %7D%0A%0Afunct
@@ -764,21 +764,16 @@
 ter = li
-%0A    
 .enter()
@@ -806,10 +806,46 @@
 xt(key);
+%0A%0A  var liExit = li.exit().remove();
 %0A%7D

Remove items from dashboard view when gone