[ts] Type-check sdk/ConsoleSidebar.js with TypeScript
Bug: chromium:1011811, chromium:1135143
Change-Id: I9ea659e2fe1f1518a2e26a01009d7e61dd2e0c94
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2452694
Commit-Queue: Sigurd Schneider <[email protected]>
Reviewed-by: Simon Zünd <[email protected]>
diff --git a/front_end/console/ConsoleSidebar.js b/front_end/console/ConsoleSidebar.js
index 920615a..028249c 100644
--- a/front_end/console/ConsoleSidebar.js
+++ b/front_end/console/ConsoleSidebar.js
@@ -2,9 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// @ts-nocheck
-// TODO(crbug.com/1011811): Enable TypeScript compiler checks
-
import * as Common from '../common/common.js';
import * as Platform from '../platform/platform.js';
import * as SDK from '../sdk/sdk.js';
@@ -27,12 +24,13 @@
this._selectedTreeElement = null;
/** @type {!Array<!FilterTreeElement>} */
this._treeElements = [];
+ /** @type {!Common.Settings.Setting<string>} */
const selectedFilterSetting =
Common.Settings.Settings.instance().createSetting('console.sidebarSelectedFilter', null);
const Levels = SDK.ConsoleModel.MessageLevel;
const consoleAPIParsedFilters =
- [{key: FilterType.Source, text: SDK.ConsoleModel.MessageSource.ConsoleAPI, negative: false}];
+ [{key: FilterType.Source, text: SDK.ConsoleModel.MessageSource.ConsoleAPI, negative: false, regex: undefined}];
this._appendGroup(
_groupName.All, [], ConsoleFilter.allLevelsFilterValue(), UI.Icon.Icon.create('mediumicon-list'),
selectedFilterSetting);
@@ -61,8 +59,8 @@
* @param {string} name
* @param {!Array<!TextUtils.TextUtils.ParsedFilter>} parsedFilters
* @param {!Object<string, boolean>} levelsMask
- * @param {!Element} icon
- * @param {!Common.Settings.Setting} selectedFilterSetting
+ * @param {!UI.Icon.Icon} icon
+ * @param {!Common.Settings.Setting<string>} selectedFilterSetting
*/
_appendGroup(name, parsedFilters, levelsMask, icon, selectedFilterSetting) {
const filter = new ConsoleFilter(name, parsedFilters, null, levelsMask);
@@ -91,10 +89,10 @@
* @return {boolean}
*/
shouldBeVisible(viewMessage) {
- if (!this._selectedTreeElement) {
- return true;
+ if (this._selectedTreeElement instanceof ConsoleSidebarTreeElement) {
+ return this._selectedTreeElement.filter().shouldBeVisible(viewMessage);
}
- return this._selectedTreeElement._filter.shouldBeVisible(viewMessage);
+ return true;
}
/**
@@ -111,13 +109,27 @@
FilterSelected: Symbol('FilterSelected')
};
-export class URLGroupTreeElement extends UI.TreeOutline.TreeElement {
+class ConsoleSidebarTreeElement extends UI.TreeOutline.TreeElement {
+ /**
+ * @param {string|!Node} title
+ * @param {!ConsoleFilter} filter
+ */
+ constructor(title, filter) {
+ super(title);
+ this._filter = filter;
+ }
+
+ filter() {
+ return this._filter;
+ }
+}
+
+export class URLGroupTreeElement extends ConsoleSidebarTreeElement {
/**
* @param {!ConsoleFilter} filter
*/
constructor(filter) {
- super(filter.name);
- this._filter = filter;
+ super(filter.name, filter);
this._countElement = this.listItemElement.createChild('span', 'count');
const leadingIcons = [UI.Icon.Icon.create('largeicon-navigator-file')];
this.setLeadingIcons(leadingIcons);
@@ -126,19 +138,18 @@
incrementAndUpdateCounter() {
this._messageCount++;
- this._countElement.textContent = this._messageCount;
+ this._countElement.textContent = `${this._messageCount}`;
}
}
-export class FilterTreeElement extends UI.TreeOutline.TreeElement {
+export class FilterTreeElement extends ConsoleSidebarTreeElement {
/**
* @param {!ConsoleFilter} filter
- * @param {!Element} icon
- * @param {!Common.Settings.Setting} selectedFilterSetting
+ * @param {!UI.Icon.Icon} icon
+ * @param {!Common.Settings.Setting<string>} selectedFilterSetting
*/
constructor(filter, icon, selectedFilterSetting) {
- super(filter.name);
- this._filter = filter;
+ super(filter.name, filter);
this._selectedFilterSetting = selectedFilterSetting;
/** @type {!Map<?string, !URLGroupTreeElement>} */
this._urlTreeElements = new Map();
@@ -173,11 +184,12 @@
_updateCounter() {
if (!this._messageCount) {
- this.title = _groupNoMessageTitleMap.get(this._filter.name);
+ this.title = _groupNoMessageTitleMap.get(this._filter.name) || '';
} else if (this._messageCount === 1) {
- this.title = _groupSingularTitleMap.get(this._filter.name);
+ this.title = _groupSingularTitleMap.get(this._filter.name) || '';
} else {
- this.title = Platform.StringUtilities.sprintf(_groupPluralTitleMap.get(this._filter.name), this._messageCount);
+ this.title =
+ Platform.StringUtilities.sprintf(_groupPluralTitleMap.get(this._filter.name) || '', this._messageCount);
}
this.setExpandable(!!this.childCount());
@@ -217,7 +229,7 @@
} else {
filter.name = Common.UIString.UIString('<other>');
}
- filter.parsedFilters.push({key: FilterType.Url, text: urlValue, negative: false});
+ filter.parsedFilters.push({key: FilterType.Url, text: urlValue, negative: false, regex: undefined});
child = new URLGroupTreeElement(filter);
if (urlValue) {
child.tooltip = urlValue;