Javascript  |  95行  |  2.18 KB

// Copyright (c) 2012 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';

base.require('ui');
base.require('analysis.util');

/**
 * @fileoverview Conains classes for single counter selections.
 */

base.exportTo('tracing.analysis', function() {

  /**
   *
   * @constructor
   * @extends {HTMLDivElement}
   */
  var SingleCounterSelectionAnalysis =
      tracing.ui.define('single-counter-selection');

  SingleCounterSelectionAnalysis.prototype = {
    __proto__: HTMLDivElement.prototype,

    decorate: function() {
      this.selection_ = undefined;
    },

    set selection(selection) {

      if (selection.getNumSliceHits() != 0)
        throw new Error('Expected only counters in selection');

      if (selection.getNumCounterHits() != 1)
        throw new Error('Expected only 1 counter in selection');

      this.selection_ = selection;
      this.updateContents_();
    },

    get selection() {
      return this.selection_;
    },

    set verticalDisplay(bool) {
      this.verticalDisplay_ = bool;
    },

    get verticalDisplay() {
      return this.verticalDisplay_;
    },

    updateContents_: function() {
      this.textContent = '';

      if (!this.selection_.length)
        return;

      var hit = this.selection_[0];
      var counter = hit.counter;
      var sampleIndex = hit.sampleIndex;

      var rowEl = document.createElement('div');
      rowEl.classList.add('analysis-table-row');
      this.createAndAppendSpan_(rowEl, counter.name);
      this.createAndAppendSpan_(rowEl, sampleIndex);
      this.appendChild(rowEl);
    },

    createColumnTitleRow: function() {
      this.textContent = '';
      var row = document.createElement('div');

      this.createAndAppendSpan_(row, 'Counter Title');
      this.createAndAppendSpan_(row, 'Timestamp');

      return row;
    },

    createAndAppendSpan_: function(row, content) {
      var el = document.createElement('span');
      el.classList.add('analyis-table-cell');
      el.textContent = content;
      row.appendChild(el);
    },

  };

  return {
      SingleCounterSelectionAnalysis: SingleCounterSelectionAnalysis
  };
});