Skip to content

Commit f26b274

Browse files
committed
Added loading page
1 parent 1109bcc commit f26b274

File tree

14 files changed

+525
-33
lines changed

14 files changed

+525
-33
lines changed

package.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"lint:fix": "npm run lint -- --fix",
1515
"start": "better-npm-run start",
1616
"dev": "better-npm-run dev",
17+
"debug": "better-npm-run debug",
1718
"test": "better-npm-run test",
1819
"test:dev": "npm run test -- --watch",
1920
"deploy": "better-npm-run deploy",
@@ -35,6 +36,13 @@
3536
"DEBUG": "app:*"
3637
}
3738
},
39+
"debug": {
40+
"command": "node debug bin/dev-server.js",
41+
"env": {
42+
"NODE_ENV": "development",
43+
"DEBUG": "app:*"
44+
}
45+
},
3846
"deploy": {
3947
"command": "npm run lint && npm run test && npm run clean && npm run compile",
4048
"env": {

server/api.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,11 @@ function saveSnippet(req) {
4242
});
4343

4444
query.on('end', function() {
45-
done();
46-
client.end();
4745
resolve({
4846
saved: true,
4947
id: id
5048
});
49+
done();
5150
});
5251
});
5352
} else {
@@ -94,7 +93,6 @@ function getSnippet(req) {
9493
} else {
9594
resolve(code);
9695
}
97-
client.end();
9896
done();
9997
});
10098

server/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ if (project.env === 'development') {
2222
debug('Enabling error handling middleware')
2323
app.use(function(err, req, res, next) {
2424
debug(err.stack)
25-
next(err);
25+
return next(err);
2626
});
2727
}
2828

src/components/Loading/Loading.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import React, { Component } from 'react'
2+
import { findDOMNode } from 'react-dom'
3+
4+
import className from 'classnames'
5+
6+
import './semantic.scss'
7+
import './Loading.scss'
8+
9+
export default class Loading extends Component {
10+
state = {
11+
'hidden': false,
12+
};
13+
14+
componentDidMount() {
15+
let node = findDOMNode(this.refs['viewport']);
16+
17+
node.addEventListener('transitionend', this.onHidden.bind(this));
18+
}
19+
20+
componetWillUpdate(nextProps, nextState) {
21+
if (!this.props.visible && nextProps.visible) {
22+
this.setState({ hidden: false });
23+
}
24+
}
25+
26+
onHidden(event) {
27+
this.setState({ hidden: ! this.props.visible });
28+
}
29+
30+
render() {
31+
let {
32+
visible
33+
} = this.props;
34+
35+
return (
36+
<div ref='viewport' className={className({
37+
"loading__viewport": true,
38+
"visible": visible,
39+
"hidden": this.state.hidden,
40+
})}>
41+
<div className="loading__viewport-wrapper">
42+
<div className="ui loader large text">Loading</div>
43+
</div>
44+
</div>
45+
);
46+
}
47+
}

src/components/Loading/Loading.scss

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
.loading__viewport {
2+
position: absolute;
3+
top: 50px;
4+
left: 0;
5+
right: 0;
6+
bottom: 0;
7+
background: rgba(255, 255, 255, 0.8);
8+
z-index: 9999;
9+
opacity: 0;
10+
11+
transition: opacity .5s ease-in-out;
12+
13+
&-wrapper {
14+
position: relative;
15+
top: 50%;
16+
left: 50%;
17+
transform: translate(-50%, -50%);
18+
}
19+
20+
&.visible {
21+
opacity: 1;
22+
}
23+
24+
&.hidden {
25+
display: none;
26+
}
27+
}

src/components/Loading/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import Loading from './Loading'
2+
3+
export default Loading;

0 commit comments

Comments
 (0)