{"action":"created","comment":{"url":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/comments/61652992","id":61652992,"diff_hunk":"@@ -0,0 +1,570 @@\n+\"use strict\";\n+\n+(function() {\n+  /**\n+  * Export Vega Tooltip API: vg.tooltip(vgView, options)\n+  * options can specify to show all fields or to show custom fields in the tooltip\n+  * and can provide titles and formats for those fields\n+  */\n+  window.vg.tooltip = function(vgView, options) {\n+    if (!options) {\n+      options = {};\n+    }\n+\n+    // initialize tooltip with data\n+    vgView.on(\"mouseover\", function(event, item) {\n+      init(event, item, options);\n+    });\n+\n+    // update tooltip position on mouse move\n+    // (important for large marks e.g. bars)\n+    vgView.on(\"mousemove\", function(event, item) {\n+      update(event, item, options);\n+    });\n+\n+    // clear tooltip\n+    vgView.on(\"mouseout\", function(event, item) {\n+      clear();\n+    });\n+  };\n+\n+  /**\n+  * Export Vega-Lite Tooltip API: vl.tooltip(vgView, vlSpec, options)\n+  * options can specify to show all fields or to show custom fields in the tooltip\n+  * we use vlSpec to supplement options\n+  */\n+  window.vl.tooltip = function(vgView, vlSpec, options) {\n+    if (!options) {\n+      options = {};\n+    }\n+\n+    options = supplementOptions(options, vlSpec);\n+\n+    // initialize tooltip with data\n+    vgView.on(\"mouseover\", function(event, item) {\n+      init(event, item, options);\n+    });\n+\n+    // update tooltip position on mouse move\n+    // (important for large marks e.g. bars)\n+    vgView.on(\"mousemove\", function(event, item) {\n+      update(event, item, options);\n+    });\n+\n+    // clear tooltip\n+    vgView.on(\"mouseout\", function(event, item) {\n+      clear();\n+    });\n+  };\n+\n+  /* Mapping from fieldDef.type to options.formatType */\n+  var formatTypeMap = {\n+    'quantitative': 'number',\n+    'ordinal': undefined,\n+    'temporal': 'time',\n+    'nominal': 'string'\n+  }\n+\n+  /**\n+  * Supplement options with vlSpec\n+  * if options.showAllFields is true or undefined, vlSpec will supplement options.fields\n+  * with all fields in the spec\n+  * if options.showAllFields is false, vlSpec will only supplement existing fields\n+  * in options.fields\n+  */\n+  function supplementOptions(options, vlSpec) {\n+    // vlSpec supplemented field configs\n+    var supplementedConfigs = [];\n+\n+    var timeFormat = vlSpec.config ? vlSpec.config.timeFormat : undefined;\n+    var numberFormat = vlSpec.config ? vlSpec.config.numberFormat : undefined;\n+\n+    // if showAllFields, supplement all fields\n+    if (options.showAllFields === true || options.showAllFields === undefined) {\n+      vl.spec.fieldDefs(vlSpec).forEach(function(fieldDef){\n+        var field = fieldDef.field;\n+\n+        // user-specified field config\n+        var userFieldConfig = getUserFieldConfig(fieldDef, options.fields);\n+\n+        // supplemented field config\n+        var suppFieldConfig = supplementField(userFieldConfig, fieldDef, timeFormat, numberFormat);\n+\n+        supplementedConfigs.push(suppFieldConfig);\n+      });\n+    }\n+    // if showAllFields is false, only supplement existing fields\n+    else {\n+      if (options.fields && options.fields.length > 0) {\n+        options.fields.forEach(function(userFieldConfig) {\n+          // find the right fieldDef\n+          var fieldDef = getFieldDef(userFieldConfig, vl.spec.fieldDefs(vlSpec));\n+\n+          // supplement the field config\n+          var suppFieldConfig = supplementField(userFieldConfig, fieldDef, timeFormat, numberFormat);\n+\n+          supplementedConfigs.push(suppFieldConfig);\n+        })\n+      }\n+    }\n+\n+    // TODO(zening): supplement binned fields\n+\n+    options.fields = supplementedConfigs;\n+\n+    return options;\n+  }\n+\n+  /**\n+  * Given a fieldDef from vlSpec, find the corresponding user-specified field config.\n+  * If we know from fieldDef that the field is aggregated, we find a user-specified\n+  * field config that matches the field name and the aggregation.\n+  * If the field is not aggregated, we just find a user-specified field config\n+  * that matches the field name.\n+  * @return a user-specified field config if there is a successful match, undefined otherwise\n+  */\n+  function getUserFieldConfig(fieldDef, optFields) {\n+    if (!fieldDef || !optFields || optFields.length <= 0) return;\n+\n+    var userFieldConfig = undefined;\n+\n+    // if aggregate, match field name and aggregate operation\n+    if (fieldDef.aggregate) {\n+      // try find the perfect match: field name equals, aggregate operation equals\n+      optFields.forEach(function(optFld) {\n+        if (!userFieldConfig && optFld.field === fieldDef.field && optFld.aggregate === fieldDef.aggregate) {\n+          userFieldConfig = optFld;\n+        }\n+      });\n+\n+      // try find the second-best match: field name equals, optFld.aggregate = undefined\n+      if (!userFieldConfig) {\n+        optFields.forEach(function(optFld) {\n+          if (!userFieldConfig && optFld.field === fieldDef.field && optFld.aggregate === undefined) {\n+            userFieldConfig = optFld;\n+          }\n+        });\n+      }\n+\n+    }\n+    // if not aggregate, just match field name\n+    else {\n+      optFields.forEach(function(optFld) {\n+        if (!userFieldConfig && optFld.field === fieldDef.field) {\n+          userFieldConfig = optFld;\n+        }\n+      });\n+    }\n+\n+    return userFieldConfig;\n+  }\n+\n+  /**\n+  * Given a user-specified field config, find the corresponding fieldDef from vlSpec.\n+  * If we know from vlSpec that the field is aggregated, then the user-specified\n+  * field config and the fieldDef should match on field name and aggregation.\n+  * If the field is not aggregated, then the user-specified field config and the\n+  * fieldDef just have to match on field name.\n+  * @return a fieldDef from vlSpec if there is a successful match, undefined otherwise\n+  */\n+  function getFieldDef(userFieldConfig, specFieldDefs) {\n+    if (!userFieldConfig || !userFieldConfig.field || !specFieldDefs) return;\n+\n+    var fieldDef = undefined;\n+\n+    // field name and aggregation both should match\n+    specFieldDefs.forEach(function(channel) {\n+      if (!fieldDef && channel.field === userFieldConfig.field) {\n+        if (channel.aggregate) {\n+          if (channel.aggregate === userFieldConfig.aggregate || userFieldConfig.aggregate === undefined) {\n+            fieldDef = channel;\n+          }\n+        }\n+        else {\n+          fieldDef = channel;\n+        }\n+      }\n+    });\n+\n+    return fieldDef;\n+  }\n+\n+  /**\n+  * Supplements a user-specified field config with a fieldDef from vlSpec, and\n+  * timeFormat and numberFormat from vlSpec.\n+  * Either userFieldConfig or fieldDef can be undefined, but they cannot both be undefined.\n+  * timeFormat and numberFormat can be undefined.\n+  * @return the supplemented field config on success, undefined on failure\n+  */\n+  function supplementField(userFieldConfig, fieldDef, timeFormat, numberFormat) {\n+    // at least one of userFieldConfig and fieldDef should exist\n+    if (!userFieldConfig && !fieldDef) {\n+      console.warn('[VgTooltip] Cannot supplement a field when user-specified field config and vlSpec field config are both empty.');\n+      return;\n+    }\n+    if (!userFieldConfig && fieldDef) userFieldConfig = {};\n+    if (userFieldConfig && !fieldDef) fieldDef = {};\n+\n+    // the supplemented field config\n+    var suppFieldConfig = {};\n+\n+    // supplement field name with underscore prefixes\n+    suppFieldConfig.field = fieldDef.field ?\n+    vl.fieldDef.field(fieldDef) : userFieldConfig.field;\n+\n+    // supplement title\n+    suppFieldConfig.title = userFieldConfig.title ?\n+    userFieldConfig.title : vl.fieldDef.title(fieldDef);\n+\n+    // supplement formatType\n+    suppFieldConfig.formatType = userFieldConfig.formatType ?\n+    userFieldConfig.formatType : formatTypeMap[fieldDef.type];\n+\n+    // supplement format based on formatType, using timeUnit, timeFormat, numberFormat\n+    if (userFieldConfig.format) {\n+      suppFieldConfig.format = userFieldConfig.format;\n+    }\n+    else {\n+      switch (suppFieldConfig.formatType) {\n+        case 'time':\n+        suppFieldConfig.format = fieldDef.timeUnit ? vl.timeUnit.format(fieldDef.timeUnit) : timeFormat;\n+        break;\n+        case 'number':\n+        suppFieldConfig.format = numberFormat;\n+        break;\n+        case 'string':\n+        default:\n+      }\n+    }\n+\n+  return suppFieldConfig;\n+  }\n+\n+\n+  /* Initialize tooltip with data */\n+  function init(event, item, options) {\n+    if( shouldShowTooltip(item) === false ) return;\n+\n+    // prepare data for tooltip\n+    var tooltipData = getTooltipData(item, options);\n+    if (!tooltipData || tooltipData.length === 0) return;\n+\n+    bindData(tooltipData);\n+\n+    updatePosition(event, options);\n+    updateTheme(options);\n+    d3.select(\"#vis-tooltip\").style(\"opacity\", 1);","path":"src/vg-tooltip.js","position":256,"original_position":256,"commit_id":"b5b41a8759ccbde25e53ce6cb20fcfd678c60b68","original_commit_id":"b5b41a8759ccbde25e53ce6cb20fcfd678c60b68","user":{"login":"kanitw","id":111269,"avatar_url":"https://avatars.githubusercontent.com/u/111269?v=3","gravatar_id":"","url":"https://api.github.com/users/kanitw","html_url":"https://github.com/kanitw","followers_url":"https://api.github.com/users/kanitw/followers","following_url":"https://api.github.com/users/kanitw/following{/other_user}","gists_url":"https://api.github.com/users/kanitw/gists{/gist_id}","starred_url":"https://api.github.com/users/kanitw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kanitw/subscriptions","organizations_url":"https://api.github.com/users/kanitw/orgs","repos_url":"https://api.github.com/users/kanitw/repos","events_url":"https://api.github.com/users/kanitw/events{/privacy}","received_events_url":"https://api.github.com/users/kanitw/received_events","type":"User","site_admin":false},"body":"why `opacity:1` rather than `display:none`?    \r\n\r\n`opacity:0` can block interaction if I understand correctly ","created_at":"2016-04-29T22:26:50Z","updated_at":"2016-04-29T22:26:50Z","html_url":"https://github.com/vega/vega-lite-tooltip/pull/16#discussion_r61652992","pull_request_url":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/16","_links":{"self":{"href":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/comments/61652992"},"html":{"href":"https://github.com/vega/vega-lite-tooltip/pull/16#discussion_r61652992"},"pull_request":{"href":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/16"}}},"pull_request":{"url":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/16","id":61795954,"html_url":"https://github.com/vega/vega-lite-tooltip/pull/16","diff_url":"https://github.com/vega/vega-lite-tooltip/pull/16.diff","patch_url":"https://github.com/vega/vega-lite-tooltip/pull/16.patch","issue_url":"https://api.github.com/repos/vega/vega-lite-tooltip/issues/16","number":16,"state":"open","locked":false,"title":"Many Milestone 1.0 Fixes","user":{"login":"ZeningQu","id":822034,"avatar_url":"https://avatars.githubusercontent.com/u/822034?v=3","gravatar_id":"","url":"https://api.github.com/users/ZeningQu","html_url":"https://github.com/ZeningQu","followers_url":"https://api.github.com/users/ZeningQu/followers","following_url":"https://api.github.com/users/ZeningQu/following{/other_user}","gists_url":"https://api.github.com/users/ZeningQu/gists{/gist_id}","starred_url":"https://api.github.com/users/ZeningQu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ZeningQu/subscriptions","organizations_url":"https://api.github.com/users/ZeningQu/orgs","repos_url":"https://api.github.com/users/ZeningQu/repos","events_url":"https://api.github.com/users/ZeningQu/events{/privacy}","received_events_url":"https://api.github.com/users/ZeningQu/received_events","type":"User","site_admin":false},"body":"* Group comment and relevant code blocks together\r\n* Set version number to pre-zero\r\n* Add build script\r\n* Remove local data\r\n* Add team credit\r\n* Add four Vega examples\r\n* Wrap tooltip functions in one module (is this right?)","created_at":"2016-03-05T01:48:30Z","updated_at":"2016-04-29T22:26:50Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8a62e3daa2da9157b7e7f9b38145bf933251772a","assignee":{"login":"kanitw","id":111269,"avatar_url":"https://avatars.githubusercontent.com/u/111269?v=3","gravatar_id":"","url":"https://api.github.com/users/kanitw","html_url":"https://github.com/kanitw","followers_url":"https://api.github.com/users/kanitw/followers","following_url":"https://api.github.com/users/kanitw/following{/other_user}","gists_url":"https://api.github.com/users/kanitw/gists{/gist_id}","starred_url":"https://api.github.com/users/kanitw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kanitw/subscriptions","organizations_url":"https://api.github.com/users/kanitw/orgs","repos_url":"https://api.github.com/users/kanitw/repos","events_url":"https://api.github.com/users/kanitw/events{/privacy}","received_events_url":"https://api.github.com/users/kanitw/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/16/commits","review_comments_url":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/16/comments","review_comment_url":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/comments{/number}","comments_url":"https://api.github.com/repos/vega/vega-lite-tooltip/issues/16/comments","statuses_url":"https://api.github.com/repos/vega/vega-lite-tooltip/statuses/b5b41a8759ccbde25e53ce6cb20fcfd678c60b68","head":{"label":"vega:zqu/many-small-quick-fixes","ref":"zqu/many-small-quick-fixes","sha":"b5b41a8759ccbde25e53ce6cb20fcfd678c60b68","user":{"login":"vega","id":11796929,"avatar_url":"https://avatars.githubusercontent.com/u/11796929?v=3","gravatar_id":"","url":"https://api.github.com/users/vega","html_url":"https://github.com/vega","followers_url":"https://api.github.com/users/vega/followers","following_url":"https://api.github.com/users/vega/following{/other_user}","gists_url":"https://api.github.com/users/vega/gists{/gist_id}","starred_url":"https://api.github.com/users/vega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vega/subscriptions","organizations_url":"https://api.github.com/users/vega/orgs","repos_url":"https://api.github.com/users/vega/repos","events_url":"https://api.github.com/users/vega/events{/privacy}","received_events_url":"https://api.github.com/users/vega/received_events","type":"Organization","site_admin":false},"repo":{"id":52128009,"name":"vega-lite-tooltip","full_name":"vega/vega-lite-tooltip","owner":{"login":"vega","id":11796929,"avatar_url":"https://avatars.githubusercontent.com/u/11796929?v=3","gravatar_id":"","url":"https://api.github.com/users/vega","html_url":"https://github.com/vega","followers_url":"https://api.github.com/users/vega/followers","following_url":"https://api.github.com/users/vega/following{/other_user}","gists_url":"https://api.github.com/users/vega/gists{/gist_id}","starred_url":"https://api.github.com/users/vega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vega/subscriptions","organizations_url":"https://api.github.com/users/vega/orgs","repos_url":"https://api.github.com/users/vega/repos","events_url":"https://api.github.com/users/vega/events{/privacy}","received_events_url":"https://api.github.com/users/vega/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/vega/vega-lite-tooltip","description":"Tooltip Plugin for Vega-Lite","fork":false,"url":"https://api.github.com/repos/vega/vega-lite-tooltip","forks_url":"https://api.github.com/repos/vega/vega-lite-tooltip/forks","keys_url":"https://api.github.com/repos/vega/vega-lite-tooltip/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vega/vega-lite-tooltip/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vega/vega-lite-tooltip/teams","hooks_url":"https://api.github.com/repos/vega/vega-lite-tooltip/hooks","issue_events_url":"https://api.github.com/repos/vega/vega-lite-tooltip/issues/events{/number}","events_url":"https://api.github.com/repos/vega/vega-lite-tooltip/events","assignees_url":"https://api.github.com/repos/vega/vega-lite-tooltip/assignees{/user}","branches_url":"https://api.github.com/repos/vega/vega-lite-tooltip/branches{/branch}","tags_url":"https://api.github.com/repos/vega/vega-lite-tooltip/tags","blobs_url":"https://api.github.com/repos/vega/vega-lite-tooltip/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vega/vega-lite-tooltip/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vega/vega-lite-tooltip/git/refs{/sha}","trees_url":"https://api.github.com/repos/vega/vega-lite-tooltip/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vega/vega-lite-tooltip/statuses/{sha}","languages_url":"https://api.github.com/repos/vega/vega-lite-tooltip/languages","stargazers_url":"https://api.github.com/repos/vega/vega-lite-tooltip/stargazers","contributors_url":"https://api.github.com/repos/vega/vega-lite-tooltip/contributors","subscribers_url":"https://api.github.com/repos/vega/vega-lite-tooltip/subscribers","subscription_url":"https://api.github.com/repos/vega/vega-lite-tooltip/subscription","commits_url":"https://api.github.com/repos/vega/vega-lite-tooltip/commits{/sha}","git_commits_url":"https://api.github.com/repos/vega/vega-lite-tooltip/git/commits{/sha}","comments_url":"https://api.github.com/repos/vega/vega-lite-tooltip/comments{/number}","issue_comment_url":"https://api.github.com/repos/vega/vega-lite-tooltip/issues/comments{/number}","contents_url":"https://api.github.com/repos/vega/vega-lite-tooltip/contents/{+path}","compare_url":"https://api.github.com/repos/vega/vega-lite-tooltip/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vega/vega-lite-tooltip/merges","archive_url":"https://api.github.com/repos/vega/vega-lite-tooltip/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vega/vega-lite-tooltip/downloads","issues_url":"https://api.github.com/repos/vega/vega-lite-tooltip/issues{/number}","pulls_url":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls{/number}","milestones_url":"https://api.github.com/repos/vega/vega-lite-tooltip/milestones{/number}","notifications_url":"https://api.github.com/repos/vega/vega-lite-tooltip/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vega/vega-lite-tooltip/labels{/name}","releases_url":"https://api.github.com/repos/vega/vega-lite-tooltip/releases{/id}","deployments_url":"https://api.github.com/repos/vega/vega-lite-tooltip/deployments","created_at":"2016-02-20T00:33:03Z","updated_at":"2016-04-07T03:14:07Z","pushed_at":"2016-04-29T21:53:27Z","git_url":"git://github.com/vega/vega-lite-tooltip.git","ssh_url":"git@github.com:vega/vega-lite-tooltip.git","clone_url":"https://github.com/vega/vega-lite-tooltip.git","svn_url":"https://github.com/vega/vega-lite-tooltip","homepage":"http://vega.github.io/vega-lite-tooltip/","size":305,"stargazers_count":1,"watchers_count":1,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":7,"forks":0,"open_issues":7,"watchers":1,"default_branch":"master"}},"base":{"label":"vega:master","ref":"master","sha":"cc0cdb61125082dc36225d0d43508b2487b53bc5","user":{"login":"vega","id":11796929,"avatar_url":"https://avatars.githubusercontent.com/u/11796929?v=3","gravatar_id":"","url":"https://api.github.com/users/vega","html_url":"https://github.com/vega","followers_url":"https://api.github.com/users/vega/followers","following_url":"https://api.github.com/users/vega/following{/other_user}","gists_url":"https://api.github.com/users/vega/gists{/gist_id}","starred_url":"https://api.github.com/users/vega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vega/subscriptions","organizations_url":"https://api.github.com/users/vega/orgs","repos_url":"https://api.github.com/users/vega/repos","events_url":"https://api.github.com/users/vega/events{/privacy}","received_events_url":"https://api.github.com/users/vega/received_events","type":"Organization","site_admin":false},"repo":{"id":52128009,"name":"vega-lite-tooltip","full_name":"vega/vega-lite-tooltip","owner":{"login":"vega","id":11796929,"avatar_url":"https://avatars.githubusercontent.com/u/11796929?v=3","gravatar_id":"","url":"https://api.github.com/users/vega","html_url":"https://github.com/vega","followers_url":"https://api.github.com/users/vega/followers","following_url":"https://api.github.com/users/vega/following{/other_user}","gists_url":"https://api.github.com/users/vega/gists{/gist_id}","starred_url":"https://api.github.com/users/vega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vega/subscriptions","organizations_url":"https://api.github.com/users/vega/orgs","repos_url":"https://api.github.com/users/vega/repos","events_url":"https://api.github.com/users/vega/events{/privacy}","received_events_url":"https://api.github.com/users/vega/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/vega/vega-lite-tooltip","description":"Tooltip Plugin for Vega-Lite","fork":false,"url":"https://api.github.com/repos/vega/vega-lite-tooltip","forks_url":"https://api.github.com/repos/vega/vega-lite-tooltip/forks","keys_url":"https://api.github.com/repos/vega/vega-lite-tooltip/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vega/vega-lite-tooltip/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vega/vega-lite-tooltip/teams","hooks_url":"https://api.github.com/repos/vega/vega-lite-tooltip/hooks","issue_events_url":"https://api.github.com/repos/vega/vega-lite-tooltip/issues/events{/number}","events_url":"https://api.github.com/repos/vega/vega-lite-tooltip/events","assignees_url":"https://api.github.com/repos/vega/vega-lite-tooltip/assignees{/user}","branches_url":"https://api.github.com/repos/vega/vega-lite-tooltip/branches{/branch}","tags_url":"https://api.github.com/repos/vega/vega-lite-tooltip/tags","blobs_url":"https://api.github.com/repos/vega/vega-lite-tooltip/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vega/vega-lite-tooltip/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vega/vega-lite-tooltip/git/refs{/sha}","trees_url":"https://api.github.com/repos/vega/vega-lite-tooltip/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vega/vega-lite-tooltip/statuses/{sha}","languages_url":"https://api.github.com/repos/vega/vega-lite-tooltip/languages","stargazers_url":"https://api.github.com/repos/vega/vega-lite-tooltip/stargazers","contributors_url":"https://api.github.com/repos/vega/vega-lite-tooltip/contributors","subscribers_url":"https://api.github.com/repos/vega/vega-lite-tooltip/subscribers","subscription_url":"https://api.github.com/repos/vega/vega-lite-tooltip/subscription","commits_url":"https://api.github.com/repos/vega/vega-lite-tooltip/commits{/sha}","git_commits_url":"https://api.github.com/repos/vega/vega-lite-tooltip/git/commits{/sha}","comments_url":"https://api.github.com/repos/vega/vega-lite-tooltip/comments{/number}","issue_comment_url":"https://api.github.com/repos/vega/vega-lite-tooltip/issues/comments{/number}","contents_url":"https://api.github.com/repos/vega/vega-lite-tooltip/contents/{+path}","compare_url":"https://api.github.com/repos/vega/vega-lite-tooltip/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vega/vega-lite-tooltip/merges","archive_url":"https://api.github.com/repos/vega/vega-lite-tooltip/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vega/vega-lite-tooltip/downloads","issues_url":"https://api.github.com/repos/vega/vega-lite-tooltip/issues{/number}","pulls_url":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls{/number}","milestones_url":"https://api.github.com/repos/vega/vega-lite-tooltip/milestones{/number}","notifications_url":"https://api.github.com/repos/vega/vega-lite-tooltip/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vega/vega-lite-tooltip/labels{/name}","releases_url":"https://api.github.com/repos/vega/vega-lite-tooltip/releases{/id}","deployments_url":"https://api.github.com/repos/vega/vega-lite-tooltip/deployments","created_at":"2016-02-20T00:33:03Z","updated_at":"2016-04-07T03:14:07Z","pushed_at":"2016-04-29T21:53:27Z","git_url":"git://github.com/vega/vega-lite-tooltip.git","ssh_url":"git@github.com:vega/vega-lite-tooltip.git","clone_url":"https://github.com/vega/vega-lite-tooltip.git","svn_url":"https://github.com/vega/vega-lite-tooltip","homepage":"http://vega.github.io/vega-lite-tooltip/","size":305,"stargazers_count":1,"watchers_count":1,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":7,"forks":0,"open_issues":7,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/16"},"html":{"href":"https://github.com/vega/vega-lite-tooltip/pull/16"},"issue":{"href":"https://api.github.com/repos/vega/vega-lite-tooltip/issues/16"},"comments":{"href":"https://api.github.com/repos/vega/vega-lite-tooltip/issues/16/comments"},"review_comments":{"href":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/16/comments"},"review_comment":{"href":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/vega/vega-lite-tooltip/pulls/16/commits"},"statuses":{"href":"https://api.github.com/repos/vega/vega-lite-tooltip/statuses/b5b41a8759ccbde25e53ce6cb20fcfd678c60b68"}}}}