Skip to content

Commit 82018e4

Browse files
committed
Merge remote-tracking branch 'origin/add-layout-settings'
2 parents a50d243 + e8d340f commit 82018e4

File tree

16 files changed

+749
-538
lines changed

16 files changed

+749
-538
lines changed

src/components/visualization/page-setup/sidebar/customizationbar/settings/setting-type/range-setting.tsx

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,29 @@
1-
import React, { useEffect, useState } from 'react';
21
import HelpTooltip from 'explorviz-frontend/src/components/help-tooltip.tsx';
32
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';
410

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+
}) {
622
const [value, setValue]: any = useState(setting.value);
7-
const [singleResetState, setSingleResetState] = useState<boolean>(false);
823

924
useEffect(() => {
10-
setValue(setting.value);
11-
}, [resetState, singleResetState]);
25+
setValue(defaultVizSettings[settingId].value);
26+
}, [resetState]);
1227

1328
const handleInput = (newValue: number) => {
1429
onChange(settingId, newValue);
@@ -18,13 +33,13 @@ export default function RangeSetting({ setting, onChange, settingId, resetState
1833
return (
1934
<div className="setting-container">
2035
<HelpTooltip title={setting.description} />
21-
<label className="m-0" htmlFor={setting.name}>
36+
<label className="m-0" htmlFor={setting.displayName}>
2237
{setting.displayName}
2338
</label>
2439
<div className="range-slider--container">
2540
<div style={{ width: '100%' }}>
2641
<input
27-
id={setting.name}
42+
id={setting.displayName}
2843
value={value}
2944
min={setting.range.min}
3045
max={setting.range.max}
@@ -36,11 +51,23 @@ export default function RangeSetting({ setting, onChange, settingId, resetState
3651
/>
3752
<div className="range-slider--values">
3853
<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+
/>
4060
<span>{setting.range.max}</span>
4161
</div>
4262
</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+
/>
4471
</div>
4572
</div>
4673
);
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import HelpTooltip from 'explorviz-frontend/src/components/help-tooltip.tsx';
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+
SelectSetting as SelectSettingData,
6+
VisualizationSettingId,
7+
} from 'explorviz-frontend/src/utils/settings/settings-schemas';
8+
import { useEffect } from 'react';
9+
import { useState } from 'react';
10+
import { Dropdown, DropdownButton } from 'react-bootstrap';
11+
12+
export default function SelectSetting({
13+
setting,
14+
onChange,
15+
settingId,
16+
resetState,
17+
}: {
18+
setting: SelectSettingData<unknown>;
19+
onChange: (settingId: VisualizationSettingId, value: unknown) => void;
20+
settingId: VisualizationSettingId;
21+
resetState: boolean;
22+
}) {
23+
const [value, setValue]: any = useState(setting.value);
24+
25+
useEffect(() => {
26+
setValue(defaultVizSettings[settingId].value);
27+
}, [resetState]);
28+
29+
const handleInput = (newValue: unknown) => {
30+
onChange(settingId, newValue);
31+
setValue(newValue);
32+
};
33+
34+
return (
35+
<div className="setting-container mb-3">
36+
<HelpTooltip title={setting.description} />
37+
<label className="m-0" htmlFor={setting.displayName}>
38+
{setting.displayName}
39+
</label>
40+
<div className="d-flex justify-content-between align-items-center">
41+
<div>
42+
<DropdownButton
43+
id="dropdown-basic-button"
44+
title={value as string}
45+
variant="primary"
46+
>
47+
{setting.options.map((option) => (
48+
<Dropdown.Item
49+
key={option as string}
50+
onClick={() => {
51+
handleInput(option);
52+
}}
53+
>
54+
{option as string}
55+
</Dropdown.Item>
56+
))}
57+
</DropdownButton>
58+
</div>
59+
<ResetButton
60+
onClick={() => {
61+
const defaultValue = defaultVizSettings[settingId].value;
62+
if (typeof defaultValue === 'number') {
63+
handleInput(defaultValue);
64+
}
65+
}}
66+
/>
67+
</div>
68+
</div>
69+
);
70+
}

0 commit comments

Comments
 (0)