blob: c88ba85125828ccf3ad2bf6858b2cb9b17fa83bc [file] [log] [blame]
import React from 'react';
import Diff from 'components/Diff';
import PanelGroup, { Container, StandardPanelTitle } from 'components/Layout';
import { instanceRangeToString } from 'utils/Task';
export default class UpdateDiff extends React.Component {
constructor(props) {
super(props);
this.state = {groupIdx: 0};
}
diffNavigation() {
const that = this;
const { initialState } = this.props.update.update.instructions;
const currentGroup = initialState[this.state.groupIdx];
if (initialState.length < 2) {
return '';
} else {
const otherOptions = initialState.map((g, i) => i).filter((i) => i !== that.state.groupIdx);
return (<div className='update-diff-picker'>
Current Instances:
<select onChange={(e) => this.setState({groupIdx: parseInt(e.target.value, 10)})}>
<option key='current'>{instanceRangeToString(currentGroup.instances)}</option>
{otherOptions.map((i) => (<option key={i} value={i}>
{instanceRangeToString(initialState[i].instances)}
</option>))}
</select>
</div>);
}
}
render() {
const { initialState, desiredState } = this.props.update.update.instructions;
return (<Container>
<PanelGroup noPadding title={<StandardPanelTitle title='Update Diff' />}>
<div className='task-diff'>
{this.diffNavigation()}
<Diff left={initialState[this.state.groupIdx].task} right={desiredState.task} />
</div>
</PanelGroup>
</Container>);
}
}