Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/timeline/EventsTimelineTreeView.js

Issue 2686993002: DevTools: Turn FilterBar into Toolbar in timeline events log view. (Closed)
Patch Set: rebaseline Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698