Organize WebInspectorUI/UserInterface into sub-directories.
[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             switch (sample.type) {
90             case "function": // FIXME: is there a better way to visualize functions?
91             case "object":
92                 return new WebInspector.ObjectPropertiesSection(sample, WebInspector.ProbeSet.SampleObjectTitle).element;
93             case "string":
94             case "number":
95             case "boolean":
96             case "undefined":
97             case "null":
98                 return document.createTextNode(sample.value);
99             case "array":
100             // FIXME: reuse existing visualization of arrays here.
101             default: console.log("Don't know how to represent sample:", sample);
102             }
103         }
104
105         return sample;
106     },
107
108     updateCellsFromFrame: function(frame, probeSet)
109     {
110     },
111
112     updateCellsForSeparator: function(frame, probeSet)
113     {
114         this._element.classList.add(WebInspector.ProbeSetDataGridNode.SeparatorStyleClassName);
115     }
116 };