3b5b1ba91bf3119a0d75f88df331c4aa81356223
[WebKit-https.git] / Source / WebInspectorUI / UserInterface / Views / ProbeSetDataGridNode.js
1 /*
2  * Copyright (C) 2013 University of Washington. All rights reserved.
3  * Copyright (C) 2014 Apple Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
15  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
16  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
17  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26
27 WebInspector.ProbeSetDataGridNode = function(dataGrid)
28 {
29     console.assert(dataGrid instanceof WebInspector.ProbeSetDataGrid, "Invalid ProbeSetDataGrid argument:", dataGrid);
30
31     WebInspector.DataGridNode.call(this, this.data);
32     this.dataGrid = dataGrid; // This is set to null in DataGridNode's constructor.
33     this._data = {};
34
35     this._element = document.createElement("tr");
36     this._element.dataGridNode = this;
37     this._element.classList.add("revealed");
38 };
39
40 WebInspector.ProbeSetDataGridNode.SeparatorStyleClassName = "separator";
41 WebInspector.ProbeSetDataGridNode.UnknownValueStyleClassName = "unknown-value";
42
43 WebInspector.ProbeSetDataGridNode.prototype = {
44     constructor: WebInspector.ProbeSetDataGridNode,
45     __proto__: WebInspector.DataGridNode.prototype,
46
47     // Public
48
49     get element()
50     {
51         return this._element;
52     },
53
54     get data()
55     {
56         return this._data;
57     },
58
59     set frame(value)
60     {
61         console.assert(value instanceof WebInspector.ProbeSetDataFrame, "Invalid ProbeSetDataFrame argument: ", value);
62         this._frame = value;
63
64         var data = {};
65         for (var probe of this.dataGrid.probeSet.probes) {
66             var sample = this.frame[probe.id];
67             if (!sample || !sample.object)
68                 data[probe.id] = WebInspector.ProbeSetDataFrame.MissingValue;
69             else
70                 data[probe.id] = sample.object;
71         }
72         this._data = data;
73     },
74
75     get frame()
76     {
77         return this._frame;
78     },
79
80     createCellContent: function(columnIdentifier, cell)
81     {
82         var sample = this.data[columnIdentifier];
83         if (sample === WebInspector.ProbeSetDataFrame.MissingValue) {
84             cell.classList.add(WebInspector.ProbeSetDataGridNode.UnknownValueStyleClassName);
85             return sample;
86         }
87
88         if (sample instanceof WebInspector.RemoteObject)
89             return WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject(sample, null);
90
91         return sample;
92     },
93
94     updateCellsFromFrame: function(frame, probeSet)
95     {
96     },
97
98     updateCellsForSeparator: function(frame, probeSet)
99     {
100         this._element.classList.add(WebInspector.ProbeSetDataGridNode.SeparatorStyleClassName);
101     }
102 };