react-d3-graph icon indicating copy to clipboard operation
react-d3-graph copied to clipboard

Provide an onChange api when some properties from inputed data changes

Open antoninklopp opened this issue 4 years ago • 3 comments
trafficstars

Is your feature request related to a problem? Please describe. This feature request will allow better connections between the graph and the user interactions.

Describe the solution you'd like Provide an onChange method when a property involving data is changed, like changing an x or y coordinate by dragging a node. This is the only case that I can think of now but there could be more in the future.

An example could be the following

function App(){

  const [data, setData] = useState(myInitialData); 

  return (
    <Graph 
       id="my-graph"
       data={data}
       onChange={(data) => setData(data)}
  )
}

Describe your use case If I want to save the state of my graph with the layout changed by a user.

Describe alternatives you've considered I currently need to keep a reference over the graph and access it by ref.current.state.nodes which is not really the "react way" of doing things.

antoninklopp avatar Nov 29 '20 16:11 antoninklopp

Perhaps you found a gap in the documentation. We already have onNodePositionChange. I understand this would be useful for some. Still, I would highly recommend us to keep our API with granular callback/hook functions such as onMouseOverNode, onMouseOverLink, onZoomChange, onNodePositionChange and so forth.

Nevertheless, let's keep this open to understanding if there are others interested in it.

danielcaldas avatar Nov 30 '20 10:11 danielcaldas

Thanks for pointing this method @danielcaldas , I did not see that it was accessible. I think I missed it because it is not used in the <Graph /> component in the documentation when every other available method is used.

antoninklopp avatar Nov 30 '20 18:11 antoninklopp

#405 was merged. But let's keep this open to see if anyone else stumbles upon this use case you've raised.

danielcaldas avatar Dec 17 '20 12:12 danielcaldas