From 56e74239d6b34df8f30ef046f0b0ff4ff0866a71 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Sun, 14 Jun 2015 23:53:32 -0800 Subject: first commit --- web/react/components/error_bar.jsx | 69 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 web/react/components/error_bar.jsx (limited to 'web/react/components/error_bar.jsx') diff --git a/web/react/components/error_bar.jsx b/web/react/components/error_bar.jsx new file mode 100644 index 000000000..f23dc060e --- /dev/null +++ b/web/react/components/error_bar.jsx @@ -0,0 +1,69 @@ +// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// See License.txt for license information. + +var ErrorStore = require('../stores/error_store.jsx'); +var utils = require('../utils/utils.jsx'); +var AppDispatcher = require('../dispatcher/app_dispatcher.jsx'); +var Constants = require('../utils/constants.jsx'); +var ActionTypes = Constants.ActionTypes; + +function getStateFromStores() { + var error = ErrorStore.getLastError(); + if (error) { + return { message: error.message }; + } else { + return { message: null }; + } +} + +module.exports = React.createClass({ + componentDidMount: function() { + ErrorStore.addChangeListener(this._onChange); + $('body').css('padding-top', $('#error_bar').outerHeight()); + $(window).resize(function(){ + $('body').css('padding-top', $('#error_bar').outerHeight()); + }); + }, + componentWillUnmount: function() { + ErrorStore.removeChangeListener(this._onChange); + }, + _onChange: function() { + var newState = getStateFromStores(); + if (!utils.areStatesEqual(newState, this.state)) { + if (newState.message) { + var self = this; + setTimeout(function(){self.handleClose();}, 10000); + } + this.setState(newState); + } + }, + handleClose: function(e) { + if (e) e.preventDefault(); + AppDispatcher.handleServerAction({ + type: ActionTypes.RECIEVED_ERROR, + err: null + }); + $('body').css('padding-top', '0'); + }, + getInitialState: function() { + var state = getStateFromStores(); + if (state.message) { + var self = this; + setTimeout(function(){self.handleClose();}, 10000); + } + return state; + }, + render: function() { + var message = this.state.message; + if (message) { + return ( +
+ {message} + × +
+ ); + } else { + return
; + } + } +}); -- cgit v1.2.3-1-g7c22