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, removeSeries, remove } from 'Duck/customMetrics'; import CustomMetricWidgetPreview from 'App/components/Dashboard/Widgets/CustomMetricsWidgets/CustomMetricWidgetPreview'; import { confirm } from 'UI/Confirmation'; import { toast } from 'react-toastify'; import cn from 'classnames'; interface Props { metric: any; editMetric: (metric, shouldFetch?) => void; save: (metric) => Promise; loading: boolean; addSeries: (series?) => void; onClose: () => void; remove: (id) => Promise; removeSeries: (seriesIndex) => void; } function CustomMetricForm(props: Props) { const { metric, loading } = props; const addSeries = () => { props.addSeries(); } const removeSeries = (index) => { props.removeSeries(index); } const write = ({ target: { value, name } }) => props.editMetric({ ...metric, [ name ]: value }, false); const changeConditionTab = (e, { name, value }) => { props.editMetric({[ 'viewType' ]: value }); }; const save = () => { props.save(metric).then(() => { toast.success(metric.exists() ? 'Updated succesfully.' : 'Created succesfully.'); props.onClose() }); } const deleteHandler = async () => { if (await confirm({ header: 'Custom Metric', confirmButton: 'Delete', confirmation: `Are you sure you want to delete ${metric.name}` })) { props.remove(metric.metricId).then(() => { toast.success('Deleted succesfully.'); 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} />
))}
2})}>
{ metric.exists() && }
); } export default connect(state => ({ metric: state.getIn(['customMetrics', 'instance']), loading: state.getIn(['customMetrics', 'saveRequest', 'loading']), }), { editMetric, save, addSeries, remove, removeSeries })(CustomMetricForm);