{"action":"created","issue":{"url":"https://api.github.com/repos/bokeh/bokeh/issues/3914","repository_url":"https://api.github.com/repos/bokeh/bokeh","labels_url":"https://api.github.com/repos/bokeh/bokeh/issues/3914/labels{/name}","comments_url":"https://api.github.com/repos/bokeh/bokeh/issues/3914/comments","events_url":"https://api.github.com/repos/bokeh/bokeh/issues/3914/events","html_url":"https://github.com/bokeh/bokeh/issues/3914","id":135498344,"number":3914,"title":"Tasks for Improved Layout","user":{"login":"bryevdv","id":1078448,"avatar_url":"https://avatars.githubusercontent.com/u/1078448?v=3","gravatar_id":"","url":"https://api.github.com/users/bryevdv","html_url":"https://github.com/bryevdv","followers_url":"https://api.github.com/users/bryevdv/followers","following_url":"https://api.github.com/users/bryevdv/following{/other_user}","gists_url":"https://api.github.com/users/bryevdv/gists{/gist_id}","starred_url":"https://api.github.com/users/bryevdv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bryevdv/subscriptions","organizations_url":"https://api.github.com/users/bryevdv/orgs","repos_url":"https://api.github.com/users/bryevdv/repos","events_url":"https://api.github.com/users/bryevdv/events{/privacy}","received_events_url":"https://api.github.com/users/bryevdv/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/bokeh/bokeh/labels/type:%20feature","name":"type: feature","color":"53777A"}],"state":"open","locked":false,"assignee":{"login":"birdsarah","id":1796208,"avatar_url":"https://avatars.githubusercontent.com/u/1796208?v=3","gravatar_id":"","url":"https://api.github.com/users/birdsarah","html_url":"https://github.com/birdsarah","followers_url":"https://api.github.com/users/birdsarah/followers","following_url":"https://api.github.com/users/birdsarah/following{/other_user}","gists_url":"https://api.github.com/users/birdsarah/gists{/gist_id}","starred_url":"https://api.github.com/users/birdsarah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/birdsarah/subscriptions","organizations_url":"https://api.github.com/users/birdsarah/orgs","repos_url":"https://api.github.com/users/birdsarah/repos","events_url":"https://api.github.com/users/birdsarah/events{/privacy}","received_events_url":"https://api.github.com/users/birdsarah/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/bokeh/bokeh/milestones/23","html_url":"https://github.com/bokeh/bokeh/milestones/0.12","labels_url":"https://api.github.com/repos/bokeh/bokeh/milestones/23/labels","id":1477666,"number":23,"title":"0.12","description":"","creator":{"login":"mattpap","id":27475,"avatar_url":"https://avatars.githubusercontent.com/u/27475?v=3","gravatar_id":"","url":"https://api.github.com/users/mattpap","html_url":"https://github.com/mattpap","followers_url":"https://api.github.com/users/mattpap/followers","following_url":"https://api.github.com/users/mattpap/following{/other_user}","gists_url":"https://api.github.com/users/mattpap/gists{/gist_id}","starred_url":"https://api.github.com/users/mattpap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattpap/subscriptions","organizations_url":"https://api.github.com/users/mattpap/orgs","repos_url":"https://api.github.com/users/mattpap/repos","events_url":"https://api.github.com/users/mattpap/events{/privacy}","received_events_url":"https://api.github.com/users/mattpap/received_events","type":"User","site_admin":false},"open_issues":45,"closed_issues":312,"state":"open","created_at":"2015-12-29T23:54:47Z","updated_at":"2016-04-13T05:59:45Z","due_on":"2016-04-30T05:00:00Z","closed_at":null},"comments":1,"created_at":"2016-02-22T18:18:07Z","updated_at":"2016-04-13T06:31:08Z","closed_at":null,"body":"Initial rough task dump, in no particular order for now\r\n\r\n* [ ] tests for layout algorithm. Especially be sure to cover all the different constraints that Box implements\r\n* [ ] move all layout code to views rather than models\r\n* [ ] drive all render/layout requests through a single function on `Document`\r\n* [ ] make Plot and other widgets implement Layoutable\r\n* [ ] make slider, input, etc. consistently spaced when in a box (so visually there's the same whitespace between each item in a column in particular)\r\n* [ ] add \"framed\" property to group by border or shading items in a box\r\n* [ ] add control over individual component sizing:\r\n   * set minimum width, height, or both\r\n   * set maximum width, height, or both\r\n   * set aspect ratio (either width or height must then be unset) (can you set a range for aspect ratio?)\r\n   * set whether to be the same size as rest of box or not\r\n   * be sure incoherent size constraints warn or are impossible\r\n* [ ] get rid of HTML table for toolbar / make toolbar a layout-able widget\r\n* [ ] see if canvas layout can somehow be unified with or use similar mechanisms as box layout\r\n* [ ] replace hbox and vbox with Row and Column"},"comment":{"url":"https://api.github.com/repos/bokeh/bokeh/issues/comments/209252312","html_url":"https://github.com/bokeh/bokeh/issues/3914#issuecomment-209252312","issue_url":"https://api.github.com/repos/bokeh/bokeh/issues/3914","id":209252312,"user":{"login":"birdsarah","id":1796208,"avatar_url":"https://avatars.githubusercontent.com/u/1796208?v=3","gravatar_id":"","url":"https://api.github.com/users/birdsarah","html_url":"https://github.com/birdsarah","followers_url":"https://api.github.com/users/birdsarah/followers","following_url":"https://api.github.com/users/birdsarah/following{/other_user}","gists_url":"https://api.github.com/users/birdsarah/gists{/gist_id}","starred_url":"https://api.github.com/users/birdsarah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/birdsarah/subscriptions","organizations_url":"https://api.github.com/users/birdsarah/orgs","repos_url":"https://api.github.com/users/birdsarah/repos","events_url":"https://api.github.com/users/birdsarah/events{/privacy}","received_events_url":"https://api.github.com/users/birdsarah/received_events","type":"User","site_admin":false},"created_at":"2016-04-13T06:31:08Z","updated_at":"2016-04-13T06:31:08Z","body":"@bryevdv I have opened an issue https://github.com/bokeh/bokeh/issues/4164 which describes the big picture and the proposed work.\r\n\r\nI think we can close this issue. Of the above todos you've written I'd break them into the following groups:\r\n\r\nIn proposal #4164 in one way or another\r\n* [ ] get rid of HTML table for toolbar / make toolbar a layout-able widget\r\n* [ ] replace hbox and vbox with Row and Column\r\n* [ ] see if canvas layout can somehow be unified with or use similar mechanisms as box layout\r\n* [ ] tests for layout algorithm. Especially be sure to cover all the different constraints that Box implements (given that PR shoudl have tests)\r\n* [ ] make Plot and other widgets implement Layoutable (Layoutable isn't a thing - but there are things like it)\r\n* [ ] make slider, input, etc. consistently spaced when in a box (so visually there's the same whitespace between each item in a column in particular)\r\n\r\nDon't think we should do this:\r\n* [ ] move all layout code to views rather than models (I couldn't find a way to do this although I have cleaned up layout code a lot)\r\n\r\nDo we need this for now?\r\n* [ ] add \"framed\" property to group by border or shading items in a box (this is a nice idea that could come later)\r\n* [ ] drive all render/layout requests through a single function on `Document` (re-factoring the rendering on top of the solver/constraints stuff proved too much for my brain)\r\n* [ ] add control over individual component sizing:\r\n   * set minimum width, height, or both\r\n   * set maximum width, height, or both\r\n   * set aspect ratio (either width or height must then be unset) (can you set a range for aspect ratio?)\r\n   * set whether to be the same size as rest of box or not\r\n   * be sure incoherent size constraints warn or are impossible\r\n\r\nFor the last one - parts are in #4164, but I think other features can come along after an initial layout implementation."}}