Activity.tsx 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import { dailyUsageToDataPoints } from './Usage.utils'
  2. import UsageSection from './UsageSection/UsageSection'
  3. import { DataPoint } from '@/data/analytics/constants'
  4. import { PricingMetric, type OrgDailyUsageResponse } from '@/data/analytics/org-daily-stats-query'
  5. import type { OrgSubscription } from '@/data/subscriptions/types'
  6. export interface ActivityProps {
  7. orgSlug: string
  8. projectRef?: string | null
  9. startDate: string | undefined
  10. endDate: string | undefined
  11. subscription: OrgSubscription | undefined
  12. currentBillingCycleSelected: boolean
  13. orgDailyStats: OrgDailyUsageResponse | undefined
  14. isLoadingOrgDailyStats: boolean
  15. }
  16. const Activity = ({
  17. orgSlug,
  18. projectRef,
  19. subscription,
  20. currentBillingCycleSelected,
  21. orgDailyStats,
  22. isLoadingOrgDailyStats,
  23. }: ActivityProps) => {
  24. const chartMeta: {
  25. [key: string]: { data: DataPoint[]; margin: number; isLoading: boolean }
  26. } = {
  27. [PricingMetric.MONTHLY_ACTIVE_USERS]: {
  28. data: dailyUsageToDataPoints(
  29. orgDailyStats,
  30. (metric) => metric === PricingMetric.MONTHLY_ACTIVE_USERS
  31. ),
  32. margin: 18,
  33. isLoading: isLoadingOrgDailyStats,
  34. },
  35. [PricingMetric.MONTHLY_ACTIVE_SSO_USERS]: {
  36. data: dailyUsageToDataPoints(
  37. orgDailyStats,
  38. (metric) => metric === PricingMetric.MONTHLY_ACTIVE_SSO_USERS
  39. ),
  40. margin: 20,
  41. isLoading: isLoadingOrgDailyStats,
  42. },
  43. [PricingMetric.STORAGE_IMAGES_TRANSFORMED]: {
  44. data: dailyUsageToDataPoints(
  45. orgDailyStats,
  46. (metric) => metric === PricingMetric.STORAGE_IMAGES_TRANSFORMED
  47. ),
  48. margin: 0,
  49. isLoading: isLoadingOrgDailyStats,
  50. },
  51. [PricingMetric.FUNCTION_INVOCATIONS]: {
  52. data: dailyUsageToDataPoints(
  53. orgDailyStats,
  54. (metric) => metric === PricingMetric.FUNCTION_INVOCATIONS
  55. ),
  56. margin: 26,
  57. isLoading: isLoadingOrgDailyStats,
  58. },
  59. [PricingMetric.REALTIME_MESSAGE_COUNT]: {
  60. data: dailyUsageToDataPoints(
  61. orgDailyStats,
  62. (metric) => metric === PricingMetric.REALTIME_MESSAGE_COUNT
  63. ),
  64. margin: 38,
  65. isLoading: isLoadingOrgDailyStats,
  66. },
  67. [PricingMetric.REALTIME_PEAK_CONNECTIONS]: {
  68. data: dailyUsageToDataPoints(
  69. orgDailyStats,
  70. (metric) => metric === PricingMetric.REALTIME_PEAK_CONNECTIONS
  71. ),
  72. margin: 0,
  73. isLoading: isLoadingOrgDailyStats,
  74. },
  75. }
  76. return (
  77. <UsageSection
  78. orgSlug={orgSlug}
  79. projectRef={projectRef}
  80. categoryKey="activity"
  81. chartMeta={chartMeta}
  82. subscription={subscription}
  83. currentBillingCycleSelected={currentBillingCycleSelected}
  84. />
  85. )
  86. }
  87. export default Activity