ui/intermittent-failures/DateOptions.jsx (69 lines of code) (raw):
import React from 'react';
import { ButtonDropdown, DropdownToggle } from 'reactstrap';
import moment from 'moment';
import PropTypes from 'prop-types';
import DropdownMenuItems from '../shared/DropdownMenuItems';
import DateRangePicker from './DateRangePicker';
import { ISODate } from './helpers';
export default class DateOptions extends React.Component {
constructor(props) {
super(props);
this.state = {
dropdownOpen: false,
dateRange: '',
};
}
toggle = () => {
this.setState((prevState) => ({ dropdownOpen: !prevState.dropdownOpen }));
};
updateDateRange = (dateRange) => {
this.setState({ dateRange });
if (dateRange === 'custom range') {
return;
}
let from;
if (dateRange === 'last 7 days') {
from = 7;
} else if (dateRange === 'last 30 days') {
from = 30;
} else {
// bug history is max 4 months
from = 120;
}
const startday = ISODate(moment().utc().subtract(from, 'days'));
const endday = ISODate(moment().utc());
this.props.updateState({ startday, endday });
};
render() {
const { updateState } = this.props;
const { dropdownOpen, dateRange } = this.state;
const dateOptions = [
'last 7 days',
'last 30 days',
'custom range',
'entire history',
];
return (
<div className="d-inline-block">
<ButtonDropdown
className="mr-3"
isOpen={dropdownOpen}
toggle={this.toggle}
>
<DropdownToggle caret>date range</DropdownToggle>
<DropdownMenuItems
options={dateOptions}
updateData={this.updateDateRange}
selectedItem={dateRange}
/>
</ButtonDropdown>
{dateRange === 'custom range' && (
<DateRangePicker updateState={updateState} />
)}
</div>
);
}
}
DateOptions.propTypes = {
updateState: PropTypes.func.isRequired,
};