{"action":"created","comment":{"url":"https://api.github.com/repos/Caleydo/lineup.js/pulls/comments/88483839","pull_request_review_id":9056483,"id":88483839,"diff_hunk":"@@ -203,16 +214,436 @@ export class DefaultCellRenderer implements ICellRenderer {\n     ctx.restore();\n   }\n \n-  mouseEnterCanvas(ctx:CanvasRenderingContext2D, col:model.Column, row:any, index:number, context:IRenderContext) {\n+  mouseEnterCanvas(ctx: CanvasRenderingContext2D, col: model.Column, row: any, index: number, context: IRenderContext) {\n     //TODO\n   }\n }\n \n+// class MyCustomCellRenderer extends DefaultCellRenderer {\n+//   render($col: d3.Selection<any>, col: model.MyColumn, rows: any[], context: IRenderContext) {\n+//\n+//     var $rows = $col.datum(col).selectAll('path.shift').data(rows, context.rowKey);\n+//     $rows.enter().append('path').attr({\n+//       'class': 'shift',\n+//       'data-index': (d, i) => i,\n+//       transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellPrevY(i) + ')'\n+//     });\n+//     var f = col.getWidth() / 100;\n+//\n+//     $rows.attr('d', function (d, i) {\n+//       var value = col.getValue(d);\n+//\n+//       var left = value * f, right = value.max * f, center = value.mean * f;\n+//       var top = context.option('rowPadding', 1);\n+//       var bottom = Math.max(context.rowHeight(i) - top, 0);\n+//       var middle = (bottom - top) / 2;\n+//       return 'M' + left + ',' + middle + 'L' + right + ',' + middle +\n+//         'M' + left + ',' + top + 'L' + left + ',' + bottom +\n+//         'M' + center + ',' + top + 'L' + center + ',' + bottom +\n+//         'M' + right + ',' + top + 'L' + right + ',' + bottom;\n+//     });\n+//     context.animated($rows).attr({\n+//       transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellY(i) + ')'\n+//     });\n+//     $rows.exit().remove();\n+//   }\n+//\n+//   findRow($col: d3.Selection<any>, index: number) {\n+//     return $col.selectAll('path.shift[data-index=\"' + index + '\"]');\n+//   }\n+// }\n+\n+class HeatmapCellRenderer extends DefaultCellRenderer {\n+  render($col: d3.Selection<any>, col: model.MyColumn, rows: any[], context: IRenderContext) {\n+\n+    var $rows = $col.datum(col).selectAll('g.heatmapcell').data(rows, context.rowKey);\n+    var $rows_enter = $rows.enter().append('g').attr({\n+      'class': 'heatmapcell',\n+      'data-index': (d, i) => i,\n+      transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellPrevY(i) + ')'\n+    });\n+\n+    function cell_dim(total, cells) {\n+      return (total / cells);\n+    }\n+\n+\n+    var total_width = 1;\n+    var cols = 1;\n+    var color: any = d3.scale.linear<number, string>();\n+    var min = col.desc.sdomain[0], max = col.desc.sdomain[1];\n+    var colorrange = col.desc.colorrange;\n+\n+    var $rects = $rows_enter.selectAll('rect').data(function (d, i) {\n+      var value = col.getValue(d);\n+\n+      cols = value.length;\n+      total_width = col.getWidth();\n+      return (value);\n+    });\n+\n+    color = (min < 0) ? color.domain([min, 0, max]).range(colorrange)\n+      : color.domain([min, max]).range([colorrange[1],colorrange[2]]);\n+\n+    $rects.enter().append('rect');\n+    $rects.attr({\n+\n+      'data-index': (d, i) => i,\n+\n+      'width': cell_dim(total_width, cols),\n+      'height': (d, i) => (context.rowHeight(i)),\n+      'x': function (d) {\n+\n+        var prev = this.previousSibling; // One previous step information.\n+        return (prev === null) ? 0 : parseFloat(d3.select(prev).attr('x')) + parseFloat(d3.select(prev).attr('width'));\n+      },\n+      'y': 1,\n+      'fill': color\n+    });\n+\n+    context.animated($rows).attr({\n+      transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellY(i) + ')'\n+    });\n+    $rows.exit().remove();\n+  }\n+\n+  findRow($col: d3.Selection<any>, index: number) {\n+    return $col.selectAll('rect.shift[data-index=\"' + index + '\"]');\n+  }\n+}\n+\n+class SparklineCellRenderer extends DefaultCellRenderer {\n+  render($col: d3.Selection<any>, col: model.MyColumn, rows: any[], context: IRenderContext) {\n+    var $rows = $col.datum(col).selectAll('g.sparklinecell').data(rows, context.rowKey);\n+\n+    var $rows_enter = $rows.enter().append('g').attr({\n+      'class': 'sparklinecell',\n+      transform: function (d, i) {\n+        return 'translate(' + context.cellX(i) + ',' + context.cellPrevY(i) + ')';\n+      }\n+    });\n+    $rows_enter.append('path').attr('class', 'sparkline');\n+\n+       var min = col.desc.sdomain[0], max = col.desc.sdomain[1];\n+    var bits, winheight;\n+\n+     rows.forEach(function (d, i) {\n+      var data = col.getValue(d);\n+\n+      bits = (data.length);\n+\n+      winheight = context.rowHeight(i);\n+      });\n+\n+    var x: any = d3.scale.linear().domain([0, bits]).range([0, col.getWidth()]);\n+    var y: any = y = d3.scale.linear().domain([min,max]).range([winheight,0]);\n+\n+\n+\n+    $rows.attr({\n+      'data-index': function (d, i) {\n+        return i;\n+      }\n+    });\n+    $rows.select('path')\n+      .attr('d', function (d, i) {\n+//console.log(i,x(i));\n+        var line = d3.svg.line<number>()\n+          .x((d, i) => x(i))\n+           .y(function (d: any, i){ return y(d);});\n+        return line(col.getValue(d));\n+      });\n+\n+    // $rows_enter.append('path').attr('class', 'sparkline')\n+    //   .attr('d', (d, i) => 'M' + 0 + ',' + context.rowHeight(i) / 2 + 'L' + col.getWidth() + ',' + context.rowHeight(i) / 2)\n+    //   .attr('stroke', 'red');\n+    context.animated($rows).attr({\n+      transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellY(i) + ')'\n+    });\n+\n+    $rows.exit().remove();\n+\n+  }\n+\n+}\n+\n+\n+class VerticalbarCellRenderer extends DefaultCellRenderer {\n+  render($col: d3.Selection<any>, col: model.MyColumn, rows: any[], context: IRenderContext) {\n+    var $rows = $col.datum(col).selectAll('g.verticalcell').data(rows, context.rowKey);\n+    var $rows_enter = $rows.enter().append('g').attr({\n+      'class': 'verticalcell',\n+      transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellPrevY(i) + ')'\n+    });\n+\n+    $rows.attr({\n+      'data-index': (d, i) => i\n+    });\n+\n+\n+\n+    var bits = [];\n+    var threshold = col.desc.threshold;\n+\n+    var $rects = $rows_enter.selectAll('rect').data(function (d, i) {\n+      var value = col.getValue(d);\n+\n+      bits.push(value.length);\n+\n+      return (value);\n+    });\n+\n+    $rects.enter().append('rect');\n+    $rects.attr({\n+      'data-index': (d, i) => i,\n+\n+      'width': (col.getWidth() / d3.max(bits)),\n+      'height': (d, i) => (context.rowHeight(i)) / 2,\n+      'x': function (d) {\n+        var prev = this.previousSibling; // One previous step information.\n+        return (prev === null) ? 0 : parseFloat(d3.select(prev).attr('x')) + parseFloat(d3.select(prev).attr('width'));\n+      },\n+      'y': (d, i) => (d < threshold) ? (context.rowHeight(i) / 2) : 0,\n+      'fill': (d) => (d < threshold) ? 'blue' : 'red'\n+    });\n+\n+    context.animated($rows).attr({\n+      transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellY(i) + ')'\n+    });\n+    $rows.exit().remove();\n+  }\n+}\n+\n+class VertcontinuousCellRenderer extends DefaultCellRenderer {\n+  render($col: d3.Selection<any>, col: model.MyColumn, rows: any[], context: IRenderContext) {\n+    var $rows = $col.datum(col).selectAll('g.vertcontinuouscell').data(rows, context.rowKey);\n+    var $rows_enter = $rows.enter().append('g').attr({\n+      'class': 'vertcontinuouscell',\n+      'data-index': (d, i) => i,\n+      transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellPrevY(i) + ')'\n+    });\n+\n+\n+    var bits = [];\n+    var min = col.desc.sdomain[0];\n+    var max = col.desc.sdomain[1];\n+    var mincolor = col.desc.colorrange[0];\n+    var maxcolor = col.desc.colorrange[1];\n+    var barheight;\n+    var threshold = 0;\n+    var scale = d3.scale.linear();\n+\n+    var $rects = $rows_enter.selectAll('rect').data(function (d, i) {\n+      var value = col.getValue(d);\n+      var data = value;\n+      bits.push(data.length);\n+\n+      barheight = context.rowHeight(i);\n+      return (data);\n+    });\n+\n+    scale = (min < 0) ? (scale.domain([min, max]).range([0, barheight / 2])) : (scale.domain([min, max]).range([0, barheight]));\n+    var color: any = d3.scale.linear<number,string>();\n+    color.domain([min, 0, max]).range([mincolor, 'white', maxcolor]);\n+\n+    $rects.enter().append('rect');\n+    $rects.attr({\n+      'data-index': (d, i) => i,\n+      'width': (col.getWidth() / d3.max(bits)),\n+      'height': (d: any) => (d < threshold) ? (barheight / 2 - scale(d)) : scale(d),\n+      'x': function (d) {\n+\n+        var prev = this.previousSibling; // One previous step information.\n+        return (prev === null) ? 0 : parseFloat(d3.select(prev).attr('x')) + parseFloat(d3.select(prev).attr('width'));\n+      },\n+      'y': function (d: any, i) {\n+        if (min < 0) {\n+          return (d < threshold) ? (context.rowHeight(i) / 2) : context.rowHeight(i) / 2 - scale(d);   // For positive and negative value\n+        } else {\n+          return context.rowHeight(i) - scale(d);\n+        }\n+      },\n+      'fill': color\n+    });\n+\n+\n+    context.animated($rows).attr({\n+      transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellY(i) + ')'\n+    });\n+    $rows.exit().remove();\n+  }\n+\n+}\n+\n+class BoxplotCellRenderer extends DefaultCellRenderer {\n+  render($col: d3.Selection<any>, col: model.MyColumn, rows: any[], context: IRenderContext) {\n+\n+\n+\n+    var maxarr = [];\n+    var minarr = [];\n+    var q1arr = [];\n+    var q3arr = [];\n+    var medarr = [];\n+\n+\n+    function getPercentile(data, percentile) {\n+      data.sort(numSort);\n+      var index = (percentile / 100) * data.length;\n+      var result;\n+      if (Math.floor(index) === index) {\n+        result = (data[(index - 1)] + data[index]) / 2;\n+      } else {\n+        result = data[Math.floor(index)];\n+      }\n+      return result;\n+    }\n+\n+//because .sort() doesn't sort numbers correctly\n+    function numSort(a, b) {\n+      return a - b;\n+    }\n+\n+\n+    rows.forEach(function (d, i) {\n+\n+      var data = col.getValue(d);\n+\n+      var m1 = Math.min.apply(Math, data);\n+      var m2 = Math.max.apply(Math, data);\n+      minarr.push(m1);\n+\n+      maxarr.push(m2);\n+\n+      q1arr.push(getPercentile(data, 25));\n+      medarr.push(getPercentile(data, 50));\n+      q3arr.push(getPercentile(data, 75));\n+\n+    });\n+\n+\n+\n+    var scale = d3.scale.linear().domain([d3.min(minarr), d3.max(maxarr)]).range([0, col.getWidth()]); // Constraint the window width\n+\n+    var $rows = $col.datum(col).selectAll('g.boxplot').data(rows, context.rowKey);\n+\n+    var $rows_enter = $rows.enter().append('g').attr({\n+      'class': 'boxplot',\n+      'data-index': (d, i) => i,\n+      transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellPrevY(i) + ')'\n+    });\n+\n+\n+    $rows_enter.append('rect').attr('class', 'shift');\n+    $rows.select('rect.shift').attr(\n+      {\n+        'width': (d, i) => scale(q3arr[i]) - scale(q1arr[i]),\n+        'height': function (d, i) {\n+          var top = context.option('rowPadding', 30);\n+          return (Math.max(context.rowHeight(i) - top, 10));\n+        },\n+        'y': 0,\n+        'x': (d, i) => scale(q1arr[i])\n+      });\n+\n+\n+    $rows_enter.append('path').attr('class', 'shift');\n+\n+    var f = col.getWidth() / 100;\n+    $rows.select('path.shift').attr('d', function (d, i) {\n+\n+      var left = scale(minarr[i]) * f, right = scale(maxarr[i]) * f, center = scale(medarr[i]) * f;\n+      var top = context.option('rowPadding', 1);\n+\n+      var bottom = Math.max(context.rowHeight(i) - top, 0);\n+      var middle = (bottom - top) / 2;\n+\n+\n+      return 'M' + left + ',' + middle + 'L' + scale(q1arr[i]) + ',' + middle +\n+        'M' + left + ',' + top + 'L' + left + ',' + bottom +\n+        'M' + center + ',' + top + 'L' + center + ',' + bottom +\n+        'M' + (scale(q1arr[i]) + scale(q3arr[i]) - scale(q1arr[i])) + ',' + middle + 'L' + (right) + ',' + middle +\n+        'M' + right + ',' + top + 'L' + right + ',' + bottom;\n+    });\n+\n+\n+    context.animated($rows).attr({\n+      transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellY(i) + ')'\n+    });\n+    $rows.exit().remove();\n+  }\n+\n+}\n+\n+class CategoricalCellRenderer extends DefaultCellRenderer {\n+  render($col: d3.Selection<any>, col: model.MyColumn, rows: any[], context: IRenderContext) {\n+    var $rows = $col.datum(col).selectAll('g.categoricalcell').data(rows, context.rowKey);\n+    var $rows_enter = $rows.enter().append('g').attr({\n+      'class': 'categoricalcell',\n+      'data-index': (d, i) => i,\n+      transform: (d, i) => 'translate(' + context.cellX(i) + ',' + context.cellPrevY(i) + ')'\n+    });\n+\n+\n+    var bits = [];\n+\n+    var windowsize = 0;\n+\n+    var catindexes = [];\n+\n+\n+    var $circle = $rows_enter.selectAll('circle').data(function (d, i) {\n+      var value = col.getValue(d);\n+      var data = value;\n+      bits.push(data.length);\n+      windowsize = (col.getWidth() / d3.max(bits));\n+      return (data);\n+    });\n+\n+\n+    $circle.enter().append('circle')\n+      .attr('data-index', (d, i) => i)\n+      .attr('data-index', (d, i) => i)\n+      .attr('cx', (d: any, i) => (i * windowsize) + (windowsize / 2))\n+      .attr('cy', (d: any, i) => (context.rowHeight(i) / 2))\n+      .attr('r', (windowsize / 4))\n+      .attr('stroke', 'black')\n+      .attr('opacity', (d) =>(d === 1) ? 1 : 0.1)\n+      .attr('fill', 'black');\n+\n+\n+    $rows_enter.append('path')\n+      .attr('d', function (d, i) {\n+        var value = col.getValue(d);\n+        var data = value;\n+        catindexes.push(data.reduce(function (b, e, i) {\n+          if (e === 1) {","path":"src/renderer.ts","position":null,"original_position":584,"commit_id":"b96b7251e2df61cb431a63199f2af7895385dfb3","original_commit_id":"63cdc986491650a514523d405497e1f47ab8e536","user":{"login":"sgratzl","id":4129778,"avatar_url":"https://avatars.githubusercontent.com/u/4129778?v=3","gravatar_id":"","url":"https://api.github.com/users/sgratzl","html_url":"https://github.com/sgratzl","followers_url":"https://api.github.com/users/sgratzl/followers","following_url":"https://api.github.com/users/sgratzl/following{/other_user}","gists_url":"https://api.github.com/users/sgratzl/gists{/gist_id}","starred_url":"https://api.github.com/users/sgratzl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sgratzl/subscriptions","organizations_url":"https://api.github.com/users/sgratzl/orgs","repos_url":"https://api.github.com/users/sgratzl/repos","events_url":"https://api.github.com/users/sgratzl/events{/privacy}","received_events_url":"https://api.github.com/users/sgratzl/received_events","type":"User","site_admin":false},"body":"You are assuming that 1 means part of the group and 0 mean not? why not true/false?","created_at":"2016-11-17T16:04:19Z","updated_at":"2016-11-17T16:04:19Z","html_url":"https://github.com/Caleydo/lineup.js/pull/173#discussion_r88483839","pull_request_url":"https://api.github.com/repos/Caleydo/lineup.js/pulls/173","_links":{"self":{"href":"https://api.github.com/repos/Caleydo/lineup.js/pulls/comments/88483839"},"html":{"href":"https://github.com/Caleydo/lineup.js/pull/173#discussion_r88483839"},"pull_request":{"href":"https://api.github.com/repos/Caleydo/lineup.js/pulls/173"}}},"pull_request":{"url":"https://api.github.com/repos/Caleydo/lineup.js/pulls/173","id":93762976,"html_url":"https://github.com/Caleydo/lineup.js/pull/173","diff_url":"https://github.com/Caleydo/lineup.js/pull/173.diff","patch_url":"https://github.com/Caleydo/lineup.js/pull/173.patch","issue_url":"https://api.github.com/repos/Caleydo/lineup.js/issues/173","number":173,"state":"open","locked":false,"title":"Bikram customcellrenderer (just for code review)","user":{"login":"sgratzl","id":4129778,"avatar_url":"https://avatars.githubusercontent.com/u/4129778?v=3","gravatar_id":"","url":"https://api.github.com/users/sgratzl","html_url":"https://github.com/sgratzl","followers_url":"https://api.github.com/users/sgratzl/followers","following_url":"https://api.github.com/users/sgratzl/following{/other_user}","gists_url":"https://api.github.com/users/sgratzl/gists{/gist_id}","starred_url":"https://api.github.com/users/sgratzl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sgratzl/subscriptions","organizations_url":"https://api.github.com/users/sgratzl/orgs","repos_url":"https://api.github.com/users/sgratzl/repos","events_url":"https://api.github.com/users/sgratzl/events{/privacy}","received_events_url":"https://api.github.com/users/sgratzl/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-11-15T13:14:39Z","updated_at":"2016-11-17T16:04:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/Caleydo/lineup.js/pulls/173/commits","review_comments_url":"https://api.github.com/repos/Caleydo/lineup.js/pulls/173/comments","review_comment_url":"https://api.github.com/repos/Caleydo/lineup.js/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Caleydo/lineup.js/issues/173/comments","statuses_url":"https://api.github.com/repos/Caleydo/lineup.js/statuses/b96b7251e2df61cb431a63199f2af7895385dfb3","head":{"label":"Caleydo:bikram-customcellrenderer","ref":"bikram-customcellrenderer","sha":"b96b7251e2df61cb431a63199f2af7895385dfb3","user":{"login":"Caleydo","id":4052176,"avatar_url":"https://avatars.githubusercontent.com/u/4052176?v=3","gravatar_id":"","url":"https://api.github.com/users/Caleydo","html_url":"https://github.com/Caleydo","followers_url":"https://api.github.com/users/Caleydo/followers","following_url":"https://api.github.com/users/Caleydo/following{/other_user}","gists_url":"https://api.github.com/users/Caleydo/gists{/gist_id}","starred_url":"https://api.github.com/users/Caleydo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Caleydo/subscriptions","organizations_url":"https://api.github.com/users/Caleydo/orgs","repos_url":"https://api.github.com/users/Caleydo/repos","events_url":"https://api.github.com/users/Caleydo/events{/privacy}","received_events_url":"https://api.github.com/users/Caleydo/received_events","type":"Organization","site_admin":false},"repo":{"id":11282749,"name":"lineup.js","full_name":"Caleydo/lineup.js","owner":{"login":"Caleydo","id":4052176,"avatar_url":"https://avatars.githubusercontent.com/u/4052176?v=3","gravatar_id":"","url":"https://api.github.com/users/Caleydo","html_url":"https://github.com/Caleydo","followers_url":"https://api.github.com/users/Caleydo/followers","following_url":"https://api.github.com/users/Caleydo/following{/other_user}","gists_url":"https://api.github.com/users/Caleydo/gists{/gist_id}","starred_url":"https://api.github.com/users/Caleydo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Caleydo/subscriptions","organizations_url":"https://api.github.com/users/Caleydo/orgs","repos_url":"https://api.github.com/users/Caleydo/repos","events_url":"https://api.github.com/users/Caleydo/events{/privacy}","received_events_url":"https://api.github.com/users/Caleydo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Caleydo/lineup.js","description":"LineUp JavaScript Port","fork":false,"url":"https://api.github.com/repos/Caleydo/lineup.js","forks_url":"https://api.github.com/repos/Caleydo/lineup.js/forks","keys_url":"https://api.github.com/repos/Caleydo/lineup.js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Caleydo/lineup.js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Caleydo/lineup.js/teams","hooks_url":"https://api.github.com/repos/Caleydo/lineup.js/hooks","issue_events_url":"https://api.github.com/repos/Caleydo/lineup.js/issues/events{/number}","events_url":"https://api.github.com/repos/Caleydo/lineup.js/events","assignees_url":"https://api.github.com/repos/Caleydo/lineup.js/assignees{/user}","branches_url":"https://api.github.com/repos/Caleydo/lineup.js/branches{/branch}","tags_url":"https://api.github.com/repos/Caleydo/lineup.js/tags","blobs_url":"https://api.github.com/repos/Caleydo/lineup.js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Caleydo/lineup.js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Caleydo/lineup.js/git/refs{/sha}","trees_url":"https://api.github.com/repos/Caleydo/lineup.js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Caleydo/lineup.js/statuses/{sha}","languages_url":"https://api.github.com/repos/Caleydo/lineup.js/languages","stargazers_url":"https://api.github.com/repos/Caleydo/lineup.js/stargazers","contributors_url":"https://api.github.com/repos/Caleydo/lineup.js/contributors","subscribers_url":"https://api.github.com/repos/Caleydo/lineup.js/subscribers","subscription_url":"https://api.github.com/repos/Caleydo/lineup.js/subscription","commits_url":"https://api.github.com/repos/Caleydo/lineup.js/commits{/sha}","git_commits_url":"https://api.github.com/repos/Caleydo/lineup.js/git/commits{/sha}","comments_url":"https://api.github.com/repos/Caleydo/lineup.js/comments{/number}","issue_comment_url":"https://api.github.com/repos/Caleydo/lineup.js/issues/comments{/number}","contents_url":"https://api.github.com/repos/Caleydo/lineup.js/contents/{+path}","compare_url":"https://api.github.com/repos/Caleydo/lineup.js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Caleydo/lineup.js/merges","archive_url":"https://api.github.com/repos/Caleydo/lineup.js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Caleydo/lineup.js/downloads","issues_url":"https://api.github.com/repos/Caleydo/lineup.js/issues{/number}","pulls_url":"https://api.github.com/repos/Caleydo/lineup.js/pulls{/number}","milestones_url":"https://api.github.com/repos/Caleydo/lineup.js/milestones{/number}","notifications_url":"https://api.github.com/repos/Caleydo/lineup.js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Caleydo/lineup.js/labels{/name}","releases_url":"https://api.github.com/repos/Caleydo/lineup.js/releases{/id}","deployments_url":"https://api.github.com/repos/Caleydo/lineup.js/deployments","created_at":"2013-07-09T13:17:21Z","updated_at":"2016-11-11T12:42:00Z","pushed_at":"2016-11-17T15:25:51Z","git_url":"git://github.com/Caleydo/lineup.js.git","ssh_url":"git@github.com:Caleydo/lineup.js.git","clone_url":"https://github.com/Caleydo/lineup.js.git","svn_url":"https://github.com/Caleydo/lineup.js","homepage":"http://caleydo.github.io/lineup.js","size":4772,"stargazers_count":28,"watchers_count":28,"language":"TypeScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":14,"mirror_url":null,"open_issues_count":46,"forks":14,"open_issues":46,"watchers":28,"default_branch":"master"}},"base":{"label":"Caleydo:master","ref":"master","sha":"a6cf8fff04e5ae062165f68d2851321088e5fc2c","user":{"login":"Caleydo","id":4052176,"avatar_url":"https://avatars.githubusercontent.com/u/4052176?v=3","gravatar_id":"","url":"https://api.github.com/users/Caleydo","html_url":"https://github.com/Caleydo","followers_url":"https://api.github.com/users/Caleydo/followers","following_url":"https://api.github.com/users/Caleydo/following{/other_user}","gists_url":"https://api.github.com/users/Caleydo/gists{/gist_id}","starred_url":"https://api.github.com/users/Caleydo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Caleydo/subscriptions","organizations_url":"https://api.github.com/users/Caleydo/orgs","repos_url":"https://api.github.com/users/Caleydo/repos","events_url":"https://api.github.com/users/Caleydo/events{/privacy}","received_events_url":"https://api.github.com/users/Caleydo/received_events","type":"Organization","site_admin":false},"repo":{"id":11282749,"name":"lineup.js","full_name":"Caleydo/lineup.js","owner":{"login":"Caleydo","id":4052176,"avatar_url":"https://avatars.githubusercontent.com/u/4052176?v=3","gravatar_id":"","url":"https://api.github.com/users/Caleydo","html_url":"https://github.com/Caleydo","followers_url":"https://api.github.com/users/Caleydo/followers","following_url":"https://api.github.com/users/Caleydo/following{/other_user}","gists_url":"https://api.github.com/users/Caleydo/gists{/gist_id}","starred_url":"https://api.github.com/users/Caleydo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Caleydo/subscriptions","organizations_url":"https://api.github.com/users/Caleydo/orgs","repos_url":"https://api.github.com/users/Caleydo/repos","events_url":"https://api.github.com/users/Caleydo/events{/privacy}","received_events_url":"https://api.github.com/users/Caleydo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Caleydo/lineup.js","description":"LineUp JavaScript Port","fork":false,"url":"https://api.github.com/repos/Caleydo/lineup.js","forks_url":"https://api.github.com/repos/Caleydo/lineup.js/forks","keys_url":"https://api.github.com/repos/Caleydo/lineup.js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Caleydo/lineup.js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Caleydo/lineup.js/teams","hooks_url":"https://api.github.com/repos/Caleydo/lineup.js/hooks","issue_events_url":"https://api.github.com/repos/Caleydo/lineup.js/issues/events{/number}","events_url":"https://api.github.com/repos/Caleydo/lineup.js/events","assignees_url":"https://api.github.com/repos/Caleydo/lineup.js/assignees{/user}","branches_url":"https://api.github.com/repos/Caleydo/lineup.js/branches{/branch}","tags_url":"https://api.github.com/repos/Caleydo/lineup.js/tags","blobs_url":"https://api.github.com/repos/Caleydo/lineup.js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Caleydo/lineup.js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Caleydo/lineup.js/git/refs{/sha}","trees_url":"https://api.github.com/repos/Caleydo/lineup.js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Caleydo/lineup.js/statuses/{sha}","languages_url":"https://api.github.com/repos/Caleydo/lineup.js/languages","stargazers_url":"https://api.github.com/repos/Caleydo/lineup.js/stargazers","contributors_url":"https://api.github.com/repos/Caleydo/lineup.js/contributors","subscribers_url":"https://api.github.com/repos/Caleydo/lineup.js/subscribers","subscription_url":"https://api.github.com/repos/Caleydo/lineup.js/subscription","commits_url":"https://api.github.com/repos/Caleydo/lineup.js/commits{/sha}","git_commits_url":"https://api.github.com/repos/Caleydo/lineup.js/git/commits{/sha}","comments_url":"https://api.github.com/repos/Caleydo/lineup.js/comments{/number}","issue_comment_url":"https://api.github.com/repos/Caleydo/lineup.js/issues/comments{/number}","contents_url":"https://api.github.com/repos/Caleydo/lineup.js/contents/{+path}","compare_url":"https://api.github.com/repos/Caleydo/lineup.js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Caleydo/lineup.js/merges","archive_url":"https://api.github.com/repos/Caleydo/lineup.js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Caleydo/lineup.js/downloads","issues_url":"https://api.github.com/repos/Caleydo/lineup.js/issues{/number}","pulls_url":"https://api.github.com/repos/Caleydo/lineup.js/pulls{/number}","milestones_url":"https://api.github.com/repos/Caleydo/lineup.js/milestones{/number}","notifications_url":"https://api.github.com/repos/Caleydo/lineup.js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Caleydo/lineup.js/labels{/name}","releases_url":"https://api.github.com/repos/Caleydo/lineup.js/releases{/id}","deployments_url":"https://api.github.com/repos/Caleydo/lineup.js/deployments","created_at":"2013-07-09T13:17:21Z","updated_at":"2016-11-11T12:42:00Z","pushed_at":"2016-11-17T15:25:51Z","git_url":"git://github.com/Caleydo/lineup.js.git","ssh_url":"git@github.com:Caleydo/lineup.js.git","clone_url":"https://github.com/Caleydo/lineup.js.git","svn_url":"https://github.com/Caleydo/lineup.js","homepage":"http://caleydo.github.io/lineup.js","size":4772,"stargazers_count":28,"watchers_count":28,"language":"TypeScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":14,"mirror_url":null,"open_issues_count":46,"forks":14,"open_issues":46,"watchers":28,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Caleydo/lineup.js/pulls/173"},"html":{"href":"https://github.com/Caleydo/lineup.js/pull/173"},"issue":{"href":"https://api.github.com/repos/Caleydo/lineup.js/issues/173"},"comments":{"href":"https://api.github.com/repos/Caleydo/lineup.js/issues/173/comments"},"review_comments":{"href":"https://api.github.com/repos/Caleydo/lineup.js/pulls/173/comments"},"review_comment":{"href":"https://api.github.com/repos/Caleydo/lineup.js/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Caleydo/lineup.js/pulls/173/commits"},"statuses":{"href":"https://api.github.com/repos/Caleydo/lineup.js/statuses/b96b7251e2df61cb431a63199f2af7895385dfb3"}}}}
{"actor":{"display_login":"sgratzl"}}