Chromium Code Reviews| Index: dashboard/dashboard/elements/report-page.html |
| diff --git a/dashboard/dashboard/elements/report-page.html b/dashboard/dashboard/elements/report-page.html |
| index f32edfa3898133768889b357fd82eb4e7fdb635f..0eccc2c7129bbef061ee3e86c4d1f00351235354 100644 |
| --- a/dashboard/dashboard/elements/report-page.html |
| +++ b/dashboard/dashboard/elements/report-page.html |
| @@ -119,6 +119,63 @@ found in the LICENSE file. |
| events.addEventListener(window, 'uriload', this.onUriLoad.bind(this)); |
| this.uriController = new uri.Controller(this.getPageState.bind(this)); |
| this.uriController.load(); |
| + |
| + this.addEventListener('click', this.onClick_.bind(this)); |
| + }, |
| + |
| + async onClick_(event) { |
| + // When the user clicks anywhere in any chart-title, populate the |
| + // testPicker. |
| + let chartTitle = event.target; |
| + while (chartTitle !== this && chartTitle.tagName !== 'CHART-TITLE') { |
| + chartTitle = chartTitle.parentNode; |
| + } |
| + if (chartTitle.tagName !== 'CHART-TITLE') return; |
|
sullivan
2017/05/16 13:35:13
The event handling here is really different than t
benjhayden
2017/05/16 21:17:45
Done.
|
| + |
| + const testPaths = chartTitle.getTestPaths(); |
|
eakuefner
2017/05/16 02:08:53
Can you write some comments that explain why this
benjhayden
2017/05/16 21:17:45
Changed to use event.titleParts.
|
| + let testPath = testPaths.shift().split('/'); |
| + for (const newPath of testPaths) { |
| + for (let i = 0; i < Math.min(newPath.length, testPath.length); ++i) { |
| + if (testPath[i] !== newPath[i]) { |
| + testPath = testPath.slice(0, i); |
| + } |
| + } |
| + } |
| + |
| + const suiteMenu = this.testPicker.getSelectionMenu(0); |
| + const suiteName = testPath[2]; |
| + for (let itemIndex = 0; itemIndex < suiteMenu.items.length; ++itemIndex) { |
|
eakuefner
2017/05/16 02:08:52
Could you write this as a for..of loop?
benjhayden
2017/05/16 21:17:45
Done.
|
| + if (suiteMenu.items[itemIndex].name === suiteName) { |
| + suiteMenu.selectedItem = suiteMenu.items[itemIndex]; |
| + break; |
| + } |
| + } |
| + |
| + this.testPicker.updateTestSuiteDescription(); |
| + await this.testPicker.updateBotMenu(); |
| + |
| + const botName = testPath[1]; |
| + const botMenu = this.testPicker.getSelectionMenu(1); |
| + for (let itemIndex = 0; itemIndex < botMenu.items.length; ++itemIndex) { |
| + if (botMenu.items[itemIndex].name === botName) { |
| + botMenu.selectedItem = botMenu.items[itemIndex]; |
| + break; |
| + } |
| + } |
| + await this.testPicker.updateSubtestMenus(2); |
| + |
| + for (let i = 3; i < testPath.length; ++i) { |
| + const name = testPath[i]; |
| + const menu = this.testPicker.getSelectionMenu(i - 1); |
| + |
| + for (let itemIndex = 0; itemIndex < menu.items.length; ++itemIndex) { |
| + if (menu.items[itemIndex].name === testPath[i]) { |
| + menu.selectedItem = menu.items[itemIndex]; |
| + break; |
| + } |
| + } |
| + await this.testPicker.updateSubtestMenus(i); |
| + } |
| }, |
| /** |