blob: 25414f78fa4b1888caef28395da794cf21c196c5 [file] [log] [blame]
Chris Craikb2cbf152015-07-28 16:26:29 -07001<!DOCTYPE html>
2<!--
3Copyright (c) 2014 The Chromium Authors. All rights reserved.
4Use of this source code is governed by a BSD-style license that can be
5found in the LICENSE file.
6-->
7<link rel="import" href="/ui/base/table.html">
8
9<polymer-element name="tr-ui-a-stack-frame">
10 <template>
11 <style>
12 :host {
13 display: flex;
14 flex-direction: row;
15 align-items: center;
16 }
17 </style>
18 <tr-ui-b-table id="table"></tr-ui-b-table>
19 </template>
20 <script>
21 'use strict';
22
23 Polymer({
24 ready: function() {
25 this.stackFrame_ = undefined;
26 this.$.table.tableColumns = [];
27 this.$.table.showHeader = false;
28 },
29
30 get stackFrame() {
31 return this.stackFrame_;
32 },
33
34 set stackFrame(stackFrame) {
35 var table = this.$.table;
36
37 this.stackFrame_ = stackFrame;
38 if (stackFrame === undefined) {
39 table.tableColumns = [];
40 table.tableRows = [];
41 table.rebuild();
42 return;
43 }
44
45 var hasCategory = false;
46 var hasName = false;
47 var hasTitle = false;
48
49 table.tableRows = stackFrame.stackTrace;
50 table.tableRows.forEach(function(row) {
51 hasCategory |= row.category !== undefined;
52 hasName |= row.name !== undefined;
53 hasTitle |= row.title !== undefined;
54 });
55
56 var cols = [];
57 if (hasCategory)
58 cols.push({
59 title: 'Category',
60 value: function(row) { return row.category; }
61 });
62
63 if (hasName)
64 cols.push({
65 title: 'Name',
66 value: function(row) { return row.name; }
67 });
68
69 if (hasTitle)
70 cols.push({
71 title: 'Title',
72 value: function(row) { return row.title; }
73 });
74
75 table.tableColumns = cols;
76 table.rebuild();
77 }
78 });
79 </script>
80</polymer-element>