components/Header/HeaderNav/HeaderNavNotices/HeaderNavNotices.jsx

/**
 * Контейнер всплывающих уведомлений в хедере
 * @module HeaderNavNotices
 * @author Ihor Bielchenko
 * @requires react
 * @requires react#Component
 * @requires react-redux
 * @requires components/Header/HeaderNav/HeaderNavNotices/HeaderNavNoticeItem/HeaderNavNoticeItem.jsx
 */

import React, { Component } from 'react';
import { connect } from 'react-redux';
import HeaderNavNoticeItem from './HeaderNavNoticeItem/HeaderNavNoticeItem.jsx';

/**
 * Контейнер всплывающих уведомлений в хедере
 * @extends Component
 */
class HeaderNavNotices extends Component {

	/**
	 * Render component
	 * @return {Object} jsx object
	 */
	render() {
		var notices = [],
			i, last, length;

		for(i = 0; i < 12; i ++) {
			if(typeof this.props.notices.items[i] !== 'undefined') {
				length = this.props.notices.items[i].messages.length;
				last = this.props.notices.items[i].messages[length - 1];
				
				if(last.readed === 0) {
					notices.push(<HeaderNavNoticeItem 
							key={i}
							href={this.props.notices.items[i].href}
							avatar={this.props.notices.items[i].avatar_32x32}
							username={this.props.notices.items[i].username}
							introtext={last.introtext} />);
				}
			}

			else break;
		}

		return <div className="notice-popup">{notices}</div>
	}
}

/**
 * Init redux states
 *
 * @param {Object} state
 * @return {Object}
 */
function mapStateToProps(state) {
	return {
		notices: state.notices
	}
}

export default connect(mapStateToProps)(HeaderNavNotices);