blob: 4ad14b3d549f1259e20fbb7185e77a54f54c3dac [file] [log] [blame]
<!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="/tracing/base/unit.html">
<link rel="import" href="/tracing/model/event_set.html">
<link rel="import" href="/tracing/ui/analysis/analysis_link.html">
<link rel="import" href="/tracing/ui/analysis/analysis_sub_view.html">
<link rel="import" href="/tracing/ui/base/dom_helpers.html">
<link rel="import" href="/tracing/ui/base/table.html">
<link rel="import" href="/tracing/value/ui/scalar_span.html">
<dom-module id='tr-ui-a-multi-object-sub-view'>
<template>
<style>
:host {
display: flex;
}
</style>
<tr-ui-b-table id="content"></tr-ui-b-table>
</template>
</dom-module>
<script>
'use strict';
Polymer({
is: 'tr-ui-a-multi-object-sub-view',
behaviors: [tr.ui.analysis.AnalysisSubView],
created: function() {
this.currentSelection_ = undefined;
},
ready: function() {
this.$.content.showHeader = false;
},
get selection() {
return this.currentSelection_;
},
set selection(selection) {
this.currentSelection_ = selection;
var objectEvents = tr.b.asArray(selection).sort(
tr.b.Range.compareByMinTimes);
var timeSpanConfig = {
unit: tr.b.Unit.byName.timeStampInMs,
ownerDocument: this.ownerDocument
};
var table = this.$.content;
table.tableColumns = [
{
title: 'First',
value: function(event) {
if (event instanceof tr.model.ObjectSnapshot)
return tr.v.ui.createScalarSpan(event.ts, timeSpanConfig);
var spanEl = document.createElement('span');
Polymer.dom(spanEl).appendChild(tr.v.ui.createScalarSpan(
event.creationTs, timeSpanConfig));
Polymer.dom(spanEl).appendChild(tr.ui.b.createSpan({
textContent: '-',
marginLeft: '4px',
marginRight: '4px'
}));
if (event.deletionTs != Number.MAX_VALUE) {
Polymer.dom(spanEl).appendChild(tr.v.ui.createScalarSpan(
event.deletionTs, timeSpanConfig));
}
return spanEl;
},
width: '200px'
},
{
title: 'Second',
value: function(event) {
var linkEl = document.createElement('tr-ui-a-analysis-link');
linkEl.setSelectionAndContent(function() {
return new tr.model.EventSet(event);
}, event.userFriendlyName);
return linkEl;
},
width: '100%'
}
];
table.tableRows = objectEvents;
table.rebuild();
}
});
tr.ui.analysis.AnalysisSubView.register(
'tr-ui-a-multi-object-sub-view',
tr.model.ObjectInstance,
{
multi: true,
title: 'Object Instances',
});
tr.ui.analysis.AnalysisSubView.register(
'tr-ui-a-multi-object-sub-view',
tr.model.ObjectSnapshot,
{
multi: true,
title: 'Object Snapshots',
});
</script>