2015-06-08 18:14:25 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
import React from 'react';
|
|
|
|
|
|
|
|
import GlobalNotificationStore from '../stores/global_notification_store';
|
|
|
|
|
|
|
|
import Row from 'react-bootstrap/lib/Row';
|
|
|
|
import Col from 'react-bootstrap/lib/Col';
|
|
|
|
|
|
|
|
let GlobalNotification = React.createClass({
|
|
|
|
|
|
|
|
componentDidMount() {
|
|
|
|
GlobalNotificationStore.listen(this.onChange);
|
|
|
|
},
|
|
|
|
|
|
|
|
componentWillUnmount() {
|
2015-06-09 12:08:14 +02:00
|
|
|
GlobalNotificationStore.unlisten(this.onChange);
|
2015-06-08 18:14:25 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
getInititalState() {
|
2015-06-09 12:08:14 +02:00
|
|
|
return this.extractFirstElem(GlobalNotificationStore.getState().notificationQue);
|
2015-06-08 18:14:25 +02:00
|
|
|
},
|
|
|
|
|
2015-06-09 12:08:14 +02:00
|
|
|
extractFirstElem(l) {
|
|
|
|
return l.length > 0 ? l[0] : null;
|
2015-06-08 18:14:25 +02:00
|
|
|
},
|
|
|
|
|
2015-06-09 12:08:14 +02:00
|
|
|
onChange(state) {
|
|
|
|
let notification = this.extractFirstElem(state.notificationQue);
|
|
|
|
|
|
|
|
if(notification) {
|
|
|
|
this.setState(notification);
|
|
|
|
} else {
|
|
|
|
this.replaceState(null);
|
2015-06-08 18:14:25 +02:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
render() {
|
2015-06-09 13:36:09 +02:00
|
|
|
let notificationClass = 'ascribe-global-notification ';
|
2015-06-09 12:08:14 +02:00
|
|
|
let message = this.state && this.state.message ? this.state.message : null;
|
|
|
|
|
2015-06-09 13:36:09 +02:00
|
|
|
if(message) {
|
|
|
|
let colors = {
|
|
|
|
warning: '#f0ad4e',
|
|
|
|
success: '#5cb85c',
|
|
|
|
info: 'rgba(2, 182, 163, 1)',
|
|
|
|
danger: '#d9534f'
|
|
|
|
};
|
|
|
|
|
|
|
|
let text = (<div style={{color: colors[this.state.type]}}>{message ? message : null}</div>);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<Row>
|
|
|
|
<Col>
|
|
|
|
<div className={notificationClass + 'ascribe-global-notification-on'}>
|
|
|
|
{text}
|
|
|
|
</div>
|
|
|
|
</Col>
|
|
|
|
</Row>
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
return (
|
|
|
|
<Row>
|
|
|
|
<Col>
|
|
|
|
<div className={notificationClass + 'ascribe-global-notification-off'} />
|
|
|
|
</Col>
|
|
|
|
</Row>
|
|
|
|
);
|
|
|
|
}
|
2015-06-08 18:14:25 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export default GlobalNotification;
|