import React from 'react'; import { Form, SegmentSelection, Button, IconButton } from 'UI'; import FilterSeries from '../FilterSeries'; import { connect } from 'react-redux'; import { edit as editMetric, save, addSeries } from 'Duck/customMetrics'; import CustomMetricWidgetPreview from 'App/components/Dashboard/Widgets/CustomMetricsWidgets/CustomMetricWidgetPreview'; interface Props { metric: any; editMetric: (metric) => void; save: (metric) => Promise; loading: boolean; addSeries: (series?) => void; onClose: () => void; } function CustomMetricForm(props: Props) { const { metric, loading } = props; const addSeries = () => { props.addSeries(); const newSeries = { name: `Series ${metric.series.size + 1}`, type: '', // series: [], filter: { type: '', value: '', filters: [], }, }; props.editMetric({ ...metric, series: metric.series.concat(newSeries), }); } const removeSeries = (index) => { const newSeries = metric.series.filter((_series, i) => { return i !== index; }); props.editMetric({ ...metric, series: newSeries, }); } const write = ({ target: { value, name } }) => props.editMetric({ ...metric, [ name ]: value }) const changeConditionTab = (e, { name, value }) => { props.editMetric({[ 'type' ]: value }); }; const save = () => { props.save(metric).then(props.onClose); } return (
Timeseries of
{metric.series && metric.series.size > 0 && metric.series.map((series: any, index: number) => (
removeSeries(index)} canDelete={metric.series.size > 1} />
))}
); } export default connect(state => ({ metric: state.getIn(['customMetrics', 'instance']), loading: state.getIn(['customMetrics', 'saveRequest', 'loading']), }), { editMetric, save, addSeries })(CustomMetricForm);