SharedAPIReport.tsx 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import {
  2. ErrorCountsChartRenderer,
  3. NetworkTrafficRenderer,
  4. ResponseSpeedChartRenderer,
  5. TopApiRoutesRenderer,
  6. TotalRequestsChartRenderer,
  7. } from '../renderers/ApiRenderers'
  8. import ReportWidget from '../ReportWidget'
  9. import { SharedAPIReportKey } from './SharedAPIReport.constants'
  10. type SharedAPIReportWidgetsProps = {
  11. data: any
  12. error: any
  13. isLoading: any
  14. isRefetching: boolean
  15. hiddenReports?: SharedAPIReportKey[]
  16. sql: Record<SharedAPIReportKey, string>
  17. }
  18. export function SharedAPIReport({
  19. data,
  20. error,
  21. isLoading,
  22. isRefetching,
  23. hiddenReports = [],
  24. sql,
  25. }: SharedAPIReportWidgetsProps) {
  26. return (
  27. <div className="grid grid-cols-1 gap-4">
  28. {!hiddenReports.includes('totalRequests') && (
  29. <ReportWidget
  30. isLoading={isLoading.totalRequests || isRefetching}
  31. title="Total Requests"
  32. data={data.totalRequests || []}
  33. error={error.totalRequests}
  34. renderer={TotalRequestsChartRenderer}
  35. append={TopApiRoutesRenderer}
  36. appendProps={{ data: data.topRoutes }}
  37. queryType="logs"
  38. params={{
  39. sql: sql.totalRequests,
  40. }}
  41. />
  42. )}
  43. {!hiddenReports.includes('errorCounts') && (
  44. <ReportWidget
  45. isLoading={isLoading.errorCounts || isRefetching}
  46. title="Response Errors"
  47. tooltip="Error responses with 4XX or 5XX status codes"
  48. data={data.errorCounts || []}
  49. error={error.errorCounts}
  50. renderer={ErrorCountsChartRenderer}
  51. appendProps={{
  52. data: data.topErrorRoutes || [],
  53. }}
  54. append={TopApiRoutesRenderer}
  55. queryType="logs"
  56. params={{
  57. sql: sql.errorCounts,
  58. }}
  59. />
  60. )}
  61. {!hiddenReports.includes('responseSpeed') && (
  62. <ReportWidget
  63. isLoading={isLoading.responseSpeed || isRefetching}
  64. title="Response Speed"
  65. tooltip="Average response speed of a request (in ms)"
  66. data={data.responseSpeed || []}
  67. error={error.responseSpeed}
  68. renderer={ResponseSpeedChartRenderer}
  69. appendProps={{ data: data.topSlowRoutes || [] }}
  70. append={TopApiRoutesRenderer}
  71. queryType="logs"
  72. params={{
  73. sql: sql.responseSpeed,
  74. }}
  75. />
  76. )}
  77. {!hiddenReports.includes('networkTraffic') && (
  78. <ReportWidget
  79. isLoading={isLoading.networkTraffic || isRefetching}
  80. error={error.networkTraffic}
  81. title="Network Traffic"
  82. tooltip="Ingress and egress of requests and responses respectively"
  83. data={data.networkTraffic || []}
  84. renderer={NetworkTrafficRenderer}
  85. queryType="logs"
  86. params={{
  87. sql: sql.networkTraffic,
  88. }}
  89. />
  90. )}
  91. </div>
  92. )
  93. }