import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { icons, kinds, sizes } from 'Helpers/Props'; import Icon from 'Components/Icon'; import Button from 'Components/Link/Button'; import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputHelpText from 'Components/Form/FormInputHelpText'; import Measure from 'Components/Measure'; import QualityProfileItemDragSource from './QualityProfileItemDragSource'; import QualityProfileItemDragPreview from './QualityProfileItemDragPreview'; import styles from './QualityProfileItems.css'; class QualityProfileItems extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { qualitiesHeight: 0, qualitiesHeightEditGroups: 0 }; } // // Listeners onMeasure = ({ height }) => { if (this.props.editGroups) { this.setState({ qualitiesHeightEditGroups: height }); } else { this.setState({ qualitiesHeight: height }); } } onToggleEditGroupsMode = () => { this.props.onToggleEditGroupsMode(); } // // Render render() { const { editGroups, dropQualityIndex, dropPosition, qualityProfileItems, errors, warnings, ...otherProps } = this.props; const { qualitiesHeight, qualitiesHeightEditGroups } = this.state; const isDragging = dropQualityIndex !== null; const isDraggingUp = isDragging && dropPosition === 'above'; const isDraggingDown = isDragging && dropPosition === 'below'; const minHeight = editGroups ? qualitiesHeightEditGroups : qualitiesHeight; return ( Qualities
{ errors.map((error, index) => { return ( ); }) } { warnings.map((warning, index) => { return ( ); }) }
{ qualityProfileItems.map(({ id, name, allowed, quality, items }, index) => { const identifier = quality ? quality.id : id; return ( ); }).reverse() }
); } } QualityProfileItems.propTypes = { editGroups: PropTypes.bool.isRequired, dragQualityIndex: PropTypes.string, dropQualityIndex: PropTypes.string, dropPosition: PropTypes.string, qualityProfileItems: PropTypes.arrayOf(PropTypes.object).isRequired, errors: PropTypes.arrayOf(PropTypes.object), warnings: PropTypes.arrayOf(PropTypes.object), onToggleEditGroupsMode: PropTypes.func.isRequired }; QualityProfileItems.defaultProps = { errors: [], warnings: [] }; export default QualityProfileItems;