Egress.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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 EgressProps {
  7. orgSlug: string
  8. projectRef: string | null
  9. subscription: OrgSubscription | undefined
  10. currentBillingCycleSelected: boolean
  11. orgDailyStats: OrgDailyUsageResponse | undefined
  12. isLoadingOrgDailyStats: boolean
  13. startDate: string | undefined
  14. endDate: string | undefined
  15. }
  16. const Egress = ({
  17. orgSlug,
  18. projectRef,
  19. subscription,
  20. currentBillingCycleSelected,
  21. orgDailyStats,
  22. isLoadingOrgDailyStats,
  23. startDate,
  24. endDate,
  25. }: EgressProps) => {
  26. const chartMeta: {
  27. [key: string]: { data: DataPoint[]; margin: number; isLoading: boolean }
  28. } = {
  29. [PricingMetric.EGRESS]: {
  30. data: dailyUsageToDataPoints(orgDailyStats, (metric) => metric === PricingMetric.EGRESS),
  31. margin: 16,
  32. isLoading: isLoadingOrgDailyStats,
  33. },
  34. [PricingMetric.CACHED_EGRESS]: {
  35. data: dailyUsageToDataPoints(
  36. orgDailyStats,
  37. (metric) => metric === PricingMetric.CACHED_EGRESS
  38. ),
  39. margin: 16,
  40. isLoading: isLoadingOrgDailyStats,
  41. },
  42. }
  43. return (
  44. <UsageSection
  45. orgSlug={orgSlug}
  46. projectRef={projectRef}
  47. categoryKey="egress"
  48. chartMeta={chartMeta}
  49. subscription={subscription}
  50. currentBillingCycleSelected={currentBillingCycleSelected}
  51. startDate={startDate}
  52. endDate={endDate}
  53. />
  54. )
  55. }
  56. export default Egress