Skip to content

Commit ce7dfe1

Browse files
smarter up/down behaviour for sizeref
1 parent 25722c1 commit ce7dfe1

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

src/components/fields/Numeric.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export class UnconnectedNumeric extends Component {
2020
defaultValue={this.props.defaultValue}
2121
placeholder={placeholder}
2222
step={this.props.step}
23+
stepmode={this.props.stepmode}
2324
min={this.props.min}
2425
max={this.props.max}
2526
onChange={this.props.updatePlot}
@@ -41,6 +42,7 @@ UnconnectedNumeric.propTypes = {
4142
hideArrows: PropTypes.bool,
4243
showSlider: PropTypes.bool,
4344
step: PropTypes.number,
45+
stepmode: PropTypes.string,
4446
updatePlot: PropTypes.func,
4547
...Field.propTypes,
4648
};

src/components/widgets/NumericInput.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,23 @@ export default class NumericInput extends Component {
8080
}
8181

8282
incrementValue(direction) {
83-
const {defaultValue, min, step = 1} = this.props;
83+
const {defaultValue, min, step = 1, stepmode = 'absolute'} = this.props;
8484
const {value} = this.state;
8585

8686
let valueUpdate;
8787
if (isNumeric(value)) {
8888
if (direction === 'increase') {
89-
valueUpdate = parseFloat(value) + step;
89+
if (stepmode === 'absolute') {
90+
valueUpdate = parseFloat(value) + step;
91+
} else {
92+
valueUpdate = parseFloat(value) * (1 + step);
93+
}
9094
} else {
91-
valueUpdate = parseFloat(value) - step;
95+
if (stepmode === 'absolute') {
96+
valueUpdate = parseFloat(value) - step;
97+
} else {
98+
valueUpdate = parseFloat(value) / (1 + step);
99+
}
92100
}
93101
} else {
94102
// if we are multi-valued and the user is incrementing or decrementing
@@ -176,6 +184,7 @@ NumericInput.propTypes = {
176184
showArrows: PropTypes.bool,
177185
showSlider: PropTypes.bool,
178186
step: PropTypes.number,
187+
stepmode: PropTypes.string,
179188
value: PropTypes.any,
180189
};
181190

src/default_panels/StyleTracesPanel.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const StyleTracesPanel = (props, {localize: _}) => (
5656
</ShowInLegend>
5757
</PlotlySection>
5858
<PlotlySection name={_('Cones & Streamtubes')}>
59-
<Numeric label={_('Size')} attr="sizeref" />
59+
<Numeric label={_('Size')} attr="sizeref" stepmode="relative" />
6060
<Dropdown
6161
label={_('Size Mode')}
6262
options={[{label: _('scaled'), value: 'scaled'}, {label: _('absolute'), value: 'absolute'}]}
@@ -243,13 +243,18 @@ const StyleTracesPanel = (props, {localize: _}) => (
243243
<MarkerColor suppressMultiValuedMessage label={_('Color')} attr="marker.color" />
244244
<NumericFraction label={_('Point Opacity')} attr="marker.opacity" />
245245
<MarkerSize label={_('Size')} attr="marker.size" />
246+
<NumericReciprocal
247+
label={_('Size Scale')}
248+
attr="marker.sizeref"
249+
step={0.2}
250+
stepmode="relative"
251+
/>
246252
<Radio
247253
label={_('Size Mode')}
248254
attr="marker.sizemode"
249255
options={[{label: _('Area'), value: 'area'}, {label: _('Diameter'), value: 'diameter'}]}
250256
/>
251257
<Numeric label={_('Minimum Size')} attr="marker.sizemin" />
252-
<NumericReciprocal label={_('Size Scale')} attr="marker.sizeref" />
253258
<SymbolSelector label={_('Symbol')} attr="marker.symbol" />
254259
<Numeric label={_('Border Width')} attr="marker.line.width" />
255260
<MultiColorPicker label={_('Border Color')} attr="marker.line.color" />

0 commit comments

Comments
 (0)