Spaces:
Sleeping
Sleeping
| // Copyright (c) 2025-2026, RTE (https://www.rte-france.com) | |
| // This Source Code Form is subject to the terms of the Mozilla Public License, version 2.0. | |
| // If a copy of the Mozilla Public License, version 2.0 was not distributed with this file, | |
| // you can obtain one at http://mozilla.org/MPL/2.0/. | |
| // SPDX-License-Identifier: MPL-2.0 | |
| /** | |
| * Filter inspectable ids by a query, matching the raw id OR its | |
| * human-readable name (the label drawn on the diagram), so an element can | |
| * be found by the name the operator sees — e.g. "LESQUIVE 400kV" — and not | |
| * only by its raw id. Shared by every inspect surface (the N / N-1 / action | |
| * tabs and the Remedial-action overview) so they stay in lock-step. | |
| */ | |
| export function filterInspectables( | |
| items: readonly string[], | |
| query: string, | |
| displayName?: (id: string) => string, | |
| limit = 50, | |
| ): string[] { | |
| const q = query.toUpperCase(); | |
| if (!q) return items.slice(0, limit); | |
| return items | |
| .filter(item => | |
| item.toUpperCase().includes(q) | |
| || (displayName ? displayName(item).toUpperCase().includes(q) : false)) | |
| .slice(0, limit); | |
| } | |