Skip to content

Commit b340e47

Browse files
committed
Share an empty state components
1 parent 5cece6c commit b340e47

File tree

4 files changed

+77
-28
lines changed

4 files changed

+77
-28
lines changed

views/components/Announcements/Container.jsx

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import React, { Component, PropTypes } from 'react';
44
import Annoncement from './Announcement';
5+
import EmptyState from '../Shared/EmptyState';
56
import styles from '../Shared/styles/container.css';
67

78
export default class Container extends Component {
@@ -11,26 +12,26 @@ export default class Container extends Component {
1112
this.renderList = this.renderList.bind(this);
1213
}
1314

14-
renderList() {
15-
const dataList = this.props.list;
16-
17-
if (dataList && dataList.length > 0) {
18-
return dataList.filter((dataItem) =>
19-
(dataItem.dataType === 'Announcements')
20-
).map((dataItem) =>
21-
<li key={dataItem.ID}>
22-
<Annoncement announcement={dataItem} />
23-
</li>
24-
);
25-
}
26-
return <p>Nothing to see here.</p>;
15+
renderList(dataList) {
16+
return dataList.filter((dataItem) =>
17+
(dataItem.dataType === 'Announcements')
18+
).map((dataItem) =>
19+
<li key={dataItem.ID}>
20+
<Annoncement announcement={dataItem} />
21+
</li>
22+
);
2723
}
2824

2925
render() {
26+
const dataList = this.props.list;
27+
if (!(dataList && dataList.length > 0)) {
28+
return <EmptyState dirname={__dirname}/>
29+
}
30+
3031
return (
3132
<div className={styles.container}>
3233
<ul>
33-
{this.renderList()}
34+
{this.renderList(dataList)}
3435
</ul>
3536
</div>
3637
);

views/components/Forum/Container.jsx

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
11
'use babel';
22

33
import React, { Component, PropTypes } from 'react';
4-
import styles from '../Shared/styles/container.css';
54
import CourseWrapper from './CourseWrapper';
5+
import EmptyState from '../Shared/EmptyState';
6+
import styles from '../Shared/styles/container.css';
67

78
export default class Container extends Component {
89

9-
renderList() {
10-
const dataList = this.props.list;
11-
12-
if (dataList && dataList.length > 0) {
13-
return dataList.filter((dataItem) =>
14-
(dataItem.dataType === 'Forums')
15-
).map((dataItem) =>
16-
<CourseWrapper key={dataItem.ID} dataItem={dataItem}/>
17-
);
18-
}
19-
return <p>Nothing to see here.</p>;
10+
renderList(dataList) {
11+
return dataList.filter((dataItem) =>
12+
(dataItem.dataType === 'Forums')
13+
).map((dataItem) =>
14+
<CourseWrapper key={dataItem.ID} dataItem={dataItem}/>
15+
);
2016
}
2117

2218
render() {
19+
const dataList = this.props.list;
20+
if (!(dataList && dataList.length > 0)) {
21+
return <EmptyState dirname={__dirname}/>
22+
}
23+
2324
return (
2425
<div className={styles.container}>
2526
<ul>
26-
{this.renderList()}
27+
{this.renderList(dataList)}
2728
</ul>
2829
</div>
2930
);

views/components/Multimedia/Container.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import React, { Component, PropTypes } from 'react';
44
import CourseWrapper from './CourseWrapper';
5+
import EmptyState from '../Shared/EmptyState';
56
import Storage from './../../../controllers/storage';
67
import styles from '../Shared/styles/container.css';
78

@@ -39,7 +40,7 @@ export default class Container extends Component {
3940
// TODO perhaps shouldn't use get module next time
4041
if (!dataList || dataList.length <= 0 || !Storage.user.has('modules')) {
4142
return (
42-
<p>Loading data...</p>
43+
<EmptyState dirname={__dirname}/>
4344
);
4445
}
4546

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
'use babel';
2+
3+
import React, { PropTypes } from 'react';
4+
import Storage from './../../../controllers/storage';
5+
6+
const checkLoginStatus = function checkLoginStatus() {
7+
return Storage.user.has('user');
8+
}
9+
10+
const EmptyState = ({ dirname }) => {
11+
12+
const splitted = dirname.split('\\');
13+
const componentName = splitted[splitted.length - 1];
14+
15+
return (
16+
<div style={{
17+
height: '100vh',
18+
display: 'flex',
19+
justifyContent: 'center',
20+
alignItems: 'center'
21+
}}>
22+
<div style={{textAlign:'center', marginBottom: '200px'}}>
23+
<div>
24+
<strong>{componentName}</strong>
25+
</div>
26+
<div style={{margin: "15px"}}>
27+
{(checkLoginStatus()) ?
28+
<div>
29+
<div>Nothing here yet..</div>
30+
<div style={{marginTop: 5, opacity: '0.3'}}>Try refreshing the app ({(process.platform === 'win32') ? 'CTRL' : 'CMD'}+R)</div>
31+
</div> :
32+
<div>
33+
<div>Login first to see your data</div>
34+
</div>
35+
}
36+
</div>
37+
</div>
38+
</div>
39+
);
40+
};
41+
42+
export default EmptyState;
43+
44+
EmptyState.propTypes = {
45+
dirname: PropTypes.string
46+
};

0 commit comments

Comments
 (0)