@@ -3,27 +3,25 @@ import React from 'react';
33import VisibilityIcon from '@mui/icons-material/Visibility' ;
44import VisibilityOffIcon from '@mui/icons-material/VisibilityOff' ;
55import Checkbox from '@mui/material/Checkbox' ;
6+ import Divider from '@mui/material/Divider' ;
67import FormControlLabel from '@mui/material/FormControlLabel' ;
78import FormGroup from '@mui/material/FormGroup' ;
8- import Slider from '@mui/material/Slider ' ;
9+ import Grid from '@mui/material/Grid ' ;
910import Stack from '@mui/material/Stack' ;
1011
11- const OpactiySlider = ( { value, onChange } ) => (
12- < Slider
13- size = "small"
14- min = { 0 }
15- max = { 1 }
16- step = { 0.01 }
17- value = { value }
18- onChange = { onChange }
19- />
20- ) ;
12+ import { AxisSliders } from './AxisSliders' ;
13+ import { ChannelControllers } from './ChannelControllers' ;
14+ import { OpacitySlider } from './OpacitySlider' ;
2115
2216export const Controller = ( {
17+ sourceData,
2318 layerStates,
2419 resetViewState,
2520 toggleVisibility,
2621 setLayerOpacity,
22+ setLayerSelections,
23+ toggleChannelVisibility,
24+ setChannelContrast,
2725} ) => {
2826 const controls = layerStates . map ( ( layerState , index ) => {
2927 if ( ! layerState ) {
@@ -45,12 +43,28 @@ export const Controller = ({
4543 />
4644 }
4745 />
48- < OpactiySlider
46+ < AxisSliders
47+ { ...sourceData [ index ] }
48+ selections = { layerState . layerProps . selections }
49+ onChange = { ( selections ) => setLayerSelections ( index , selections ) }
50+ />
51+ < OpacitySlider
4952 value = { layerState . layerProps . opacity }
5053 onChange = { ( e , value ) => setLayerOpacity ( index , null , value ) }
5154 />
52- { layerState . labels ?. map ( ( label ) => (
55+ < Divider > Channels</ Divider >
56+ < ChannelControllers
57+ { ...sourceData [ index ] }
58+ { ...layerState }
59+ toggleChannelVisibility = { ( i ) => toggleChannelVisibility ( index , i ) }
60+ setChannelContrast = { ( i , contrast ) =>
61+ setChannelContrast ( index , i , contrast )
62+ }
63+ />
64+ { layerState . labels ?. length && < Divider > Labels</ Divider > }
65+ { layerState . labels ?. map ( ( label , i ) => (
5366 < React . Fragment key = { label . layerProps . id } >
67+ { i > 0 && < Divider /> }
5468 < FormControlLabel
5569 key = { label . layerProps . id }
5670 label = { `${ label . layerProps . id } (label)` }
@@ -64,7 +78,7 @@ export const Controller = ({
6478 />
6579 }
6680 />
67- < OpactiySlider
81+ < OpacitySlider
6882 value = { label . layerProps . opacity }
6983 onChange = { ( e , value ) =>
7084 setLayerOpacity ( index , label . layerProps . id , value )
@@ -79,7 +93,6 @@ export const Controller = ({
7993 return (
8094 < div className = "viewer-controller" >
8195 < Stack spacing = { 2 } >
82- < p > Layers</ p >
8396 < FormGroup > { controls } </ FormGroup >
8497 < button type = "button" className = "btn" onClick = { resetViewState } >
8598 Reset view
0 commit comments