11import React , { useCallback , useEffect , useMemo , useRef , useState } from 'react' ;
2- import { Box , ListItemText , IconButton , ListItem , ListItemAvatar , Avatar , ListItemButton , Link , Button , ButtonBase , Typography , CircularProgress , Accordion , AccordionDetails , AccordionSummary , Slider , Stack , Tooltip , TextField , MenuItem , Collapse } from '@mui/material' ;
2+ import { Box , ListItemText , IconButton , ListItem , ListItemAvatar , Avatar , ListItemButton , Link , Button , ButtonBase , Typography , CircularProgress , Accordion , AccordionDetails , AccordionSummary , Slider , Stack , Tooltip , TextField , MenuItem , Collapse , Chip } from '@mui/material' ;
33import RouteIcon from '@mui/icons-material/Route' ;
44import ZoomInIcon from '@mui/icons-material/ZoomIn' ;
5+ import ErrorIcon from '@mui/icons-material/Error' ;
56import VisibilityIcon from '@mui/icons-material/Visibility' ;
67import VisibilityOffIcon from '@mui/icons-material/VisibilityOff' ;
78import RefreshIcon from '@mui/icons-material/Refresh' ;
@@ -18,7 +19,6 @@ export default function LayerListItem({
1819 onExpand,
1920 onZoom,
2021 onCurveEdit,
21- onSettingChanged,
2222} ) {
2323 const { updateLayerById } = useMeshery ( ) ;
2424 const [ spacing , setSpacing ] = useState ( layer . spacing ) ;
@@ -102,7 +102,7 @@ export default function LayerListItem({
102102 } , [ spacing , digDepth , digDistance , digCurve ] ) ;
103103
104104 const isDisabled = useMemo ( ( ) => {
105- return ! layer . mesh || layer . pending || ! layer . conformed ;
105+ return layer . error || ! layer . mesh || layer . pending || ! layer . conformed ;
106106 } , [ layer ] ) ;
107107
108108 return (
@@ -119,12 +119,22 @@ export default function LayerListItem({
119119 } }
120120 onClick = { handleClick }
121121 >
122- { isDisabled ? (
123- < CircularProgress size = { 15 } />
122+ { layer . error ? (
123+ < Tooltip title = { layer . error } >
124+ < ErrorIcon color = "error" />
125+ </ Tooltip >
124126 ) : (
125- < Avatar sx = { { backgroundColor : `#${ layer . color } ` , width : 15 , height : 15 } } > { ' ' } </ Avatar >
127+ isDisabled ? (
128+ < CircularProgress size = { 15 } />
129+ ) : (
130+ < Avatar sx = { { backgroundColor : `#${ layer . color } ` , width : 15 , height : 15 } } > { ' ' } </ Avatar >
131+ )
126132 ) }
127- < Box sx = { { flex : 1 } } > { layer . id } </ Box >
133+ < Box sx = { { flex : 1 } } >
134+ < Typography component = "span" > { layer . surface } </ Typography > { ' ' }
135+ < Typography color = "textSecondary" component = "span" > { layer . name } </ Typography >
136+
137+ </ Box >
128138 < Box >
129139 { expanded ? < ExpandLessIcon /> : < ExpandMoreIcon /> }
130140 </ Box >
@@ -145,82 +155,86 @@ export default function LayerListItem({
145155 </ IconButton >
146156 </ Tooltip >
147157 </ Box >
148-
149- < Stack direction = "column" spacing = { 1 } sx = { { px : 2 , pb : 2 } } >
150- < Typography sx = { { m : 0 } } variant = "h6" > Triangle Spacing</ Typography >
151- < Stack direction = "row" alignItems = "center" spacing = { 1 } >
152- < Typography variant = "body2" > { spacing . toFixed ( 2 ) } </ Typography >
153- < Slider
154- size = "small"
155- disabled = { isDisabled }
156- value = { spacing }
157- min = { 0.2 }
158- max = { 5 }
159- step = { 0.05 }
160- onChange = { handleSpacingChange }
161- />
162- </ Stack >
163- { layer . dig ?. depth ? (
164- < >
165- < Typography sx = { { m : 0 } } variant = "h6" > Dig Depth</ Typography >
166- < Stack direction = "row" alignItems = "center" spacing = { 1 } >
167- < Typography variant = "body2" > { digDepth } </ Typography >
168- < Slider
169- size = "small"
170- value = { digDepth }
171- disabled = { isDisabled }
172- min = { 0.01 }
173- max = { 10 }
174- step = { 0.01 }
175- onChange = { handleDigDepthChange }
176- />
177- </ Stack >
178- < Typography sx = { { m : 0 } } variant = "h6" > Dig Distance</ Typography >
179- < Stack direction = "row" alignItems = "center" spacing = { 1 } >
180- < Typography variant = "body2" > { digDistance } </ Typography >
181- < Slider
182- size = "small"
183- value = { digDistance }
184- disabled = { isDisabled }
185- min = { 0.05 }
186- max = { 1 }
187- step = { 0.01 }
188- onChange = { handleDigDistanceChange }
189- />
190- </ Stack >
191-
192- < Typography sx = { { m : 0 } } variant = "h6" > Dig Curve</ Typography >
193- < Stack direction = "row" >
194- < TextField select = { true } value = { layer . dig . curve } onChange = { handleDigCurveChange } fullWidth = { true } size = "small" >
195- < MenuItem value = "smooth" > Smoothstep</ MenuItem >
196- < MenuItem value = "linear" > Linear</ MenuItem >
197- < MenuItem value = "sine" > Sine</ MenuItem >
198- { /* <MenuItem value="pow">Expo</MenuItem> */ }
199- < MenuItem value = "bezier" > Bezier</ MenuItem >
200- </ TextField >
201-
202-
203- < IconButton
204- disabled = { layer . dig . curve !== 'bezier' }
205- onClick = { ( ) => setCurveEditorOpen ( true ) }
206- >
207- < RouteIcon />
208- </ IconButton >
209- </ Stack >
210-
211- { /* <Typography sx={{ m: 0 }} variant="h6">Expo Power</Typography>
158+ { layer . error ? (
159+ < Box > { layer . error } </ Box >
160+ ) : (
161+
162+ < Stack direction = "column" spacing = { 1 } sx = { { px : 2 , pb : 2 } } >
163+ < Typography sx = { { m : 0 } } variant = "h6" > Triangle Spacing</ Typography >
164+ < Stack direction = "row" alignItems = "center" spacing = { 1 } >
165+ < Typography variant = "body2" > { ( spacing || 0 ) . toFixed ( 2 ) } </ Typography >
212166 < Slider
213167 size = "small"
214- value={layer.dig.curvePower}
215- min={1}
216- max={20}
217- step={1}
218- onChange={handleDigSmoothExpoChange}
219- /> */ }
220-
221- </ >
222- ) : null }
223- </ Stack >
168+ disabled = { isDisabled }
169+ value = { spacing }
170+ min = { 0.2 }
171+ max = { 5 }
172+ step = { 0.05 }
173+ onChange = { handleSpacingChange }
174+ />
175+ </ Stack >
176+ { layer . dig ?. depth ? (
177+ < >
178+ < Typography sx = { { m : 0 } } variant = "h6" > Dig Depth</ Typography >
179+ < Stack direction = "row" alignItems = "center" spacing = { 1 } >
180+ < Typography variant = "body2" > { digDepth } </ Typography >
181+ < Slider
182+ size = "small"
183+ value = { digDepth }
184+ disabled = { isDisabled }
185+ min = { 0.01 }
186+ max = { 10 }
187+ step = { 0.01 }
188+ onChange = { handleDigDepthChange }
189+ />
190+ </ Stack >
191+ < Typography sx = { { m : 0 } } variant = "h6" > Dig Distance</ Typography >
192+ < Stack direction = "row" alignItems = "center" spacing = { 1 } >
193+ < Typography variant = "body2" > { digDistance } </ Typography >
194+ < Slider
195+ size = "small"
196+ value = { digDistance }
197+ disabled = { isDisabled }
198+ min = { 0.05 }
199+ max = { 1 }
200+ step = { 0.01 }
201+ onChange = { handleDigDistanceChange }
202+ />
203+ </ Stack >
204+
205+ < Typography sx = { { m : 0 } } variant = "h6" > Dig Curve</ Typography >
206+ < Stack direction = "row" >
207+ < TextField select = { true } value = { layer . dig . curve } onChange = { handleDigCurveChange } fullWidth = { true } size = "small" >
208+ < MenuItem value = "smooth" > Smoothstep</ MenuItem >
209+ < MenuItem value = "linear" > Linear</ MenuItem >
210+ < MenuItem value = "sine" > Sine</ MenuItem >
211+ { /* <MenuItem value="pow">Expo</MenuItem> */ }
212+ < MenuItem value = "bezier" > Bezier</ MenuItem >
213+ </ TextField >
214+
215+
216+ < IconButton
217+ disabled = { layer . dig . curve !== 'bezier' }
218+ onClick = { ( ) => setCurveEditorOpen ( true ) }
219+ >
220+ < RouteIcon />
221+ </ IconButton >
222+ </ Stack >
223+
224+ { /* <Typography sx={{ m: 0 }} variant="h6">Expo Power</Typography>
225+ <Slider
226+ size="small"
227+ value={layer.dig.curvePower}
228+ min={1}
229+ max={20}
230+ step={1}
231+ onChange={handleDigSmoothExpoChange}
232+ /> */ }
233+
234+ </ >
235+ ) : null }
236+ </ Stack >
237+ ) }
224238
225239 </ Collapse >
226240 </ Box >
0 commit comments