|
|
@@ -2,7 +2,6 @@
|
|
|
import React, { PureComponent, ChangeEvent } from 'react';
|
|
|
|
|
|
// Components
|
|
|
-import { PanelOptionsGroup } from '../PanelOptionsGroup/PanelOptionsGroup';
|
|
|
import { FormField } from '../FormField/FormField';
|
|
|
import { FormLabel } from '../FormLabel/FormLabel';
|
|
|
import { UnitPicker } from '../UnitPicker/UnitPicker';
|
|
|
@@ -17,43 +16,42 @@ import { VAR_SERIES_NAME, VAR_FIELD_NAME, VAR_CALC, VAR_CELL_PREFIX } from '../.
|
|
|
const labelWidth = 6;
|
|
|
|
|
|
export interface Props {
|
|
|
- title: string;
|
|
|
- options: Partial<Field>;
|
|
|
- onChange: (fieldProperties: Partial<Field>) => void;
|
|
|
showMinMax: boolean;
|
|
|
+ value: Partial<Field>;
|
|
|
+ onChange: (value: Partial<Field>, event?: React.SyntheticEvent<HTMLElement>) => void;
|
|
|
}
|
|
|
|
|
|
export class FieldPropertiesEditor extends PureComponent<Props> {
|
|
|
onTitleChange = (event: ChangeEvent<HTMLInputElement>) =>
|
|
|
- this.props.onChange({ ...this.props.options, title: event.target.value });
|
|
|
+ this.props.onChange({ ...this.props.value, title: event.target.value });
|
|
|
|
|
|
// @ts-ignore
|
|
|
onUnitChange = (unit: SelectOptionItem<string>) => this.props.onChange({ ...this.props.value, unit: unit.value });
|
|
|
|
|
|
onDecimalChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
|
this.props.onChange({
|
|
|
- ...this.props.options,
|
|
|
+ ...this.props.value,
|
|
|
decimals: toIntegerOrUndefined(event.target.value),
|
|
|
});
|
|
|
};
|
|
|
|
|
|
onMinChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
|
this.props.onChange({
|
|
|
- ...this.props.options,
|
|
|
+ ...this.props.value,
|
|
|
min: toIntegerOrUndefined(event.target.value),
|
|
|
});
|
|
|
};
|
|
|
|
|
|
onMaxChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
|
this.props.onChange({
|
|
|
- ...this.props.options,
|
|
|
+ ...this.props.value,
|
|
|
max: toIntegerOrUndefined(event.target.value),
|
|
|
});
|
|
|
};
|
|
|
|
|
|
render() {
|
|
|
- const { showMinMax, title } = this.props;
|
|
|
- const { unit, decimals, min, max } = this.props.options;
|
|
|
+ const { showMinMax } = this.props;
|
|
|
+ const { unit, decimals, min, max } = this.props.value;
|
|
|
|
|
|
const titleTooltip = (
|
|
|
<div>
|
|
|
@@ -68,49 +66,47 @@ export class FieldPropertiesEditor extends PureComponent<Props> {
|
|
|
);
|
|
|
|
|
|
return (
|
|
|
- <PanelOptionsGroup title={title}>
|
|
|
- <>
|
|
|
- <FormField
|
|
|
- label="Title"
|
|
|
- labelWidth={labelWidth}
|
|
|
- onChange={this.onTitleChange}
|
|
|
- value={this.props.options.title}
|
|
|
- tooltip={titleTooltip}
|
|
|
- placeholder="Auto"
|
|
|
- />
|
|
|
+ <>
|
|
|
+ <FormField
|
|
|
+ label="Title"
|
|
|
+ labelWidth={labelWidth}
|
|
|
+ onChange={this.onTitleChange}
|
|
|
+ value={this.props.value.title}
|
|
|
+ tooltip={titleTooltip}
|
|
|
+ placeholder="Auto"
|
|
|
+ />
|
|
|
|
|
|
- <div className="gf-form">
|
|
|
- <FormLabel width={labelWidth}>Unit</FormLabel>
|
|
|
- <UnitPicker defaultValue={unit} onChange={this.onUnitChange} />
|
|
|
- </div>
|
|
|
- {showMinMax && (
|
|
|
- <>
|
|
|
- <FormField
|
|
|
- label="Min"
|
|
|
- labelWidth={labelWidth}
|
|
|
- onChange={this.onMinChange}
|
|
|
- value={toNumberString(min)}
|
|
|
- type="number"
|
|
|
- />
|
|
|
- <FormField
|
|
|
- label="Max"
|
|
|
- labelWidth={labelWidth}
|
|
|
- onChange={this.onMaxChange}
|
|
|
- value={toNumberString(max)}
|
|
|
- type="number"
|
|
|
- />
|
|
|
- </>
|
|
|
- )}
|
|
|
- <FormField
|
|
|
- label="Decimals"
|
|
|
- labelWidth={labelWidth}
|
|
|
- placeholder="auto"
|
|
|
- onChange={this.onDecimalChange}
|
|
|
- value={toNumberString(decimals)}
|
|
|
- type="number"
|
|
|
- />
|
|
|
- </>
|
|
|
- </PanelOptionsGroup>
|
|
|
+ <div className="gf-form">
|
|
|
+ <FormLabel width={labelWidth}>Unit</FormLabel>
|
|
|
+ <UnitPicker defaultValue={unit} onChange={this.onUnitChange} />
|
|
|
+ </div>
|
|
|
+ {showMinMax && (
|
|
|
+ <>
|
|
|
+ <FormField
|
|
|
+ label="Min"
|
|
|
+ labelWidth={labelWidth}
|
|
|
+ onChange={this.onMinChange}
|
|
|
+ value={toNumberString(min)}
|
|
|
+ type="number"
|
|
|
+ />
|
|
|
+ <FormField
|
|
|
+ label="Max"
|
|
|
+ labelWidth={labelWidth}
|
|
|
+ onChange={this.onMaxChange}
|
|
|
+ value={toNumberString(max)}
|
|
|
+ type="number"
|
|
|
+ />
|
|
|
+ </>
|
|
|
+ )}
|
|
|
+ <FormField
|
|
|
+ label="Decimals"
|
|
|
+ labelWidth={labelWidth}
|
|
|
+ placeholder="auto"
|
|
|
+ onChange={this.onDecimalChange}
|
|
|
+ value={toNumberString(decimals)}
|
|
|
+ type="number"
|
|
|
+ />
|
|
|
+ </>
|
|
|
);
|
|
|
}
|
|
|
}
|