65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
import React from 'react';
|
|
import { connect } from 'react-redux';
|
|
import AppActions from '../../app/AppActions.js';
|
|
|
|
|
|
class Notify extends React.Component {
|
|
constructor(props) {
|
|
super(props);
|
|
this.componentLog = (text, elem) => console.log("[Notify.jsx]: " + text, elem ? elem : null);
|
|
this.closeNotifies = this.closeNotifies.bind(this);
|
|
}
|
|
|
|
closeNotifies(){
|
|
let item = null;
|
|
for (let key of this.props.listOfNotify.keys()) {
|
|
item = this.props.listOfNotify.get(key)
|
|
this.props.closeNotify(item.messageId);
|
|
}
|
|
}
|
|
|
|
render() {
|
|
this.componentLog("render", this);
|
|
|
|
const { listOfNotify, closeNotify } = this.props;
|
|
|
|
let myClass = "alert hidden";
|
|
let message = "";
|
|
let onClick = null;
|
|
|
|
if (listOfNotify && listOfNotify !== null && listOfNotify.size > 0){
|
|
let item = null;
|
|
message = [];
|
|
for (let key of listOfNotify.keys()) {
|
|
item = listOfNotify.get(key)
|
|
message.push(<div key={key} className={"alert-" + item.messageType.toLowerCase()}>{item.message}</div>);
|
|
}
|
|
myClass = "alert";
|
|
onClick = this.closeNotifies;
|
|
}
|
|
|
|
return (
|
|
<div className="notify">
|
|
<div className={myClass} role="alert">
|
|
<button type="button" className="close" onClick={onClick}><i className="fa fa-times"/></button>
|
|
{message}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
function mapStateToProps(state) {
|
|
return {
|
|
listOfNotify: state.app.listOfNotify
|
|
};
|
|
}
|
|
|
|
function mapDispatchToProps(dispatch) {
|
|
return {
|
|
closeNotify: (index) => dispatch(AppActions.deleteNotify(index))
|
|
}
|
|
}
|
|
|
|
export default connect(mapStateToProps, mapDispatchToProps)(Notify); |