import React from 'react';
import TaskItem from './task-item.jsx';
import PropTypes from 'prop-types';
class HeaderTasks extends React.Component {
constructor(props) {
super(props);
this.state = { open: false };
this.toggleDropdown = this.toggleDropdown.bind(this);
}
toggleDropdown(e) {
if ((e.type === 'blur' && this.state.open) || e.type !== 'blur') {
this.setState({ open: !this.state.open });
}
}
render() {
let progressBarColor;
const taskList = this.props.tasks.map((taskDetails, i) => {
Iif (taskDetails.percentage < 21) {
progressBarColor = 'bg-red';
} else Eif (taskDetails.percentage > 20 && taskDetails.percentage < 41) {
progressBarColor = 'bg-yellow';
} else if (taskDetails.percentage > 40 && taskDetails.percentage < 61) {
progressBarColor = 'bg-green';
} else if (taskDetails.percentage > 60) {
progressBarColor = 'bg-aqua';
}
return (
<TaskItem
key={i}
percentage={taskDetails.percentage}
content={taskDetails.subject}
theme={progressBarColor}
link={taskDetails.link}
onClick={taskDetails.onClick}
/>
);
});
return (
<li className={`dropdown tasks-menu${this.state.open ? ' open' : ''}`} tabIndex="0" onBlur={this.toggleDropdown}>
<a className="dropdown-toggle" data-toggle="dropdown-menu" onClick={this.toggleDropdown}>
<i className="fa fa-flag-o" />
<span className="label label-danger">{this.props.count || this.props.tasks.length}</span>
</a>
<ul className="dropdown-menu">
<li className="header">
You have {this.props.count || this.props.tasks.length} tasks.
</li>
<li>
<div className="slimScrollDiv">
<ul className="menu">
{taskList}
</ul>
<div className="slimScrollBar" />
<div className="slimScrollRail" />
</div>
</li>
{this.props.clickHandler ? (
<li className="footer">
<a onClick={this.props.clickHandler}>
View all tasks
</a>
</li>
) : ''}
</ul>
</li>
);
}
}
HeaderTasks.propTypes = {
count: PropTypes.number,
tasks: PropTypes.array,
clickHandler: PropTypes.func
};
HeaderTasks.defaultProps = {
tasks: []
};
export default HeaderTasks;
|