UNPKG

chrome-devtools-frontend

Version:
46 lines (39 loc) 1.82 kB
// Copyright 2021 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /* eslint-disable rulesdir/no-imperative-dom-api */ import * as i18n from '../../core/i18n/i18n.js'; import type * as Platform from '../../core/platform/platform.js'; import type * as IssuesManager from '../../models/issues_manager/issues_manager.js'; import {AffectedResourcesView} from './AffectedResourcesView.js'; const UIStrings = { /** *@description Noun for singular or plural number of affected element resource indication in issue view. */ nElements: '{n, plural, =1 {# element} other {# elements}}', } as const; const str_ = i18n.i18n.registerUIStrings('panels/issues/AffectedElementsView.ts', UIStrings); const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_); export class AffectedElementsView extends AffectedResourcesView { async #appendAffectedElements(affectedElements: Iterable<IssuesManager.Issue.AffectedElement>): Promise<void> { let count = 0; for (const element of affectedElements) { await this.#appendAffectedElement(element); count++; } this.updateAffectedResourceCount(count); } protected getResourceNameWithCount(count: number): Platform.UIString.LocalizedString { return i18nString(UIStrings.nElements, {n: count}); } async #appendAffectedElement(element: IssuesManager.Issue.AffectedElement): Promise<void> { const cellElement = await this.createElementCell(element, this.issue.getCategory()); const rowElement = document.createElement('tr'); rowElement.appendChild(cellElement); this.affectedResources.appendChild(rowElement); } update(): void { this.clear(); void this.#appendAffectedElements(this.issue.elements()); } }