@@ -68,7 +68,6 @@ import { EnvironmentQueuePresenter } from "~/presenters/v3/EnvironmentQueuePrese
6868import { QueueListPresenter } from "~/presenters/v3/QueueListPresenter.server" ;
6969import { requireUserId } from "~/services/session.server" ;
7070import { cn } from "~/utils/cn" ;
71- import { formatNumberCompact } from "~/utils/numberFormatter" ;
7271import {
7372 concurrencyPath ,
7473 docsPath ,
@@ -346,13 +345,7 @@ export default function Page() {
346345 < BigNumber
347346 title = "Queued"
348347 value = { environment . queued }
349- suffix = {
350- < QueuedSuffix
351- queued = { environment . queued }
352- queueSizeLimit = { environment . queueSizeLimit }
353- isPaused = { env . paused }
354- />
355- }
348+ suffix = { env . paused ? < span className = "text-warning" > paused</ span > : undefined }
356349 animate
357350 accessory = {
358351 < div className = "flex items-start gap-1" >
@@ -371,10 +364,7 @@ export default function Page() {
371364 />
372365 </ div >
373366 }
374- valueClassName = {
375- getQueueUsageColorClass ( environment . queued , environment . queueSizeLimit ) ??
376- ( env . paused ? "text-warning" : undefined )
377- }
367+ valueClassName = { env . paused ? "text-warning" : undefined }
378368 compactThreshold = { 1000000 }
379369 />
380370 < BigNumber
@@ -519,7 +509,10 @@ export default function Page() {
519509 { queues . length > 0 ? (
520510 queues . map ( ( queue ) => {
521511 const limit = queue . concurrencyLimit ?? environment . concurrencyLimit ;
522- const isAtLimit = queue . running >= limit ;
512+ const isAtConcurrencyLimit = queue . running >= limit ;
513+ const isAtQueueLimit =
514+ environment . queueSizeLimit !== null &&
515+ queue . queued >= environment . queueSizeLimit ;
523516 const queueFilterableName = `${ queue . type === "task" ? "task/" : "" } ${
524517 queue . name
525518 } `;
@@ -545,7 +538,12 @@ export default function Page() {
545538 Paused
546539 </ Badge >
547540 ) : null }
548- { isAtLimit ? (
541+ { isAtQueueLimit ? (
542+ < Badge variant = "extra-small" className = "text-error" >
543+ At queue limit
544+ </ Badge >
545+ ) : null }
546+ { isAtConcurrencyLimit ? (
549547 < Badge variant = "extra-small" className = "text-warning" >
550548 At concurrency limit
551549 </ Badge >
@@ -556,7 +554,8 @@ export default function Page() {
556554 alignment = "right"
557555 className = { cn (
558556 "w-[1%] pl-16 tabular-nums" ,
559- queue . paused ? "opacity-50" : undefined
557+ queue . paused ? "opacity-50" : undefined ,
558+ isAtQueueLimit && "text-error"
560559 ) }
561560 >
562561 { queue . queued }
@@ -567,7 +566,7 @@ export default function Page() {
567566 "w-[1%] pl-16 tabular-nums" ,
568567 queue . paused ? "opacity-50" : undefined ,
569568 queue . running > 0 && "text-text-bright" ,
570- isAtLimit && "text-warning"
569+ isAtConcurrencyLimit && "text-warning"
571570 ) }
572571 >
573572 { queue . running }
@@ -587,7 +586,7 @@ export default function Page() {
587586 className = { cn (
588587 "w-[1%] pl-16" ,
589588 queue . paused ? "opacity-50" : undefined ,
590- isAtLimit && "text-warning" ,
589+ isAtConcurrencyLimit && "text-warning" ,
591590 queue . concurrency ?. overriddenAt && "font-medium text-text-bright"
592591 ) }
593592 >
@@ -1129,52 +1128,3 @@ function BurstFactorTooltip({
11291128 ) ;
11301129}
11311130
1132- function getQueueUsageColorClass ( current : number , limit : number | null ) : string | undefined {
1133- if ( ! limit ) return undefined ;
1134- const percentage = current / limit ;
1135- if ( percentage >= 1 ) return "text-error" ;
1136- if ( percentage >= 0.9 ) return "text-warning" ;
1137- return undefined ;
1138- }
1139-
1140- /**
1141- * Renders the suffix for the Queued BigNumber, showing:
1142- * - The limit with usage color and tooltip (if queueSizeLimit is set)
1143- * - "paused" text (if environment is paused)
1144- * - Both indicators when applicable
1145- */
1146- function QueuedSuffix ( {
1147- queued,
1148- queueSizeLimit,
1149- isPaused,
1150- } : {
1151- queued : number ;
1152- queueSizeLimit : number | null ;
1153- isPaused : boolean ;
1154- } ) {
1155- const showLimit = queueSizeLimit !== null ;
1156-
1157- if ( ! showLimit && ! isPaused ) {
1158- return null ;
1159- }
1160-
1161- return (
1162- < span className = "flex items-center gap-1" >
1163- { showLimit && (
1164- < >
1165- < span className = "text-text-dimmed" > /</ span >
1166- < span className = { getQueueUsageColorClass ( queued , queueSizeLimit ) } >
1167- { formatNumberCompact ( queueSizeLimit ) }
1168- </ span >
1169- < InfoIconTooltip
1170- content = "Maximum pending runs across all queues in this environment"
1171- contentClassName = "max-w-xs"
1172- />
1173- </ >
1174- ) }
1175- { isPaused && (
1176- < span className = "text-warning" > { showLimit ? "(paused)" : "paused" } </ span >
1177- ) }
1178- </ span >
1179- ) ;
1180- }
0 commit comments