Skip to content

Commit b237c22

Browse files
committed
1 parent c5f0804 commit b237c22

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

src/features/clusters/upsert/components/RegionFormInputs.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ export function RegionFormInputs({
140140
</div>
141141
)}
142142
<ResourcesPerInstance
143-
planLimits={selectedPlan?.planLimits}
144-
resourcesPerInstance={selectedPlan?.resourcesPerInstance}
143+
selectedPlan={selectedPlan}
145144
selectedRegion={regionNameToLatencyToRegion[selectedRegionName]?.[selectedLatencyDescription]}
146145
isEnterprise={isEnterprise}
147146
/>

src/features/clusters/upsert/components/ResourcesPerInstance.tsx

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { FormControl } from '@/components/ui/form/FormControl';
33
import { FormItem } from '@/components/ui/form/FormItem';
44
import { FormLabel } from '@/components/ui/form/FormLabel';
55
import { FormMessage } from '@/components/ui/form/FormMessage';
6-
import { SchemaPlanLimits, SchemaRegion, SchemaResourcesPerInstance } from '@/integrations/api/api.gen';
6+
import { SchemaPlan, SchemaRegion } from '@/integrations/api/api.gen';
77
import { excludeFalsy } from '@/lib/arrays/excludeFalsy';
88
import { cn } from '@/lib/cn';
99
import { humanFileSize } from '@/lib/humanFileSize';
@@ -13,25 +13,26 @@ import { isPositive } from '@/lib/types/isPositive';
1313
import { ArrowDownIcon, ArrowRightIcon } from 'lucide-react';
1414
import { useCallback, useMemo, useState } from 'react';
1515

16-
export function ResourcesPerInstance({ planLimits, resourcesPerInstance, selectedRegion, isEnterprise }: {
17-
readonly planLimits: SchemaPlanLimits | undefined;
18-
readonly resourcesPerInstance: SchemaResourcesPerInstance | undefined;
16+
export function ResourcesPerInstance({ selectedPlan, selectedRegion, isEnterprise }: {
17+
readonly selectedPlan: SchemaPlan | undefined;
1918
readonly selectedRegion: SchemaRegion | undefined;
2019
readonly isEnterprise: boolean;
2120
}) {
2221
const [toggled, setToggled] = useState(false);
2322
const onUsageLimitsClick = useCallback(() => {
2423
setToggled(!toggled);
2524
}, [toggled, setToggled]);
25+
const planLimits = selectedPlan?.planLimits;
26+
const resourcesPerInstance = selectedPlan?.resourcesPerInstance;
2627

2728
const expirationMonths = isPositive(planLimits?.expirationMonths) && planLimits.expirationMonths < 1000
2829
&& planLimits.expirationMonths;
2930
const multiplier = selectedRegion?.purchasedBlockMultiplier ?? 1;
30-
const rows = useMemo(() => {
31+
const rows = useMemo<{ label: string; value: string }[]>(() => {
3132
if (!planLimits) {
3233
return [];
3334
}
34-
return [
35+
return ([
3536
isPositive(planLimits.totalReadCount) && {
3637
label: 'Total Reads',
3738
value: `${humanNumber(planLimits.totalReadCount * multiplier)} reads`,
@@ -88,16 +89,24 @@ export function ResourcesPerInstance({ planLimits, resourcesPerInstance, selecte
8889
label: 'Application Compute Hours',
8990
value: `${humanNumber(planLimits.applicationComputeHours * 60 * multiplier)}`,
9091
},
91-
resourcesPerInstance && isPositive(resourcesPerInstance.storageGb) && {
92+
!!resourcesPerInstance && isPositive(resourcesPerInstance.storageGb) && {
9293
label: 'Storage',
9394
value: `${humanFileSize(resourcesPerInstance.storageGb * 1000_000_000)}`,
9495
},
95-
expirationMonths && {
96+
!!expirationMonths && {
9697
label: 'Expiration',
9798
value: pluralize(expirationMonths, 'month', 'months'),
9899
},
99-
].filter(excludeFalsy);
100-
}, [expirationMonths, planLimits, resourcesPerInstance, multiplier]);
100+
!!selectedRegion?.id && {
101+
label: 'Region ID',
102+
value: selectedRegion.id,
103+
},
104+
!!selectedPlan?.id && {
105+
label: 'Plan ID',
106+
value: selectedPlan.id,
107+
},
108+
] satisfies Array<boolean | { label: string; value: string }>).filter(excludeFalsy);
109+
}, [expirationMonths, selectedRegion, selectedPlan, multiplier]);
101110

102111
if (!planLimits) {
103112
// The user hasn't selected a plan yet. so let's not show anything for the ResourcesPerInstance space yet.
@@ -119,7 +128,7 @@ export function ResourcesPerInstance({ planLimits, resourcesPerInstance, selecte
119128
? ` ${humanNumber(planLimits.writesPerMinuteCount)} writes/min & `
120129
: ' ';
121130
const inRegionOrPerServer = isPositive(planLimits.readsPerMinuteCount)
122-
? 'in ' + (selectedRegion?.region ?? '') + ' region'
131+
? `in ${selectedRegion?.region ?? ''} region${selectedRegion ? ` (${selectedRegion?.id})` : ''}`
123132
: 'per server';
124133
const forMonths = expirationMonths ? `, for ${pluralize(expirationMonths, 'month', 'months')}` : '';
125134
const forThePriceAbove = isEnterprise
@@ -130,7 +139,7 @@ export function ResourcesPerInstance({ planLimits, resourcesPerInstance, selecte
130139
return (
131140
<FormItem className="basis-full">
132141
<FormLabel onClick={onUsageLimitsClick}>
133-
Purchasing usage block for {maybeReadsPerMinute}
142+
<em className="text-muted-foreground">{selectedPlan?.id}</em> Purchasing usage block for {maybeReadsPerMinute}
134143
{humanNumber(planLimits.totalReadCount * multiplier)} total reads {inRegionOrPerServer},
135144
<br className="hidden sm:block" />
136145
{maybeWritesPerMinute} {humanNumber(planLimits.totalWriteCount)} total writes{forMonths}.

0 commit comments

Comments
 (0)