修补自定义分段后,面板过长的问题

This commit is contained in:
JIANG
2025-11-18 14:32:21 +08:00
parent 9c533c0911
commit a85ded8a39

View File

@@ -715,7 +715,7 @@ const StyleEditorPanel: React.FC<StyleEditorPanelProps> = ({
// 判断此次触发是否由用户点击“应用”按钮引起 // 判断此次触发是否由用户点击“应用”按钮引起
const isUserTrigger = const isUserTrigger =
styleUpdateTrigger !== prevStyleUpdateTriggerRef.current; styleUpdateTrigger !== prevStyleUpdateTriggerRef.current;
// 更新 prevStyleUpdateTriggerRef // 更新 prevStyleUpdateTrigger
prevStyleUpdateTriggerRef.current = styleUpdateTrigger; prevStyleUpdateTriggerRef.current = styleUpdateTrigger;
const updateJunctionStyle = () => { const updateJunctionStyle = () => {
@@ -1368,45 +1368,50 @@ const StyleEditorPanel: React.FC<StyleEditorPanelProps> = ({
<Typography variant="subtitle2" gutterBottom> <Typography variant="subtitle2" gutterBottom>
{">="} 0 {">="} 0
</Typography> </Typography>
<Box className="flex flex-col gap-2"> <Box
{Array.from({ length: styleConfig.segments }).map((_, idx) => ( className="flex flex-col gap-2"
<TextField sx={{ maxHeight: "240px", overflowY: "auto", paddingTop: "12px" }}
key={idx} >
label={`阈值 ${idx + 1}`} {Array.from({ length: styleConfig.segments + 1 }).map(
type="number" (_, idx) => (
size="small" <TextField
slotProps={{ input: { inputProps: { min: 0, step: 0.1 } } }} key={idx}
value={ label={`阈值 ${idx + 1}`}
(styleConfig.customBreaks && type="number"
styleConfig.customBreaks[idx]) ?? size="small"
"" slotProps={{ input: { inputProps: { min: 0, step: 0.1 } } }}
} value={
onChange={(e) => { (styleConfig.customBreaks &&
const v = parseFloat(e.target.value); styleConfig.customBreaks[idx]) ??
setStyleConfig((prev) => { ""
const prevBreaks = prev.customBreaks }
? [...prev.customBreaks] onChange={(e) => {
: []; const v = parseFloat(e.target.value);
// 保证长度 setStyleConfig((prev) => {
while (prevBreaks.length < styleConfig.segments + 1) const prevBreaks = prev.customBreaks
prevBreaks.push(0); ? [...prev.customBreaks]
prevBreaks[idx] = isNaN(v) ? 0 : Math.max(0, v); : [];
return { ...prev, customBreaks: prevBreaks }; // 保证长度
}); while (prevBreaks.length < styleConfig.segments + 1)
}} prevBreaks.push(0);
onBlur={() => { prevBreaks[idx] = isNaN(v) ? 0 : Math.max(0, v);
// on blur 保证升序 return { ...prev, customBreaks: prevBreaks };
setStyleConfig((prev) => { });
const prevBreaks = (prev.customBreaks || []).slice( }}
0, onBlur={() => {
styleConfig.segments + 1 // on blur 保证升序
); setStyleConfig((prev) => {
prevBreaks.sort((a, b) => a - b); const prevBreaks = (prev.customBreaks || []).slice(
return { ...prev, customBreaks: prevBreaks }; 0,
}); styleConfig.segments + 1
}} );
/> prevBreaks.sort((a, b) => a - b);
))} return { ...prev, customBreaks: prevBreaks };
});
}}
/>
)
)}
</Box> </Box>
</Box> </Box>
)} )}