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

Side by Side Diff: Source/devtools/front_end/TimelinePanel.js

Issue 33143002: DevTools: Unify filtering UI (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Comments addressed Created 7 years, 2 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * Copyright (C) 2012 Intel Inc. All rights reserved. 3 * Copyright (C) 2012 Intel Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 26 matching lines...) Expand all
37 importScript("TimelineFrameController.js"); 37 importScript("TimelineFrameController.js");
38 38
39 /** 39 /**
40 * @constructor 40 * @constructor
41 * @extends {WebInspector.Panel} 41 * @extends {WebInspector.Panel}
42 */ 42 */
43 WebInspector.TimelinePanel = function() 43 WebInspector.TimelinePanel = function()
44 { 44 {
45 WebInspector.Panel.call(this, "timeline"); 45 WebInspector.Panel.call(this, "timeline");
46 this.registerRequiredCSS("timelinePanel.css"); 46 this.registerRequiredCSS("timelinePanel.css");
47 this.registerRequiredCSS("filter.css");
47 this.element.addStyleClass("vbox"); 48 this.element.addStyleClass("vbox");
48 49
49 this._model = new WebInspector.TimelineModel(); 50 this._model = new WebInspector.TimelineModel();
50 this._presentationModel = new WebInspector.TimelinePresentationModel(); 51 this._presentationModel = new WebInspector.TimelinePresentationModel();
51 52
52 this._overviewModeSetting = WebInspector.settings.createSetting("timelineOve rviewMode", WebInspector.TimelineOverviewPane.Mode.Events); 53 this._overviewModeSetting = WebInspector.settings.createSetting("timelineOve rviewMode", WebInspector.TimelineOverviewPane.Mode.Events);
53 this._glueRecordsSetting = WebInspector.settings.createSetting("timelineGlue Records", false); 54 this._glueRecordsSetting = WebInspector.settings.createSetting("timelineGlue Records", false);
54 55
56 this._createFilters();
57
55 this._overviewPane = new WebInspector.TimelineOverviewPane(this._model); 58 this._overviewPane = new WebInspector.TimelineOverviewPane(this._model);
56 this._overviewPane.addEventListener(WebInspector.TimelineOverviewPane.Events .WindowChanged, this._invalidateAndScheduleRefresh.bind(this, false, true)); 59 this._overviewPane.addEventListener(WebInspector.TimelineOverviewPane.Events .WindowChanged, this._invalidateAndScheduleRefresh.bind(this, false, true));
57 this._overviewPane.addEventListener(WebInspector.TimelineOverviewPane.Events .ModeChanged, this._overviewModeChanged, this); 60 this._overviewPane.addEventListener(WebInspector.TimelineOverviewPane.Events .ModeChanged, this._overviewModeChanged, this);
58 this._overviewPane.show(this.element); 61 this._overviewPane.show(this.element);
59 62
60 this.element.addEventListener("contextmenu", this._contextMenu.bind(this), f alse); 63 this.element.addEventListener("contextmenu", this._contextMenu.bind(this), f alse);
61 64
62 this.createSidebarViewWithTree(); 65 this.createSidebarViewWithTree();
63 66
64 this._containerElement = this.splitView.element; 67 this._containerElement = this.splitView.element;
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 this._memoryStatistics.setHeight(height); 207 this._memoryStatistics.setHeight(height);
205 }, 208 },
206 209
207 get calculator() 210 get calculator()
208 { 211 {
209 return this._calculator; 212 return this._calculator;
210 }, 213 },
211 214
212 get statusBarItems() 215 get statusBarItems()
213 { 216 {
214 return this._statusBarItems.select("element").concat([ 217 return this._statusBarItems;
215 this._miscStatusBarItems
216 ]);
217 }, 218 },
218 219
219 defaultFocusedElement: function() 220 defaultFocusedElement: function()
220 { 221 {
221 return this.element; 222 return this.element;
222 }, 223 },
223 224
225 _createFilters: function()
226 {
227 this._filterBar = new WebInspector.FilterBar();
228 this._filtersContainer = this.element.createChild("div", "timeline-filte rs-header hidden");
229 this._filtersContainer.appendChild(this._filterBar.filtersElement());
230 this._filterBar.addEventListener(WebInspector.FilterBar.Events.FiltersTo ggled, this._onFiltersToggled, this);
231
232 this._textFilter = new WebInspector.TextFilterUI();
233 this._textFilter.addEventListener(WebInspector.FilterUI.Events.FilterCha nged, this._textFilterChanged, this);
234 this._filterBar.addFilter(this._textFilter);
235
236 var durationOptions = [];
237 for (var presetIndex = 0; presetIndex < WebInspector.TimelinePanel.durat ionFilterPresetsMs.length; ++presetIndex) {
238 var durationMs = WebInspector.TimelinePanel.durationFilterPresetsMs[ presetIndex];
239 var durationOption = {};
240 if (!durationMs) {
241 durationOption.label = WebInspector.UIString("All");
242 durationOption.title = WebInspector.UIString("Show all records") ;
243 } else {
244 durationOption.label = WebInspector.UIString("\u2265 %dms", dura tionMs);
245 durationOption.title = WebInspector.UIString("Hide records short er than %dms", durationMs);
246 }
247 durationOption.value = durationMs;
248 durationOptions.push(durationOption);
249 }
250 this._durationComboBoxFilter = new WebInspector.ComboBoxFilterUI(duratio nOptions);
251 this._durationComboBoxFilter.addEventListener(WebInspector.FilterUI.Even ts.FilterChanged, this._durationFilterChanged, this);
252 this._filterBar.addFilter(this._durationComboBoxFilter);
253
254 this._categoryFilters = {};
255 var categoryTypes = [];
256 var categories = WebInspector.TimelinePresentationModel.categories();
257 for (var categoryName in categories) {
258 var category = categories[categoryName];
259 if (category.overviewStripGroupIndex < 0)
260 continue;
261 var filter = new WebInspector.CheckboxFilterUI(category.name, catego ry.title, false);
262 filter.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._categoriesFilterChanged.bind(this, category.name), this);
263 this._filterBar.addFilter(filter);
264 this._categoryFilters[category.name] = filter;
265 }
266 },
267
224 _createStatusBarItems: function() 268 _createStatusBarItems: function()
225 { 269 {
226 this._statusBarItems = /** @type {!Array.<!WebInspector.StatusBarItem>} */ ([]); 270 this._statusBarButtons = /** @type {!Array.<!WebInspector.StatusBarItem> } */ ([]);
271 this._statusBarItems = /** @type {!Array.<!Element>} */ ([]);
227 272
228 this.toggleTimelineButton = new WebInspector.StatusBarButton(WebInspecto r.UIString("Record"), "record-profile-status-bar-item"); 273 this.toggleTimelineButton = new WebInspector.StatusBarButton(WebInspecto r.UIString("Record"), "record-profile-status-bar-item");
229 this.toggleTimelineButton.addEventListener("click", this._toggleTimeline ButtonClicked, this); 274 this.toggleTimelineButton.addEventListener("click", this._toggleTimeline ButtonClicked, this);
230 this._statusBarItems.push(this.toggleTimelineButton); 275 this._statusBarButtons.push(this.toggleTimelineButton);
276 this._statusBarItems.push(this.toggleTimelineButton.element);
277
278 this._statusBarItems.push(this._filterBar.filterButton());
231 279
232 this.clearButton = new WebInspector.StatusBarButton(WebInspector.UIStrin g("Clear"), "clear-status-bar-item"); 280 this.clearButton = new WebInspector.StatusBarButton(WebInspector.UIStrin g("Clear"), "clear-status-bar-item");
233 this.clearButton.addEventListener("click", this._clearPanel, this); 281 this.clearButton.addEventListener("click", this._clearPanel, this);
234 this._statusBarItems.push(this.clearButton); 282 this._statusBarButtons.push(this.clearButton);
283 this._statusBarItems.push(this.clearButton.element);
235 284
236 this.garbageCollectButton = new WebInspector.StatusBarButton(WebInspecto r.UIString("Collect Garbage"), "garbage-collect-status-bar-item"); 285 this.garbageCollectButton = new WebInspector.StatusBarButton(WebInspecto r.UIString("Collect Garbage"), "garbage-collect-status-bar-item");
237 this.garbageCollectButton.addEventListener("click", this._garbageCollect ButtonClicked, this); 286 this.garbageCollectButton.addEventListener("click", this._garbageCollect ButtonClicked, this);
238 this._statusBarItems.push(this.garbageCollectButton); 287 this._statusBarButtons.push(this.garbageCollectButton);
288 this._statusBarItems.push(this.garbageCollectButton.element);
239 289
240 this._glueParentButton = new WebInspector.StatusBarButton(WebInspector.U IString("Glue asynchronous events to causes"), "glue-async-status-bar-item"); 290 this._glueParentButton = new WebInspector.StatusBarButton(WebInspector.U IString("Glue asynchronous events to causes"), "glue-async-status-bar-item");
241 this._glueParentButton.toggled = this._glueRecordsSetting.get(); 291 this._glueParentButton.toggled = this._glueRecordsSetting.get();
242 this._presentationModel.setGlueRecords(this._glueParentButton.toggled); 292 this._presentationModel.setGlueRecords(this._glueParentButton.toggled);
243 this._glueParentButton.addEventListener("click", this._glueParentButtonC licked, this); 293 this._glueParentButton.addEventListener("click", this._glueParentButtonC licked, this);
244 this._statusBarItems.push(this._glueParentButton); 294 this._statusBarButtons.push(this._glueParentButton);
295 this._statusBarItems.push(this._glueParentButton.element);
245 296
246 this._durationFilterSelector = new WebInspector.StatusBarComboBox(this._ durationFilterChanged.bind(this)); 297 this._statusTextContainer = document.createElement("div");
247 for (var presetIndex = 0; presetIndex < WebInspector.TimelinePanel.durat ionFilterPresetsMs.length; ++presetIndex) { 298 this._statusBarItems.push(this._statusTextContainer);
248 var durationMs = WebInspector.TimelinePanel.durationFilterPresetsMs[ presetIndex];
249 var option = document.createElement("option");
250 if (!durationMs) {
251 option.text = WebInspector.UIString("All");
252 option.title = WebInspector.UIString("Show all records");
253 } else {
254 option.text = WebInspector.UIString("\u2265 %dms", durationMs);
255 option.title = WebInspector.UIString("Hide records shorter than %dms", durationMs);
256 }
257 option._durationMs = durationMs;
258 this._durationFilterSelector.addOption(option);
259 this._durationFilterSelector.element.title = this._durationFilterSel ector.selectedOption().title;
260 }
261 this._statusBarItems.push(this._durationFilterSelector);
262 299
263 this._miscStatusBarItems = document.createElement("div"); 300 this.recordsCounter = new WebInspector.StatusBarText("");
264 this._miscStatusBarItems.className = "status-bar-items timeline-misc-sta tus-bar-items"; 301 this._statusTextContainer.appendChild(this.recordsCounter.element);
265 302
266 this._statusBarFilters = this._miscStatusBarItems.createChild("div", "ti meline-misc-status-bar-filters"); 303 this.frameStatistics = this._statusTextContainer.createChild("div", "tim eline-frame-statistics status-bar-item status-bar-text hidden");
267 var categories = WebInspector.TimelinePresentationModel.categories();
268 for (var categoryName in categories) {
269 var category = categories[categoryName];
270 if (category.overviewStripGroupIndex < 0)
271 continue;
272 this._statusBarFilters.appendChild(this._createTimelineCategoryStatu sBarCheckbox(category));
273 }
274
275 var statsContainer = this._statusBarFilters.createChild("div", "timeline -records-stats-container");
276 this.recordsCounter = statsContainer.createChild("div", "timeline-record s-stats");
277 this.frameStatistics = statsContainer.createChild("div", "timeline-recor ds-stats hidden");
278 304
279 function getAnchor() 305 function getAnchor()
280 { 306 {
281 return this.frameStatistics; 307 return this.frameStatistics;
282 } 308 }
283 this._frameStatisticsPopoverHelper = new WebInspector.PopoverHelper(this .frameStatistics, getAnchor.bind(this), this._showFrameStatistics.bind(this)); 309 this._frameStatisticsPopoverHelper = new WebInspector.PopoverHelper(this .frameStatistics, getAnchor.bind(this), this._showFrameStatistics.bind(this));
310
311 this._miscStatusBarItems = document.createElement("div");
312 this._miscStatusBarItems.className = "status-bar-item";
313 this._statusBarItems.push(this._miscStatusBarItems);
314 },
315
316 _textFilterChanged: function(event)
317 {
318 var searchQuery = this._textFilter.value();
319 this._presentationModel.setSearchFilter(null);
320 delete this._searchFilter;
321
322 function cleanRecord(record)
323 {
324 delete record.clicked;
325 }
326 WebInspector.TimelinePresentationModel.forAllRecords(this._presentationM odel.rootRecord().children, cleanRecord);
327
328 this.searchCanceled();
329 if (searchQuery) {
330 this._searchFilter = new WebInspector.TimelineSearchFilter(createPla inTextSearchRegex(searchQuery, "i"));
331 this._presentationModel.setSearchFilter(this._searchFilter);
332 }
333 this._invalidateAndScheduleRefresh(true, true);
334 },
335
336 _durationFilterChanged: function()
337 {
338 var duration = this._durationComboBoxFilter.value();
339 var minimumRecordDuration = +duration / 1000.0;
340 this._durationFilter.setMinimumRecordDuration(minimumRecordDuration);
341 this._invalidateAndScheduleRefresh(true, true);
342 },
343
344 _categoriesFilterChanged: function(name, event)
345 {
346 var categories = WebInspector.TimelinePresentationModel.categories();
347 categories[name].hidden = !this._categoryFilters[name].checked();
348 this._invalidateAndScheduleRefresh(true, true);
349 },
350
351 _onFiltersToggled: function(event)
352 {
353 var toggled = /** @type {boolean} */ (event.data);
354 this._filtersContainer.enableStyleClass("hidden", !toggled);
284 }, 355 },
285 356
286 /** 357 /**
287 * @param {WebInspector.TimelineCategory} category
288 */
289 _createTimelineCategoryStatusBarCheckbox: function(category)
290 {
291 var labelContainer = document.createElement("div");
292 labelContainer.addStyleClass("timeline-category-statusbar-item");
293 labelContainer.addStyleClass("timeline-category-" + category.name);
294 labelContainer.addStyleClass("status-bar-item");
295
296 var label = labelContainer.createChild("label");
297 var checkBorder = label.createChild("div", "timeline-category-checkbox") ;
298 var checkElement = checkBorder.createChild("div", "timeline-category-che ckbox-check timeline-category-checkbox-checked");
299 checkElement.type = "checkbox";
300 checkElement.checked = true;
301 labelContainer.addEventListener("click", listener.bind(this), false);
302
303 function listener(event)
304 {
305 var checked = !checkElement.checked;
306 checkElement.checked = checked;
307 category.hidden = !checked;
308 checkElement.enableStyleClass("timeline-category-checkbox-checked", checkElement.checked);
309 this._invalidateAndScheduleRefresh(true, true);
310 }
311
312 var typeElement = label.createChild("span", "type");
313 typeElement.textContent = category.title;
314
315 return labelContainer;
316 },
317
318 /**
319 * @param {?WebInspector.ProgressIndicator} indicator 358 * @param {?WebInspector.ProgressIndicator} indicator
320 */ 359 */
321 _setOperationInProgress: function(indicator) 360 _setOperationInProgress: function(indicator)
322 { 361 {
323 this._operationInProgress = !!indicator; 362 this._operationInProgress = !!indicator;
324 for (var i = 0; i < this._statusBarItems.length; ++i) 363 for (var i = 0; i < this._statusBarButtons.length; ++i)
325 this._statusBarItems[i].setEnabled(!this._operationInProgress); 364 this._statusBarButtons[i].setEnabled(!this._operationInProgress);
326 this._glueParentButton.setEnabled(!this._operationInProgress && !this._f rameController); 365 this._glueParentButton.setEnabled(!this._operationInProgress && !this._f rameController);
366 this._statusTextContainer.enableStyleClass("hidden", !!indicator);
327 this._miscStatusBarItems.removeChildren(); 367 this._miscStatusBarItems.removeChildren();
328 this._miscStatusBarItems.appendChild(indicator ? indicator.element : thi s._statusBarFilters); 368 if (indicator)
369 this._miscStatusBarItems.appendChild(indicator.element);
329 }, 370 },
330 371
331 _registerShortcuts: function() 372 _registerShortcuts: function()
332 { 373 {
333 this.registerShortcuts(WebInspector.TimelinePanelDescriptor.ShortcutKeys .StartStopRecording, this._toggleTimelineButtonClicked.bind(this)); 374 this.registerShortcuts(WebInspector.TimelinePanelDescriptor.ShortcutKeys .StartStopRecording, this._toggleTimelineButtonClicked.bind(this));
334 this.registerShortcuts(WebInspector.TimelinePanelDescriptor.ShortcutKeys .SaveToFile, this._saveToFile.bind(this)); 375 this.registerShortcuts(WebInspector.TimelinePanelDescriptor.ShortcutKeys .SaveToFile, this._saveToFile.bind(this));
335 this.registerShortcuts(WebInspector.TimelinePanelDescriptor.ShortcutKeys .LoadFromFile, this._selectFileToLoad.bind(this)); 376 this.registerShortcuts(WebInspector.TimelinePanelDescriptor.ShortcutKeys .LoadFromFile, this._selectFileToLoad.bind(this));
336 }, 377 },
337 378
338 _createFileSelector: function() 379 _createFileSelector: function()
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 return progressIndicator; 454 return progressIndicator;
414 }, 455 },
415 456
416 _rootRecord: function() 457 _rootRecord: function()
417 { 458 {
418 return this._presentationModel.rootRecord(); 459 return this._presentationModel.rootRecord();
419 }, 460 },
420 461
421 _updateRecordsCounter: function(recordsInWindowCount) 462 _updateRecordsCounter: function(recordsInWindowCount)
422 { 463 {
423 this.recordsCounter.textContent = WebInspector.UIString("%d of %d record s shown", recordsInWindowCount, this._allRecordsCount); 464 this.recordsCounter.setText(WebInspector.UIString("%d of %d records show n", recordsInWindowCount, this._allRecordsCount));
424 }, 465 },
425 466
426 _updateFrameStatistics: function(frames) 467 _updateFrameStatistics: function(frames)
427 { 468 {
428 if (frames.length) { 469 if (frames.length) {
429 this._lastFrameStatistics = new WebInspector.FrameStatistics(frames) ; 470 this._lastFrameStatistics = new WebInspector.FrameStatistics(frames) ;
430 var details = WebInspector.UIString("avg: %s, \u03c3: %s", 471 var details = WebInspector.UIString("avg: %s, \u03c3: %s",
431 Number.secondsToString(this._lastFrameStatistics.average, true), Number.secondsToString(this._lastFrameStatistics.stddev, true)); 472 Number.secondsToString(this._lastFrameStatistics.average, true), Number.secondsToString(this._lastFrameStatistics.stddev, true));
432 } else 473 } else
433 this._lastFrameStatistics = null; 474 this._lastFrameStatistics = null;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 var frameMode = mode === WebInspector.TimelineOverviewPane.Mode.Frames; 568 var frameMode = mode === WebInspector.TimelineOverviewPane.Mode.Frames;
528 this._overviewModeSetting.set(mode); 569 this._overviewModeSetting.set(mode);
529 if (frameMode !== this._frameMode) { 570 if (frameMode !== this._frameMode) {
530 this._frameMode = frameMode; 571 this._frameMode = frameMode;
531 this._glueParentButton.setEnabled(!frameMode); 572 this._glueParentButton.setEnabled(!frameMode);
532 this._presentationModel.setGlueRecords(this._glueParentButton.toggle d && !frameMode); 573 this._presentationModel.setGlueRecords(this._glueParentButton.toggle d && !frameMode);
533 this._repopulateRecords(); 574 this._repopulateRecords();
534 575
535 if (frameMode) { 576 if (frameMode) {
536 this.element.addStyleClass("timeline-frame-overview"); 577 this.element.addStyleClass("timeline-frame-overview");
537 this.recordsCounter.addStyleClass("hidden"); 578 this.recordsCounter.element.addStyleClass("hidden");
538 this.frameStatistics.removeStyleClass("hidden"); 579 this.frameStatistics.removeStyleClass("hidden");
539 this._frameController = new WebInspector.TimelineFrameController (this._model, this._overviewPane, this._presentationModel); 580 this._frameController = new WebInspector.TimelineFrameController (this._model, this._overviewPane, this._presentationModel);
540 } else { 581 } else {
541 this._frameController.dispose(); 582 this._frameController.dispose();
542 this._frameController = null; 583 this._frameController = null;
543 this.element.removeStyleClass("timeline-frame-overview"); 584 this.element.removeStyleClass("timeline-frame-overview");
544 this.recordsCounter.removeStyleClass("hidden"); 585 this.recordsCounter.element.removeStyleClass("hidden");
545 this.frameStatistics.addStyleClass("hidden"); 586 this.frameStatistics.addStyleClass("hidden");
546 } 587 }
547 } 588 }
548 if (shouldShowMemory === this._memoryStatistics.visible()) 589 if (shouldShowMemory === this._memoryStatistics.visible())
549 return; 590 return;
550 this._timelineMemorySplitter.enableStyleClass("hidden", !shouldShowMemor y); 591 this._timelineMemorySplitter.enableStyleClass("hidden", !shouldShowMemor y);
551 if (!shouldShowMemory) { 592 if (!shouldShowMemory) {
552 this._memoryStatistics.hide(); 593 this._memoryStatistics.hide();
553 this._resize(this.splitView.sidebarWidth()); 594 this._resize(this.splitView.sidebarWidth());
554 } else { 595 } else {
(...skipping 12 matching lines...) Expand all
567 return true; 608 return true;
568 if (this.toggleTimelineButton.toggled) { 609 if (this.toggleTimelineButton.toggled) {
569 this._model.stopRecording(); 610 this._model.stopRecording();
570 } else { 611 } else {
571 this._model.startRecording(this._includeDomCounters); 612 this._model.startRecording(this._includeDomCounters);
572 WebInspector.userMetrics.TimelineStarted.record(); 613 WebInspector.userMetrics.TimelineStarted.record();
573 } 614 }
574 return true; 615 return true;
575 }, 616 },
576 617
577 _durationFilterChanged: function()
578 {
579 var option = this._durationFilterSelector.selectedOption();
580 var minimumRecordDuration = +option._durationMs / 1000.0;
581 this._durationFilter.setMinimumRecordDuration(minimumRecordDuration);
582 this._durationFilterSelector.element.title = option.title;
583 this._invalidateAndScheduleRefresh(true, true);
584 },
585
586 _garbageCollectButtonClicked: function() 618 _garbageCollectButtonClicked: function()
587 { 619 {
588 HeapProfilerAgent.collectGarbage(); 620 HeapProfilerAgent.collectGarbage();
589 }, 621 },
590 622
591 _glueParentButtonClicked: function() 623 _glueParentButtonClicked: function()
592 { 624 {
593 var newValue = !this._glueParentButton.toggled; 625 var newValue = !this._glueParentButton.toggled;
594 this._glueParentButton.toggled = newValue; 626 this._glueParentButton.toggled = newValue;
595 this._presentationModel.setGlueRecords(newValue); 627 this._presentationModel.setGlueRecords(newValue);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 692
661 /** 693 /**
662 * @param {number} sidebarWidth 694 * @param {number} sidebarWidth
663 */ 695 */
664 _resize: function(sidebarWidth) 696 _resize: function(sidebarWidth)
665 { 697 {
666 this._closeRecordDetails(); 698 this._closeRecordDetails();
667 this._graphRowsElementWidth = this._graphRowsElement.offsetWidth; 699 this._graphRowsElementWidth = this._graphRowsElement.offsetWidth;
668 this._containerElementHeight = this._containerElement.clientHeight; 700 this._containerElementHeight = this._containerElement.clientHeight;
669 this._scheduleRefresh(false, true); 701 this._scheduleRefresh(false, true);
670 var lastItemElement = this._statusBarItems[this._statusBarItems.length - 1].element;
671 var minFloatingStatusBarItemsOffset = lastItemElement.offsetLeft + lastI temElement.offsetWidth;
672 this._miscStatusBarItems.style.left = Math.max(minFloatingStatusBarItems Offset, sidebarWidth) + "px";
673 }, 702 },
674 703
675 _clearPanel: function() 704 _clearPanel: function()
676 { 705 {
677 this._model.reset(); 706 this._model.reset();
678 }, 707 },
679 708
680 _onRecordsCleared: function() 709 _onRecordsCleared: function()
681 { 710 {
682 this._resetPanel(); 711 this._resetPanel();
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
1234 1263
1235 searchCanceled: function() 1264 searchCanceled: function()
1236 { 1265 {
1237 this._clearHighlight(); 1266 this._clearHighlight();
1238 delete this._searchResults; 1267 delete this._searchResults;
1239 delete this._selectedSearchResult; 1268 delete this._selectedSearchResult;
1240 delete this._searchRegExp; 1269 delete this._searchRegExp;
1241 }, 1270 },
1242 1271
1243 /** 1272 /**
1244 * @return {boolean}
1245 */
1246 canFilter: function()
1247 {
1248 return true;
1249 },
1250
1251 performFilter: function(searchQuery)
1252 {
1253 this._presentationModel.setSearchFilter(null);
1254 delete this._searchFilter;
1255
1256 function cleanRecord(record)
1257 {
1258 delete record.clicked;
1259 }
1260 WebInspector.TimelinePresentationModel.forAllRecords(this._presentationM odel.rootRecord().children, cleanRecord);
1261
1262 this.searchCanceled();
1263 if (searchQuery) {
1264 this._searchFilter = new WebInspector.TimelineSearchFilter(createPla inTextSearchRegex(searchQuery, "i"));
1265 this._presentationModel.setSearchFilter(this._searchFilter);
1266 }
1267 this._invalidateAndScheduleRefresh(true, true);
1268 },
1269
1270 /**
1271 * @param {string} query 1273 * @param {string} query
1272 * @param {boolean} shouldJump 1274 * @param {boolean} shouldJump
1273 */ 1275 */
1274 performSearch: function(query, shouldJump) 1276 performSearch: function(query, shouldJump)
1275 { 1277 {
1276 this._searchRegExp = createPlainTextSearchRegex(query, "i"); 1278 this._searchRegExp = createPlainTextSearchRegex(query, "i");
1277 delete this._searchResults; 1279 delete this._searchResults;
1278 this._updateSearchHighlight(true, shouldJump); 1280 this._updateSearchHighlight(true, shouldJump);
1279 }, 1281 },
1280 1282
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
1614 1616
1615 /** 1617 /**
1616 * @param {!WebInspector.TimelinePresentationModel.Record} record 1618 * @param {!WebInspector.TimelinePresentationModel.Record} record
1617 * @return {boolean} 1619 * @return {boolean}
1618 */ 1620 */
1619 accept: function(record) 1621 accept: function(record)
1620 { 1622 {
1621 return WebInspector.TimelineRecordListRow.testContentMatching(record, th is._regExp); 1623 return WebInspector.TimelineRecordListRow.testContentMatching(record, th is._regExp);
1622 } 1624 }
1623 } 1625 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/Settings.js ('k') | Source/devtools/front_end/TimelinePresentationModel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698