// Copyright 2022 The Parca Authors // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import {useMemo} from 'react'; export interface LabelNameMapping { displayName: string; fullName: string; } export const transformLabelName = (labelName: string): string => { return labelName.replace(/^(attributes\.|attributes_resource\.)/, ''); }; export const useLabelNameMappings = (labelNames: string[]): LabelNameMapping[] => { return useMemo(() => { return labelNames.map(name => ({ displayName: transformLabelName(name), fullName: name, })); }, [labelNames]); }; export const useExtractedLabelNames = ( response: {labelNames?: string[]} | undefined, error: Error | undefined | null ): string[] => { return useMemo(() => { return (error === undefined || error == null) && response !== undefined && response != null ? response.labelNames?.filter(e => e !== '__name__') ?? [] : []; }, [response, error]); };