Skip to content

Commit 805eff8

Browse files
Merge pull request #235 from CSSLab/codex/desktop-analysis-mobile-ui-align
fix: disable eval bars when analysis is hidden
2 parents 99f1fd2 + 74b879f commit 805eff8

2 files changed

Lines changed: 67 additions & 14 deletions

File tree

src/components/Analysis/BoardChrome.tsx

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ interface AnalysisStockfishEvalBarProps {
1616
hasEval: boolean
1717
displayText: string
1818
labelPositionTop: MotionValue<string>
19+
disabled?: boolean
1920
variant?: StockfishEvalBarVariant
2021
className?: string
2122
range?: number
@@ -38,6 +39,7 @@ interface AnalysisMaiaWinrateBarProps {
3839
hasValue: boolean
3940
displayText: string
4041
labelPositionTop: MotionValue<string>
42+
disabled?: boolean
4143
className?: string
4244
bubbleMinWidthPx?: number
4345
desktopSize?: 'compact' | 'expanded'
@@ -134,6 +136,7 @@ export const AnalysisStockfishEvalBar: React.FC<
134136
hasEval,
135137
displayText,
136138
labelPositionTop,
139+
disabled = false,
137140
variant = 'mobile',
138141
className,
139142
range = 4,
@@ -165,7 +168,13 @@ export const AnalysisStockfishEvalBar: React.FC<
165168
.join(' ')}
166169
>
167170
<div className={`relative h-full ${widthClass}`}>
168-
<div className="absolute inset-0 overflow-hidden rounded-[5px] border border-glass-border bg-glass-strong shadow-[0_0_0_1px_rgb(var(--color-backdrop)/0.35)]">
171+
<div
172+
className="absolute inset-0 overflow-hidden rounded-[5px] border border-glass-border bg-glass-strong shadow-[0_0_0_1px_rgb(var(--color-backdrop)/0.35)]"
173+
style={{
174+
filter: disabled ? 'grayscale(0.85) saturate(0.35)' : undefined,
175+
opacity: disabled ? 0.55 : 1,
176+
}}
177+
>
169178
<div
170179
className="absolute inset-0"
171180
style={{
@@ -200,13 +209,16 @@ export const AnalysisStockfishEvalBar: React.FC<
200209
>
201210
-{range}
202211
</div>
212+
{disabled ? (
213+
<div className="absolute inset-0 bg-backdrop/25" />
214+
) : null}
203215
</div>
204216
<motion.div
205217
className={`absolute left-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center border border-black/45 bg-white font-bold leading-none text-black/85 ${bubbleClass}`}
206218
style={{
207219
top: labelPositionTop,
208220
boxShadow: '0 0 0 2px rgb(255 255 255 / 0.32)',
209-
opacity: hasEval ? 1 : 0.6,
221+
opacity: disabled ? 0.45 : hasEval ? 1 : 0.6,
210222
minWidth: bubbleMinWidthPx,
211223
}}
212224
>
@@ -221,6 +233,7 @@ export const AnalysisMaiaWinrateBar: React.FC<AnalysisMaiaWinrateBarProps> = ({
221233
hasValue,
222234
displayText,
223235
labelPositionTop,
236+
disabled = false,
224237
className,
225238
bubbleMinWidthPx,
226239
desktopSize = 'compact',
@@ -238,7 +251,13 @@ export const AnalysisMaiaWinrateBar: React.FC<AnalysisMaiaWinrateBarProps> = ({
238251
<div
239252
className={`relative h-full ${isExpandedDesktop ? 'w-[18px]' : 'w-[16px]'}`}
240253
>
241-
<div className="absolute inset-0 overflow-hidden rounded-[5px] border border-glass-border bg-glass-strong shadow-[0_0_0_1px_rgb(var(--color-backdrop)/0.35)]">
254+
<div
255+
className="absolute inset-0 overflow-hidden rounded-[5px] border border-glass-border bg-glass-strong shadow-[0_0_0_1px_rgb(var(--color-backdrop)/0.35)]"
256+
style={{
257+
filter: disabled ? 'grayscale(0.85) saturate(0.35)' : undefined,
258+
opacity: disabled ? 0.55 : 1,
259+
}}
260+
>
242261
<div
243262
className="absolute inset-0"
244263
style={{
@@ -272,6 +291,9 @@ export const AnalysisMaiaWinrateBar: React.FC<AnalysisMaiaWinrateBarProps> = ({
272291
>
273292
0
274293
</div>
294+
{disabled ? (
295+
<div className="absolute inset-0 bg-backdrop/25" />
296+
) : null}
275297
</div>
276298
<motion.div
277299
className={`absolute left-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full border border-black/45 bg-white font-bold leading-none text-black/85 ${
@@ -282,7 +304,7 @@ export const AnalysisMaiaWinrateBar: React.FC<AnalysisMaiaWinrateBarProps> = ({
282304
style={{
283305
top: labelPositionTop,
284306
boxShadow: '0 0 0 2px rgb(255 255 255 / 0.32)',
285-
opacity: hasValue ? 1 : 0.6,
307+
opacity: disabled ? 0.45 : hasValue ? 1 : 0.6,
286308
minWidth: bubbleMinWidthPx,
287309
}}
288310
>

src/pages/analysis/[...id].tsx

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,6 +1044,16 @@ const Analysis: React.FC<Props> = ({
10441044
() => Math.max(0, Math.min(100, displayedMaiaWhiteWinBar.percent)),
10451045
[displayedMaiaWhiteWinBar.percent],
10461046
)
1047+
const renderedMaiaWhiteWinBar = useMemo(
1048+
() =>
1049+
analysisEnabled
1050+
? displayedMaiaWhiteWinBar
1051+
: { hasValue: false, percent: 50, label: '--' },
1052+
[analysisEnabled, displayedMaiaWhiteWinBar],
1053+
)
1054+
const maiaWhiteWinBarPositionTargetPercent = analysisEnabled
1055+
? maiaWhiteWinPositionPercent
1056+
: 50
10471057

10481058
const smoothedMaiaWhiteWinPosition = useSpring(50, {
10491059
stiffness: 520,
@@ -1056,8 +1066,8 @@ const Analysis: React.FC<Props> = ({
10561066
)
10571067

10581068
useIsomorphicLayoutEffect(() => {
1059-
smoothedMaiaWhiteWinPosition.set(maiaWhiteWinPositionPercent)
1060-
}, [maiaWhiteWinPositionPercent, smoothedMaiaWhiteWinPosition])
1069+
smoothedMaiaWhiteWinPosition.set(maiaWhiteWinBarPositionTargetPercent)
1070+
}, [maiaWhiteWinBarPositionTargetPercent, smoothedMaiaWhiteWinPosition])
10611071

10621072
const desktopMaiaBubbleReservePx = useMemo(
10631073
() => (width >= 1360 ? 62 : 52),
@@ -1197,10 +1207,28 @@ const Analysis: React.FC<Props> = ({
11971207
smoothedEvalPosition,
11981208
(value) => `${100 - value}%`,
11991209
)
1210+
const renderedStockfishEvalBar = useMemo(
1211+
() =>
1212+
analysisEnabled
1213+
? displayedStockfishEvalBar
1214+
: {
1215+
hasEval: false,
1216+
pawns: 0,
1217+
displayPawns: 0,
1218+
label: '--',
1219+
},
1220+
[analysisEnabled, displayedStockfishEvalBar],
1221+
)
1222+
const renderedStockfishEvalText = analysisEnabled
1223+
? displayedStockfishEvalText
1224+
: '--'
1225+
const evalBarPositionTargetPercent = analysisEnabled
1226+
? evalPositionPercent
1227+
: 50
12001228

12011229
useIsomorphicLayoutEffect(() => {
1202-
smoothedEvalPosition.set(evalPositionPercent)
1203-
}, [evalPositionPercent, smoothedEvalPosition])
1230+
smoothedEvalPosition.set(evalBarPositionTargetPercent)
1231+
}, [evalBarPositionTargetPercent, smoothedEvalPosition])
12041232

12051233
const NestedGameInfo = () => (
12061234
<div className="flex w-full flex-col">
@@ -1486,11 +1514,12 @@ const Analysis: React.FC<Props> = ({
14861514
>
14871515
<div className="pointer-events-none flex justify-center py-1">
14881516
<AnalysisMaiaWinrateBar
1489-
hasValue={displayedMaiaWhiteWinBar.hasValue}
1490-
displayText={displayedMaiaWhiteWinBar.label}
1517+
hasValue={renderedMaiaWhiteWinBar.hasValue}
1518+
displayText={renderedMaiaWhiteWinBar.label}
14911519
labelPositionTop={
14921520
smoothedMaiaWhiteWinVerticalPositionLabel
14931521
}
1522+
disabled={!analysisEnabled}
14941523
desktopSize={desktopBarChromeSize}
14951524
/>
14961525
</div>
@@ -1555,9 +1584,10 @@ const Analysis: React.FC<Props> = ({
15551584
</div>
15561585
<div className="pointer-events-none flex justify-center py-1">
15571586
<AnalysisStockfishEvalBar
1558-
hasEval={displayedStockfishEvalBar.hasEval}
1559-
displayText={displayedStockfishEvalText}
1587+
hasEval={renderedStockfishEvalBar.hasEval}
1588+
displayText={renderedStockfishEvalText}
15601589
labelPositionTop={smoothedEvalVerticalPositionLabel}
1590+
disabled={!analysisEnabled}
15611591
variant="desktop"
15621592
desktopSize={desktopBarChromeSize}
15631593
/>
@@ -1786,9 +1816,10 @@ const Analysis: React.FC<Props> = ({
17861816
<div className="pointer-events-none relative min-h-0 min-w-0 self-stretch">
17871817
<div className="absolute inset-y-0 left-[68%] w-4 -translate-x-1/2">
17881818
<AnalysisStockfishEvalBar
1789-
hasEval={displayedStockfishEvalBar.hasEval}
1790-
displayText={displayedStockfishEvalText}
1819+
hasEval={renderedStockfishEvalBar.hasEval}
1820+
displayText={renderedStockfishEvalText}
17911821
labelPositionTop={smoothedEvalVerticalPositionLabel}
1822+
disabled={!analysisEnabled}
17921823
/>
17931824
</div>
17941825
</div>

0 commit comments

Comments
 (0)