From c5d753a4344054ca8b986a2f1817791f5ecfa3f2 Mon Sep 17 00:00:00 2001 From: Juan Tejada Date: Mon, 27 Jun 2016 23:48:00 -0700 Subject: [PATCH] Add /very/ basic initial error status to dashboard - TODO: add option to solve the error --- packages/nylas-dashboard/app.js | 4 +-- packages/nylas-dashboard/public/css/app.css | 17 +++++++++++- packages/nylas-dashboard/public/js/app.jsx | 29 ++++++++++++++++++++- 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/packages/nylas-dashboard/app.js b/packages/nylas-dashboard/app.js index 9ec564a41..1cd7ed35f 100644 --- a/packages/nylas-dashboard/app.js +++ b/packages/nylas-dashboard/app.js @@ -20,8 +20,8 @@ DatabaseConnector.forShared().then(({Account}) => { websocket: { only: true, connect: (wss, ws) => { - Account.findAll().then((accts) => { - accts.forEach((acct) => { + Account.findAll().then((accounts) => { + accounts.forEach((acct) => { ws.send(JSON.stringify({ cmd: "ACCOUNT", payload: acct })); }); }); diff --git a/packages/nylas-dashboard/public/css/app.css b/packages/nylas-dashboard/public/css/app.css index 0e33cfea3..5acd21adf 100644 --- a/packages/nylas-dashboard/public/css/app.css +++ b/packages/nylas-dashboard/public/css/app.css @@ -7,7 +7,6 @@ body { .account { display:inline-block; width: 300px; - height: 200px; background-color: white; padding:15px; } @@ -15,3 +14,19 @@ body { .account h3 { margin: 0; padding: 0; } + +.account.errored { + background-image: linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%); + background-repeat: repeat-x; + border-color: #dca7a7; + border: 1px solid; + color: #a94442; + border-radius: 4px; + background-color: #f2dede; +} + +.account .error pre { + text-overflow: ellipsis; + width: inherit; + overflow: hidden; +} diff --git a/packages/nylas-dashboard/public/js/app.jsx b/packages/nylas-dashboard/public/js/app.jsx index 711e6e9c3..9c2d72f71 100644 --- a/packages/nylas-dashboard/public/js/app.jsx +++ b/packages/nylas-dashboard/public/js/app.jsx @@ -1,18 +1,45 @@ /* eslint react/react-in-jsx-scope: 0*/ +class ErrorsRoot extends React.Component { + render() { + return
+ } +} + class Account extends React.Component { propTypes: { account: React.PropTypes.object, assignment: React.PropTypes.string, } + renderError() { + const {account} = this.props + if (account.sync_error != null) { + const error = { + message: account.sync_error.message, + stack: account.sync_error.stack.split('\n').slice(0, 4), + } + return ( +
+ Sync Errored: +
+            {JSON.stringify(error, null, 2)}
+          
+
+ ) + } + return + } + render() { const {account, assignment} = this.props; + const errorClass = account.sync_error ? ' errored' : '' return ( -
+

{account.email_address}

{assignment}
{JSON.stringify(account.sync_policy, null, 2)}
+ {this.renderError()}
); }