Sha256: 4af5371edb438cdf9bd135dddf77a3f9f26701d568983911d220c0f954ed5eba
Contents?: true
Size: 1.95 KB
Versions: 2
Compression:
Stored size: 1.95 KB
Contents
// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails import "@hotwired/turbo-rails" import * as d3 from "d3"; // See Force layout | D3 in Depth https://www.d3indepth.com/force-layout/ const svg = d3.select("svg"), width = +svg.attr("width"), height = +svg.attr("height"); const simulation = d3.forceSimulation() .force("link", d3.forceLink() .distance(function (_d) { return 100; }) .strength(0.1) .id(function (d) { return d.id; })) .force("charge", d3.forceManyBody()) .force("center", d3.forceCenter(width / 2, height / 2)); d3.json("http://127.0.0.1:3000/data_network").then(function (graph) { const link = svg .append("g") .attr("class", "links") .selectAll("line") .data(graph.links) .enter() .append("line") .style("stroke", "#aaa"); const node = svg .append("g") .attr("class", "nodes") .selectAll("circle") .data(graph.nodes) .enter() .append("circle") .attr("r", 6) const label = svg .append("g") .attr("class", "labels") .selectAll("text") .data(graph.nodes) .enter() .append("text") .attr("class", "label") .text(function (d) { return d.name; }); simulation .nodes(graph.nodes) .on("tick", ticked); simulation.force("link") .links(graph.links); function ticked() { link .attr("x1", function (d) { return d.source.x; }) .attr("y1", function (d) { return d.source.y; }) .attr("x2", function (d) { return d.target.x; }) .attr("y2", function (d) { return d.target.y; }); node .attr("cx", function (d) { return d.x; }) .attr("cy", function (d) { return d.y; }); label .attr("x", function (d) { return d.x + 8; }) .attr("y", function (d) { return d.y + 3; }); } });
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
acts_as_graph_diagram-0.1.1 | test/dummy/app/javascript/application.js |
acts_as_graph_diagram-0.1.0 | test/dummy/app/javascript/application.js |