| 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 |