Compute() — supabase Function Reference
Architecture documentation for the Compute() function in Compute.tsx from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD 7430379b_1375_f7b7_2675_1e576b99a5c8["Compute()"] f313d58a_c706_9bf3_eb3c_2de6b61f112e["dailyUsageToDataPoints()"] 7430379b_1375_f7b7_2675_1e576b99a5c8 -->|calls| f313d58a_c706_9bf3_eb3c_2de6b61f112e style 7430379b_1375_f7b7_2675_1e576b99a5c8 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/studio/components/interfaces/Organization/Usage/Compute.tsx lines 24–150
const Compute = ({ orgDailyStats, isLoadingOrgDailyStats }: ComputeProps) => {
const allAttributeKeys = Object.values(ComputeUsageMetric).map((it) => it.toLowerCase())
const { billingAll } = useIsFeatureEnabled(['billing:all'])
const chartData: DataPoint[] = dailyUsageToDataPoints(orgDailyStats, (metric) =>
metric.toString().startsWith('COMPUTE')
)
const COMPUTE_TO_COLOR: Record<ComputeUsageMetric, AttributeColor> = {
[ComputeUsageMetric.COMPUTE_HOURS_BRANCH]: 'blue',
[ComputeUsageMetric.COMPUTE_HOURS_XS]: 'white',
[ComputeUsageMetric.COMPUTE_HOURS_SM]: 'green',
[ComputeUsageMetric.COMPUTE_HOURS_MD]: 'dark-green',
[ComputeUsageMetric.COMPUTE_HOURS_L]: 'yellow',
[ComputeUsageMetric.COMPUTE_HOURS_XL]: 'dark-yellow',
[ComputeUsageMetric.COMPUTE_HOURS_2XL]: 'orange',
[ComputeUsageMetric.COMPUTE_HOURS_4XL]: 'dark-orange',
[ComputeUsageMetric.COMPUTE_HOURS_8XL]: 'red',
[ComputeUsageMetric.COMPUTE_HOURS_12XL]: 'dark-red',
[ComputeUsageMetric.COMPUTE_HOURS_16XL]: 'purple',
[ComputeUsageMetric.COMPUTE_HOURS_24XL]: 'purple',
[ComputeUsageMetric.COMPUTE_HOURS_24XL_OPTIMIZED_CPU]: 'purple',
[ComputeUsageMetric.COMPUTE_HOURS_24XL_OPTIMIZED_MEMORY]: 'purple',
[ComputeUsageMetric.COMPUTE_HOURS_24XL_HIGH_MEMORY]: 'purple',
[ComputeUsageMetric.COMPUTE_HOURS_48XL]: 'purple',
[ComputeUsageMetric.COMPUTE_HOURS_48XL_OPTIMIZED_CPU]: 'purple',
[ComputeUsageMetric.COMPUTE_HOURS_48XL_OPTIMIZED_MEMORY]: 'purple',
[ComputeUsageMetric.COMPUTE_HOURS_48XL_HIGH_MEMORY]: 'purple',
}
const attributes: Attribute[] = Object.keys(ComputeUsageMetric).map((it) => ({
key: it.toLowerCase(),
color: COMPUTE_TO_COLOR[it as ComputeUsageMetric] || 'white',
name: computeUsageMetricLabel(it as ComputeUsageMetric),
}))
const attributeKeysWithData = useMemo(() => {
return allAttributeKeys.filter((attributeKey) => chartData.some((data) => data[attributeKey]))
}, [chartData])
const notAllValuesZero = useMemo(() => {
return attributeKeysWithData.length > 0
}, [attributeKeysWithData])
return (
<div id="compute" className="scroll-my-12">
<SectionContent
section={{
name: 'Compute Hours',
description:
'Amount of hours your projects were active. Each project is a dedicated server and database.\nPaid plans come with $10 in Compute Credits to cover one project running on Micro Compute or parts of any compute add-on.\nBilling is based on the sum of Compute Hours used. Paused projects do not count towards usage.',
links: billingAll
? [
{
name: 'Compute Add-ons',
url: `${DOCS_URL}/guides/platform/compute-add-ons`,
},
{
name: 'Usage-billing for Compute',
url: `${DOCS_URL}/guides/platform/manage-your-usage/compute`,
},
]
: [],
}}
>
{isLoadingOrgDailyStats && <GenericSkeletonLoader />}
{!isLoadingOrgDailyStats && (
<>
<div className="space-y-1">
{chartData.length > 0 && (
<div className="flex items-center justify-between">
<div className="flex items-center space-x-4">
<p className="text-sm">Compute Hours usage</p>
</div>
</div>
)}
{attributeKeysWithData.map((key) => (
<div
key={key}
className="flex items-center justify-between border-b last:border-b-0 py-1 last:py-0"
>
<p className="text-sm text-foreground-light">
<span className="font-medium">
{computeUsageMetricLabel(key.toUpperCase() as ComputeUsageMetric)}
</span>{' '}
Compute Hours usage in period
</p>
<p className="text-sm">
{chartData.reduce((prev, cur) => prev + ((cur[key] as number) ?? 0), 0)} hours
</p>
</div>
))}
</div>
<div className="space-y-1">
<p className="text-sm">Compute Hours usage per day</p>
<p className="text-sm text-foreground-light">The data refreshes every hour.</p>
</div>
{chartData.length > 0 && notAllValuesZero ? (
<UsageBarChart
name={`Compute Hours usage`}
unit={'hours'}
attributes={attributes}
data={chartData}
yMin={24}
/>
) : (
<Panel>
<Panel.Content>
<div className="flex flex-col items-center justify-center">
<BarChart2 className="text-foreground-light mb-2" />
<p className="text-sm">No data in period</p>
<p className="text-sm text-foreground-light">May take up to one hour to show</p>
</div>
</Panel.Content>
</Panel>
)}
</>
)}
</SectionContent>
</div>
)
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does Compute() do?
Compute() is a function in the supabase codebase.
What does Compute() call?
Compute() calls 1 function(s): dailyUsageToDataPoints.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free