{"action":"created","issue":{"url":"https://api.github.com/repos/plotly/plotly.js/issues/1861","repository_url":"https://api.github.com/repos/plotly/plotly.js","labels_url":"https://api.github.com/repos/plotly/plotly.js/issues/1861/labels{/name}","comments_url":"https://api.github.com/repos/plotly/plotly.js/issues/1861/comments","events_url":"https://api.github.com/repos/plotly/plotly.js/issues/1861/events","html_url":"https://github.com/plotly/plotly.js/pull/1861","id":241315191,"number":1861,"title":"[take 2] Implement scatter `cliponaxis: false`","user":{"login":"etpinard","id":6675409,"avatar_url":"https://avatars3.githubusercontent.com/u/6675409?v=3","gravatar_id":"","url":"https://api.github.com/users/etpinard","html_url":"https://github.com/etpinard","followers_url":"https://api.github.com/users/etpinard/followers","following_url":"https://api.github.com/users/etpinard/following{/other_user}","gists_url":"https://api.github.com/users/etpinard/gists{/gist_id}","starred_url":"https://api.github.com/users/etpinard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/etpinard/subscriptions","organizations_url":"https://api.github.com/users/etpinard/orgs","repos_url":"https://api.github.com/users/etpinard/repos","events_url":"https://api.github.com/users/etpinard/events{/privacy}","received_events_url":"https://api.github.com/users/etpinard/received_events","type":"User","site_admin":false},"labels":[{"id":330750748,"url":"https://api.github.com/repos/plotly/plotly.js/labels/status:%20reviewable","name":"status: reviewable","color":"33a02c","default":false},{"id":282886925,"url":"https://api.github.com/repos/plotly/plotly.js/labels/type:%20feature","name":"type: feature","color":"1f78b4","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/plotly/plotly.js/milestones/23","html_url":"https://github.com/plotly/plotly.js/milestone/23","labels_url":"https://api.github.com/repos/plotly/plotly.js/milestones/23/labels","id":2604688,"number":23,"title":"1.29.0","description":"","creator":{"login":"etpinard","id":6675409,"avatar_url":"https://avatars3.githubusercontent.com/u/6675409?v=3","gravatar_id":"","url":"https://api.github.com/users/etpinard","html_url":"https://github.com/etpinard","followers_url":"https://api.github.com/users/etpinard/followers","following_url":"https://api.github.com/users/etpinard/following{/other_user}","gists_url":"https://api.github.com/users/etpinard/gists{/gist_id}","starred_url":"https://api.github.com/users/etpinard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/etpinard/subscriptions","organizations_url":"https://api.github.com/users/etpinard/orgs","repos_url":"https://api.github.com/users/etpinard/repos","events_url":"https://api.github.com/users/etpinard/events{/privacy}","received_events_url":"https://api.github.com/users/etpinard/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":2,"state":"open","created_at":"2017-06-26T14:27:17Z","updated_at":"2017-07-07T16:28:54Z","due_on":"2017-07-04T07:00:00Z","closed_at":null},"comments":0,"created_at":"2017-07-07T16:28:54Z","updated_at":"2017-07-07T16:33:57Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/plotly/plotly.js/pulls/1861","html_url":"https://github.com/plotly/plotly.js/pull/1861","diff_url":"https://github.com/plotly/plotly.js/pull/1861.diff","patch_url":"https://github.com/plotly/plotly.js/pull/1861.patch"},"body":"Resolves #1385 (hopefully) and supersedes #1824\r\n\r\nThis PR implements `cliponaxis: false` by adding some logic around each subplot's `<g.plot>` layer. In brief, subplots that have 1 or more `cliponaxis: false` trace don't clip the `<g.plot>` layer (where all trace layers reside) and instead clip all trace module layers except `<g.scatterlayer>` separately. In `<g.scatterlayer>`, `cliponaxis: false` traces clip all line and error bars group while leaving marker and text node unclipped. Marker and text nodes visibility is then determined via `ax.isWithinRange` and set to `'hidden'` when they fall outside the axis ranges. Note that, I chose to hide those outside range nodes instead of removing them like in #1824 to more easily handle panning (see 1909034)\r\n\r\nTernary scatter `cliponaxis: false` is implement similar by mocking a few thing like `ax.isWithinRange` and subplot options in `scatterternary/plot.js`. Note that I had to add another clip path definition (see 4b5c4bb). There might be a way to DRY this up :palm_tree: \r\n\r\nMAYBEs (as in #1824):\r\n\r\n- implement cliponaxis: false for scattergeo (might leave this for another PR)\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/plotly/plotly.js/issues/comments/313731000","html_url":"https://github.com/plotly/plotly.js/pull/1861#issuecomment-313731000","issue_url":"https://api.github.com/repos/plotly/plotly.js/issues/1861","id":313731000,"user":{"login":"etpinard","id":6675409,"avatar_url":"https://avatars3.githubusercontent.com/u/6675409?v=3","gravatar_id":"","url":"https://api.github.com/users/etpinard","html_url":"https://github.com/etpinard","followers_url":"https://api.github.com/users/etpinard/followers","following_url":"https://api.github.com/users/etpinard/following{/other_user}","gists_url":"https://api.github.com/users/etpinard/gists{/gist_id}","starred_url":"https://api.github.com/users/etpinard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/etpinard/subscriptions","organizations_url":"https://api.github.com/users/etpinard/orgs","repos_url":"https://api.github.com/users/etpinard/repos","events_url":"https://api.github.com/users/etpinard/events{/privacy}","received_events_url":"https://api.github.com/users/etpinard/received_events","type":"User","site_admin":false},"created_at":"2017-07-07T16:33:57Z","updated_at":"2017-07-07T16:33:57Z","body":"@alexcjohnson @geocosmite in 7228d5d, you'll notice that the marker and text node appear below the axis labels and ticks. After some thoughts, we're thinking about adding another attribute (maybe `(x|y)axis.abovetraces: true | false`) to allow both behaviors.\r\n\r\nArguably, trace layers should _always_ be above axis labels and ticks, except for axes with `position: 'free'`. This will be implemented in another PR shortly.\r\n\r\n"}}
{"actor":{"display_login":"etpinard"}}