| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2013 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="/base/base.html"> |
| <link rel="import" href="/base/ui.html"> |
| <link rel="import" href="/core/analysis/analysis_sub_view.html"> |
| <link rel="import" href="/core/analysis/selection_summary_table.html"> |
| <link rel="import" href="/core/analysis/multi_event_summary_table.html"> |
| <link rel="import" href="/core/analysis/multi_event_details_table.html"> |
| <link rel="import" href="/core/analysis/table_builder.html"> |
| |
| <polymer-element name="tv-c-a-multi-event-sub-view" |
| extends="tracing-analysis-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| overflow: auto; |
| } |
| #content { |
| display: flex; |
| flex-direction: column; |
| flex: 0 1 auto; |
| align-self: stretch; |
| } |
| #content > * { |
| flex: 0 0 auto; |
| align-self: stretch; |
| } |
| tv-c-a-multi-event-summary-table { |
| border-bottom: 1px solid #aaa; |
| } |
| |
| tv-c-a-selection-summary-table { |
| margin-top: 1.25em; |
| border-top: 1px solid #aaa; |
| background-color: #eee; |
| font-weight: bold; |
| margin-bottom: 1.25em; |
| border-bottom: 1px solid #aaa; |
| } |
| </style> |
| <div id="content"></div> |
| </template> |
| <script> |
| 'use strict'; |
| |
| Polymer({ |
| created: function() { |
| this.currentSelection_ = undefined; |
| this.eventsHaveDuration_ = true; |
| this.eventsHaveSubRows_ = true; |
| }, |
| |
| set selection(selection) { |
| if (selection.length <= 1) |
| throw new Error('Only supports multiple items'); |
| this.setSelectionWithoutErrorChecks(selection); |
| }, |
| |
| get selection() { |
| return this.currentSelection_; |
| }, |
| |
| setSelectionWithoutErrorChecks: function(selection) { |
| this.currentSelection_ = selection; |
| this.updateContents_(); |
| }, |
| |
| get eventsHaveDuration() { |
| return this.eventsHaveDuration_; |
| }, |
| |
| set eventsHaveDuration(eventsHaveDuration) { |
| this.eventsHaveDuration_ = eventsHaveDuration; |
| this.updateContents_(); |
| }, |
| |
| get eventsHaveSubRows() { |
| return this.eventsHaveSubRows_; |
| }, |
| |
| set eventsHaveSubRows(eventsHaveSubRows) { |
| this.eventsHaveSubRows_ = eventsHaveSubRows; |
| this.updateContents_(); |
| }, |
| |
| updateContents_: function() { |
| var selection = this.currentSelection_; |
| |
| this.$.content.textContent = ''; |
| if (!selection) |
| return; |
| |
| var eventsByTitle = selection.getEventsOrganizedByTitle(); |
| var numTitles = tv.b.dictionaryLength(eventsByTitle); |
| |
| var summaryTableEl = document.createElement( |
| 'tv-c-a-multi-event-summary-table'); |
| summaryTableEl.configure({ |
| showTotals: numTitles > 1, |
| eventsByTitle: eventsByTitle, |
| eventsHaveDuration: this.eventsHaveDuration_, |
| eventsHaveSubRows: this.eventsHaveSubRows_ |
| }); |
| this.$.content.appendChild(summaryTableEl); |
| |
| var selectionSummaryTableEl = document.createElement( |
| 'tv-c-a-selection-summary-table'); |
| selectionSummaryTableEl.selection = this.currentSelection_; |
| this.$.content.appendChild(selectionSummaryTableEl); |
| |
| if (numTitles === 1) { |
| var detailsTableEl = document.createElement( |
| 'tv-c-a-multi-event-details-table'); |
| detailsTableEl.eventsHaveDuration = this.eventsHaveDuration_; |
| detailsTableEl.eventsHaveSubRows = this.eventsHaveSubRows_; |
| detailsTableEl.selection = selection; |
| this.$.content.appendChild(detailsTableEl); |
| } |
| } |
| }); |
| </script> |
| </polymer-element> |