EdgeFunctionMetricTooltipDetails.tsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import type { ChartLineProps } from 'ui-patterns/Chart'
  2. import type { EdgeFunctionChartDatum } from './EdgeFunctionOverview.utils'
  3. import { formatReferenceDelta, getMemoryTooltipDetail } from './EdgeFunctionOverview.utils'
  4. export const ExecutionTooltipDetail = ({
  5. averageExecutionTime,
  6. metricKey,
  7. value,
  8. }: {
  9. averageExecutionTime: number
  10. metricKey: string
  11. value: unknown
  12. }) => {
  13. if (metricKey !== 'max_execution_time') return null
  14. return (
  15. <span className="text-foreground">
  16. {formatReferenceDelta(Number(value ?? 0), averageExecutionTime)}
  17. </span>
  18. )
  19. }
  20. export const CpuTooltipDetail = ({
  21. averageCpuTime,
  22. value,
  23. }: {
  24. averageCpuTime: number
  25. value: unknown
  26. }) => {
  27. return (
  28. <span className="text-foreground">
  29. {formatReferenceDelta(Number(value ?? 0), averageCpuTime)}
  30. </span>
  31. )
  32. }
  33. export const MemoryTooltipDetail = ({
  34. averageMemoryUsage,
  35. datum,
  36. value,
  37. }: {
  38. averageMemoryUsage: number
  39. datum: EdgeFunctionChartDatum
  40. value: unknown
  41. }) => {
  42. return (
  43. <>
  44. <span className="text-foreground">
  45. {formatReferenceDelta(Number(value ?? 0), averageMemoryUsage)}
  46. </span>
  47. <span className="text-foreground-light">
  48. {getMemoryTooltipDetail(datum.avg_heap_memory_used, datum.avg_external_memory_used)}
  49. </span>
  50. </>
  51. )
  52. }
  53. export const getExecutionTooltipDetails = (
  54. averageExecutionTime: number
  55. ): NonNullable<ChartLineProps['tooltipDetails']> => {
  56. return function renderExecutionTooltipDetails(_, key, value) {
  57. return (
  58. <ExecutionTooltipDetail
  59. averageExecutionTime={averageExecutionTime}
  60. metricKey={key}
  61. value={value}
  62. />
  63. )
  64. }
  65. }
  66. export const getCpuTooltipDetails = (
  67. averageCpuTime: number
  68. ): NonNullable<ChartLineProps['tooltipDetails']> => {
  69. return function renderCpuTooltipDetails(_, __, value) {
  70. return <CpuTooltipDetail averageCpuTime={averageCpuTime} value={value} />
  71. }
  72. }
  73. export const getMemoryTooltipDetails = (
  74. averageMemoryUsage: number
  75. ): NonNullable<ChartLineProps['tooltipDetails']> => {
  76. return function renderMemoryTooltipDetails(datum, _, value) {
  77. return (
  78. <MemoryTooltipDetail
  79. averageMemoryUsage={averageMemoryUsage}
  80. datum={datum as EdgeFunctionChartDatum}
  81. value={value}
  82. />
  83. )
  84. }
  85. }