{"action":"created","issue":{"url":"https://api.github.com/repos/phetsims/scenery/issues/814","repository_url":"https://api.github.com/repos/phetsims/scenery","labels_url":"https://api.github.com/repos/phetsims/scenery/issues/814/labels{/name}","comments_url":"https://api.github.com/repos/phetsims/scenery/issues/814/comments","events_url":"https://api.github.com/repos/phetsims/scenery/issues/814/events","html_url":"https://github.com/phetsims/scenery/issues/814","id":332592551,"node_id":"MDU6SXNzdWUzMzI1OTI1NTE=","number":814,"title":"Is invalidateAccessibleContent the best way to update the PDOM?","user":{"login":"zepumph","id":6856943,"node_id":"MDQ6VXNlcjY4NTY5NDM=","avatar_url":"https://avatars1.githubusercontent.com/u/6856943?v=4","gravatar_id":"","url":"https://api.github.com/users/zepumph","html_url":"https://github.com/zepumph","followers_url":"https://api.github.com/users/zepumph/followers","following_url":"https://api.github.com/users/zepumph/following{/other_user}","gists_url":"https://api.github.com/users/zepumph/gists{/gist_id}","starred_url":"https://api.github.com/users/zepumph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zepumph/subscriptions","organizations_url":"https://api.github.com/users/zepumph/orgs","repos_url":"https://api.github.com/users/zepumph/repos","events_url":"https://api.github.com/users/zepumph/events{/privacy}","received_events_url":"https://api.github.com/users/zepumph/received_events","type":"User","site_admin":false},"labels":[{"id":39319737,"node_id":"MDU6TGFiZWwzOTMxOTczNw==","url":"https://api.github.com/repos/phetsims/scenery/labels/dev:a11y","name":"dev:a11y","color":"008080","default":false},{"id":417655289,"node_id":"MDU6TGFiZWw0MTc2NTUyODk=","url":"https://api.github.com/repos/phetsims/scenery/labels/meeting:a11y","name":"meeting:a11y","color":"000000","default":false},{"id":64201691,"node_id":"MDU6TGFiZWw2NDIwMTY5MQ==","url":"https://api.github.com/repos/phetsims/scenery/labels/priority:2-high","name":"priority:2-high","color":"e11d21","default":false}],"state":"open","locked":false,"assignee":{"login":"jonathanolson","id":480878,"node_id":"MDQ6VXNlcjQ4MDg3OA==","avatar_url":"https://avatars3.githubusercontent.com/u/480878?v=4","gravatar_id":"","url":"https://api.github.com/users/jonathanolson","html_url":"https://github.com/jonathanolson","followers_url":"https://api.github.com/users/jonathanolson/followers","following_url":"https://api.github.com/users/jonathanolson/following{/other_user}","gists_url":"https://api.github.com/users/jonathanolson/gists{/gist_id}","starred_url":"https://api.github.com/users/jonathanolson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonathanolson/subscriptions","organizations_url":"https://api.github.com/users/jonathanolson/orgs","repos_url":"https://api.github.com/users/jonathanolson/repos","events_url":"https://api.github.com/users/jonathanolson/events{/privacy}","received_events_url":"https://api.github.com/users/jonathanolson/received_events","type":"User","site_admin":false},"assignees":[{"login":"jonathanolson","id":480878,"node_id":"MDQ6VXNlcjQ4MDg3OA==","avatar_url":"https://avatars3.githubusercontent.com/u/480878?v=4","gravatar_id":"","url":"https://api.github.com/users/jonathanolson","html_url":"https://github.com/jonathanolson","followers_url":"https://api.github.com/users/jonathanolson/followers","following_url":"https://api.github.com/users/jonathanolson/following{/other_user}","gists_url":"https://api.github.com/users/jonathanolson/gists{/gist_id}","starred_url":"https://api.github.com/users/jonathanolson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonathanolson/subscriptions","organizations_url":"https://api.github.com/users/jonathanolson/orgs","repos_url":"https://api.github.com/users/jonathanolson/repos","events_url":"https://api.github.com/users/jonathanolson/events{/privacy}","received_events_url":"https://api.github.com/users/jonathanolson/received_events","type":"User","site_admin":false},{"login":"zepumph","id":6856943,"node_id":"MDQ6VXNlcjY4NTY5NDM=","avatar_url":"https://avatars1.githubusercontent.com/u/6856943?v=4","gravatar_id":"","url":"https://api.github.com/users/zepumph","html_url":"https://github.com/zepumph","followers_url":"https://api.github.com/users/zepumph/followers","following_url":"https://api.github.com/users/zepumph/following{/other_user}","gists_url":"https://api.github.com/users/zepumph/gists{/gist_id}","starred_url":"https://api.github.com/users/zepumph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zepumph/subscriptions","organizations_url":"https://api.github.com/users/zepumph/orgs","repos_url":"https://api.github.com/users/zepumph/repos","events_url":"https://api.github.com/users/zepumph/events{/privacy}","received_events_url":"https://api.github.com/users/zepumph/received_events","type":"User","site_admin":false}],"milestone":null,"comments":15,"created_at":"2018-06-14T22:57:44Z","updated_at":"2018-07-21T01:56:29Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"As implementing \"higher level\" abstractions ontop of the current a11y api in https://github.com/phetsims/scenery/issues/795, I am wondering if our current approach in optimal.\r\n\r\n@jessegreenberg and I have long talked about the inefficiencies of needing to call invalidateAccessibleContent whenever any small piece of the PDOM needs to be redrawn, so I thought it deserved an issue.\r\n\r\nMy main concern, it is a bummer that the entire `invalidateAccessibleContent` needs to be redrawn if, for example, you want to change the description sibling from a `<p>` to a `<span>`. Currently that change involves recreating the entire Peer, so all of its siblings.\r\n\r\nWe have gone with this logic for so long because it is quite a bit easier than trying to figure out exactly what we need to redraw in the peer from changes in the Node.\r\n\r\nHere is the added complexity this is bringing up in regards to #795 and the abstractions:\r\n`invalidateAccessibleContent` needs a way to `setHelpText`, when it redraws the peer. This is to support multiple option order. So there needs a be an \"implementation\" function in the a11y mixin that the es5 setter and `invalidateAccessibleContent` can both call. We need this \"implementation' function because we want the es5 setter to validate as if it is only called from the client. This is similar to the approach we took in https://github.com/phetsims/scenery/issues/800.\r\n\r\nThis problem is complicated further (at least in my head) as we start to support `{Property|string}` for things like `helpText`. Although not yet implemented, it seems like if helpText is of type `Property`, then it will need to register listeners in `setHelpTextImplementation`. Right now, invalidateAccessibleContent would call the `setHelpTextImplementation` every time the peer is redrawn, such that we add `Property` (de)registration to the list of inefficiencies that would occur potentially every frame.\r\n\r\nSteps I would like to see in this issue:\r\n1. Discuss any potential overhauls that would eradicate `invalidateAccessibleContent` and move to an improved, more efficient, and more intelligent system.\r\n2. If not 1, then figure out a pattern that we can use to be a bit more efficient for (a) general redrawing of the PDOM (perhaps only redrawing pieces of the Peer on redrawn), or (b) supporting a good system for type `{Property}` values.\r\n\r\nTagging @mbarlow12 @jonathanolson @jessegreenberg for discussion. Sorry this is a long one, but it seems like this summer is the time to do this; otherwise it probably won't get done until it is really in the way and a pain in the butt. \r\n\r\n"},"comment":{"url":"https://api.github.com/repos/phetsims/scenery/issues/comments/406762828","html_url":"https://github.com/phetsims/scenery/issues/814#issuecomment-406762828","issue_url":"https://api.github.com/repos/phetsims/scenery/issues/814","id":406762828,"node_id":"MDEyOklzc3VlQ29tbWVudDQwNjc2MjgyOA==","user":{"login":"zepumph","id":6856943,"node_id":"MDQ6VXNlcjY4NTY5NDM=","avatar_url":"https://avatars1.githubusercontent.com/u/6856943?v=4","gravatar_id":"","url":"https://api.github.com/users/zepumph","html_url":"https://github.com/zepumph","followers_url":"https://api.github.com/users/zepumph/followers","following_url":"https://api.github.com/users/zepumph/following{/other_user}","gists_url":"https://api.github.com/users/zepumph/gists{/gist_id}","starred_url":"https://api.github.com/users/zepumph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zepumph/subscriptions","organizations_url":"https://api.github.com/users/zepumph/orgs","repos_url":"https://api.github.com/users/zepumph/repos","events_url":"https://api.github.com/users/zepumph/events{/privacy}","received_events_url":"https://api.github.com/users/zepumph/received_events","type":"User","site_admin":false},"created_at":"2018-07-21T01:56:29Z","updated_at":"2018-07-21T01:56:29Z","author_association":"CONTRIBUTOR","body":"Now describedby is working as well. From here I want to work on removing the dialog usage of `setAccessibleContentDisplayed` and to test that on IE/edge to make sure it will work as desired."}}
{"actor":{"display_login":"zepumph"}}