@@ -17,6 +17,7 @@ import copyTextToClipboard from '../../utils/copyTextToClipboard';
17
17
import routes from '../../constants/routes' ;
18
18
import { usePropertiesContext } from '../../context/properties/properties' ;
19
19
import NeutralLoss from '../../types/peak/NeutralLoss' ;
20
+ import Slider from './Slider' ;
20
21
21
22
const toolButtonStyle = {
22
23
width : 20 ,
@@ -30,7 +31,7 @@ type InputProps = {
30
31
peakData : Peak [ ] ;
31
32
peakData2 ?: Peak [ ] ;
32
33
neutralLossData ?: NeutralLoss [ ] ;
33
- onZoom ?: ( {
34
+ onFilter ?: ( {
34
35
fpd1,
35
36
nld,
36
37
fpd2,
@@ -51,7 +52,7 @@ function Chart({
51
52
peakData,
52
53
peakData2 = [ ] ,
53
54
neutralLossData = [ ] ,
54
- onZoom = ( ) => { } ,
55
+ onFilter = ( ) => { } ,
55
56
width = 400 ,
56
57
height = 300 ,
57
58
disableLabels = false ,
@@ -64,6 +65,7 @@ function Chart({
64
65
const { baseUrl, frontendUrl } = usePropertiesContext ( ) ;
65
66
66
67
const [ isShowLabel , setIsShowLabel ] = useState < boolean > ( false ) ;
68
+ const [ minRelIntensity , setMinRelativeIntensity ] = useState < number > ( 0 ) ;
67
69
68
70
const MARGIN = useMemo ( ( ) => {
69
71
const defaultMargin = 5 ;
@@ -91,7 +93,7 @@ function Chart({
91
93
92
94
const getFilteredPeakData = useCallback (
93
95
( peakDataTemp : Peak [ ] ) => {
94
- let _peakData = peakDataTemp ;
96
+ let _peakData = peakDataTemp . filter ( ( pd ) => pd . rel >= minRelIntensity ) ;
95
97
if ( brushXDomains ) {
96
98
_peakData = peakDataTemp . filter (
97
99
( pd ) =>
@@ -102,7 +104,7 @@ function Chart({
102
104
103
105
return _peakData ;
104
106
} ,
105
- [ brushXDomains ] ,
107
+ [ brushXDomains , minRelIntensity ] ,
106
108
) ;
107
109
108
110
const filteredPeakData = useMemo (
@@ -140,13 +142,13 @@ function Chart({
140
142
rel : - 1 * p . rel ,
141
143
} as Peak ;
142
144
} ) ;
143
- onZoom ( {
145
+ onFilter ( {
144
146
fpd1 : _filteredPeakData ,
145
147
fpd2 : _filteredPeakData2_temp ,
146
148
nld : filteredNeutralLossData ,
147
149
} ) ;
148
150
} ,
149
- [ filteredNeutralLossData , onZoom ] ,
151
+ [ filteredNeutralLossData , onFilter ] ,
150
152
) ;
151
153
152
154
useEffect (
@@ -510,6 +512,29 @@ function Chart({
510
512
[ baseUrl , frontendUrl ] ,
511
513
) ;
512
514
515
+ const handleOnSetMinRelativeIntensity = useCallback (
516
+ ( value : number ) => {
517
+ setMinRelativeIntensity ( value ) ;
518
+ const _filteredPeakData = peakData . filter ( ( p ) => p . rel >= value ) ;
519
+ const _filteredPeakData2 = peakData2
520
+ ? peakData2
521
+ . filter ( ( p ) => p . rel >= value )
522
+ . map ( ( p ) => {
523
+ const _p : Peak = { ...p } ;
524
+ _p . intensity = - 1 * _p . intensity ;
525
+ _p . rel = - 1 * _p . rel ;
526
+ return _p ;
527
+ } )
528
+ : undefined ;
529
+ onFilter ( {
530
+ fpd1 : _filteredPeakData ,
531
+ fpd2 : _filteredPeakData2 ,
532
+ nld : filteredNeutralLossData ,
533
+ } ) ;
534
+ } ,
535
+ [ filteredNeutralLossData , onFilter , peakData , peakData2 ] ,
536
+ ) ;
537
+
513
538
return useMemo (
514
539
( ) => (
515
540
< Content
@@ -564,7 +589,7 @@ function Chart({
564
589
height : MARGIN . button ,
565
590
marginLeft : 5 ,
566
591
display : 'flex' ,
567
- justifyContent : 'flex-start ' ,
592
+ justifyContent : 'left ' ,
568
593
alignItems : 'center' ,
569
594
} }
570
595
>
@@ -589,7 +614,7 @@ function Chart({
589
614
{ ! disableExport && (
590
615
< Content
591
616
style = { {
592
- width : '100%' ,
617
+ width : 80 ,
593
618
height : MARGIN . button ,
594
619
display : 'flex' ,
595
620
justifyContent : 'left' ,
@@ -616,6 +641,25 @@ function Chart({
616
641
/>
617
642
</ Content >
618
643
) }
644
+ < Content
645
+ style = { {
646
+ width : '100%' ,
647
+ height : MARGIN . button ,
648
+ display : 'flex' ,
649
+ justifyContent : 'left' ,
650
+ alignItems : 'center' ,
651
+ marginLeft : 20 ,
652
+ } }
653
+ >
654
+ < Slider
655
+ width = { 150 }
656
+ height = { MARGIN . button }
657
+ min = { 0 }
658
+ max = { 999 }
659
+ value = { 0 }
660
+ onChange = { handleOnSetMinRelativeIntensity }
661
+ />
662
+ </ Content >
619
663
</ Content >
620
664
< Content
621
665
style = { {
@@ -656,6 +700,7 @@ function Chart({
656
700
filteredPeakData2 ,
657
701
handleOnCopy ,
658
702
handleOnDownload ,
703
+ handleOnSetMinRelativeIntensity ,
659
704
height ,
660
705
isShowLabel ,
661
706
peakData . length ,
0 commit comments