{"action":"opened","number":2126,"pull_request":{"url":"https://api.github.com/repos/galaxyproject/galaxy/pulls/2126","id":66016882,"html_url":"https://github.com/galaxyproject/galaxy/pull/2126","diff_url":"https://github.com/galaxyproject/galaxy/pull/2126.diff","patch_url":"https://github.com/galaxyproject/galaxy/pull/2126.patch","issue_url":"https://api.github.com/repos/galaxyproject/galaxy/issues/2126","number":2126,"state":"open","locked":false,"title":"UI: Inifinte scrolling for history contents","user":{"login":"carlfeberhard","id":5102959,"avatar_url":"https://avatars.githubusercontent.com/u/5102959?v=3","gravatar_id":"","url":"https://api.github.com/users/carlfeberhard","html_url":"https://github.com/carlfeberhard","followers_url":"https://api.github.com/users/carlfeberhard/followers","following_url":"https://api.github.com/users/carlfeberhard/following{/other_user}","gists_url":"https://api.github.com/users/carlfeberhard/gists{/gist_id}","starred_url":"https://api.github.com/users/carlfeberhard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carlfeberhard/subscriptions","organizations_url":"https://api.github.com/users/carlfeberhard/orgs","repos_url":"https://api.github.com/users/carlfeberhard/repos","events_url":"https://api.github.com/users/carlfeberhard/events{/privacy}","received_events_url":"https://api.github.com/users/carlfeberhard/received_events","type":"User","site_admin":false},"body":"This limits the number of contents loaded into any history View (the current panel, `history/view`, published histories) to 100 entries. When the user scrolls to the bottom of the view's list, another 50 entries are loaded. This is an effort to allow analysis with especially large histories (35k contents) and to have that interface scale well.\r\n\r\nThe use of infinite scrolling may be a questionable choice compared to the alternative of simple pagination. From what I understand, infinite scrolling is most suited lists that are used for browsing items and I believe most users aren't browsing their histories but are looking for a specific item or relationship. \r\n\r\nPagination, however presents another set of problems in that it generally requires more controls and the history (at least the current history panel) is low on real estate for that. Add in that most users are more concerned with their most recent items and that the search-ability of the interface may handle the  use-case for find a specific dataset/collection.\r\n\r\nThere's undoubtedly bugs in here - the previous versions of many of the history features relied on having the complete list of contents (deleted/hidden, search, expansion, multiselect, etc.). Thanks for any feedback or bug reports.\r\n\r\nThere's also:\r\n- a bit of cleanup and using backbone better\r\n- removal of client side type id generation for the heterogenous contents collection\r\n- initial search causes a progressive loading of datasets (instead of one call to load all details)\r\n- deleted/hidden contents are not included by default by the contents and these are fetched over ajax\r\n- a move from bootstraping data in web controller methods to ajax on page load in order to move toward SPA\r\n\r\nFuture:\r\n- I'd like to expand into `mvc/base/` more, breaking up base-mvc and creating some base views as well","created_at":"2016-04-11T15:49:46Z","updated_at":"2016-04-11T15:49:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":{"url":"https://api.github.com/repos/galaxyproject/galaxy/milestones/4","html_url":"https://github.com/galaxyproject/galaxy/milestones/16.07","labels_url":"https://api.github.com/repos/galaxyproject/galaxy/milestones/4/labels","id":1682545,"number":4,"title":"16.07","description":"Tentative freeze date for Galaxy 16.07","creator":{"login":"martenson","id":1814954,"avatar_url":"https://avatars.githubusercontent.com/u/1814954?v=3","gravatar_id":"","url":"https://api.github.com/users/martenson","html_url":"https://github.com/martenson","followers_url":"https://api.github.com/users/martenson/followers","following_url":"https://api.github.com/users/martenson/following{/other_user}","gists_url":"https://api.github.com/users/martenson/gists{/gist_id}","starred_url":"https://api.github.com/users/martenson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martenson/subscriptions","organizations_url":"https://api.github.com/users/martenson/orgs","repos_url":"https://api.github.com/users/martenson/repos","events_url":"https://api.github.com/users/martenson/events{/privacy}","received_events_url":"https://api.github.com/users/martenson/received_events","type":"User","site_admin":false},"open_issues":21,"closed_issues":8,"state":"open","created_at":"2016-04-04T17:04:06Z","updated_at":"2016-04-11T15:49:46Z","due_on":"2016-07-11T04:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/galaxyproject/galaxy/pulls/2126/commits","review_comments_url":"https://api.github.com/repos/galaxyproject/galaxy/pulls/2126/comments","review_comment_url":"https://api.github.com/repos/galaxyproject/galaxy/pulls/comments{/number}","comments_url":"https://api.github.com/repos/galaxyproject/galaxy/issues/2126/comments","statuses_url":"https://api.github.com/repos/galaxyproject/galaxy/statuses/f3b8d5b0e308c5e9ef9b0a97d311d19f3f998794","head":{"label":"carlfeberhard:history-contents.limiting","ref":"history-contents.limiting","sha":"f3b8d5b0e308c5e9ef9b0a97d311d19f3f998794","user":{"login":"carlfeberhard","id":5102959,"avatar_url":"https://avatars.githubusercontent.com/u/5102959?v=3","gravatar_id":"","url":"https://api.github.com/users/carlfeberhard","html_url":"https://github.com/carlfeberhard","followers_url":"https://api.github.com/users/carlfeberhard/followers","following_url":"https://api.github.com/users/carlfeberhard/following{/other_user}","gists_url":"https://api.github.com/users/carlfeberhard/gists{/gist_id}","starred_url":"https://api.github.com/users/carlfeberhard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carlfeberhard/subscriptions","organizations_url":"https://api.github.com/users/carlfeberhard/orgs","repos_url":"https://api.github.com/users/carlfeberhard/repos","events_url":"https://api.github.com/users/carlfeberhard/events{/privacy}","received_events_url":"https://api.github.com/users/carlfeberhard/received_events","type":"User","site_admin":false},"repo":{"id":31661203,"name":"galaxy","full_name":"carlfeberhard/galaxy","owner":{"login":"carlfeberhard","id":5102959,"avatar_url":"https://avatars.githubusercontent.com/u/5102959?v=3","gravatar_id":"","url":"https://api.github.com/users/carlfeberhard","html_url":"https://github.com/carlfeberhard","followers_url":"https://api.github.com/users/carlfeberhard/followers","following_url":"https://api.github.com/users/carlfeberhard/following{/other_user}","gists_url":"https://api.github.com/users/carlfeberhard/gists{/gist_id}","starred_url":"https://api.github.com/users/carlfeberhard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carlfeberhard/subscriptions","organizations_url":"https://api.github.com/users/carlfeberhard/orgs","repos_url":"https://api.github.com/users/carlfeberhard/repos","events_url":"https://api.github.com/users/carlfeberhard/events{/privacy}","received_events_url":"https://api.github.com/users/carlfeberhard/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/carlfeberhard/galaxy","description":"Data intensive biology for everyone.","fork":true,"url":"https://api.github.com/repos/carlfeberhard/galaxy","forks_url":"https://api.github.com/repos/carlfeberhard/galaxy/forks","keys_url":"https://api.github.com/repos/carlfeberhard/galaxy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/carlfeberhard/galaxy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/carlfeberhard/galaxy/teams","hooks_url":"https://api.github.com/repos/carlfeberhard/galaxy/hooks","issue_events_url":"https://api.github.com/repos/carlfeberhard/galaxy/issues/events{/number}","events_url":"https://api.github.com/repos/carlfeberhard/galaxy/events","assignees_url":"https://api.github.com/repos/carlfeberhard/galaxy/assignees{/user}","branches_url":"https://api.github.com/repos/carlfeberhard/galaxy/branches{/branch}","tags_url":"https://api.github.com/repos/carlfeberhard/galaxy/tags","blobs_url":"https://api.github.com/repos/carlfeberhard/galaxy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/carlfeberhard/galaxy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/carlfeberhard/galaxy/git/refs{/sha}","trees_url":"https://api.github.com/repos/carlfeberhard/galaxy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/carlfeberhard/galaxy/statuses/{sha}","languages_url":"https://api.github.com/repos/carlfeberhard/galaxy/languages","stargazers_url":"https://api.github.com/repos/carlfeberhard/galaxy/stargazers","contributors_url":"https://api.github.com/repos/carlfeberhard/galaxy/contributors","subscribers_url":"https://api.github.com/repos/carlfeberhard/galaxy/subscribers","subscription_url":"https://api.github.com/repos/carlfeberhard/galaxy/subscription","commits_url":"https://api.github.com/repos/carlfeberhard/galaxy/commits{/sha}","git_commits_url":"https://api.github.com/repos/carlfeberhard/galaxy/git/commits{/sha}","comments_url":"https://api.github.com/repos/carlfeberhard/galaxy/comments{/number}","issue_comment_url":"https://api.github.com/repos/carlfeberhard/galaxy/issues/comments{/number}","contents_url":"https://api.github.com/repos/carlfeberhard/galaxy/contents/{+path}","compare_url":"https://api.github.com/repos/carlfeberhard/galaxy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/carlfeberhard/galaxy/merges","archive_url":"https://api.github.com/repos/carlfeberhard/galaxy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/carlfeberhard/galaxy/downloads","issues_url":"https://api.github.com/repos/carlfeberhard/galaxy/issues{/number}","pulls_url":"https://api.github.com/repos/carlfeberhard/galaxy/pulls{/number}","milestones_url":"https://api.github.com/repos/carlfeberhard/galaxy/milestones{/number}","notifications_url":"https://api.github.com/repos/carlfeberhard/galaxy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/carlfeberhard/galaxy/labels{/name}","releases_url":"https://api.github.com/repos/carlfeberhard/galaxy/releases{/id}","deployments_url":"https://api.github.com/repos/carlfeberhard/galaxy/deployments","created_at":"2015-03-04T14:33:29Z","updated_at":"2016-01-11T15:15:12Z","pushed_at":"2016-04-11T15:16:57Z","git_url":"git://github.com/carlfeberhard/galaxy.git","ssh_url":"git@github.com:carlfeberhard/galaxy.git","clone_url":"https://github.com/carlfeberhard/galaxy.git","svn_url":"https://github.com/carlfeberhard/galaxy","homepage":"http://galaxyproject.org/","size":105587,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"dev"}},"base":{"label":"galaxyproject:dev","ref":"dev","sha":"ebb3c1fcec988a96f2cd46309096140087ba5aaf","user":{"login":"galaxyproject","id":7937847,"avatar_url":"https://avatars.githubusercontent.com/u/7937847?v=3","gravatar_id":"","url":"https://api.github.com/users/galaxyproject","html_url":"https://github.com/galaxyproject","followers_url":"https://api.github.com/users/galaxyproject/followers","following_url":"https://api.github.com/users/galaxyproject/following{/other_user}","gists_url":"https://api.github.com/users/galaxyproject/gists{/gist_id}","starred_url":"https://api.github.com/users/galaxyproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/galaxyproject/subscriptions","organizations_url":"https://api.github.com/users/galaxyproject/orgs","repos_url":"https://api.github.com/users/galaxyproject/repos","events_url":"https://api.github.com/users/galaxyproject/events{/privacy}","received_events_url":"https://api.github.com/users/galaxyproject/received_events","type":"Organization","site_admin":false},"repo":{"id":31211061,"name":"galaxy","full_name":"galaxyproject/galaxy","owner":{"login":"galaxyproject","id":7937847,"avatar_url":"https://avatars.githubusercontent.com/u/7937847?v=3","gravatar_id":"","url":"https://api.github.com/users/galaxyproject","html_url":"https://github.com/galaxyproject","followers_url":"https://api.github.com/users/galaxyproject/followers","following_url":"https://api.github.com/users/galaxyproject/following{/other_user}","gists_url":"https://api.github.com/users/galaxyproject/gists{/gist_id}","starred_url":"https://api.github.com/users/galaxyproject/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/galaxyproject/subscriptions","organizations_url":"https://api.github.com/users/galaxyproject/orgs","repos_url":"https://api.github.com/users/galaxyproject/repos","events_url":"https://api.github.com/users/galaxyproject/events{/privacy}","received_events_url":"https://api.github.com/users/galaxyproject/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/galaxyproject/galaxy","description":"Data intensive science for everyone.","fork":false,"url":"https://api.github.com/repos/galaxyproject/galaxy","forks_url":"https://api.github.com/repos/galaxyproject/galaxy/forks","keys_url":"https://api.github.com/repos/galaxyproject/galaxy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/galaxyproject/galaxy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/galaxyproject/galaxy/teams","hooks_url":"https://api.github.com/repos/galaxyproject/galaxy/hooks","issue_events_url":"https://api.github.com/repos/galaxyproject/galaxy/issues/events{/number}","events_url":"https://api.github.com/repos/galaxyproject/galaxy/events","assignees_url":"https://api.github.com/repos/galaxyproject/galaxy/assignees{/user}","branches_url":"https://api.github.com/repos/galaxyproject/galaxy/branches{/branch}","tags_url":"https://api.github.com/repos/galaxyproject/galaxy/tags","blobs_url":"https://api.github.com/repos/galaxyproject/galaxy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/galaxyproject/galaxy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/galaxyproject/galaxy/git/refs{/sha}","trees_url":"https://api.github.com/repos/galaxyproject/galaxy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/galaxyproject/galaxy/statuses/{sha}","languages_url":"https://api.github.com/repos/galaxyproject/galaxy/languages","stargazers_url":"https://api.github.com/repos/galaxyproject/galaxy/stargazers","contributors_url":"https://api.github.com/repos/galaxyproject/galaxy/contributors","subscribers_url":"https://api.github.com/repos/galaxyproject/galaxy/subscribers","subscription_url":"https://api.github.com/repos/galaxyproject/galaxy/subscription","commits_url":"https://api.github.com/repos/galaxyproject/galaxy/commits{/sha}","git_commits_url":"https://api.github.com/repos/galaxyproject/galaxy/git/commits{/sha}","comments_url":"https://api.github.com/repos/galaxyproject/galaxy/comments{/number}","issue_comment_url":"https://api.github.com/repos/galaxyproject/galaxy/issues/comments{/number}","contents_url":"https://api.github.com/repos/galaxyproject/galaxy/contents/{+path}","compare_url":"https://api.github.com/repos/galaxyproject/galaxy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/galaxyproject/galaxy/merges","archive_url":"https://api.github.com/repos/galaxyproject/galaxy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/galaxyproject/galaxy/downloads","issues_url":"https://api.github.com/repos/galaxyproject/galaxy/issues{/number}","pulls_url":"https://api.github.com/repos/galaxyproject/galaxy/pulls{/number}","milestones_url":"https://api.github.com/repos/galaxyproject/galaxy/milestones{/number}","notifications_url":"https://api.github.com/repos/galaxyproject/galaxy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/galaxyproject/galaxy/labels{/name}","releases_url":"https://api.github.com/repos/galaxyproject/galaxy/releases{/id}","deployments_url":"https://api.github.com/repos/galaxyproject/galaxy/deployments","created_at":"2015-02-23T14:18:06Z","updated_at":"2016-04-11T15:42:12Z","pushed_at":"2016-04-11T15:30:16Z","git_url":"git://github.com/galaxyproject/galaxy.git","ssh_url":"git@github.com:galaxyproject/galaxy.git","clone_url":"https://github.com/galaxyproject/galaxy.git","svn_url":"https://github.com/galaxyproject/galaxy","homepage":"https://galaxyproject.org/","size":128641,"stargazers_count":128,"watchers_count":128,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":181,"mirror_url":null,"open_issues_count":369,"forks":181,"open_issues":369,"watchers":128,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/galaxyproject/galaxy/pulls/2126"},"html":{"href":"https://github.com/galaxyproject/galaxy/pull/2126"},"issue":{"href":"https://api.github.com/repos/galaxyproject/galaxy/issues/2126"},"comments":{"href":"https://api.github.com/repos/galaxyproject/galaxy/issues/2126/comments"},"review_comments":{"href":"https://api.github.com/repos/galaxyproject/galaxy/pulls/2126/comments"},"review_comment":{"href":"https://api.github.com/repos/galaxyproject/galaxy/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/galaxyproject/galaxy/pulls/2126/commits"},"statuses":{"href":"https://api.github.com/repos/galaxyproject/galaxy/statuses/f3b8d5b0e308c5e9ef9b0a97d311d19f3f998794"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":41,"additions":1973,"deletions":1803,"changed_files":103}}