Skip to content

Commit d6fdb20

Browse files
authored
Fix visibility of edge fn charts for enterprise (supabase#37401)
1 parent 1bc28c7 commit d6fdb20

File tree

7 files changed

+57
-60
lines changed

7 files changed

+57
-60
lines changed

apps/studio/components/interfaces/Reports/ReportChart.tsx

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,19 @@
77
* This component acts as a bridge between the data-fetching logic and the
88
* presentational chart component.
99
*/
10-
import { useFillTimeseriesSorted } from 'hooks/analytics/useFillTimeseriesSorted'
10+
11+
import Link from 'next/link'
12+
import { useRef, useState } from 'react'
13+
14+
import type { MultiAttribute } from 'components/ui/Charts/ComposedChart.utils'
1115
import LogChartHandler from 'components/ui/Charts/LogChartHandler'
16+
import Panel from 'components/ui/Panel'
17+
import { useFillTimeseriesSorted } from 'hooks/analytics/useFillTimeseriesSorted'
18+
import { useCurrentOrgPlan } from 'hooks/misc/useCurrentOrgPlan'
19+
import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization'
1220
import { useChartData } from 'hooks/useChartData'
1321
import type { UpdateDateRange } from 'pages/project/[ref]/reports/database'
14-
import type { MultiAttribute } from 'components/ui/Charts/ComposedChart.utils'
15-
import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization'
16-
import Link from 'next/link'
1722
import { Button, cn } from 'ui'
18-
import Panel from 'components/ui/Panel'
19-
import { useRef, useState } from 'react'
2023

2124
const ReportChart = ({
2225
chart,
@@ -25,9 +28,7 @@ const ReportChart = ({
2528
interval,
2629
updateDateRange,
2730
functionIds,
28-
orgPlanId,
2931
isLoading,
30-
availableIn,
3132
className,
3233
}: {
3334
chart: any
@@ -36,15 +37,17 @@ const ReportChart = ({
3637
interval: string
3738
updateDateRange: UpdateDateRange
3839
functionIds?: string[]
39-
orgPlanId?: string
4040
isLoading?: boolean
41-
availableIn?: string[]
4241
className?: string
4342
}) => {
4443
const org = useSelectedOrganization()
44+
const { plan: orgPlan } = useCurrentOrgPlan()
45+
const orgPlanId = orgPlan?.id
46+
4547
const [isHoveringUpgrade, setIsHoveringUpgrade] = useState(false)
4648
const isAvailable =
4749
chart.availableIn === undefined || (orgPlanId && chart.availableIn.includes(orgPlanId))
50+
4851
const canFetch = orgPlanId !== undefined
4952
const {
5053
data,
@@ -114,7 +117,9 @@ const ReportChart = ({
114117
<h2 className="">{chart.label}</h2>
115118
<p className="text-sm text-foreground-light">
116119
This chart is available from{' '}
117-
<span className="capitalize">{!!availableIn?.length ? availableIn[0] : 'Pro'}</span>{' '}
120+
<span className="capitalize">
121+
{!!chart.availableIn?.length ? chart.availableIn[0] : 'Pro'}
122+
</span>{' '}
118123
plan and above
119124
</p>
120125
<Button
@@ -125,7 +130,9 @@ const ReportChart = ({
125130
>
126131
<Link href={`/org/${org?.slug}/billing?panel=subscriptionPlan&source=reports`}>
127132
Upgrade to{' '}
128-
<span className="capitalize">{!!availableIn?.length ? availableIn[0] : 'Pro'}</span>
133+
<span className="capitalize">
134+
{!!chart.availableIn?.length ? chart.availableIn[0] : 'Pro'}
135+
</span>
129136
</Link>
130137
</Button>
131138
</div>

apps/studio/data/reports/auth-charts.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const getAuthReportAttributes = (isFreePlan: boolean) => [
1+
export const getAuthReportAttributes = () => [
22
{
33
id: 'active-users',
44
label: 'Active Users',

apps/studio/data/reports/database-charts.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { numberFormatter } from 'components/ui/Charts/Charts.utils'
2+
import { ReportAttributes } from 'components/ui/Charts/ComposedChart.utils'
23
import { formatBytes } from 'lib/helpers'
34
import { Organization } from 'types'
45
import { Project } from '../projects/project-detail-query'
5-
import { ReportAttributes } from 'components/ui/Charts/ComposedChart.utils'
66

77
export const getReportAttributes = (org: Organization, project: Project): ReportAttributes[] => {
88
const computeSize = project?.infra_compute_size || 'medium'

apps/studio/data/reports/edgefn-charts.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export const getEdgeFunctionReportAttributes = (): ReportAttributes[] => [
1212
hideChartType: false,
1313
defaultChartStyle: 'bar',
1414
titleTooltip: 'The total number of edge function executions by status code.',
15-
availableIn: ['free', 'pro', 'team'],
15+
availableIn: ['free', 'pro', 'team', 'enterprise'],
1616
attributes: [
1717
{
1818
attribute: 'ExecutionStatusCodes',
@@ -32,7 +32,7 @@ export const getEdgeFunctionReportAttributes = (): ReportAttributes[] => [
3232
hideChartType: false,
3333
defaultChartStyle: 'line',
3434
titleTooltip: 'Average execution time for edge functions.',
35-
availableIn: ['free', 'pro', 'team'],
35+
availableIn: ['free', 'pro', 'team', 'enterprise'],
3636
format: 'ms',
3737
YAxisProps: {
3838
width: 50,
@@ -58,7 +58,7 @@ export const getEdgeFunctionReportAttributes = (): ReportAttributes[] => [
5858
hideChartType: false,
5959
defaultChartStyle: 'bar',
6060
titleTooltip: 'The total number of edge function invocations by region.',
61-
availableIn: ['pro', 'team'],
61+
availableIn: ['pro', 'team', 'enterprise'],
6262
attributes: [
6363
{
6464
attribute: 'InvocationsByRegion',

apps/studio/pages/project/[ref]/reports/auth.tsx

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
1-
import { useState } from 'react'
21
import { useQueryClient } from '@tanstack/react-query'
2+
import { useParams } from 'common'
33
import dayjs from 'dayjs'
44
import { ArrowRight, RefreshCw } from 'lucide-react'
5-
import { useParams } from 'common'
5+
import { useState } from 'react'
66

7+
import ReportChart from 'components/interfaces/Reports/ReportChart'
78
import ReportHeader from 'components/interfaces/Reports/ReportHeader'
89
import ReportPadding from 'components/interfaces/Reports/ReportPadding'
10+
import ReportStickyNav from 'components/interfaces/Reports/ReportStickyNav'
11+
import { LogsDatePicker } from 'components/interfaces/Settings/Logs/Logs.DatePickers'
912
import DefaultLayout from 'components/layouts/DefaultLayout'
1013
import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout'
1114
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
12-
import { LogsDatePicker } from 'components/interfaces/Settings/Logs/Logs.DatePickers'
13-
import ReportChart from 'components/interfaces/Reports/ReportChart'
14-
import ReportStickyNav from 'components/interfaces/Reports/ReportStickyNav'
1515

16-
import { getAuthReportAttributes } from 'data/reports/auth-charts'
17-
import { useReportDateRange } from 'hooks/misc/useReportDateRange'
16+
import ReportFilterBar from 'components/interfaces/Reports/ReportFilterBar'
1817
import { REPORT_DATERANGE_HELPER_LABELS } from 'components/interfaces/Reports/Reports.constants'
19-
import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt'
20-
import type { NextPageWithLayout } from 'types'
2118
import { SharedAPIReport } from 'components/interfaces/Reports/SharedAPIReport/SharedAPIReport'
2219
import { useSharedAPIReport } from 'components/interfaces/Reports/SharedAPIReport/SharedAPIReport.constants'
23-
import ReportFilterBar from 'components/interfaces/Reports/ReportFilterBar'
20+
import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt'
21+
import { getAuthReportAttributes } from 'data/reports/auth-charts'
22+
import { useReportDateRange } from 'hooks/misc/useReportDateRange'
23+
import type { NextPageWithLayout } from 'types'
2424

2525
const AuthReport: NextPageWithLayout = () => {
2626
return (
@@ -47,8 +47,6 @@ const AuthUsage = () => {
4747
updateDateRange,
4848
datePickerValue,
4949
datePickerHelpers,
50-
isOrgPlanLoading,
51-
orgPlan,
5250
showUpgradePrompt,
5351
setShowUpgradePrompt,
5452
handleDatePickerChange,
@@ -73,8 +71,7 @@ const AuthUsage = () => {
7371
const queryClient = useQueryClient()
7472
const [isRefreshing, setIsRefreshing] = useState(false)
7573

76-
const isFreePlan = !isOrgPlanLoading && orgPlan?.id === 'free'
77-
const AUTH_REPORT_ATTRIBUTES = getAuthReportAttributes(isFreePlan)
74+
const AUTH_REPORT_ATTRIBUTES = getAuthReportAttributes()
7875

7976
const onRefreshReport = async () => {
8077
if (!selectedDateRange) return
@@ -142,7 +139,6 @@ const AuthUsage = () => {
142139
startDate={selectedDateRange?.period_start?.date}
143140
endDate={selectedDateRange?.period_end?.date}
144141
updateDateRange={updateDateRange}
145-
orgPlanId={orgPlan?.id}
146142
isLoading={isRefreshing}
147143
/>
148144
))}

apps/studio/pages/project/[ref]/reports/database.tsx

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
1-
import { useEffect, useState } from 'react'
21
import { PermissionAction } from '@supabase/shared-types/out/constants'
32
import { useQueryClient } from '@tanstack/react-query'
3+
import { useParams } from 'common'
44
import dayjs from 'dayjs'
55
import { ArrowRight, ExternalLink, RefreshCw } from 'lucide-react'
66
import Link from 'next/link'
7+
import { useEffect, useState } from 'react'
78
import { toast } from 'sonner'
89
import { AlertDescription_Shadcn_, Alert_Shadcn_, Button } from 'ui'
9-
import { useParams } from 'common'
1010

11+
import ReportChart from 'components/interfaces/Reports/ReportChart'
1112
import ReportHeader from 'components/interfaces/Reports/ReportHeader'
1213
import ReportPadding from 'components/interfaces/Reports/ReportPadding'
14+
import ReportStickyNav from 'components/interfaces/Reports/ReportStickyNav'
1315
import ReportWidget from 'components/interfaces/Reports/ReportWidget'
1416
import DiskSizeConfigurationModal from 'components/interfaces/Settings/Database/DiskSizeConfigurationModal'
17+
import { LogsDatePicker } from 'components/interfaces/Settings/Logs/Logs.DatePickers'
18+
import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt'
1519
import DefaultLayout from 'components/layouts/DefaultLayout'
1620
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
1721
import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout'
1822
import Table from 'components/to-be-cleaned/Table'
1923
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
2024
import ChartHandler from 'components/ui/Charts/ChartHandler'
21-
import Panel from 'components/ui/Panel'
22-
import { useDatabaseSelectorStateSnapshot } from 'state/database-selector'
2325
import ComposedChartHandler from 'components/ui/Charts/ComposedChartHandler'
24-
import { LogsDatePicker } from 'components/interfaces/Settings/Logs/Logs.DatePickers'
25-
import ReportStickyNav from 'components/interfaces/Reports/ReportStickyNav'
2626
import GrafanaPromoBanner from 'components/ui/GrafanaPromoBanner'
27-
import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt'
28-
import ReportChart from 'components/interfaces/Reports/ReportChart'
27+
import Panel from 'components/ui/Panel'
28+
import { useDatabaseSelectorStateSnapshot } from 'state/database-selector'
2929

30+
import { REPORT_DATERANGE_HELPER_LABELS } from 'components/interfaces/Reports/Reports.constants'
3031
import { analyticsKeys } from 'data/analytics/keys'
31-
import { getReportAttributes, getReportAttributesV2 } from 'data/reports/database-charts'
32+
import { useProjectDiskResizeMutation } from 'data/config/project-disk-resize-mutation'
3233
import { useDatabaseSizeQuery } from 'data/database/database-size-query'
34+
import { getReportAttributes, getReportAttributesV2 } from 'data/reports/database-charts'
3335
import { useDatabaseReport } from 'data/reports/database-report-query'
34-
import { useProjectDiskResizeMutation } from 'data/config/project-disk-resize-mutation'
3536
import { useCheckPermissions } from 'hooks/misc/useCheckPermissions'
36-
import { useFlag } from 'hooks/ui/useFlag'
37-
import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization'
3837
import { useReportDateRange } from 'hooks/misc/useReportDateRange'
39-
import { REPORT_DATERANGE_HELPER_LABELS } from 'components/interfaces/Reports/Reports.constants'
38+
import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization'
39+
import { useFlag } from 'hooks/ui/useFlag'
4040
import { formatBytes } from 'lib/helpers'
4141

42-
import type { NextPageWithLayout } from 'types'
4342
import type { MultiAttribute } from 'components/ui/Charts/ComposedChart.utils'
43+
import type { NextPageWithLayout } from 'types'
4444

4545
const DatabaseReport: NextPageWithLayout = () => {
4646
return (
@@ -288,8 +288,6 @@ const DatabaseUsage = () => {
288288
startDate={selectedDateRange?.period_start?.date}
289289
endDate={selectedDateRange?.period_end?.date}
290290
updateDateRange={updateDateRange}
291-
orgPlanId={orgPlan?.id}
292-
availableIn={chart.availableIn}
293291
/>
294292
)
295293
))}

apps/studio/pages/project/[ref]/reports/edge-functions.tsx

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,26 @@
1-
import { useState, useEffect } from 'react'
21
import { useQueryClient } from '@tanstack/react-query'
2+
import { useParams } from 'common'
33
import dayjs from 'dayjs'
44
import { ArrowRight, ChevronDown, RefreshCw } from 'lucide-react'
5-
import { useParams } from 'common'
5+
import { useEffect, useState } from 'react'
66

7+
import { Label } from '@ui/components/shadcn/ui/label'
8+
import ReportChart from 'components/interfaces/Reports/ReportChart'
79
import ReportHeader from 'components/interfaces/Reports/ReportHeader'
810
import ReportPadding from 'components/interfaces/Reports/ReportPadding'
11+
import ReportStickyNav from 'components/interfaces/Reports/ReportStickyNav'
12+
import { LogsDatePicker } from 'components/interfaces/Settings/Logs/Logs.DatePickers'
913
import DefaultLayout from 'components/layouts/DefaultLayout'
1014
import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout'
11-
import ReportChart from 'components/interfaces/Reports/ReportChart'
12-
import ReportStickyNav from 'components/interfaces/Reports/ReportStickyNav'
1315
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
14-
import {
15-
LogsDatePicker,
16-
DatePickerValue,
17-
} from 'components/interfaces/Settings/Logs/Logs.DatePickers'
1816
import { Button, Checkbox, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from 'ui'
19-
import { Label } from '@ui/components/shadcn/ui/label'
2017

21-
import { getEdgeFunctionReportAttributes } from 'data/reports/edgefn-charts'
2218
import { useEdgeFunctionsQuery } from 'data/edge-functions/edge-functions-query'
19+
import { getEdgeFunctionReportAttributes } from 'data/reports/edgefn-charts'
2320

24-
import { useReportDateRange } from 'hooks/misc/useReportDateRange'
2521
import { REPORT_DATERANGE_HELPER_LABELS } from 'components/interfaces/Reports/Reports.constants'
2622
import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt'
23+
import { useReportDateRange } from 'hooks/misc/useReportDateRange'
2724

2825
import type { NextPageWithLayout } from 'types'
2926

@@ -226,7 +223,6 @@ const EdgeFunctionsUsage = () => {
226223
endDate={selectedDateRange?.period_end?.date}
227224
updateDateRange={updateDateRange}
228225
functionIds={functionIds}
229-
orgPlanId={orgPlan?.id}
230226
/>
231227
))}
232228
</div>

0 commit comments

Comments
 (0)