{"action":"created","comment":{"url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/comments/65227237","id":65227237,"diff_hunk":"@@ -0,0 +1,32 @@\n+import { Action } from 'redux';\n+\n+interface IActionCreatorAction<TPayload> extends Action {\n+    payload: TPayload;\n+}\n+\n+interface IActionCreatorBase<TPayload> {\n+    type: string;\n+    unwrap(action: Action): TPayload;\n+}\n+\n+interface IActionCreator<TPayload> extends IActionCreatorBase<TPayload> {\n+    (payload: TPayload): IActionCreatorAction<TPayload>;\n+}\n+\n+export function createActionCreator<TPayload>(type: string): IActionCreator<TPayload> {\n+    const actionCreator = (payload: TPayload) => {\n+        return {\n+            type: type,\n+            payload: payload","path":"src/request/actions/ActionCreator.ts","position":20,"original_position":20,"commit_id":"05cf3bb2e1cb47d3f0fdffd659aca065539211fd","original_commit_id":"05cf3bb2e1cb47d3f0fdffd659aca065539211fd","user":{"login":"philliphoff","id":6402946,"avatar_url":"https://avatars.githubusercontent.com/u/6402946?v=3","gravatar_id":"","url":"https://api.github.com/users/philliphoff","html_url":"https://github.com/philliphoff","followers_url":"https://api.github.com/users/philliphoff/followers","following_url":"https://api.github.com/users/philliphoff/following{/other_user}","gists_url":"https://api.github.com/users/philliphoff/gists{/gist_id}","starred_url":"https://api.github.com/users/philliphoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/philliphoff/subscriptions","organizations_url":"https://api.github.com/users/philliphoff/orgs","repos_url":"https://api.github.com/users/philliphoff/repos","events_url":"https://api.github.com/users/philliphoff/events{/privacy}","received_events_url":"https://api.github.com/users/philliphoff/received_events","type":"User","site_admin":false},"body":"The `redux` documentation recommends [`flux-standard-action`](https://github.com/acdlite/flux-standard-action) as the pattern for actions, which suggests the `payload` property instead of an \"inherited\" model.  This also tended to simplify \"unwrapping\" the actions in the reducers from a TypeScript-typed perspective.","created_at":"2016-05-31T17:31:58Z","updated_at":"2016-05-31T17:31:58Z","html_url":"https://github.com/Glimpse/Glimpse.Client.Prototype/pull/114#discussion_r65227237","pull_request_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/114","_links":{"self":{"href":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/comments/65227237"},"html":{"href":"https://github.com/Glimpse/Glimpse.Client.Prototype/pull/114#discussion_r65227237"},"pull_request":{"href":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/114"}}},"pull_request":{"url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/114","id":71645275,"html_url":"https://github.com/Glimpse/Glimpse.Client.Prototype/pull/114","diff_url":"https://github.com/Glimpse/Glimpse.Client.Prototype/pull/114.diff","patch_url":"https://github.com/Glimpse/Glimpse.Client.Prototype/pull/114.patch","issue_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/issues/114","number":114,"state":"open","locked":false,"title":"Initial support for the Data tab","user":{"login":"philliphoff","id":6402946,"avatar_url":"https://avatars.githubusercontent.com/u/6402946?v=3","gravatar_id":"","url":"https://api.github.com/users/philliphoff","html_url":"https://github.com/philliphoff","followers_url":"https://api.github.com/users/philliphoff/followers","following_url":"https://api.github.com/users/philliphoff/following{/other_user}","gists_url":"https://api.github.com/users/philliphoff/gists{/gist_id}","starred_url":"https://api.github.com/users/philliphoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/philliphoff/subscriptions","organizations_url":"https://api.github.com/users/philliphoff/orgs","repos_url":"https://api.github.com/users/philliphoff/repos","events_url":"https://api.github.com/users/philliphoff/events{/privacy}","received_events_url":"https://api.github.com/users/philliphoff/received_events","type":"User","site_admin":false},"body":"Adds a basic implementation of the Data tab, consisting of a table showing (in particular, Mongo) database operations and its associated metrics.  When an operation is selected, the command (bottom-left) panel will display a formatted version of the operation \"command\".  (For SQL, this would be the SQL command; for MongoDB, this would be the options JSON.)\r\n\r\n<img width=\"903\" alt=\"screen shot 2016-05-26 at 5 17 22 pm\" src=\"https://cloud.githubusercontent.com/assets/6402946/15594042/bb1b2e70-2366-11e6-8395-8c6900182621.png\">\r\n\r\nNotes:\r\n\r\n - This PR introduces `redux`, `react-redux`, and `reselect`; the tab is the first to be implemented using that infrastructure.\r\n - At the moment, the `redux` \"store\" only contains the data needed by this new tab; @avanderhoorn is working on how `redux` may be applied to the Client as a whole.\r\n - At the moment, the `redux` store stores a transformation of the messages that represent data operations.  I've been having an internal debate about whether the store should instead contain the raw messages and with the transformation done instead as a \"selector\" for the table component.  I think the former is preferable now, given the simplicity of the store and as it won't overlap too much of @avanderhoorn's work.  The good news is that this would be a pretty simple refactoring that has zero impact on the UI components (yay for `redux`!).\r\n - @avanderhoorn might notice that the \"master-detail\" component is re-implementation of the one used by the Web Services tab, in particular, one based on `flex-box` rather than `table`.  I couldn't get the scrolling/sizing behavior I needed borrowing that tab's implementation so I created one from scratch.  The Web Services tab should be able to move to this, now totally abstract, layout component.","created_at":"2016-05-27T00:34:18Z","updated_at":"2016-05-31T17:31:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a666f207e1f325fad110aeff9c475ce34b816a8a","assignee":{"login":"philliphoff","id":6402946,"avatar_url":"https://avatars.githubusercontent.com/u/6402946?v=3","gravatar_id":"","url":"https://api.github.com/users/philliphoff","html_url":"https://github.com/philliphoff","followers_url":"https://api.github.com/users/philliphoff/followers","following_url":"https://api.github.com/users/philliphoff/following{/other_user}","gists_url":"https://api.github.com/users/philliphoff/gists{/gist_id}","starred_url":"https://api.github.com/users/philliphoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/philliphoff/subscriptions","organizations_url":"https://api.github.com/users/philliphoff/orgs","repos_url":"https://api.github.com/users/philliphoff/repos","events_url":"https://api.github.com/users/philliphoff/events{/privacy}","received_events_url":"https://api.github.com/users/philliphoff/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/milestones/9","html_url":"https://github.com/Glimpse/Glimpse.Client.Prototype/milestones/M007","labels_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/milestones/9/labels","id":1774838,"number":9,"title":"M007","description":"","creator":{"login":"avanderhoorn","id":585619,"avatar_url":"https://avatars.githubusercontent.com/u/585619?v=3","gravatar_id":"","url":"https://api.github.com/users/avanderhoorn","html_url":"https://github.com/avanderhoorn","followers_url":"https://api.github.com/users/avanderhoorn/followers","following_url":"https://api.github.com/users/avanderhoorn/following{/other_user}","gists_url":"https://api.github.com/users/avanderhoorn/gists{/gist_id}","starred_url":"https://api.github.com/users/avanderhoorn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/avanderhoorn/subscriptions","organizations_url":"https://api.github.com/users/avanderhoorn/orgs","repos_url":"https://api.github.com/users/avanderhoorn/repos","events_url":"https://api.github.com/users/avanderhoorn/events{/privacy}","received_events_url":"https://api.github.com/users/avanderhoorn/received_events","type":"User","site_admin":false},"open_issues":15,"closed_issues":0,"state":"open","created_at":"2016-05-18T19:59:30Z","updated_at":"2016-05-27T00:34:34Z","due_on":"2016-06-09T05:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/114/commits","review_comments_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/114/comments","review_comment_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/issues/114/comments","statuses_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/statuses/05cf3bb2e1cb47d3f0fdffd659aca065539211fd","head":{"label":"Glimpse:philliphoff-datatab","ref":"philliphoff-datatab","sha":"05cf3bb2e1cb47d3f0fdffd659aca065539211fd","user":{"login":"Glimpse","id":585916,"avatar_url":"https://avatars.githubusercontent.com/u/585916?v=3","gravatar_id":"","url":"https://api.github.com/users/Glimpse","html_url":"https://github.com/Glimpse","followers_url":"https://api.github.com/users/Glimpse/followers","following_url":"https://api.github.com/users/Glimpse/following{/other_user}","gists_url":"https://api.github.com/users/Glimpse/gists{/gist_id}","starred_url":"https://api.github.com/users/Glimpse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Glimpse/subscriptions","organizations_url":"https://api.github.com/users/Glimpse/orgs","repos_url":"https://api.github.com/users/Glimpse/repos","events_url":"https://api.github.com/users/Glimpse/events{/privacy}","received_events_url":"https://api.github.com/users/Glimpse/received_events","type":"Organization","site_admin":false},"repo":{"id":27046882,"name":"Glimpse.Client.Prototype","full_name":"Glimpse/Glimpse.Client.Prototype","owner":{"login":"Glimpse","id":585916,"avatar_url":"https://avatars.githubusercontent.com/u/585916?v=3","gravatar_id":"","url":"https://api.github.com/users/Glimpse","html_url":"https://github.com/Glimpse","followers_url":"https://api.github.com/users/Glimpse/followers","following_url":"https://api.github.com/users/Glimpse/following{/other_user}","gists_url":"https://api.github.com/users/Glimpse/gists{/gist_id}","starred_url":"https://api.github.com/users/Glimpse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Glimpse/subscriptions","organizations_url":"https://api.github.com/users/Glimpse/orgs","repos_url":"https://api.github.com/users/Glimpse/repos","events_url":"https://api.github.com/users/Glimpse/events{/privacy}","received_events_url":"https://api.github.com/users/Glimpse/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Glimpse/Glimpse.Client.Prototype","description":"Glimpse v2 Client prototype","fork":false,"url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype","forks_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/forks","keys_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/teams","hooks_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/hooks","issue_events_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/issues/events{/number}","events_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/events","assignees_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/assignees{/user}","branches_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/branches{/branch}","tags_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/tags","blobs_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/git/refs{/sha}","trees_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/statuses/{sha}","languages_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/languages","stargazers_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/stargazers","contributors_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/contributors","subscribers_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/subscribers","subscription_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/subscription","commits_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/commits{/sha}","git_commits_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/git/commits{/sha}","comments_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/comments{/number}","issue_comment_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/issues/comments{/number}","contents_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/contents/{+path}","compare_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/merges","archive_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/downloads","issues_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/issues{/number}","pulls_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls{/number}","milestones_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/milestones{/number}","notifications_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/labels{/name}","releases_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/releases{/id}","deployments_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/deployments","created_at":"2014-11-23T20:44:05Z","updated_at":"2016-05-28T01:42:22Z","pushed_at":"2016-05-29T18:03:28Z","git_url":"git://github.com/Glimpse/Glimpse.Client.Prototype.git","ssh_url":"git@github.com:Glimpse/Glimpse.Client.Prototype.git","clone_url":"https://github.com/Glimpse/Glimpse.Client.Prototype.git","svn_url":"https://github.com/Glimpse/Glimpse.Client.Prototype","homepage":"","size":3007,"stargazers_count":9,"watchers_count":9,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":58,"forks":5,"open_issues":58,"watchers":9,"default_branch":"master"}},"base":{"label":"Glimpse:master","ref":"master","sha":"d597a2ef82d0c08b81c58ce3627319812b55625c","user":{"login":"Glimpse","id":585916,"avatar_url":"https://avatars.githubusercontent.com/u/585916?v=3","gravatar_id":"","url":"https://api.github.com/users/Glimpse","html_url":"https://github.com/Glimpse","followers_url":"https://api.github.com/users/Glimpse/followers","following_url":"https://api.github.com/users/Glimpse/following{/other_user}","gists_url":"https://api.github.com/users/Glimpse/gists{/gist_id}","starred_url":"https://api.github.com/users/Glimpse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Glimpse/subscriptions","organizations_url":"https://api.github.com/users/Glimpse/orgs","repos_url":"https://api.github.com/users/Glimpse/repos","events_url":"https://api.github.com/users/Glimpse/events{/privacy}","received_events_url":"https://api.github.com/users/Glimpse/received_events","type":"Organization","site_admin":false},"repo":{"id":27046882,"name":"Glimpse.Client.Prototype","full_name":"Glimpse/Glimpse.Client.Prototype","owner":{"login":"Glimpse","id":585916,"avatar_url":"https://avatars.githubusercontent.com/u/585916?v=3","gravatar_id":"","url":"https://api.github.com/users/Glimpse","html_url":"https://github.com/Glimpse","followers_url":"https://api.github.com/users/Glimpse/followers","following_url":"https://api.github.com/users/Glimpse/following{/other_user}","gists_url":"https://api.github.com/users/Glimpse/gists{/gist_id}","starred_url":"https://api.github.com/users/Glimpse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Glimpse/subscriptions","organizations_url":"https://api.github.com/users/Glimpse/orgs","repos_url":"https://api.github.com/users/Glimpse/repos","events_url":"https://api.github.com/users/Glimpse/events{/privacy}","received_events_url":"https://api.github.com/users/Glimpse/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Glimpse/Glimpse.Client.Prototype","description":"Glimpse v2 Client prototype","fork":false,"url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype","forks_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/forks","keys_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/teams","hooks_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/hooks","issue_events_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/issues/events{/number}","events_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/events","assignees_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/assignees{/user}","branches_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/branches{/branch}","tags_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/tags","blobs_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/git/refs{/sha}","trees_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/statuses/{sha}","languages_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/languages","stargazers_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/stargazers","contributors_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/contributors","subscribers_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/subscribers","subscription_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/subscription","commits_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/commits{/sha}","git_commits_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/git/commits{/sha}","comments_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/comments{/number}","issue_comment_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/issues/comments{/number}","contents_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/contents/{+path}","compare_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/merges","archive_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/downloads","issues_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/issues{/number}","pulls_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls{/number}","milestones_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/milestones{/number}","notifications_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/labels{/name}","releases_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/releases{/id}","deployments_url":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/deployments","created_at":"2014-11-23T20:44:05Z","updated_at":"2016-05-28T01:42:22Z","pushed_at":"2016-05-29T18:03:28Z","git_url":"git://github.com/Glimpse/Glimpse.Client.Prototype.git","ssh_url":"git@github.com:Glimpse/Glimpse.Client.Prototype.git","clone_url":"https://github.com/Glimpse/Glimpse.Client.Prototype.git","svn_url":"https://github.com/Glimpse/Glimpse.Client.Prototype","homepage":"","size":3007,"stargazers_count":9,"watchers_count":9,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":58,"forks":5,"open_issues":58,"watchers":9,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/114"},"html":{"href":"https://github.com/Glimpse/Glimpse.Client.Prototype/pull/114"},"issue":{"href":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/issues/114"},"comments":{"href":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/issues/114/comments"},"review_comments":{"href":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/114/comments"},"review_comment":{"href":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/pulls/114/commits"},"statuses":{"href":"https://api.github.com/repos/Glimpse/Glimpse.Client.Prototype/statuses/05cf3bb2e1cb47d3f0fdffd659aca065539211fd"}}}}
{"actor":{"display_login":"philliphoff"}}