@perses-dev/explore 0.50.3 → 0.51.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/cjs/components/ExploreManager/ExploreManager.js +39 -18
  2. package/dist/cjs/components/ExploreManager/ExplorerManagerProvider.js +10 -50
  3. package/dist/cjs/components/ExploreManager/ExplorerManagerProviderWithQueryParams.js +1 -4
  4. package/dist/cjs/components/ExploreManager/index.js +2 -0
  5. package/dist/cjs/components/index.js +0 -1
  6. package/dist/components/ExploreManager/ExploreManager.d.ts.map +1 -1
  7. package/dist/components/ExploreManager/ExploreManager.js +39 -18
  8. package/dist/components/ExploreManager/ExploreManager.js.map +1 -1
  9. package/dist/components/ExploreManager/ExplorerManagerProvider.d.ts +2 -2
  10. package/dist/components/ExploreManager/ExplorerManagerProvider.d.ts.map +1 -1
  11. package/dist/components/ExploreManager/ExplorerManagerProvider.js +10 -9
  12. package/dist/components/ExploreManager/ExplorerManagerProvider.js.map +1 -1
  13. package/dist/components/ExploreManager/ExplorerManagerProviderWithQueryParams.js +2 -5
  14. package/dist/components/ExploreManager/ExplorerManagerProviderWithQueryParams.js.map +1 -1
  15. package/dist/components/ExploreManager/index.d.ts +2 -0
  16. package/dist/components/ExploreManager/index.d.ts.map +1 -1
  17. package/dist/components/ExploreManager/index.js +2 -0
  18. package/dist/components/ExploreManager/index.js.map +1 -1
  19. package/dist/components/index.d.ts +0 -1
  20. package/dist/components/index.d.ts.map +1 -1
  21. package/dist/components/index.js +0 -1
  22. package/dist/components/index.js.map +1 -1
  23. package/package.json +10 -13
  24. package/dist/cjs/components/ExploreManager/MetricsExplorer.js +0 -203
  25. package/dist/cjs/components/ExploreManager/TracesExplorer.js +0 -175
  26. package/dist/cjs/components/ExploreManager/constants.js +0 -32
  27. package/dist/cjs/components/PrometheusMetricsFinder/PrometheusMetricsFinder.js +0 -310
  28. package/dist/cjs/components/PrometheusMetricsFinder/display/MetricChip.js +0 -61
  29. package/dist/cjs/components/PrometheusMetricsFinder/display/list/MetricList.js +0 -224
  30. package/dist/cjs/components/PrometheusMetricsFinder/filter/FilterInputs.js +0 -232
  31. package/dist/cjs/components/PrometheusMetricsFinder/filter/FinderFilters.js +0 -139
  32. package/dist/cjs/components/PrometheusMetricsFinder/index.js +0 -30
  33. package/dist/cjs/components/PrometheusMetricsFinder/overview/MetricOverview.js +0 -244
  34. package/dist/cjs/components/PrometheusMetricsFinder/overview/tabs/JobTab.js +0 -146
  35. package/dist/cjs/components/PrometheusMetricsFinder/overview/tabs/OverviewTab.js +0 -413
  36. package/dist/cjs/components/PrometheusMetricsFinder/overview/tabs/SimilarTab.js +0 -54
  37. package/dist/cjs/components/PrometheusMetricsFinder/types.js +0 -25
  38. package/dist/cjs/components/PrometheusMetricsFinder/utils.js +0 -203
  39. package/dist/components/ExploreManager/MetricsExplorer.d.ts +0 -3
  40. package/dist/components/ExploreManager/MetricsExplorer.d.ts.map +0 -1
  41. package/dist/components/ExploreManager/MetricsExplorer.js +0 -190
  42. package/dist/components/ExploreManager/MetricsExplorer.js.map +0 -1
  43. package/dist/components/ExploreManager/TracesExplorer.d.ts +0 -3
  44. package/dist/components/ExploreManager/TracesExplorer.d.ts.map +0 -1
  45. package/dist/components/ExploreManager/TracesExplorer.js +0 -167
  46. package/dist/components/ExploreManager/TracesExplorer.js.map +0 -1
  47. package/dist/components/ExploreManager/constants.d.ts +0 -3
  48. package/dist/components/ExploreManager/constants.d.ts.map +0 -1
  49. package/dist/components/ExploreManager/constants.js +0 -16
  50. package/dist/components/ExploreManager/constants.js.map +0 -1
  51. package/dist/components/PrometheusMetricsFinder/PrometheusMetricsFinder.d.ts +0 -31
  52. package/dist/components/PrometheusMetricsFinder/PrometheusMetricsFinder.d.ts.map +0 -1
  53. package/dist/components/PrometheusMetricsFinder/PrometheusMetricsFinder.js +0 -245
  54. package/dist/components/PrometheusMetricsFinder/PrometheusMetricsFinder.js.map +0 -1
  55. package/dist/components/PrometheusMetricsFinder/display/MetricChip.d.ts +0 -4
  56. package/dist/components/PrometheusMetricsFinder/display/MetricChip.d.ts.map +0 -1
  57. package/dist/components/PrometheusMetricsFinder/display/MetricChip.js +0 -53
  58. package/dist/components/PrometheusMetricsFinder/display/MetricChip.js.map +0 -1
  59. package/dist/components/PrometheusMetricsFinder/display/list/MetricList.d.ts +0 -27
  60. package/dist/components/PrometheusMetricsFinder/display/list/MetricList.d.ts.map +0 -1
  61. package/dist/components/PrometheusMetricsFinder/display/list/MetricList.js +0 -162
  62. package/dist/components/PrometheusMetricsFinder/display/list/MetricList.js.map +0 -1
  63. package/dist/components/PrometheusMetricsFinder/filter/FilterInputs.d.ts +0 -23
  64. package/dist/components/PrometheusMetricsFinder/filter/FilterInputs.d.ts.map +0 -1
  65. package/dist/components/PrometheusMetricsFinder/filter/FilterInputs.js +0 -210
  66. package/dist/components/PrometheusMetricsFinder/filter/FilterInputs.js.map +0 -1
  67. package/dist/components/PrometheusMetricsFinder/filter/FinderFilters.d.ts +0 -13
  68. package/dist/components/PrometheusMetricsFinder/filter/FinderFilters.d.ts.map +0 -1
  69. package/dist/components/PrometheusMetricsFinder/filter/FinderFilters.js +0 -85
  70. package/dist/components/PrometheusMetricsFinder/filter/FinderFilters.js.map +0 -1
  71. package/dist/components/PrometheusMetricsFinder/index.d.ts +0 -2
  72. package/dist/components/PrometheusMetricsFinder/index.d.ts.map +0 -1
  73. package/dist/components/PrometheusMetricsFinder/index.js +0 -15
  74. package/dist/components/PrometheusMetricsFinder/index.js.map +0 -1
  75. package/dist/components/PrometheusMetricsFinder/overview/MetricOverview.d.ts +0 -23
  76. package/dist/components/PrometheusMetricsFinder/overview/MetricOverview.d.ts.map +0 -1
  77. package/dist/components/PrometheusMetricsFinder/overview/MetricOverview.js +0 -223
  78. package/dist/components/PrometheusMetricsFinder/overview/MetricOverview.js.map +0 -1
  79. package/dist/components/PrometheusMetricsFinder/overview/tabs/JobTab.d.ts +0 -28
  80. package/dist/components/PrometheusMetricsFinder/overview/tabs/JobTab.d.ts.map +0 -1
  81. package/dist/components/PrometheusMetricsFinder/overview/tabs/JobTab.js +0 -127
  82. package/dist/components/PrometheusMetricsFinder/overview/tabs/JobTab.js.map +0 -1
  83. package/dist/components/PrometheusMetricsFinder/overview/tabs/OverviewTab.d.ts +0 -25
  84. package/dist/components/PrometheusMetricsFinder/overview/tabs/OverviewTab.d.ts.map +0 -1
  85. package/dist/components/PrometheusMetricsFinder/overview/tabs/OverviewTab.js +0 -389
  86. package/dist/components/PrometheusMetricsFinder/overview/tabs/OverviewTab.js.map +0 -1
  87. package/dist/components/PrometheusMetricsFinder/overview/tabs/SimilarTab.d.ts +0 -12
  88. package/dist/components/PrometheusMetricsFinder/overview/tabs/SimilarTab.d.ts.map +0 -1
  89. package/dist/components/PrometheusMetricsFinder/overview/tabs/SimilarTab.js +0 -46
  90. package/dist/components/PrometheusMetricsFinder/overview/tabs/SimilarTab.js.map +0 -1
  91. package/dist/components/PrometheusMetricsFinder/types.d.ts +0 -22
  92. package/dist/components/PrometheusMetricsFinder/types.d.ts.map +0 -1
  93. package/dist/components/PrometheusMetricsFinder/types.js +0 -17
  94. package/dist/components/PrometheusMetricsFinder/types.js.map +0 -1
  95. package/dist/components/PrometheusMetricsFinder/utils.d.ts +0 -20
  96. package/dist/components/PrometheusMetricsFinder/utils.d.ts.map +0 -1
  97. package/dist/components/PrometheusMetricsFinder/utils.js +0 -185
  98. package/dist/components/PrometheusMetricsFinder/utils.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/PrometheusMetricsFinder/overview/tabs/OverviewTab.tsx"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { DatasourceSelector } from '@perses-dev/core';\nimport { ReactElement, useMemo, useState } from 'react';\nimport {\n Autocomplete,\n Button,\n CircularProgress,\n Divider,\n IconButton,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n StackProps,\n TextField,\n Typography,\n useMediaQuery,\n useTheme,\n} from '@mui/material';\nimport PlusIcon from 'mdi-material-ui/Plus';\nimport CheckIcon from 'mdi-material-ui/Check';\nimport CloseIcon from 'mdi-material-ui/Close';\nimport { LabelFilter, LabelValueCounter, Operator } from '../../types';\nimport { ListboxComponent } from '../../filter/FilterInputs';\nimport { useMetricMetadata, useSeriesStates } from '../../utils';\nimport { MetricChip } from '../../display/MetricChip';\n\nexport interface LabelValuesRowProps extends StackProps {\n label: string;\n valueCounters: LabelValueCounter[];\n onFilterAdd: (filter: LabelFilter) => void;\n orderBy?: 'asc' | 'amount';\n}\n\nexport function LabelValuesRow({ label, valueCounters, onFilterAdd, ...props }: LabelValuesRowProps): ReactElement {\n const [isAddingFilter, setIsAddingFilter] = useState(false);\n const [operator, setOperator] = useState<Operator>('=');\n const [value, setValue] = useState('');\n const [showAllValues, setShowAllValues] = useState(false);\n const isMobileSize = useMediaQuery(useTheme().breakpoints.down('md'));\n\n const displayedValueCounters = useMemo(() => {\n if (showAllValues) {\n return valueCounters;\n }\n return valueCounters.slice(0, 5);\n }, [showAllValues, valueCounters]);\n\n return (\n <Stack\n key={label}\n sx={{ width: '100%' }}\n direction={isMobileSize ? 'column' : 'row'}\n alignItems=\"center\"\n gap={2}\n {...props}\n >\n <Stack\n sx={{ width: '100%', height: '100%' }}\n justifyContent=\"space-between\"\n alignContent=\"center\"\n direction={isMobileSize ? 'column' : 'row'}\n >\n <Typography sx={{ fontFamily: 'monospace' }} pl={isMobileSize ? 0 : 1}>\n {label}\n </Typography>\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n {isAddingFilter ? (\n <>\n <Select\n size=\"small\"\n value={operator}\n variant=\"outlined\"\n onChange={(event: SelectChangeEvent) => {\n setOperator(event.target.value as Operator);\n }}\n >\n <MenuItem value=\"=\">=</MenuItem>\n <MenuItem value=\"!=\">!=</MenuItem>\n <MenuItem value=\"=~\">=~</MenuItem>\n <MenuItem value=\"!~\">!~</MenuItem>\n </Select>\n <Autocomplete\n freeSolo\n limitTags={1}\n disableClearable\n options={valueCounters.map((counters) => counters.labelValue)}\n value={value}\n ListboxComponent={ListboxComponent}\n sx={{ width: 250 }}\n renderInput={(params) => {\n return <TextField {...params} label=\"Value\" variant=\"outlined\" fullWidth size=\"small\" />;\n }}\n onInputChange={(_, newValue) => {\n setValue(newValue);\n }}\n />\n <IconButton\n aria-label=\"confirm\"\n onClick={() => {\n onFilterAdd({ label, labelValues: [value], operator });\n setIsAddingFilter(false);\n }}\n >\n <CheckIcon />\n </IconButton>\n <IconButton\n aria-label=\"cancel\"\n onClick={() => {\n setIsAddingFilter(false);\n }}\n >\n <CloseIcon />\n </IconButton>\n </>\n ) : (\n <Button startIcon={<PlusIcon />} aria-label=\"add filter\" onClick={() => setIsAddingFilter(true)}>\n Add filter\n </Button>\n )}\n </Stack>\n </Stack>\n\n <Stack sx={{ width: '100%' }} gap={0.5}>\n <Stack direction=\"row\" gap={2}>\n <Typography variant=\"subtitle1\">{valueCounters.length} values</Typography>\n </Stack>\n\n <Stack sx={{ overflow: isMobileSize ? 'auto' : 'unset' }}>\n {displayedValueCounters.map((labelValueCounter) => (\n <Stack key={`${label}-${labelValueCounter.labelValue}`} direction=\"row\" gap={2}>\n <Typography\n sx={{\n color: (theme) => theme.palette.success.main,\n fontFamily: 'monospace',\n ':hover': { backgroundColor: 'rgba(127,127,127,0.35)', cursor: 'pointer' },\n textWrap: isMobileSize ? 'nowrap' : 'unset',\n }}\n onClick={() => onFilterAdd({ label, labelValues: [labelValueCounter.labelValue], operator: '=' })}\n >\n {labelValueCounter.labelValue}\n </Typography>\n <Typography sx={{ textWrap: 'nowrap' }}>({labelValueCounter.counter} series)</Typography>\n </Stack>\n ))}\n </Stack>\n <Stack width=\"100%\" textAlign={isMobileSize ? 'center' : 'unset'}>\n {showAllValues ? (\n <Button variant=\"text\" sx={{ width: 'fit-content' }} onClick={() => setShowAllValues(false)}>\n Hide full values\n </Button>\n ) : (\n <>\n {valueCounters.length > 5 && (\n <Button variant=\"text\" sx={{ width: 'fit-content' }} onClick={() => setShowAllValues(true)}>\n Show {valueCounters.length - 5} more values\n </Button>\n )}\n </>\n )}\n </Stack>\n </Stack>\n </Stack>\n );\n}\n\nexport interface LabelValuesTableProps extends StackProps {\n labelValueCounters: Map<string, LabelValueCounter[]>;\n isLoading?: boolean;\n onFilterAdd: (filter: LabelFilter) => void;\n}\n\nexport function LabelValuesTable({\n labelValueCounters,\n isLoading,\n onFilterAdd,\n ...props\n}: LabelValuesTableProps): ReactElement {\n const labels: string[] = useMemo(() => {\n return [...labelValueCounters.keys()].sort();\n }, [labelValueCounters]);\n\n if (isLoading) {\n return (\n <Stack width=\"100%\" sx={{ alignItems: 'center', justifyContent: 'center' }}>\n <CircularProgress />\n </Stack>\n );\n }\n\n return (\n <Stack sx={{ width: '100%' }} divider={<Divider flexItem orientation=\"horizontal\" />} gap={2} {...props}>\n <Stack gap={2} direction=\"row\" sx={{ width: '100%' }}>\n <Stack sx={{ width: '100%' }}>\n <Typography variant=\"h3\">Label</Typography>\n </Stack>\n <Stack sx={{ width: '100%' }}>\n <Typography variant=\"h3\">Values</Typography>\n </Stack>\n </Stack>\n {labels.map((label) => (\n <LabelValuesRow\n key={label}\n label={label}\n valueCounters={labelValueCounters.get(label) ?? []}\n onFilterAdd={onFilterAdd}\n />\n ))}\n </Stack>\n );\n}\n\nexport interface OverviewTabProps extends StackProps {\n metricName: string;\n datasource: DatasourceSelector;\n filters: LabelFilter[];\n onFilterAdd: (filter: LabelFilter) => void;\n}\n\nexport function OverviewTab({\n metricName,\n datasource,\n filters,\n onFilterAdd,\n ...props\n}: OverviewTabProps): ReactElement {\n const { metadata, isLoading: isMetadataLoading } = useMetricMetadata(metricName, datasource);\n const { series, labelValueCounters, isLoading } = useSeriesStates(metricName, filters, datasource);\n\n return (\n <Stack gap={2} {...props}>\n <Stack direction=\"row\" gap={3} mt={1} justifyContent=\"space-between\">\n <Stack gap={1}>\n <Typography variant=\"h1\" sx={{ fontFamily: 'monospace' }}>\n {metricName}\n </Typography>\n <Typography>Description:</Typography>\n {isMetadataLoading ? (\n <Skeleton variant=\"text\" width={180} />\n ) : (\n <Typography style={{ fontStyle: metadata?.help ? 'initial' : 'italic' }}>\n {metadata ? metadata.help : 'unknown'}\n </Typography>\n )}\n </Stack>\n <Stack gap={1} justifyContent=\"center\">\n {isLoading ? <Skeleton variant=\"rounded\" width={75} /> : <MetricChip label={metadata?.type ?? 'unknown'} />}\n <Typography>\n Result:{' '}\n {isLoading ? (\n <Skeleton variant=\"text\" width={20} sx={{ display: 'inline-block' }} />\n ) : (\n <strong>{series?.length ?? 0} series</strong>\n )}\n </Typography>\n </Stack>\n </Stack>\n\n {series?.length === 0 ? (\n <Stack {...props}>\n <Typography sx={{ color: (theme) => theme.palette.warning.main }}>\n No series found with current filters.\n </Typography>\n </Stack>\n ) : (\n <LabelValuesTable labelValueCounters={labelValueCounters} onFilterAdd={onFilterAdd} isLoading={isLoading} />\n )}\n </Stack>\n );\n}\n"],"names":["useMemo","useState","Autocomplete","Button","CircularProgress","Divider","IconButton","MenuItem","Select","Skeleton","Stack","TextField","Typography","useMediaQuery","useTheme","PlusIcon","CheckIcon","CloseIcon","ListboxComponent","useMetricMetadata","useSeriesStates","MetricChip","LabelValuesRow","label","valueCounters","onFilterAdd","props","isAddingFilter","setIsAddingFilter","operator","setOperator","value","setValue","showAllValues","setShowAllValues","isMobileSize","breakpoints","down","displayedValueCounters","slice","sx","width","direction","alignItems","gap","height","justifyContent","alignContent","fontFamily","pl","size","variant","onChange","event","target","freeSolo","limitTags","disableClearable","options","map","counters","labelValue","renderInput","params","fullWidth","onInputChange","_","newValue","aria-label","onClick","labelValues","startIcon","length","overflow","labelValueCounter","color","theme","palette","success","main","backgroundColor","cursor","textWrap","counter","textAlign","LabelValuesTable","labelValueCounters","isLoading","labels","keys","sort","divider","flexItem","orientation","get","OverviewTab","metricName","datasource","filters","metadata","isMetadataLoading","series","mt","style","fontStyle","help","type","display","strong","warning"],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { DatasourceSelector } from '@perses-dev/core';
