@@ -4,7 +4,7 @@ import { PressTip } from 'app/dim-ui/PressTip';
44import { t } from 'app/i18next-t' ;
55import ExoticArmorChoice , { getLockedExotic } from 'app/loadout-builder/filter/ExoticArmorChoice' ;
66import { useD2Definitions } from 'app/manifest/selectors' ;
7- import { AppIcon , equalsIcon , greaterThanIcon , searchIcon } from 'app/shell/icons' ;
7+ import { AppIcon , equalsIcon , greaterThanIcon , lessThanIcon , searchIcon } from 'app/shell/icons' ;
88import clsx from 'clsx' ;
99import { includesRuntimeStatMods } from '../stats' ;
1010import styles from './LoadoutParametersDisplay.m.scss' ;
@@ -77,41 +77,63 @@ export default function LoadoutParametersDisplay({ params }: { params: LoadoutPa
7777}
7878
7979export function StatConstraintRange ( {
80- statConstraint : s ,
80+ statConstraint,
8181 className,
8282} : {
8383 statConstraint : StatConstraint ;
8484 className ?: string ;
8585} ) {
8686 className = clsx ( className , styles . constraintRange ) ;
87- return s . minTier !== undefined && s . minTier !== 0 ? (
88- < span className = { className } >
89- { ( s . maxTier === 10 || s . maxTier === undefined ) && s . minTier !== 10 ? (
90- < >
91- < AppIcon icon = { greaterThanIcon } />
92- { t ( 'LoadoutBuilder.TierNumber' , {
93- tier : s . minTier ,
94- } ) }
95- </ >
96- ) : s . maxTier !== undefined && s . maxTier !== s . minTier ? (
97- `${ t ( 'LoadoutBuilder.TierNumber' , {
98- tier : s . minTier ,
99- } ) } -${ s . maxTier } `
100- ) : (
101- < >
102- < AppIcon icon = { equalsIcon } />
103- { t ( 'LoadoutBuilder.TierNumber' , {
104- tier : s . minTier ,
105- } ) }
106- </ >
107- ) }
108- </ span >
109- ) : (
87+
88+ return (
11089 < span className = { className } >
111- < AppIcon icon = { greaterThanIcon } />
112- { t ( 'LoadoutBuilder.TierNumber' , {
113- tier : 0 ,
114- } ) }
90+ < StatConstraintRangeExpression statConstraint = { statConstraint } />
11591 </ span >
11692 ) ;
11793}
94+
95+ function StatConstraintRangeExpression ( { statConstraint } : { statConstraint : StatConstraint } ) {
96+ const min = statConstraint . minTier ?? 0 ;
97+ const max = statConstraint . maxTier ?? 10 ;
98+
99+ if ( min === max ) {
100+ // =Tmin
101+ return (
102+ < >
103+ < AppIcon icon = { equalsIcon } />
104+ { t ( 'LoadoutBuilder.TierNumber' , {
105+ tier : min ,
106+ } ) }
107+ </ >
108+ ) ;
109+ } else if ( max === 10 ) {
110+ // >= Tmin
111+ return (
112+ < >
113+ < AppIcon icon = { greaterThanIcon } />
114+ { t ( 'LoadoutBuilder.TierNumber' , {
115+ tier : min ,
116+ } ) }
117+ </ >
118+ ) ;
119+ } else if ( min === 0 ) {
120+ // <= Tmax
121+ return (
122+ < >
123+ < AppIcon icon = { lessThanIcon } />
124+ { t ( 'LoadoutBuilder.TierNumber' , {
125+ tier : max ,
126+ } ) }
127+ </ >
128+ ) ;
129+ } else {
130+ // Tmin-Tmax
131+ return (
132+ < >
133+ { `${ t ( 'LoadoutBuilder.TierNumber' , {
134+ tier : min ,
135+ } ) } -${ max } `}
136+ </ >
137+ ) ;
138+ }
139+ }
0 commit comments