Skip to content

Commit a9d44f2

Browse files
committed
improve log table on small screens
1 parent 3259c1f commit a9d44f2

File tree

6 files changed

+88
-24
lines changed

6 files changed

+88
-24
lines changed

css/app.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.content {
2+
width: 100%;
3+
}

js/App.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import ReactScrolla from 'react-scrolla';
44
import {LogProvider} from './Providers/LogProvider.js';
55
import {LogTable} from './Components/LogTable.js';
66
import {ToggleEntry} from './Components/ToggleEntry.js';
7-
import {App as AppContainer, SideBar} from 'oc-react-components';
7+
import {App as AppContainer, SideBar, Content} from 'oc-react-components';
88

99
import {LogSearch} from './Search.js';
1010

11-
require('../css/app.css');
11+
import styles from '../css/app.css';
1212

1313
export class App extends Component {
1414
state = {
@@ -71,7 +71,9 @@ export class App extends Component {
7171
percentage={85}
7272
onPercentage={this.fetchNextPage}
7373
isLoading={this.state.loading}>
74-
<LogTable entries={entries}/>
74+
<div className={styles.content}>
75+
<LogTable entries={entries}/>
76+
</div>
7577
</ReactScrolla>
7678
</AppContainer>
7779
);

js/Components/LogTable.js

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {Component} from 'react/addons';
22
import {LogEntry} from './LogEntry.js';
33
import {LogLevel} from './LogLevel.js';
44
import Timestamp from 'react-time';
5+
import MediaQuery from 'react-responsive';
56

67
import style from './LogTable.less';
78

@@ -11,27 +12,56 @@ export class LogTable extends Component {
1112
var time = new Date(entry.time);
1213
return (
1314
<tr className={style['level_' + entry.level]} key={i}>
14-
<td className={style.level}><LogLevel level={entry.level}/></td>
15+
<td className={style.level}><LogLevel level={entry.level}/>
16+
</td>
1517
<td className={style.app}>{entry.app}</td>
16-
<td className={style.message}><LogEntry message={entry.message}/></td>
17-
<td className={style.time}><Timestamp value={time} relative/></td>
18+
<td className={style.message}><LogEntry
19+
message={entry.message}/></td>
20+
<td className={style.time}><Timestamp value={time}
21+
relative/></td>
1822
</tr>
1923
)
2024
});
25+
26+
var smallRows = this.props.entries.map((entry, i) => {
27+
var time = new Date(entry.time);
28+
return (
29+
<div className={style['level_' + entry.level] + ' ' + style.row} key={i}>
30+
<div className={style.level + ' ' + style.column}><LogLevel level={entry.level}/>
31+
</div>
32+
<div className={style.app + ' ' + style.column}>{entry.app}</div>
33+
34+
<div className={style.time + ' ' + style.column}><Timestamp value={time}
35+
relative/></div>
36+
<div className={style.message + ' ' + style.column}><LogEntry
37+
message={entry.message}/></div>
38+
</div>
39+
)
40+
});
41+
2142
return (
22-
<table className={style.logs}>
23-
<thead>
24-
<tr>
25-
<th className={style.level}>Level</th>
26-
<th className={style.app}>App</th>
27-
<th className={style.message}>Message</th>
28-
<th className={style.time}>Time</th>
29-
</tr>
30-
</thead>
31-
<tbody>
32-
{rows}
33-
</tbody>
34-
</table>
43+
<div>
44+
<MediaQuery minWidth={750}>
45+
<table className={style.logs}>
46+
<thead>
47+
<tr>
48+
<th className={style.level}>Level</th>
49+
<th className={style.app}>App</th>
50+
<th className={style.message}>Message</th>
51+
<th className={style.time}>Time</th>
52+
</tr>
53+
</thead>
54+
<tbody>
55+
{rows}
56+
</tbody>
57+
</table>
58+
</MediaQuery>
59+
<MediaQuery maxWidth={750}>
60+
<div className={style.logs}>
61+
{smallRows}
62+
</div>
63+
</MediaQuery>
64+
</div>
3565
);
3666
}
3767
}

js/Components/LogTable.less

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
width: 100%;
33
white-space: normal;
44
margin-bottom: 14px;
5+
table-layout: fixed;
56

67
td, th {
78
vertical-align: top;
@@ -25,22 +26,49 @@
2526
}
2627

2728
/*info*/
28-
tr.level_1 {
29+
.level_1 {
2930
background-color: #BDE5F8;
3031
}
3132

3233
/* warning*/
33-
tr.level_2 {
34+
.level_2 {
3435
background-color: #FEEFB3;
3536
}
3637

3738
/*error*/
38-
tr.level_3 {
39+
.level_3 {
3940
background-color: #FFBABA;
4041
}
4142

4243
/*fatal*/
43-
tr.level_4 {
44+
.level_4 {
4445
background-color: #ff8080;
4546
}
47+
48+
div.column {
49+
box-sizing: border-box;
50+
padding: 7px;
51+
}
52+
53+
div.level {
54+
font-weight: bold;
55+
}
56+
57+
div.level, div.app, div.time {
58+
display: inline-block;
59+
width: 33%;
60+
}
61+
62+
div.time {
63+
text-align: right;
64+
padding-right: 20px;
65+
}
66+
67+
div.row {
68+
position: relative;
69+
}
70+
71+
div.message {
72+
border-bottom: 1px solid #888;
73+
}
4674
}

js/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ var React = require('react/addons');
88
window.React = React;
99

1010
$(document).ready(() => {
11-
React.render(<App />, document.getElementById('content'));
11+
React.render(<App />, document.getElementById('content-wrapper'));
1212
});

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"less-loader": "^2.2.0",
6161
"oc-react-components": "^0.1.5",
6262
"react": "^0.13.3",
63+
"react-responsive": "0.0.8",
6364
"react-scrolla": "^0.1.0",
6465
"react-time": "^3.0.0"
6566
}

0 commit comments

Comments
 (0)