@@ -48,6 +48,7 @@ import {
4848 TableRow ,
4949} from "~/components/primitives/Table" ;
5050import {
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