import { QueryData } from 'types/api/widgets/getQuery'; const getLabelName = ( metric: QueryData['metric'], query: string, legends: string, ): string => { if (metric === undefined) { return ''; } const keysArray = Object.keys(metric); if (legends.length !== 0) { const variables = legends .split('{{') .filter((e) => e) .map((e) => e.split('}}')[0]); const results = variables.map((variable) => metric[variable]); let endResult = legends; variables.forEach((e, index) => { endResult = endResult.replace(`{{${e}}}`, results[index]); }); return endResult; } const index = keysArray.findIndex((e) => e === '__name__'); const preArray = keysArray.slice(0, index); const postArray = keysArray.slice(index + 1, keysArray.length); if (index === undefined && preArray.length === 0 && postArray.length) { return query; } const post = postArray.map((e) => `${e}="${metric[e]}"`).join(','); const pre = preArray.map((e) => `${e}="${metric[e]}"`).join(','); const value = metric[keysArray[index]]; const result = `${value === undefined ? '' : value}`; if (post.length === 0 && pre.length === 0) { return result; } return `${result}{${pre}${post}}`; }; export default getLabelName;