|
|
|
@ -2,8 +2,8 @@ import { css } from '@emotion/css'; |
|
|
|
|
import React, { useCallback, useEffect, useState } from 'react'; |
|
|
|
|
import AutoSizer from 'react-virtualized-auto-sizer'; |
|
|
|
|
|
|
|
|
|
import { CoreApp, createTheme, DataFrame, Field, FieldType, getDisplayProcessor } from '@grafana/data'; |
|
|
|
|
import { useStyles2 } from '@grafana/ui'; |
|
|
|
|
import { CoreApp, DataFrame, Field, FieldType, getDisplayProcessor } from '@grafana/data'; |
|
|
|
|
import { useStyles2, useTheme2 } from '@grafana/ui'; |
|
|
|
|
|
|
|
|
|
import { PIXELS_PER_LEVEL } from '../../constants'; |
|
|
|
|
import { SampleUnit, SelectedView, TableData, TopTableData } from '../types'; |
|
|
|
@ -38,6 +38,7 @@ const FlameGraphTopTableContainer = ({ |
|
|
|
|
getLabelValue, |
|
|
|
|
}: Props) => { |
|
|
|
|
const styles = useStyles2(() => getStyles(selectedView, app)); |
|
|
|
|
const theme = useTheme2(); |
|
|
|
|
const [topTable, setTopTable] = useState<TopTableData[]>(); |
|
|
|
|
const valueField = |
|
|
|
|
data.fields.find((f) => f.name === 'value') ?? data.fields.find((f) => f.type === FieldType.number); |
|
|
|
@ -67,8 +68,9 @@ const FlameGraphTopTableContainer = ({ |
|
|
|
|
return table; |
|
|
|
|
}, [getLabelValue, selfField, valueField, labelsField]); |
|
|
|
|
|
|
|
|
|
const getTopTableData = (field: Field, value: number) => { |
|
|
|
|
const processor = getDisplayProcessor({ field, theme: createTheme() /* theme does not matter for us here */ }); |
|
|
|
|
const getTopTableData = useCallback( |
|
|
|
|
(field: Field, value: number) => { |
|
|
|
|
const processor = getDisplayProcessor({ field, theme }); |
|
|
|
|
const displayValue = processor(value); |
|
|
|
|
let unitValue = displayValue.text + displayValue.suffix; |
|
|
|
|
|
|
|
|
@ -86,7 +88,9 @@ const FlameGraphTopTableContainer = ({ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return unitValue; |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
[theme] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
const table = sortLevelsIntoTable(); |
|
|
|
@ -104,7 +108,7 @@ const FlameGraphTopTableContainer = ({ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
setTopTable(topTable); |
|
|
|
|
}, [data.fields, selfField, sortLevelsIntoTable, valueField]); |
|
|
|
|
}, [data.fields, selfField, sortLevelsIntoTable, valueField, getTopTableData]); |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
<> |
|
|
|
|