import React from 'react'; import PropTypes from 'prop-types'; import { Textfield, Button, Card, CardTitle, CardText, CardActions, CardMenu, IconButton, Icon, Switch, Tooltip, } from 'react-mdl'; import { DragSource, DropTarget } from 'react-dnd'; import { Link } from 'react-router-dom'; import flow from 'lodash/flow'; import StrategyInputPercentage from './strategy-input-percentage'; import FlexibleRolloutStrategyInput from './flexible-rollout-strategy-input'; import StrategyInputList from './strategy-input-list'; import styles from './strategy.scss'; const dragSource = { beginDrag(props) { return { id: props.id, index: props.index, }; }, endDrag(props, monitor) { if (!monitor.didDrop()) { return; } const result = monitor.getDropResult(); if (typeof result.index === 'number' && props.index !== result.index) { props.moveStrategy(props.index, result.index); } }, }; const dragTarget = { drop(props) { return { index: props.index, }; }, }; /** * Specifies which props to inject into your component. */ function collect(connect, monitor) { return { connectDragSource: connect.dragSource(), connectDragPreview: connect.dragPreview(), isDragging: monitor.isDragging(), }; } function collectTarget(connect, monitor) { return { highlighted: monitor.canDrop(), hovered: monitor.isOver(), connectDropTarget: connect.dropTarget(), }; } class StrategyConfigure extends React.Component { /* eslint-enable */ static propTypes = { strategy: PropTypes.object.isRequired, featureToggleName: PropTypes.string.isRequired, strategyDefinition: PropTypes.object, updateStrategy: PropTypes.func, removeStrategy: PropTypes.func, moveStrategy: PropTypes.func, isDragging: PropTypes.bool.isRequired, connectDragPreview: PropTypes.func.isRequired, connectDragSource: PropTypes.func.isRequired, connectDropTarget: PropTypes.func.isRequired, }; handleConfigChange = (key, e) => { this.setConfig(key, e.target.value); }; handleSwitchChange = (key, currentValue) => { const value = currentValue === 'false' ? 'true' : 'false'; this.setConfig(key, value); }; setConfig = (key, value) => { const parameters = this.props.strategy.parameters || {}; parameters[key] = value; const updatedStrategy = Object.assign({}, this.props.strategy, { parameters, }); this.props.updateStrategy(updatedStrategy); }; handleRemove = evt => { evt.preventDefault(); this.props.removeStrategy(); }; renderStrategContent(strategyDefinition) { if (strategyDefinition.name === 'default') { return
{description}
}{description}
}{description}
}{description}
}