| Index: tools/telemetry/telemetry/web_components/ui/chart_base.js
|
| diff --git a/tools/telemetry/telemetry/web_components/ui/chart_base.js b/tools/telemetry/telemetry/web_components/ui/chart_base.js
|
| deleted file mode 100644
|
| index 6c061bceb5b19a20e4542f5aa8aa23d196a38928..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/telemetry/web_components/ui/chart_base.js
|
| +++ /dev/null
|
| @@ -1,194 +0,0 @@
|
| -// Copyright 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.
|
| -
|
| -'use strict';
|
| -
|
| -tvcm.require('tvcm.utils');
|
| -tvcm.require('telemetry.web_components.ui.d3');
|
| -tvcm.requireTemplate('telemetry.web_components.ui.chart_base');
|
| -
|
| -tvcm.exportTo('telemetry.web_components.ui', function() {
|
| - var svgNS = 'http://www.w3.org/2000/svg';
|
| -
|
| - function getColorOfKey(key) {
|
| - var id = tracing.getStringColorId(key);
|
| - return tracing.getColorPalette()[id];
|
| - }
|
| -
|
| - /**
|
| - * A virtual base class for basic charts that provides X and Y axes, if
|
| - * needed, a title, and legend.
|
| - *
|
| - * @constructor
|
| - */
|
| - var ChartBase = tvcm.ui.define('svg', undefined, svgNS);
|
| -
|
| - ChartBase.prototype = {
|
| - __proto__: HTMLUnknownElement.prototype,
|
| -
|
| - decorate: function() {
|
| - this.classList.add('chart-base');
|
| - this.chartTitle_ = undefined;
|
| - this.data_ = undefined;
|
| - this.seriesKeys_ = undefined;
|
| - this.width_ = 400;
|
| - this.height_ = 300;
|
| -
|
| - // This should use tvcm.instantiateTemplate. However, creating
|
| - // svg-namespaced elements inside a template isn't possible. Thus, this
|
| - // hack.
|
| - var template = document.head.querySelector('#chart-base-template');
|
| - var svgEl = template.content.querySelector('svg');
|
| - for (var i = 0; i < svgEl.children.length; i++)
|
| - this.appendChild(svgEl.children[i].cloneNode(true));
|
| - },
|
| -
|
| - get chartTitle() {
|
| - return chartTitle_;
|
| - },
|
| -
|
| - set chartTitle(chartTitle) {
|
| - this.chartTitle_ = chartTitle;
|
| - this.updateContents_();
|
| - },
|
| -
|
| - get chartAreaElement() {
|
| - return this.querySelector('#chart-area');
|
| - },
|
| -
|
| - get width() {
|
| - return width_;
|
| - },
|
| -
|
| - set width(width) {
|
| - this.width_ = width;
|
| - this.updateContents_();
|
| - },
|
| -
|
| - get height() {
|
| - return height_;
|
| - },
|
| -
|
| - set height(height) {
|
| - this.height_ = height;
|
| - this.updateContents_();
|
| - },
|
| -
|
| - get data() {
|
| - return this.data_;
|
| - },
|
| -
|
| - get margin() {
|
| - var margin = {top: 20, right: 20, bottom: 30, left: 50};
|
| - if (this.chartTitle_)
|
| - margin.top += 20;
|
| - return margin;
|
| - },
|
| -
|
| - get chartAreaSize() {
|
| - var margin = this.margin;
|
| - return {
|
| - width: this.width_ - margin.left - margin.right,
|
| - height: this.height_ - margin.top - margin.bottom
|
| - };
|
| - },
|
| -
|
| - getLegendKeys_: function() {
|
| - throw new Error('Not implemented');
|
| - },
|
| -
|
| - updateScales_: function(width, height) {
|
| - throw new Error('Not implemented');
|
| - },
|
| -
|
| - updateContents_: function() {
|
| - var margin = this.margin;
|
| - var width = this.chartAreaSize.width;
|
| - var height = this.chartAreaSize.height;
|
| -
|
| - var thisSel = d3.select(this);
|
| - thisSel.attr('width', this.width_);
|
| - thisSel.attr('height', this.height_);
|
| -
|
| - var chartAreaSel = d3.select(this.chartAreaElement);
|
| - chartAreaSel.attr(
|
| - 'transform',
|
| - 'translate(' + margin.left + ',' + margin.top + ')');
|
| -
|
| - this.updateScales_(width, height);
|
| -
|
| - // Axes.
|
| - if (this.xScale_ && this.yScale_) {
|
| - var xAxisRenderer = d3.svg.axis()
|
| - .scale(this.xScale_)
|
| - .orient('bottom');
|
| -
|
| - var yAxisRenderer = d3.svg.axis()
|
| - .scale(this.yScale_)
|
| - .orient('left');
|
| -
|
| - chartAreaSel.select('.x.axis')
|
| - .attr('transform', 'translate(0,' + height + ')')
|
| - .call(xAxisRenderer);
|
| -
|
| - chartAreaSel.select('.y.axis')
|
| - .call(yAxisRenderer);
|
| - }
|
| -
|
| - // Title.
|
| - var titleSel = chartAreaSel.select('#title');
|
| - if (this.chartTitle_) {
|
| - titleSel.attr('transform', 'translate(' + width * 0.5 + ',-5)')
|
| - .style('display', undefined)
|
| - .style('text-anchor', 'middle')
|
| - .attr('class', 'title')
|
| - .attr('width', width)
|
| - .text(this.chartTitle_);
|
| - } else {
|
| - titleSel.style('display', 'none');
|
| - }
|
| -
|
| - this.updateLegend_();
|
| - },
|
| -
|
| - updateLegend_: function() {
|
| - var keys = this.getLegendKeys_();
|
| -
|
| - var chartAreaSel = d3.select(this.chartAreaElement);
|
| - var chartAreaSize = this.chartAreaSize;
|
| -
|
| - var legendEntriesSel = chartAreaSel.selectAll('.legend')
|
| - .data(keys.slice().reverse());
|
| -
|
| - legendEntriesSel.enter()
|
| - .append('g')
|
| - .attr('class', 'legend')
|
| - .attr('transform', function(d, i) {
|
| - return 'translate(0,' + i * 20 + ')';
|
| - }).append('text').text(function(key) {
|
| - return key;
|
| - });
|
| - legendEntriesSel.exit().remove();
|
| -
|
| - legendEntriesSel.attr('x', chartAreaSize.width - 18)
|
| - .attr('width', 18)
|
| - .attr('height', 18)
|
| - .style('fill', function(key) {
|
| - return getColorOfKey(key);
|
| - });
|
| -
|
| - legendEntriesSel.selectAll('text')
|
| - .attr('x', chartAreaSize.width - 24)
|
| - .attr('y', 9)
|
| - .attr('dy', '.35em')
|
| - .style('text-anchor', 'end')
|
| - .text(function(d) { return d; });
|
| - }
|
| - };
|
| -
|
| - return {
|
| - getColorOfKey: getColorOfKey,
|
| - ChartBase: ChartBase
|
| - };
|
| -});
|
|
|