diff --git a/src/server/report/app.js b/src/server/report/app.js index a7f5e71f..f0abe727 100644 --- a/src/server/report/app.js +++ b/src/server/report/app.js @@ -80,7 +80,6 @@ class App extends LitElement { this._fullMode = FULL_MODE.GOLDEN.value; this._layout = LAYOUTS.SPLIT.value; this._overlay = true; - this._updateFiles(); } connectedCallback() { super.connectedCallback(); @@ -98,6 +97,13 @@ class App extends LitElement { this._filterFile = undefined; this._filterTest = undefined; } + if (searchParams.has('status')) { + this._filterStatus = searchParams.get('status'); + } + if (searchParams.has('browsers')) { + this._filterBrowsers = searchParams.get('browsers').split(','); + } + this._updateFiles(); }); page(); } @@ -141,24 +147,28 @@ class App extends LitElement { `; } _goHome() { - page(this._root); + this._updateSearchParams({ file: undefined, test: undefined }); } _handleFilterBrowserChange(e) { - const index = this._filterBrowsers.indexOf(e.target.value); - if (!e.target.checked && index > -1) { - this._filterBrowsers.splice(index, 1); - } else if (e.target.checked && index === -1) { - this._filterBrowsers.push(e.target.value); - } - this._updateFiles(); + const browsers = data.browsers.map(b => b.name).filter(b => { + if (b === e.target.value) { + return e.target.checked; + } else { + return this._filterBrowsers.includes(b); + } + }); + this._updateSearchParams({ browsers: browsers.join(',') }); } _handleFilterStatusChange(e) { - this._filterStatus = e.target.value; - this._updateFiles(); + this._updateSearchParams({ status: e.target.value }); } _handleSettingChange(e) { this[`_${e.detail.name}`] = e.detail.value; } + _handleTestClick(e) { + this._updateSearchParams({ file: e.target.dataset.file, test: e.target.dataset.test }); + return false; + } _renderFile(file) { const renderBrowserCell = (b) => { if (!this._filterBrowsers.includes(b.name)) return nothing; @@ -227,15 +237,21 @@ class App extends LitElement { const text = passed ? 'passed' : 'failed'; return html`