// Copyright (C) 2020-2021 Intel Corporation // // SPDX-License-Identifier: MIT import React, { Dispatch } from 'react'; import { AnyAction } from 'redux'; import { connect } from 'react-redux'; import Text from 'antd/lib/typography/Text'; import Radio, { RadioChangeEvent } from 'antd/lib/radio'; import Slider from 'antd/lib/slider'; import Checkbox, { CheckboxChangeEvent } from 'antd/lib/checkbox'; import Collapse from 'antd/lib/collapse'; import Button from 'antd/lib/button'; import ColorPicker from 'components/annotation-page/standard-workspace/objects-side-bar/color-picker'; import { ColorizeIcon } from 'icons'; import { ColorBy, CombinedState, DimensionType } from 'reducers/interfaces'; import { collapseAppearance as collapseAppearanceAction } from 'actions/annotation-actions'; import { changeShapesColorBy as changeShapesColorByAction, changeShapesOpacity as changeShapesOpacityAction, changeSelectedShapesOpacity as changeSelectedShapesOpacityAction, changeShapesOutlinedBorders as changeShapesOutlinedBordersAction, changeShowBitmap as changeShowBitmapAction, changeShowProjections as changeShowProjectionsAction, } from 'actions/settings-actions'; interface StateToProps { appearanceCollapsed: boolean; colorBy: ColorBy; opacity: number; selectedOpacity: number; outlined: boolean; outlineColor: string; showBitmap: boolean; showProjections: boolean; jobInstance: any; } interface DispatchToProps { collapseAppearance(): void; changeShapesColorBy(event: RadioChangeEvent): void; changeShapesOpacity(value: number): void; changeSelectedShapesOpacity(value: number): void; changeShapesOutlinedBorders(outlined: boolean, color: string): void; changeShowBitmap(event: CheckboxChangeEvent): void; changeShowProjections(event: CheckboxChangeEvent): void; } function mapStateToProps(state: CombinedState): StateToProps { const { annotation: { appearanceCollapsed, job: { instance: jobInstance }, }, settings: { shapes: { colorBy, opacity, selectedOpacity, outlined, outlineColor, showBitmap, showProjections, }, }, } = state; return { appearanceCollapsed, colorBy, opacity, selectedOpacity, outlined, outlineColor, showBitmap, showProjections, jobInstance, }; } function mapDispatchToProps(dispatch: Dispatch): DispatchToProps { return { collapseAppearance(): void { dispatch(collapseAppearanceAction()); }, changeShapesColorBy(event: RadioChangeEvent): void { dispatch(changeShapesColorByAction(event.target.value)); }, changeShapesOpacity(value: number): void { dispatch(changeShapesOpacityAction(value)); }, changeSelectedShapesOpacity(value: number): void { dispatch(changeSelectedShapesOpacityAction(value)); }, changeShapesOutlinedBorders(outlined: boolean, color: string): void { dispatch(changeShapesOutlinedBordersAction(outlined, color)); }, changeShowBitmap(event: CheckboxChangeEvent): void { dispatch(changeShowBitmapAction(event.target.checked)); }, changeShowProjections(event: CheckboxChangeEvent): void { dispatch(changeShowProjectionsAction(event.target.checked)); }, }; } type Props = StateToProps & DispatchToProps; function AppearanceBlock(props: Props): JSX.Element { const { appearanceCollapsed, colorBy, opacity, selectedOpacity, outlined, outlineColor, showBitmap, showProjections, collapseAppearance, changeShapesColorBy, changeShapesOpacity, changeSelectedShapesOpacity, changeShapesOutlinedBorders, changeShowBitmap, changeShowProjections, jobInstance, } = props; const is2D = jobInstance.dimension === DimensionType.DIM_2D; return ( Appearance )} key='appearance' >
Color by {ColorBy.LABEL} {ColorBy.INSTANCE} {ColorBy.GROUP} Opacity Selected opacity { changeShapesOutlinedBorders(event.target.checked, outlineColor); }} checked={outlined} > Outlined borders changeShapesOutlinedBorders(outlined, color)} value={outlineColor} placement='top' resetVisible={false} > {is2D && ( Show bitmap )} {is2D && ( Show projections )}
); } export default connect(mapStateToProps, mapDispatchToProps)(React.memo(AppearanceBlock));