2
- import { StackProps } from '@mui/material';
3
- import { ReactElement } from 'react';
4
- import { LabelFilter } from '../../types';
5
- export interface SimilarTabProps extends StackProps {
6
- filters: LabelFilter[];
7
- datasource: DatasourceSelector;
8
- isMetadataEnabled?: boolean;
9
- onExplore: (metricName: string) => void;
10
- }
11
- export declare function SimilarTab({ filters, datasource, isMetadataEnabled, onExplore, ...props }: SimilarTabProps): ReactElement;
12
- //# sourceMappingURL=SimilarTab.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SimilarTab.d.ts","sourceRoot":"","sources":["../../../../../src/components/PrometheusMetricsFinder/overview/tabs/SimilarTab.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAA2B,UAAU,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,YAAY,CAwBhC"}
@@ -1,46 +0,0 @@
1
- // Copyright 2024 The Perses Authors
2
- // Licensed under the Apache License, Version 2.0 (the "License");
3
- // you may not use this file except in compliance with the License.
4
- // You may obtain a copy of the License at
5
- //
6
- // http://www.apache.org/licenses/LICENSE-2.0
7
- //
8
- // Unless required by applicable law or agreed to in writing, software
9
- // distributed under the License is distributed on an "AS IS" BASIS,
10
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
- // See the License for the specific language governing permissions and
12
- // limitations under the License.
13
- import { jsx as _jsx } from "react/jsx-runtime";
14
- import { CircularProgress, Stack } from '@mui/material';
15
- import { useMemo } from 'react';
16
- import { MetricList } from '../../display/list/MetricList';
17
- import { useLabelValues } from '../../utils';
18
- export function SimilarTab({ filters, datasource, isMetadataEnabled, onExplore, ...props }) {
19
- const filtersWithoutName = useMemo(()=>{
20
- return filters.filter((filter)=>filter.label !== '__name__');
21
- }, [
22
- filters
23
- ]);
24
- const { data, isLoading } = useLabelValues('__name__', filtersWithoutName, datasource);
25
- if (isLoading) {
26
- return /*#__PURE__*/ _jsx(Stack, {
27
- width: "100%",
28
- sx: {
29
- alignItems: 'center',
30
- justifyContent: 'center'
31
- },
32
- children: /*#__PURE__*/ _jsx(CircularProgress, {})
33
- });
34
- }
35
- var _data_data;
36
- return /*#__PURE__*/ _jsx(MetricList, {
37
- metricNames: (_data_data = data === null || data === void 0 ? void 0 : data.data) !== null && _data_data !== void 0 ? _data_data : [],
38
- datasource: datasource,
39
- filters: filtersWithoutName,
40
- isMetadataEnabled: isMetadataEnabled,
41
- onExplore: onExplore,
42
- ...props
43
- });
44
- }
45
-
46
- //# sourceMappingURL=SimilarTab.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/PrometheusMetricsFinder/overview/tabs/SimilarTab.tsx"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { DatasourceSelector } from '@perses-dev/core';\nimport { CircularProgress, Stack, StackProps } from '@mui/material';\nimport { ReactElement, useMemo } from 'react';\nimport { MetricList } from '../../display/list/MetricList';\nimport { LabelFilter } from '../../types';\nimport { useLabelValues } from '../../utils';\n\nexport interface SimilarTabProps extends StackProps {\n filters: LabelFilter[];\n datasource: DatasourceSelector;\n isMetadataEnabled?: boolean;\n onExplore: (metricName: string) => void;\n}\n\nexport function SimilarTab({\n filters,\n datasource,\n isMetadataEnabled,\n onExplore,\n ...props\n}: SimilarTabProps): ReactElement {\n const filtersWithoutName: LabelFilter[] = useMemo(() => {\n return filters.filter((filter) => filter.label !== '__name__');\n }, [filters]);\n const { data, isLoading } = useLabelValues('__name__', filtersWithoutName, datasource);\n\n if (isLoading) {\n return (\n <Stack width=\"100%\" sx={{ alignItems: 'center', justifyContent: 'center' }}>\n <CircularProgress />\n </Stack>\n );\n }\n\n return (\n <MetricList\n metricNames={data?.data ?? []}\n datasource={datasource}\n filters={filtersWithoutName}\n isMetadataEnabled={isMetadataEnabled}\n onExplore={onExplore}\n {...props}\n />\n );\n}\n"],"names":["CircularProgress","Stack","useMemo","MetricList","useLabelValues","SimilarTab","filters","datasource","isMetadataEnabled","onExplore","props","filtersWithoutName","filter","label","data","isLoading","width","sx","alignItems","justifyContent","metricNames"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAGjC,SAASA,gBAAgB,EAAEC,KAAK,QAAoB,gBAAgB;AACpE,SAAuBC,OAAO,QAAQ,QAAQ;AAC9C,SAASC,UAAU,QAAQ,gCAAgC;AAE3D,SAASC,cAAc,QAAQ,cAAc;AAS7C,OAAO,SAASC,WAAW,EACzBC,OAAO,EACPC,UAAU,EACVC,iBAAiB,EACjBC,SAAS,EACT,GAAGC,OACa;IAChB,MAAMC,qBAAoCT,QAAQ;QAChD,OAAOI,QAAQM,MAAM,CAAC,CAACA,SAAWA,OAAOC,KAAK,KAAK;IACrD,GAAG;QAACP;KAAQ;IACZ,MAAM,EAAEQ,IAAI,EAAEC,SAAS,EAAE,GAAGX,eAAe,YAAYO,oBAAoBJ;IAE3E,IAAIQ,WAAW;QACb,qBACE,KAACd;YAAMe,OAAM;YAAOC,IAAI;gBAAEC,YAAY;gBAAUC,gBAAgB;YAAS;sBACvE,cAAA,KAACnB;;IAGP;QAIiBc;IAFjB,qBACE,KAACX;QACCiB,aAAaN,CAAAA,aAAAA,iBAAAA,2BAAAA,KAAMA,IAAI,cAAVA,wBAAAA,aAAc,EAAE;QAC7BP,YAAYA;QACZD,SAASK;QACTH,mBAAmBA;QACnBC,WAAWA;QACV,GAAGC,KAAK;;AAGf"}
@@ -1,22 +0,0 @@
1
- import { DatasourceSelector } from '@perses-dev/core';
2
- export type Operator = '=' | '!=' | '=~' | '!~';
3
- export interface Settings {
4
- isMetadataEnabled: boolean;
5
- isPanelEnabled: boolean;
6
- }
7
- export interface FinderQueryParams {
8
- datasource?: DatasourceSelector;
9
- filters?: LabelFilter[];
10
- exploredMetric?: string;
11
- }
12
- export interface LabelFilter {
13
- label: string;
14
- labelValues: string[];
15
- operator: Operator;
16
- }
17
- export declare function computeFilterExpr(filters: LabelFilter[]): string;
18
- export interface LabelValueCounter {
19
- labelValue: string;
20
- counter: number;
21
- }
22
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/PrometheusMetricsFinder/types.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAEhE;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -1,17 +0,0 @@
1
- // Copyright 2024 The Perses Authors
2
- // Licensed under the Apache License, Version 2.0 (the "License");
3
- // you may not use this file except in compliance with the License.
4
- // You may obtain a copy of the License at
5
- //
6
- // http://www.apache.org/licenses/LICENSE-2.0
7
- //
8
- // Unless required by applicable law or agreed to in writing, software
9
- // distributed under the License is distributed on an "AS IS" BASIS,
10
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
- // See the License for the specific language governing permissions and
12
- // limitations under the License.
13
- export function computeFilterExpr(filters) {
14
- return `${filters.map((filter)=>`${filter.label}${filter.operator}"${filter.labelValues.join('|')}"`).join(',')}`;
15
- }
16
-
17
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/PrometheusMetricsFinder/types.ts"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { DatasourceSelector } from '@perses-dev/core';\n\nexport type Operator = '=' | '!=' | '=~' | '!~';\n\nexport interface Settings {\n isMetadataEnabled: boolean;\n isPanelEnabled: boolean;\n}\n\nexport interface FinderQueryParams {\n datasource?: DatasourceSelector;\n filters?: LabelFilter[];\n exploredMetric?: string;\n}\n\nexport interface LabelFilter {\n label: string;\n labelValues: string[];\n operator: Operator;\n}\n\nexport function computeFilterExpr(filters: LabelFilter[]): string {\n return `${filters.map((filter) => `${filter.label}${filter.operator}\"${filter.labelValues.join('|')}\"`).join(',')}`;\n}\n\nexport interface LabelValueCounter {\n labelValue: string;\n counter: number;\n}\n"],"names":["computeFilterExpr","filters","map","filter","label","operator","labelValues","join"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAuBjC,OAAO,SAASA,kBAAkBC,OAAsB;IACtD,OAAO,CAAC,EAAEA,QAAQC,GAAG,CAAC,CAACC,SAAW,CAAC,EAAEA,OAAOC,KAAK,CAAC,EAAED,OAAOE,QAAQ,CAAC,CAAC,EAAEF,OAAOG,WAAW,CAACC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAEA,IAAI,CAAC,KAAK,CAAC;AACrH"}
@@ -1,20 +0,0 @@
1
- import { DatasourceSelector, StatusError } from '@perses-dev/core';
2
- import { LabelValuesResponse, Metric, MetricMetadata } from '@perses-dev/prometheus-plugin';
3
- import { UseQueryResult } from '@tanstack/react-query';
4
- import { LabelFilter } from './types';
5
- export declare function useMetricMetadata(metricName: string, datasource: DatasourceSelector, enabled?: boolean): {
6
- isLoading: false | true;
7
- metadata: MetricMetadata | undefined;
8
- error: StatusError | null;
9
- };
10
- export declare function useLabels(filters: LabelFilter[], datasource: DatasourceSelector): UseQueryResult<LabelValuesResponse, StatusError>;
11
- export declare function useLabelValues(labelName: string, filters: LabelFilter[], datasource: DatasourceSelector): UseQueryResult<LabelValuesResponse, StatusError>;
12
- export declare function useSeriesStates(metricName: string, filters: LabelFilter[], datasource: DatasourceSelector): {
13
- series: Metric[] | undefined;
14
- labelValueCounters: Map<string, Array<{
15
- labelValue: string;
16
- counter: number;
17
- }>>;
18
- isLoading: boolean;
19
- };
20
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/PrometheusMetricsFinder/utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAGL,mBAAmB,EACnB,MAAM,EACN,cAAc,EAMf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAY,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAqB,WAAW,EAAqB,MAAM,SAAS,CAAC;AAG5E,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,kBAAkB,EAC9B,OAAO,CAAC,EAAE,OAAO,GAChB;IACD,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IACrC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;CAC3B,CA2BA;AAED,wBAAgB,SAAS,CACvB,OAAO,EAAE,WAAW,EAAE,EACtB,UAAU,EAAE,kBAAkB,GAC7B,cAAc,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAqBlD;AAGD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EAAE,EACtB,UAAU,EAAE,kBAAkB,GAC7B,cAAc,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAsBlD;AAID,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,EAAE,EACtB,UAAU,EAAE,kBAAkB,GAC7B;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7B,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAChF,SAAS,EAAE,OAAO,CAAC;CACpB,CA+CA"}
@@ -1,185 +0,0 @@
1
- // Copyright 2024 The Perses Authors
2
- // Licensed under the Apache License, Version 2.0 (the "License");
3
- // you may not use this file except in compliance with the License.
4
- // You may obtain a copy of the License at
5
- //
6
- // http://www.apache.org/licenses/LICENSE-2.0
7
- //
8
- // Unless required by applicable law or agreed to in writing, software
9
- // distributed under the License is distributed on an "AS IS" BASIS,
10
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
- // See the License for the specific language governing permissions and
12
- // limitations under the License.
13
- import { useMemo } from 'react';
14
- import { useQuery } from '@tanstack/react-query';
15
- import { useDatasourceClient, useTimeRange } from '@perses-dev/plugin-system';
16
- import { computeFilterExpr } from './types';
17
- // Retrieve metric metadata from the Prometheus API
18
- export function useMetricMetadata(metricName, datasource, enabled) {
19
- const { data: client } = useDatasourceClient(datasource);
20
- // histograms and summaries timeseries desc are not always added to prefixed timeseries
21
- const name = metricName.replace(/(_count|_sum|_bucket)$/, '');
22
- const { data, isLoading, error } = useQuery({
23
- enabled: !!client && enabled,
24
- queryKey: [
25
- 'metricMetadata',
26
- name
27
- ],
28
- queryFn: async ()=>{
29
- const params = {
30
- metric: name
31
- };
32
- return await client.metricMetadata(params);
33
- }
34
- });
35
- // Find the first result with help text
36
- const metadata = useMemo(()=>{
37
- var _data_data;
38
- var _data_data_name;
39
- for (const metric of (_data_data_name = data === null || data === void 0 ? void 0 : (_data_data = data.data) === null || _data_data === void 0 ? void 0 : _data_data[name]) !== null && _data_data_name !== void 0 ? _data_data_name : []){
40
- if (metric.help.length > 0) {
41
- return metric;
42
- }
43
- }
44
- return undefined;
45
- }, [
46
- data,
47
- name
48
- ]);
49
- return {
50
- metadata,
51
- isLoading,
52
- error
53
- };
54
- }
55
- export function useLabels(filters, datasource) {
56
- const { absoluteTimeRange: { start, end } } = useTimeRange();
57
- const { data: client } = useDatasourceClient(datasource);
58
- return useQuery({
59
- enabled: !!client,
60
- queryKey: [
61
- 'labels',
62
- 'datasource',
63
- datasource.name,
64
- 'start',
65
- start,
66
- 'end',
67
- end,
68
- 'filters',
69
- ...filters
70
- ],
71
- queryFn: async ()=>{
72
- const params = {
73
- start: start.valueOf() / 1000,
74
- end: end.valueOf() / 1000
75
- };
76
- if (filters.length) {
77
- params['match[]'] = [
78
- `{${computeFilterExpr(filters)}}`
79
- ];
80
- }
81
- return await client.labelNames(params);
82
- }
83
- });
84
- }
85
- // Retrieve label values from the Prometheus API for a given label name and filters
86
- export function useLabelValues(labelName, filters, datasource) {
87
- const { absoluteTimeRange: { start, end } } = useTimeRange();
88
- const { data: client } = useDatasourceClient(datasource);
89
- return useQuery({
90
- enabled: !!client,
91
- queryKey: [
92
- 'labelValues',
93
- labelName,
94
- 'datasource',
95
- datasource.name,
96
- 'start',
97
- start,
98
- 'end',
99
- 'filters',
100
- ...filters
101
- ],
102
- queryFn: async ()=>{
103
- const params = {
104
- labelName: labelName,
105
- start: start.valueOf() / 1000,
106
- end: end.valueOf() / 1000
107
- };
108
- if (filters.length) {
109
- params['match[]'] = [
110
- `{${computeFilterExpr(filters)}}`
111
- ];
112
- }
113
- return await client.labelValues(params);
114
- }
115
- });
116
- }
117
- // Retrieve series from the Prometheus API for a given metric name and filters
118
- // Also computes the number of times a label value appears for the given metric name and filters
119
- export function useSeriesStates(metricName, filters, datasource) {
120
- const { absoluteTimeRange: { start, end } } = useTimeRange();
121
- const { data: client } = useDatasourceClient(datasource);
122
- const { data: seriesData, isLoading } = useQuery({
123
- enabled: !!client,
124
- queryKey: [
125
- 'series',
126
- metricName,
127
- 'datasource',
128
- datasource,
129
- 'start',
130
- start,
131
- 'end',
132
- 'filters',
133
- ...filters
134
- ],
135
- queryFn: async ()=>{
136
- const params = {
137
- 'match[]': [
138
- `{${computeFilterExpr(filters)}}`
139
- ],
140
- start: start.valueOf() / 1000,
141
- end: end.valueOf() / 1000
142
- };
143
- return await client.series(params);
144
- }
145
- });
146
- const labelValueCounters = useMemo(()=>{
147
- const result = new Map();
148
- if ((seriesData === null || seriesData === void 0 ? void 0 : seriesData.data) === undefined) {
149
- return result;
150
- }
151
- for (const series of seriesData.data){
152
- for (const [label, value] of Object.entries(series)){
153
- const labelCounters = result.get(label);
154
- if (labelCounters === undefined) {
155
- result.set(label, [
156
- {
157
- labelValue: value,
158
- counter: 1
159
- }
160
- ]);
161
- continue;
162
- }
163
- const labelValueCounter = labelCounters.find((counter)=>counter.labelValue === value);
164
- if (labelValueCounter === undefined) {
165
- labelCounters.push({
166
- labelValue: value,
167
- counter: 1
168
- });
169
- } else {
170
- labelValueCounter.counter += 1;
171
- }
172
- }
173
- }
174
- return result;
175
- }, [
176
- seriesData
177
- ]);
178
- return {
179
- series: seriesData === null || seriesData === void 0 ? void 0 : seriesData.data,
180
- labelValueCounters,
181
- isLoading
182
- };
183
- }
184
-
185
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/PrometheusMetricsFinder/utils.ts"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { DatasourceSelector, StatusError } from '@perses-dev/core';\nimport { useMemo } from 'react';\nimport {\n LabelNamesRequestParameters,\n LabelValuesRequestParameters,\n LabelValuesResponse,\n Metric,\n MetricMetadata,\n MetricMetadataRequestParameters,\n MetricMetadataResponse,\n PrometheusClient,\n SeriesRequestParameters,\n SeriesResponse,\n} from '@perses-dev/prometheus-plugin';\nimport { useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { useDatasourceClient, useTimeRange } from '@perses-dev/plugin-system';\nimport { computeFilterExpr, LabelFilter, LabelValueCounter } from './types';\n\n// Retrieve metric metadata from the Prometheus API\nexport function useMetricMetadata(\n metricName: string,\n datasource: DatasourceSelector,\n enabled?: boolean\n): {\n isLoading: false | true;\n metadata: MetricMetadata | undefined;\n error: StatusError | null;\n} {\n const { data: client } = useDatasourceClient<PrometheusClient>(datasource);\n\n // histograms and summaries timeseries desc are not always added to prefixed timeseries\n const name = metricName.replace(/(_count|_sum|_bucket)$/, '');\n\n const { data, isLoading, error } = useQuery<MetricMetadataResponse, StatusError>({\n enabled: !!client && enabled,\n queryKey: ['metricMetadata', name], // Not indexed on datasource, assuming a metric metadata should be similar across datasources\n queryFn: async () => {\n const params: MetricMetadataRequestParameters = { metric: name };\n\n return await client!.metricMetadata(params);\n },\n });\n\n // Find the first result with help text\n const metadata: MetricMetadata | undefined = useMemo(() => {\n for (const metric of data?.data?.[name] ?? []) {\n if (metric.help.length > 0) {\n return metric;\n }\n }\n return undefined;\n }, [data, name]);\n\n return { metadata, isLoading, error };\n}\n\nexport function useLabels(\n filters: LabelFilter[],\n datasource: DatasourceSelector\n): UseQueryResult<LabelValuesResponse, StatusError> {\n const {\n absoluteTimeRange: { start, end },\n } = useTimeRange();\n const { data: client } = useDatasourceClient<PrometheusClient>(datasource);\n\n return useQuery<LabelValuesResponse, StatusError>({\n enabled: !!client,\n queryKey: ['labels', 'datasource', datasource.name, 'start', start, 'end', end, 'filters', ...filters],\n queryFn: async () => {\n const params: LabelNamesRequestParameters = {\n start: start.valueOf() / 1000,\n end: end.valueOf() / 1000,\n };\n if (filters.length) {\n params['match[]'] = [`{${computeFilterExpr(filters)}}`];\n }\n\n return await client!.labelNames(params);\n },\n });\n}\n\n// Retrieve label values from the Prometheus API for a given label name and filters\nexport function useLabelValues(\n labelName: string,\n filters: LabelFilter[],\n datasource: DatasourceSelector\n): UseQueryResult<LabelValuesResponse, StatusError> {\n const {\n absoluteTimeRange: { start, end },\n } = useTimeRange();\n const { data: client } = useDatasourceClient<PrometheusClient>(datasource);\n\n return useQuery<LabelValuesResponse, StatusError>({\n enabled: !!client,\n queryKey: ['labelValues', labelName, 'datasource', datasource.name, 'start', start, 'end', 'filters', ...filters],\n queryFn: async () => {\n const params: LabelValuesRequestParameters = {\n labelName: labelName,\n start: start.valueOf() / 1000,\n end: end.valueOf() / 1000,\n };\n if (filters.length) {\n params['match[]'] = [`{${computeFilterExpr(filters)}}`];\n }\n\n return await client!.labelValues(params);\n },\n });\n}\n\n// Retrieve series from the Prometheus API for a given metric name and filters\n// Also computes the number of times a label value appears for the given metric name and filters\nexport function useSeriesStates(\n metricName: string,\n filters: LabelFilter[],\n datasource: DatasourceSelector\n): {\n series: Metric[] | undefined;\n labelValueCounters: Map<string, Array<{ labelValue: string; counter: number }>>;\n isLoading: boolean;\n} {\n const {\n absoluteTimeRange: { start, end },\n } = useTimeRange();\n const { data: client } = useDatasourceClient<PrometheusClient>(datasource);\n\n const { data: seriesData, isLoading } = useQuery<SeriesResponse>({\n enabled: !!client,\n queryKey: ['series', metricName, 'datasource', datasource, 'start', start, 'end', 'filters', ...filters],\n queryFn: async () => {\n const params: SeriesRequestParameters = {\n 'match[]': [`{${computeFilterExpr(filters)}}`],\n start: start.valueOf() / 1000,\n end: end.valueOf() / 1000,\n };\n\n return await client!.series(params);\n },\n });\n\n const labelValueCounters: Map<string, Array<{ labelValue: string; counter: number }>> = useMemo(() => {\n const result = new Map<string, LabelValueCounter[]>();\n if (seriesData?.data === undefined) {\n return result;\n }\n\n for (const series of seriesData.data) {\n for (const [label, value] of Object.entries(series)) {\n const labelCounters = result.get(label);\n if (labelCounters === undefined) {\n result.set(label, [{ labelValue: value, counter: 1 }]);\n continue;\n }\n\n const labelValueCounter = labelCounters.find((counter) => counter.labelValue === value);\n if (labelValueCounter === undefined) {\n labelCounters.push({ labelValue: value, counter: 1 });\n } else {\n labelValueCounter.counter += 1;\n }\n }\n }\n\n return result;\n }, [seriesData]);\n\n return { series: seriesData?.data, labelValueCounters, isLoading };\n}\n"],"names":["useMemo","useQuery","useDatasourceClient","useTimeRange","computeFilterExpr","useMetricMetadata","metricName","datasource","enabled","data","client","name","replace","isLoading","error","queryKey","queryFn","params","metric","metricMetadata","metadata","help","length","undefined","useLabels","filters","absoluteTimeRange","start","end","valueOf","labelNames","useLabelValues","labelName","labelValues","useSeriesStates","seriesData","series","labelValueCounters","result","Map","label","value","Object","entries","labelCounters","get","set","labelValue","counter","labelValueCounter","find","push"],"mappings":"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"}