| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/tracing/ui/base/chart_base_2d_brushable_x.html"> |
| |
| <link rel="stylesheet" href="/tracing/ui/base/line_chart.css"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.exportTo('tr.ui.b', function() { |
| var ChartBase2DBrushX = tr.ui.b.ChartBase2DBrushX; |
| |
| /** |
| * @constructor |
| */ |
| var LineChart = tr.ui.b.define('line-chart', ChartBase2DBrushX); |
| |
| LineChart.prototype = { |
| __proto__: ChartBase2DBrushX.prototype, |
| |
| decorate: function() { |
| ChartBase2DBrushX.prototype.decorate.call(this); |
| Polymer.dom(this).classList.add('line-chart'); |
| }, |
| |
| isDatumFieldSeries_: function(fieldName) { |
| return fieldName != 'x'; |
| }, |
| |
| getXForDatum_: function(datum, index) { |
| return datum.x; |
| }, |
| |
| updateDataContents_: function(dataSel) { |
| dataSel.selectAll('*').remove(); |
| var dataBySeriesKey = this.getDataBySeriesKey_(); |
| var seriesKeys = [...this.seriesByKey_.keys()]; |
| var pathsSel = dataSel.selectAll('path').data(seriesKeys); |
| pathsSel.enter() |
| .append('path') |
| .attr('class', 'line') |
| .style('stroke', function(key) { |
| return this.getDataSeries(key).color; |
| }.bind(this)) |
| .attr('d', function(key) { |
| var line = d3.svg.line() |
| .x(function(d) { return this.xScale_(d.x); }.bind(this)) |
| .y(function(d) { return this.yScale_(d[key]); }.bind(this)); |
| return line(dataBySeriesKey[key]); |
| }.bind(this)); |
| pathsSel.exit().remove(); |
| } |
| }; |
| |
| return { |
| LineChart: LineChart |
| }; |
| }); |
| </script> |