{"action":"created","issue":{"url":"https://api.github.com/repos/palantir/plottable/issues/2512","labels_url":"https://api.github.com/repos/palantir/plottable/issues/2512/labels{/name}","comments_url":"https://api.github.com/repos/palantir/plottable/issues/2512/comments","events_url":"https://api.github.com/repos/palantir/plottable/issues/2512/events","html_url":"https://github.com/palantir/plottable/issues/2512","id":97609399,"number":2512,"title":"Enable 'object constancy' on data refresh by supporting a key function","user":{"login":"softwords","id":8971705,"avatar_url":"https://avatars.githubusercontent.com/u/8971705?v=3","gravatar_id":"","url":"https://api.github.com/users/softwords","html_url":"https://github.com/softwords","followers_url":"https://api.github.com/users/softwords/followers","following_url":"https://api.github.com/users/softwords/following{/other_user}","gists_url":"https://api.github.com/users/softwords/gists{/gist_id}","starred_url":"https://api.github.com/users/softwords/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/softwords/subscriptions","organizations_url":"https://api.github.com/users/softwords/orgs","repos_url":"https://api.github.com/users/softwords/repos","events_url":"https://api.github.com/users/softwords/events{/privacy}","received_events_url":"https://api.github.com/users/softwords/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/palantir/plottable/labels/Feature%20Request","name":"Feature Request","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-07-28T03:56:56Z","updated_at":"2015-08-21T06:52:44Z","closed_at":null,"body":"'Object constancy' , as defined in http://bost.ocks.org/mike/constancy/ ,\r\nrequires a 'key' function passed to selection.data()  to provide a unique identifier for each datum. This determines what goes in enter exit and update selections.\r\n\r\nCould dataset get a key method, and/or enhanced constructor, to specify this key function? \r\n\r\nThen, we'd need some way to get to the enter exit and update d3 transitions.\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/palantir/plottable/issues/comments/133307189","html_url":"https://github.com/palantir/plottable/issues/2512#issuecomment-133307189","issue_url":"https://api.github.com/repos/palantir/plottable/issues/2512","id":133307189,"user":{"login":"jtlan","id":1440449,"avatar_url":"https://avatars.githubusercontent.com/u/1440449?v=3","gravatar_id":"","url":"https://api.github.com/users/jtlan","html_url":"https://github.com/jtlan","followers_url":"https://api.github.com/users/jtlan/followers","following_url":"https://api.github.com/users/jtlan/following{/other_user}","gists_url":"https://api.github.com/users/jtlan/gists{/gist_id}","starred_url":"https://api.github.com/users/jtlan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jtlan/subscriptions","organizations_url":"https://api.github.com/users/jtlan/orgs","repos_url":"https://api.github.com/users/jtlan/repos","events_url":"https://api.github.com/users/jtlan/events{/privacy}","received_events_url":"https://api.github.com/users/jtlan/received_events","type":"User","site_admin":false},"created_at":"2015-08-21T06:52:44Z","updated_at":"2015-08-21T06:52:44Z","body":"@softwords, we haven't heard from you in a while. Would you like some help with the implementation?\r\n\r\nYour proposal seems solid overall, although I have some questions about the animator design. Does the array of frame actions include only attribute names?\r\n\r\nAlso, instead of using a 2-D array of attributes, what if we made each `Animator` correspond to only a single frame, then used some other structure to combine them? This would let us build on the code in `Animators.Easing`. \r\n\r\nRegarding `enter()` and `exit()`: It seems odd to implement this by having a `Plot` contain other instances of its class (since things like `plot.enter().enter().enter()` would be valid, although I don't know why you would do this...). However, I can't really think of a cleaner implementation that would also preserve all the property-setting methods on the `Plot`.\r\n\r\n@aicioara, @bluong, @ztsai, can you weigh in?"}}