1
- import React , { useEffect , useState } from 'react' ;
2
1
import HelpTooltip from 'explorviz-frontend/src/components/help-tooltip.tsx' ;
3
2
import ResetButton from 'explorviz-frontend/src/components/visualization/page-setup/sidebar/customizationbar/settings/setting-type/reset-button.tsx' ;
3
+ import { defaultVizSettings } from 'explorviz-frontend/src/utils/settings/default-settings' ;
4
+ import {
5
+ RangeSetting as RangeSettingData ,
6
+ VisualizationSettingId ,
7
+ } from 'explorviz-frontend/src/utils/settings/settings-schemas' ;
8
+ import { useEffect } from 'react' ;
9
+ import { useState } from 'react' ;
4
10
5
- export default function RangeSetting ( { setting, onChange, settingId, resetState } : any ) {
11
+ export default function RangeSetting ( {
12
+ setting,
13
+ onChange,
14
+ settingId,
15
+ resetState,
16
+ } : {
17
+ setting : RangeSettingData ;
18
+ onChange : ( settingId : VisualizationSettingId , value : number ) => void ;
19
+ settingId : VisualizationSettingId ;
20
+ resetState : boolean ;
21
+ } ) {
6
22
const [ value , setValue ] : any = useState ( setting . value ) ;
7
- const [ singleResetState , setSingleResetState ] = useState < boolean > ( false ) ;
8
23
9
24
useEffect ( ( ) => {
10
- setValue ( setting . value ) ;
11
- } , [ resetState , singleResetState ] ) ;
25
+ setValue ( defaultVizSettings [ settingId ] . value ) ;
26
+ } , [ resetState ] ) ;
12
27
13
28
const handleInput = ( newValue : number ) => {
14
29
onChange ( settingId , newValue ) ;
@@ -18,13 +33,13 @@ export default function RangeSetting({ setting, onChange, settingId, resetState
18
33
return (
19
34
< div className = "setting-container" >
20
35
< HelpTooltip title = { setting . description } />
21
- < label className = "m-0" htmlFor = { setting . name } >
36
+ < label className = "m-0" htmlFor = { setting . displayName } >
22
37
{ setting . displayName }
23
38
</ label >
24
39
< div className = "range-slider--container" >
25
40
< div style = { { width : '100%' } } >
26
41
< input
27
- id = { setting . name }
42
+ id = { setting . displayName }
28
43
value = { value }
29
44
min = { setting . range . min }
30
45
max = { setting . range . max }
@@ -36,11 +51,23 @@ export default function RangeSetting({ setting, onChange, settingId, resetState
36
51
/>
37
52
< div className = "range-slider--values" >
38
53
< span > { setting . range . min } </ span >
39
- < span style = { { fontWeight : 'bold' } } > { value } </ span >
54
+ < input
55
+ style = { { fontWeight : 'bold' , textAlign : 'center' , width : '5rem' } }
56
+ type = "number"
57
+ value = { value }
58
+ onChange = { ( event ) => handleInput ( Number ( event . target . value ) ) }
59
+ />
40
60
< span > { setting . range . max } </ span >
41
61
</ div >
42
62
</ div >
43
- < ResetButton onClick = { ( ) => { onChange ( settingId ) ; setSingleResetState ( ! singleResetState ) ; } } />
63
+ < ResetButton
64
+ onClick = { ( ) => {
65
+ const defaultValue = defaultVizSettings [ settingId ] . value ;
66
+ if ( typeof defaultValue === 'number' ) {
67
+ handleInput ( defaultValue ) ;
68
+ }
69
+ } }
70
+ />
44
71
</ div >
45
72
</ div >
46
73
) ;
0 commit comments