OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @unrestricted | 6 * @unrestricted |
7 */ | 7 */ |
8 Timeline.EventsTimelineTreeView = class extends Timeline.TimelineTreeView { | 8 Timeline.EventsTimelineTreeView = class extends Timeline.TimelineTreeView { |
9 /** | 9 /** |
10 * @param {!Array<!TimelineModel.TimelineModelFilter>} filters | 10 * @param {!Array<!TimelineModel.TimelineModelFilter>} filters |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 if (expand) | 83 if (expand) |
84 this.dataGridNodeForTreeNode(node).expand(); | 84 this.dataGridNodeForTreeNode(node).expand(); |
85 } | 85 } |
86 | 86 |
87 /** | 87 /** |
88 * @override | 88 * @override |
89 * @param {!Array<!DataGrid.DataGrid.ColumnDescriptor>} columns | 89 * @param {!Array<!DataGrid.DataGrid.ColumnDescriptor>} columns |
90 */ | 90 */ |
91 populateColumns(columns) { | 91 populateColumns(columns) { |
92 columns.push( | 92 columns.push( |
93 {id: 'startTime', title: Common.UIString('Start Time'), width: '110px',
fixedWidth: true, sortable: true}); | 93 {id: 'startTime', title: Common.UIString('Start Time'), width: '80px', f
ixedWidth: true, sortable: true}); |
94 super.populateColumns(columns); | 94 super.populateColumns(columns); |
| 95 columns.filter(c => c.fixedWidth).forEach(c => c.width = '80px'); |
95 } | 96 } |
96 | 97 |
97 /** | 98 /** |
98 * @override | 99 * @override |
99 * @param {!Element} parent | 100 * @param {!UI.Toolbar} toolbar |
100 */ | 101 */ |
101 _populateToolbar(parent) { | 102 _populateToolbar(toolbar) { |
102 var filtersWidget = this._filtersControl.filtersWidget(); | 103 this._filtersControl.populateToolbar(toolbar); |
103 filtersWidget.forceShowFilterBar(); | |
104 filtersWidget.show(parent); | |
105 } | 104 } |
106 | 105 |
107 /** | 106 /** |
108 * @override | 107 * @override |
109 * @param {!TimelineModel.TimelineProfileTree.Node} node | 108 * @param {!TimelineModel.TimelineProfileTree.Node} node |
110 * @return {boolean} | 109 * @return {boolean} |
111 */ | 110 */ |
112 _showDetailsForNode(node) { | 111 _showDetailsForNode(node) { |
113 var traceEvent = node.event; | 112 var traceEvent = node.event; |
114 if (!traceEvent) | 113 if (!traceEvent) |
(...skipping 19 matching lines...) Expand all Loading... |
134 this._delegate.highlightEvent(node && node.event); | 133 this._delegate.highlightEvent(node && node.event); |
135 } | 134 } |
136 }; | 135 }; |
137 | 136 |
138 /** | 137 /** |
139 * @unrestricted | 138 * @unrestricted |
140 */ | 139 */ |
141 Timeline.EventsTimelineTreeView.Filters = class extends Common.Object { | 140 Timeline.EventsTimelineTreeView.Filters = class extends Common.Object { |
142 constructor() { | 141 constructor() { |
143 super(); | 142 super(); |
144 | |
145 this._categoryFilter = new Timeline.TimelineFilters.Category(); | 143 this._categoryFilter = new Timeline.TimelineFilters.Category(); |
146 this._durationFilter = new Timeline.TimelineFilters.IsLong(); | 144 this._durationFilter = new Timeline.TimelineFilters.IsLong(); |
147 this._textFilter = new Timeline.TimelineFilters.RegExp(); | 145 this._textFilter = new Timeline.TimelineFilters.RegExp(); |
148 this._filters = [this._categoryFilter, this._durationFilter, this._textFilte
r]; | 146 this._filters = [this._categoryFilter, this._durationFilter, this._textFilte
r]; |
149 | |
150 this._createFilterBar(); | |
151 } | 147 } |
152 | 148 |
153 /** | 149 /** |
154 * @return {!Array<!TimelineModel.TimelineModelFilter>} | 150 * @return {!Array<!TimelineModel.TimelineModelFilter>} |
155 */ | 151 */ |
156 filters() { | 152 filters() { |
157 return this._filters; | 153 return this._filters; |
158 } | 154 } |
159 | 155 |
160 /** | 156 /** |
161 * @return {?RegExp} | 157 * @param {!UI.Toolbar} toolbar |
162 */ | 158 */ |
163 searchRegExp() { | 159 populateToolbar(toolbar) { |
164 return this._textFilter.regExp(); | 160 this._textFilterUI = new UI.ToolbarInput(Common.UIString('Filter')); |
165 } | 161 this._textFilterUI.addEventListener(UI.ToolbarInput.Event.TextChanged, textF
ilterChanged, this); |
| 162 toolbar.appendToolbarItem(this._textFilterUI); |
166 | 163 |
167 /** | 164 var durationFilterUI = new UI.ToolbarComboBox(durationFilterChanged.bind(thi
s)); |
168 * @return {!UI.ToolbarItem} | |
169 */ | |
170 filterButton() { | |
171 return this._filterBar.filterButton(); | |
172 } | |
173 | |
174 /** | |
175 * @return {!UI.Widget} | |
176 */ | |
177 filtersWidget() { | |
178 return this._filterBar; | |
179 } | |
180 | |
181 _createFilterBar() { | |
182 this._filterBar = new UI.FilterBar('timelinePanel'); | |
183 | |
184 this._textFilterUI = new UI.TextFilterUI(); | |
185 this._textFilterUI.addEventListener(UI.FilterUI.Events.FilterChanged, textFi
lterChanged, this); | |
186 this._filterBar.addFilter(this._textFilterUI); | |
187 | |
188 var durationOptions = []; | |
189 for (var durationMs of Timeline.EventsTimelineTreeView.Filters._durationFilt
erPresetsMs) { | 165 for (var durationMs of Timeline.EventsTimelineTreeView.Filters._durationFilt
erPresetsMs) { |
190 var durationOption = {}; | 166 durationFilterUI.addOption(durationFilterUI.createOption( |
191 if (!durationMs) { | 167 durationMs ? Common.UIString('\u2265 %d\u2009ms', durationMs) : Common
.UIString('All'), |
192 durationOption.label = Common.UIString('All'); | 168 durationMs ? Common.UIString('Hide records shorter than %d\u2009ms', d
urationMs) |
193 durationOption.title = Common.UIString('Show all records'); | 169 : Common.UIString('Show all records'), |
194 } else { | 170 String(durationMs))); |
195 durationOption.label = Common.UIString('\u2265 %dms', durationMs); | |
196 durationOption.title = Common.UIString('Hide records shorter than %dms',
durationMs); | |
197 } | |
198 durationOption.value = String(durationMs); | |
199 durationOptions.push(durationOption); | |
200 } | 171 } |
201 var durationFilterUI = new UI.ComboBoxFilterUI(durationOptions); | 172 toolbar.appendToolbarItem(durationFilterUI); |
202 durationFilterUI.addEventListener(UI.FilterUI.Events.FilterChanged, duration
FilterChanged, this); | |
203 this._filterBar.addFilter(durationFilterUI); | |
204 | 173 |
205 var categoryFiltersUI = {}; | 174 var categoryFiltersUI = {}; |
206 var categories = Timeline.TimelineUIUtils.categories(); | 175 var categories = Timeline.TimelineUIUtils.categories(); |
207 for (var categoryName in categories) { | 176 for (var categoryName in categories) { |
208 var category = categories[categoryName]; | 177 var category = categories[categoryName]; |
209 if (!category.visible) | 178 if (!category.visible) |
210 continue; | 179 continue; |
211 var filter = new UI.CheckboxFilterUI(category.name, category.title); | 180 var checkbox = new UI.ToolbarCheckbox( |
212 filter.setColor(category.color, 'rgba(0, 0, 0, 0.2)'); | 181 category.title, undefined, undefined, categoriesFilterChanged.bind(thi
s, categoryName)); |
213 categoryFiltersUI[category.name] = filter; | 182 checkbox.setChecked(true); |
214 filter.addEventListener(UI.FilterUI.Events.FilterChanged, categoriesFilter
Changed.bind(this, categoryName)); | 183 checkbox.inputElement.style.backgroundColor = category.color; |
215 this._filterBar.addFilter(filter); | 184 categoryFiltersUI[category.name] = checkbox; |
| 185 toolbar.appendToolbarItem(checkbox); |
216 } | 186 } |
217 return this._filterBar; | |
218 | 187 |
219 /** | 188 /** |
220 * @this {Timeline.EventsTimelineTreeView.Filters} | 189 * @this {Timeline.EventsTimelineTreeView.Filters} |
221 */ | 190 */ |
222 function textFilterChanged() { | 191 function textFilterChanged() { |
223 var searchQuery = this._textFilterUI.value(); | 192 var searchQuery = this._textFilterUI.value(); |
224 this._textFilter.setRegExp(searchQuery ? createPlainTextSearchRegex(search
Query, 'i') : null); | 193 this._textFilter.setRegExp(searchQuery ? createPlainTextSearchRegex(search
Query, 'i') : null); |
225 this._notifyFiltersChanged(); | 194 this._notifyFiltersChanged(); |
226 } | 195 } |
227 | 196 |
228 /** | 197 /** |
229 * @this {Timeline.EventsTimelineTreeView.Filters} | 198 * @this {Timeline.EventsTimelineTreeView.Filters} |
230 */ | 199 */ |
231 function durationFilterChanged() { | 200 function durationFilterChanged() { |
232 var duration = durationFilterUI.value(); | 201 var duration = durationFilterUI.selectedOption().value; |
233 var minimumRecordDuration = parseInt(duration, 10); | 202 var minimumRecordDuration = parseInt(duration, 10); |
234 this._durationFilter.setMinimumRecordDuration(minimumRecordDuration); | 203 this._durationFilter.setMinimumRecordDuration(minimumRecordDuration); |
235 this._notifyFiltersChanged(); | 204 this._notifyFiltersChanged(); |
236 } | 205 } |
237 | 206 |
238 /** | 207 /** |
239 * @param {string} name | 208 * @param {string} name |
240 * @this {Timeline.EventsTimelineTreeView.Filters} | 209 * @this {Timeline.EventsTimelineTreeView.Filters} |
241 */ | 210 */ |
242 function categoriesFilterChanged(name) { | 211 function categoriesFilterChanged(name) { |
243 var categories = Timeline.TimelineUIUtils.categories(); | 212 var categories = Timeline.TimelineUIUtils.categories(); |
244 categories[name].hidden = !categoryFiltersUI[name].checked(); | 213 categories[name].hidden = !categoryFiltersUI[name].checked(); |
245 this._notifyFiltersChanged(); | 214 this._notifyFiltersChanged(); |
246 } | 215 } |
247 } | 216 } |
248 | 217 |
249 _notifyFiltersChanged() { | 218 _notifyFiltersChanged() { |
250 this.dispatchEventToListeners(Timeline.EventsTimelineTreeView.Filters.Events
.FilterChanged); | 219 this.dispatchEventToListeners(Timeline.EventsTimelineTreeView.Filters.Events
.FilterChanged); |
251 } | 220 } |
252 }; | 221 }; |
253 | 222 |
254 Timeline.EventsTimelineTreeView.Filters._durationFilterPresetsMs = [0, 1, 15]; | 223 Timeline.EventsTimelineTreeView.Filters._durationFilterPresetsMs = [0, 1, 15]; |
255 | 224 |
256 /** @enum {symbol} */ | 225 /** @enum {symbol} */ |
257 Timeline.EventsTimelineTreeView.Filters.Events = { | 226 Timeline.EventsTimelineTreeView.Filters.Events = { |
258 FilterChanged: Symbol('FilterChanged') | 227 FilterChanged: Symbol('FilterChanged') |
259 }; | 228 }; |
OLD | NEW |