Skip to content

Commit a409300

Browse files
committed
Initial burst changes to queue page
1 parent 6df7eb2 commit a409300

File tree

3 files changed

+38
-9
lines changed

3 files changed

+38
-9
lines changed

apps/webapp/app/components/metrics/BigNumber.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ interface BigNumberProps {
1414
valueClassName?: string;
1515
defaultValue?: number;
1616
accessory?: ReactNode;
17-
suffix?: string;
17+
suffix?: ReactNode;
1818
suffixClassName?: string;
1919
compactThreshold?: number;
2020
}

apps/webapp/app/presenters/v3/EnvironmentQueuePresenter.server.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export type Environment = {
77
running: number;
88
queued: number;
99
concurrencyLimit: number;
10+
burstFactor: number;
1011
};
1112

1213
export class EnvironmentQueuePresenter extends BasePresenter {
@@ -26,6 +27,7 @@ export class EnvironmentQueuePresenter extends BasePresenter {
2627
running,
2728
queued,
2829
concurrencyLimit: environment.maximumConcurrencyLimit,
30+
burstFactor: environment.concurrencyLimitBurstFactor.toNumber(),
2931
};
3032
}
3133
}

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import {
4848
TableRow,
4949
} from "~/components/primitives/Table";
5050
import {
51+
InfoIconTooltip,
5152
SimpleTooltip,
5253
Tooltip,
5354
TooltipContent,
@@ -238,6 +239,16 @@ export default function Page() {
238239
}
239240
}, [streamedEvents]);
240241

242+
const limitStatus =
243+
environment.running === environment.concurrencyLimit * environment.burstFactor
244+
? "limit"
245+
: environment.running > environment.concurrencyLimit
246+
? "burst"
247+
: "within";
248+
249+
const limitClassName =
250+
limitStatus === "burst" ? "text-warning" : limitStatus === "limit" ? "text-error" : undefined;
251+
241252
return (
242253
<PageContainer>
243254
<NavBar>
@@ -269,11 +280,11 @@ export default function Page() {
269280
title="Running"
270281
value={environment.running}
271282
animate
272-
valueClassName={
273-
environment.running === environment.concurrencyLimit ? "text-warning" : undefined
274-
}
283+
valueClassName={limitClassName}
275284
suffix={
276-
environment.running === environment.concurrencyLimit
285+
limitStatus === "burst"
286+
? `Including ${environment.running - environment.concurrencyLimit} burst runs`
287+
: limitStatus === "limit"
277288
? "At concurrency limit"
278289
: undefined
279290
}
@@ -283,8 +294,17 @@ export default function Page() {
283294
title="Concurrency limit"
284295
value={environment.concurrencyLimit}
285296
animate
286-
valueClassName={
287-
environment.running === environment.concurrencyLimit ? "text-warning" : undefined
297+
valueClassName={limitClassName}
298+
suffix={
299+
environment.burstFactor > 1 ? (
300+
<span className={cn(limitClassName, "flex items-center gap-1")}>
301+
Burst limit {environment.burstFactor * environment.concurrencyLimit}{" "}
302+
<InfoIconTooltip
303+
content={`You can burst up to ${environment.burstFactor}x your concurrency limit. For a single queue you can't go above your normal limit (${environment.concurrencyLimit}), but you can burst when running across multiple queues/tasks.`}
304+
contentClassName="max-w-xs"
305+
/>
306+
</span>
307+
) : undefined
288308
}
289309
accessory={
290310
plan ? (
@@ -323,7 +343,14 @@ export default function Page() {
323343
pagination.totalPages > 1 && "grid-rows-[auto_1fr_auto]"
324344
)}
325345
>
326-
<QueueFilters />
346+
<div className="flex items-center gap-2 border-t border-grid-dimmed px-1.5 py-1.5">
347+
<QueueFilters />
348+
<PaginationControls
349+
currentPage={pagination.currentPage}
350+
totalPages={pagination.totalPages}
351+
showPageNumbers={false}
352+
/>
353+
</div>
327354
<Table containerClassName="border-t">
328355
<TableHeader>
329356
<TableRow>
@@ -743,7 +770,7 @@ export function QueueFilters() {
743770
const search = searchParams.get("query") ?? "";
744771

745772
return (
746-
<div className="flex w-full border-t border-grid-dimmed px-1.5 py-1.5">
773+
<div className="flex grow">
747774
<Input
748775
name="search"
749776
placeholder="Search queue name"

0 commit comments

Comments
 (0)