JSFiddle - React, Tailwind, and code Playground

by YOUNY zhu

CSS

.node {
  font: 300 11px "Helvetica Neue", Helvetica, Arial, sans-serif;
  fill: #bbb;
}

.node:hover {
  fill: #000;
}

.link {
  stroke: steelblue;
  stroke-opacity: .4;
  fill: none;
  pointer-events: none;
}

.node:hover,
.node--source,
.node--target,
.node--both {
  font-weight: 700;
}

.node--source {
  fill: #2ca02c;
}

.node--target {
  fill: #d62728;
}

.node--both {
  fill: orange;
}

.link--source,
.link--target,
.link--both {
  stroke-opacity: 1;
  stroke-width: 2px;
}

.link--source {
  stroke: #d62728;
}

.link--target {
  stroke: #2ca02c;
}

.link--both {
  stroke: orange;
}

JavaScript

var classes=[
  {
    "name":"Operations.Assess",
    "imports":["Operations.CRM.Customer QoS Mgmt.Create QoS Degradation Report"]
  },
  {
    "name":"Operations.CRM.Customer QoS Mgmt.Create QoS Degradation Report",
    "imports":["Operations.Assess"]
  },
  {
    "name":"Operations.CRM.Customer QoS Mgmt.Manage QoS Violation",
    "imports":["Operations.CRM.Customer QoS Mgmt.Create QoS Degradation Report"]
  },
  {
    "name":"Operations.CRM.Customer QoS Mgmt.Manage QoS Resolution",
    "imports":["Operations.CRM.Customer QoS Mgmt.Create QoS Degradation Report"]
  },
  {
    "name":"Operations.CRM.Customer QoS Mgmt.Report QoS Performance",
    "imports":["Operations.Assess","Operations.CRM.Customer QoS Mgmt.Create QoS Degradation Report","Operations.CRM.Customer QoS Mgmt.Manage QoS Violation","Operations.CRM.Customer QoS Mgmt.Manage QoS Resolution","Operations.CRM.Customer QoS Mgmt.Close Customer Degradation Report"]
  },
  {
    "name":"Operations.CRM.Customer QoS Mgmt.Close Customer Degradation Report",
    "imports":["Operations.CRM.Customer QoS Mgmt.Manage QoS Resolution"]
  },
 {
    "name":"Operations.SRM.Trouble Mgmt.Trouble Keeping",
    "imports":["Operations.CRM.Customer QoS Mgmt.Manage QoS Resolution"]
  }

];

var diameter = 960,
    radius = diameter / 2,
    innerRadius = radius - 200;

var cluster = d3.layout.cluster()
    .size([360, innerRadius])
    .sort(null)
    .value(function(d) { return d.size; });

var bundle = d3.layout.bundle();

var line = d3.svg.line.radial()
    .interpolate("bundle")
    .tension(.85)
    .radius(function(d) { return d.y; })
    .angle(function(d) { return d.x / 180 * Math.PI; });

var svg = d3.select("body").append("svg")
    .attr("width", diameter)
    .attr("height", diameter)
  .append("g")
    .attr("transform", "translate(" + radius + "," + radius + ")");

var link = svg.append("g").selectAll(".link"),
    node = svg.append("g").selectAll(".node");

//d3.json("hebtesting.json", function(error, classes) {
 ...