{"action":"created","issue":{"url":"https://api.github.com/repos/Netflix/vizceral/issues/39","repository_url":"https://api.github.com/repos/Netflix/vizceral","labels_url":"https://api.github.com/repos/Netflix/vizceral/issues/39/labels{/name}","comments_url":"https://api.github.com/repos/Netflix/vizceral/issues/39/comments","events_url":"https://api.github.com/repos/Netflix/vizceral/issues/39/events","html_url":"https://github.com/Netflix/vizceral/pull/39","id":186672431,"number":39,"title":"Feature/interactive physical layout","user":{"login":"jbrekelmans","id":4394224,"avatar_url":"https://avatars.githubusercontent.com/u/4394224?v=3","gravatar_id":"","url":"https://api.github.com/users/jbrekelmans","html_url":"https://github.com/jbrekelmans","followers_url":"https://api.github.com/users/jbrekelmans/followers","following_url":"https://api.github.com/users/jbrekelmans/following{/other_user}","gists_url":"https://api.github.com/users/jbrekelmans/gists{/gist_id}","starred_url":"https://api.github.com/users/jbrekelmans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbrekelmans/subscriptions","organizations_url":"https://api.github.com/users/jbrekelmans/orgs","repos_url":"https://api.github.com/users/jbrekelmans/repos","events_url":"https://api.github.com/users/jbrekelmans/events{/privacy}","received_events_url":"https://api.github.com/users/jbrekelmans/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2016-11-01T23:09:10Z","updated_at":"2016-11-04T01:30:12Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Netflix/vizceral/pulls/39","html_url":"https://github.com/Netflix/vizceral/pull/39","diff_url":"https://github.com/Netflix/vizceral/pull/39.diff","patch_url":"https://github.com/Netflix/vizceral/pull/39.patch"},"body":"1/3 Pull requests on repositories Netflix/vizceral, Netflix/vizceral-example and Netflix/vizceral-react with the following features around \"optimizing layout manually\":\r\n1. Repositioning of nodes by dragging them\r\n2. Interactive Particle System simulation (nodes are particles and edges are spring forces) because it's awesome and allow for good automatic layout on some graphs\r\n3. Resetting layout if #2 get's out of hand\r\n4. Layout algorithm that respects positional metadata in the JSON graph files and otherwise lays out nodes in a circle\r\n5. Export (well, Console.log) current node positions to be used as positional metadata once a satisfactory manual layout has been created\r\n\r\nHow to run:\r\n1. Clone the branch feature/interactive_physical_layout of repositories jbrekelmans/vizceral, jbrekelmans/vizceral-example and jbrekelmans/vizceral-react locally\r\n2. Run command 'npm link' in vizceral\r\n3. Run command 'npm link vizceral' in vizceral-react\r\n4. Run command 'npm link' in vizceral-react\r\n5. Run command 'npm link vizceral-react' in vizceral-example\r\n6. Make sure a graph (e.g. in sample_data.json) with 10-20 nodes is loaded for best results using the default Particle System settings"},"comment":{"url":"https://api.github.com/repos/Netflix/vizceral/issues/comments/258322599","html_url":"https://github.com/Netflix/vizceral/pull/39#issuecomment-258322599","issue_url":"https://api.github.com/repos/Netflix/vizceral/issues/39","id":258322599,"user":{"login":"jbrekelmans","id":4394224,"avatar_url":"https://avatars.githubusercontent.com/u/4394224?v=3","gravatar_id":"","url":"https://api.github.com/users/jbrekelmans","html_url":"https://github.com/jbrekelmans","followers_url":"https://api.github.com/users/jbrekelmans/followers","following_url":"https://api.github.com/users/jbrekelmans/following{/other_user}","gists_url":"https://api.github.com/users/jbrekelmans/gists{/gist_id}","starred_url":"https://api.github.com/users/jbrekelmans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbrekelmans/subscriptions","organizations_url":"https://api.github.com/users/jbrekelmans/orgs","repos_url":"https://api.github.com/users/jbrekelmans/repos","events_url":"https://api.github.com/users/jbrekelmans/events{/privacy}","received_events_url":"https://api.github.com/users/jbrekelmans/received_events","type":"User","site_admin":false},"created_at":"2016-11-04T01:30:12Z","updated_at":"2016-11-04T01:30:12Z","body":"I like your suggestions.\r\nQuite frankly they are essential given that I hardcoded a configuration that works for my graphs, but not necessarily for other graphs.\r\nHere's my thoughts:\r\n1. I agree with you when you say layouts should be configurable the same way renderer's are. We definitely shouldn't tie layouts and renderer's together from an ideal-design perspective, but they are tied together because only specific layout and renderer configurations work together. This is why I changed the orbit size and node size in the global renderer and probably is also the reason why the global renderer is tied together with it's layout. But tying together renderer's and layouts at the design level will only limit the possible configurations and there should be an option to specify the layout independently from the renderer. \r\n2. My changes to orbitSize and nodeSize are a form of hardcoding that will not work for arbitrary graphs. Anyway, they were chosen as such because in my graphs there are 6 regions instead of 3. Perhaps we can reconsider the calculation (well, introduce a calculation instead of using constants) that works for an arbitrary amount of regions?"}}
{"actor":{"display_login":"jbrekelmans"}}