{"action":"created","comment":{"url":"https://api.github.com/repos/apache/zeppelin/pulls/comments/90169855","pull_request_review_id":10692216,"id":90169855,"diff_hunk":"@@ -0,0 +1,199 @@\n+/*\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ *\n+ *     http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+'use strict';\n+\n+var zeppelin = zeppelin || {};\n+\n+/**\n+ * HandsonHelper class\n+ */\n+zeppelin.HandsonHelper = function(columns, rows, comment) {\n+  this.columns = columns || [];\n+  this.rows = rows || [];\n+  this.comment = comment || '';\n+};\n+\n+zeppelin.HandsonHelper.prototype.getHandsonTableConfig = function(columns, columnNames, resultRows) {\n+  return {\n+    colHeaders: columnNames,\n+    data: resultRows,\n+    rowHeaders: false,\n+    stretchH: 'all',\n+    sortIndicator: true,\n+    columns: columns,\n+    columnSorting: true,\n+    contextMenu: false,\n+    manualColumnResize: true,\n+    manualRowResize: true,\n+    readOnly: true,\n+    readOnlyCellClassName: '',\n+    fillHandle: false,\n+    fragmentSelection: true,\n+    disableVisualSelection: true,\n+    cells: function(ro, co, pro) {\n+      var cellProperties = {};\n+      var colType = columns[co].type;\n+      cellProperties.renderer = function(instance, td, row, col, prop, value, cellProperties) {\n+        _cellRenderer(instance, td, row, col, prop, value, cellProperties, colType);\n+      };\n+      return cellProperties;\n+    },\n+    afterGetColHeader: function(col, TH) {\n+      var instance = this;\n+      var menu = _buildDropDownMenu(columns[col].type);\n+      var button = _buildTypeSwitchButton();\n+\n+      _addButtonMenuEvent(button, menu);\n+\n+      Handsontable.Dom.addEvent(menu, 'click', function(event) {\n+        if (event.target.nodeName === 'LI') {\n+          _setColumnType(columns, event.target.data.colType, instance, col);\n+        }\n+      });\n+      if (TH.firstChild.lastChild.nodeName === 'BUTTON') {\n+        TH.firstChild.removeChild(TH.firstChild.lastChild);\n+      }\n+      TH.firstChild.appendChild(button);\n+      TH.style['white-space'] = 'normal';\n+    }\n+  };\n+};\n+\n+/*\n+** Private Service Functions\n+*/\n+\n+function _addButtonMenuEvent(button, menu) {\n+  Handsontable.Dom.addEvent(button, 'click', function(event) {\n+    var changeTypeMenu;\n+    var position;\n+    var removeMenu;\n+\n+    document.body.appendChild(menu);\n+\n+    event.preventDefault();\n+    event.stopImmediatePropagation();\n+\n+    changeTypeMenu = document.querySelectorAll('.changeTypeMenu');\n+\n+    for (var i = 0, len = changeTypeMenu.length; i < len; i++) {\n+      changeTypeMenu[i].style.display = 'none';\n+    }\n+    menu.style.display = 'block';\n+    position = button.getBoundingClientRect();\n+\n+    menu.style.top = (position.top + (window.scrollY || window.pageYOffset)) + 2 + 'px';\n+    menu.style.left = (position.left) + 'px';\n+\n+    removeMenu = function(event) {\n+      if (menu.parentNode) {\n+        menu.parentNode.removeChild(menu);\n+      }\n+    };\n+    Handsontable.Dom.removeEvent(document, 'click', removeMenu);\n+    Handsontable.Dom.addEvent(document, 'click', removeMenu);\n+  });\n+}\n+\n+function _buildDropDownMenu(activeCellType) {\n+  var menu = document.createElement('UL');\n+  var types = ['text', 'numeric', 'date'];\n+  var item;\n+\n+  menu.className = 'changeTypeMenu';\n+\n+  for (var i = 0, len = types.length; i < len; i++) {\n+    item = document.createElement('LI');\n+    if ('innerText' in item) {\n+      item.innerText = types[i];\n+    } else {\n+      item.textContent = types[i];\n+    }\n+\n+    item.data = {'colType': types[i]};\n+\n+    if (activeCellType === types[i]) {\n+      item.className = 'active';\n+    }\n+    menu.appendChild(item);\n+  }\n+\n+  return menu;\n+}\n+\n+function _buildTypeSwitchButton() {\n+  var button = document.createElement('BUTTON');\n+\n+  button.innerHTML = '\\u25BC';\n+  button.className = 'changeType';\n+\n+  return button;\n+}\n+\n+function _isNumeric(value) {\n+  if (!isNaN(value)) {\n+    if (value.length !== 0) {\n+      if (Number(value) <= Number.MAX_SAFE_INTEGER && Number(value) >= Number.MIN_SAFE_INTEGER) {\n+        return true;\n+      }\n+    }\n+  }\n+  return false;\n+}\n+\n+function _cellRenderer(instance, td, row, col, prop, value, cellProperties, colType) {\n+  if (colType === 'numeric' && _isNumeric(value)) {\n+    cellProperties.format = '0,0.[00000]';\n+    td.style.textAlign = 'left';\n+    Handsontable.renderers.NumericRenderer.apply(this, arguments);\n+  } else if (value.length > '%html'.length && '%html ' === value.substring(0, '%html '.length)) {\n+    td.innerHTML = value.substring('%html'.length);\n+  } else {\n+    Handsontable.renderers.TextRenderer.apply(this, arguments);\n+  }\n+}\n+\n+function _dateValidator(value, callback) {\n+  var d = moment(value);\n+  return callback(d.isValid() ? true : false);","path":"zeppelin-web/src/app/handsontable/handsonHelper.js","position":169,"original_position":169,"commit_id":"ba60cb073e2c89e1fd9978c6e81a4ff3c172bed9","original_commit_id":"ba60cb073e2c89e1fd9978c6e81a4ff3c172bed9","user":{"login":"felizbear","id":5688346,"avatar_url":"https://avatars.githubusercontent.com/u/5688346?v=3","gravatar_id":"","url":"https://api.github.com/users/felizbear","html_url":"https://github.com/felizbear","followers_url":"https://api.github.com/users/felizbear/followers","following_url":"https://api.github.com/users/felizbear/following{/other_user}","gists_url":"https://api.github.com/users/felizbear/gists{/gist_id}","starred_url":"https://api.github.com/users/felizbear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/felizbear/subscriptions","organizations_url":"https://api.github.com/users/felizbear/orgs","repos_url":"https://api.github.com/users/felizbear/repos","events_url":"https://api.github.com/users/felizbear/events{/privacy}","received_events_url":"https://api.github.com/users/felizbear/received_events","type":"User","site_admin":false},"body":"do you mind changing this to `return callback(d.isValid());`?\r\n\r\n`d.isValid()` already returns boolean, so the ternary creates unnecessary cognitive strain for the reader","created_at":"2016-11-30T05:13:06Z","updated_at":"2016-11-30T05:13:06Z","html_url":"https://github.com/apache/zeppelin/pull/1500#discussion_r90169855","pull_request_url":"https://api.github.com/repos/apache/zeppelin/pulls/1500","_links":{"self":{"href":"https://api.github.com/repos/apache/zeppelin/pulls/comments/90169855"},"html":{"href":"https://github.com/apache/zeppelin/pull/1500#discussion_r90169855"},"pull_request":{"href":"https://api.github.com/repos/apache/zeppelin/pulls/1500"}}},"pull_request":{"url":"https://api.github.com/repos/apache/zeppelin/pulls/1500","id":88696080,"html_url":"https://github.com/apache/zeppelin/pull/1500","diff_url":"https://github.com/apache/zeppelin/pull/1500.diff","patch_url":"https://github.com/apache/zeppelin/pull/1500.patch","issue_url":"https://api.github.com/repos/apache/zeppelin/issues/1500","number":1500,"state":"open","locked":false,"title":"[ZEPPELIN-1371]add text/numeric conversion support to table display","user":{"login":"Peilin-Yang","id":3334391,"avatar_url":"https://avatars.githubusercontent.com/u/3334391?v=3","gravatar_id":"","url":"https://api.github.com/users/Peilin-Yang","html_url":"https://github.com/Peilin-Yang","followers_url":"https://api.github.com/users/Peilin-Yang/followers","following_url":"https://api.github.com/users/Peilin-Yang/following{/other_user}","gists_url":"https://api.github.com/users/Peilin-Yang/gists{/gist_id}","starred_url":"https://api.github.com/users/Peilin-Yang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Peilin-Yang/subscriptions","organizations_url":"https://api.github.com/users/Peilin-Yang/orgs","repos_url":"https://api.github.com/users/Peilin-Yang/repos","events_url":"https://api.github.com/users/Peilin-Yang/events{/privacy}","received_events_url":"https://api.github.com/users/Peilin-Yang/received_events","type":"User","site_admin":false},"body":"### What is this PR for?\n\nWe people in Twitter have great demand of adding a flexible drop down menu for the columns in the tables which enables the text/numeric conversion.\nThis is because people want some columns to be of string type which, for example, fits to the underlying DB definition.\nThe use cases of the change include:\n1. For now sorting on the columns is always lexicographically because Zeppelin front end treats the data as strings. It the values in the table can be convertible between string and number then we can sort the column by numeric values. I have filed another ticket for this: https://issues.apache.org/jira/browse/ZEPPELIN-1372\n2. Since the users know more about their data than us it would be nice if we let the users decide what is the real type of their data. It is annoying if user wants the column to be strings but the front end forcefully inserts commas in it. In some scenarios, users may also want to copy/paste the table to somewhere else. If people want to remove the commas before other actions then that will be a nightmare.... \n### What type of PR is it?\n\n[Improvement | Feature]\n### Todos\n- [ ] - Task\n### What is the Jira issue?\n- https://issues.apache.org/jira/browse/ZEPPELIN-1371\n### How should this be tested?\n1. Click on the dropdown menu would convert the text/number of that column.\n2. Other functionalities esp. the sorting function should not be affected.\n### Screenshots (if appropriate)\n\n![image](https://cloud.githubusercontent.com/assets/3334391/18445617/76071f8e-78ec-11e6-93a6-fdcf7b85b6e9.png)\n![image](https://cloud.githubusercontent.com/assets/3334391/18446601/16cff4f0-78f1-11e6-9fd6-4010b5d77f17.png)\n### Questions:\n- Does the licenses files need update? No\n- Is there breaking changes for older versions? Probably a noticeable change in UI\n- Does this needs documentation? No\n","created_at":"2016-10-10T16:50:47Z","updated_at":"2016-11-30T05:13:06Z","closed_at":null,"merged_at":null,"merge_commit_sha":"50ca9b7b4858830542fa8f6a4742a34f5452acc9","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/apache/zeppelin/pulls/1500/commits","review_comments_url":"https://api.github.com/repos/apache/zeppelin/pulls/1500/comments","review_comment_url":"https://api.github.com/repos/apache/zeppelin/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apache/zeppelin/issues/1500/comments","statuses_url":"https://api.github.com/repos/apache/zeppelin/statuses/ba60cb073e2c89e1fd9978c6e81a4ff3c172bed9","head":{"label":"Peilin-Yang:ypeilin/table_num_cell_format","ref":"ypeilin/table_num_cell_format","sha":"ba60cb073e2c89e1fd9978c6e81a4ff3c172bed9","user":{"login":"Peilin-Yang","id":3334391,"avatar_url":"https://avatars.githubusercontent.com/u/3334391?v=3","gravatar_id":"","url":"https://api.github.com/users/Peilin-Yang","html_url":"https://github.com/Peilin-Yang","followers_url":"https://api.github.com/users/Peilin-Yang/followers","following_url":"https://api.github.com/users/Peilin-Yang/following{/other_user}","gists_url":"https://api.github.com/users/Peilin-Yang/gists{/gist_id}","starred_url":"https://api.github.com/users/Peilin-Yang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Peilin-Yang/subscriptions","organizations_url":"https://api.github.com/users/Peilin-Yang/orgs","repos_url":"https://api.github.com/users/Peilin-Yang/repos","events_url":"https://api.github.com/users/Peilin-Yang/events{/privacy}","received_events_url":"https://api.github.com/users/Peilin-Yang/received_events","type":"User","site_admin":false},"repo":{"id":66301256,"name":"zeppelin","full_name":"Peilin-Yang/zeppelin","owner":{"login":"Peilin-Yang","id":3334391,"avatar_url":"https://avatars.githubusercontent.com/u/3334391?v=3","gravatar_id":"","url":"https://api.github.com/users/Peilin-Yang","html_url":"https://github.com/Peilin-Yang","followers_url":"https://api.github.com/users/Peilin-Yang/followers","following_url":"https://api.github.com/users/Peilin-Yang/following{/other_user}","gists_url":"https://api.github.com/users/Peilin-Yang/gists{/gist_id}","starred_url":"https://api.github.com/users/Peilin-Yang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Peilin-Yang/subscriptions","organizations_url":"https://api.github.com/users/Peilin-Yang/orgs","repos_url":"https://api.github.com/users/Peilin-Yang/repos","events_url":"https://api.github.com/users/Peilin-Yang/events{/privacy}","received_events_url":"https://api.github.com/users/Peilin-Yang/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Peilin-Yang/zeppelin","description":"Mirror of Apache Zeppelin","fork":true,"url":"https://api.github.com/repos/Peilin-Yang/zeppelin","forks_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/forks","keys_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/teams","hooks_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/hooks","issue_events_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/issues/events{/number}","events_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/events","assignees_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/assignees{/user}","branches_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/branches{/branch}","tags_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/tags","blobs_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/git/refs{/sha}","trees_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/statuses/{sha}","languages_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/languages","stargazers_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/stargazers","contributors_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/contributors","subscribers_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/subscribers","subscription_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/subscription","commits_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/commits{/sha}","git_commits_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/git/commits{/sha}","comments_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/comments{/number}","issue_comment_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/issues/comments{/number}","contents_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/contents/{+path}","compare_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/merges","archive_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/downloads","issues_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/issues{/number}","pulls_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/pulls{/number}","milestones_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/milestones{/number}","notifications_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/labels{/name}","releases_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/releases{/id}","deployments_url":"https://api.github.com/repos/Peilin-Yang/zeppelin/deployments","created_at":"2016-08-22T19:19:08Z","updated_at":"2016-08-22T19:19:11Z","pushed_at":"2016-11-26T02:09:28Z","git_url":"git://github.com/Peilin-Yang/zeppelin.git","ssh_url":"git@github.com:Peilin-Yang/zeppelin.git","clone_url":"https://github.com/Peilin-Yang/zeppelin.git","svn_url":"https://github.com/Peilin-Yang/zeppelin","homepage":"","size":46636,"stargazers_count":0,"watchers_count":0,"language":"Java","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":"master"}},"base":{"label":"apache:master","ref":"master","sha":"95895d1fc33212afad075f01f5b28254c0d08800","user":{"login":"apache","id":47359,"avatar_url":"https://avatars.githubusercontent.com/u/47359?v=3","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"repo":{"id":32848140,"name":"zeppelin","full_name":"apache/zeppelin","owner":{"login":"apache","id":47359,"avatar_url":"https://avatars.githubusercontent.com/u/47359?v=3","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apache/zeppelin","description":"Mirror of Apache Zeppelin","fork":false,"url":"https://api.github.com/repos/apache/zeppelin","forks_url":"https://api.github.com/repos/apache/zeppelin/forks","keys_url":"https://api.github.com/repos/apache/zeppelin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/zeppelin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/zeppelin/teams","hooks_url":"https://api.github.com/repos/apache/zeppelin/hooks","issue_events_url":"https://api.github.com/repos/apache/zeppelin/issues/events{/number}","events_url":"https://api.github.com/repos/apache/zeppelin/events","assignees_url":"https://api.github.com/repos/apache/zeppelin/assignees{/user}","branches_url":"https://api.github.com/repos/apache/zeppelin/branches{/branch}","tags_url":"https://api.github.com/repos/apache/zeppelin/tags","blobs_url":"https://api.github.com/repos/apache/zeppelin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/zeppelin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/zeppelin/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/zeppelin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/zeppelin/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/zeppelin/languages","stargazers_url":"https://api.github.com/repos/apache/zeppelin/stargazers","contributors_url":"https://api.github.com/repos/apache/zeppelin/contributors","subscribers_url":"https://api.github.com/repos/apache/zeppelin/subscribers","subscription_url":"https://api.github.com/repos/apache/zeppelin/subscription","commits_url":"https://api.github.com/repos/apache/zeppelin/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/zeppelin/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/zeppelin/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/zeppelin/issues/comments{/number}","contents_url":"https://api.github.com/repos/apache/zeppelin/contents/{+path}","compare_url":"https://api.github.com/repos/apache/zeppelin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/zeppelin/merges","archive_url":"https://api.github.com/repos/apache/zeppelin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/zeppelin/downloads","issues_url":"https://api.github.com/repos/apache/zeppelin/issues{/number}","pulls_url":"https://api.github.com/repos/apache/zeppelin/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/zeppelin/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/zeppelin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/zeppelin/labels{/name}","releases_url":"https://api.github.com/repos/apache/zeppelin/releases{/id}","deployments_url":"https://api.github.com/repos/apache/zeppelin/deployments","created_at":"2015-03-25T07:00:06Z","updated_at":"2016-11-30T00:02:36Z","pushed_at":"2016-11-30T05:12:14Z","git_url":"git://github.com/apache/zeppelin.git","ssh_url":"git@github.com:apache/zeppelin.git","clone_url":"https://github.com/apache/zeppelin.git","svn_url":"https://github.com/apache/zeppelin","homepage":"","size":134348,"stargazers_count":2239,"watchers_count":2239,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":1138,"mirror_url":"git://git.apache.org/incubator-zeppelin.git","open_issues_count":122,"forks":1138,"open_issues":122,"watchers":2239,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/zeppelin/pulls/1500"},"html":{"href":"https://github.com/apache/zeppelin/pull/1500"},"issue":{"href":"https://api.github.com/repos/apache/zeppelin/issues/1500"},"comments":{"href":"https://api.github.com/repos/apache/zeppelin/issues/1500/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/zeppelin/pulls/1500/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/zeppelin/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apache/zeppelin/pulls/1500/commits"},"statuses":{"href":"https://api.github.com/repos/apache/zeppelin/statuses/ba60cb073e2c89e1fd9978c6e81a4ff3c172bed9"}}}}
{"actor":{"display_login":"felizbear"}}