-
-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathlogging-utils.js
52 lines (44 loc) · 1.16 KB
/
logging-utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
var logger = mobx.observable({
logList: []
});
logger.log = mobx.action('log', function (message) {
this.logList.push(message);
});
var logPrinter = mobxReact.observer(React.createClass({
displayName: 'printer.log',
render: function () {
return React.createElement('div', {},
_.map(this.props.logger.logList, function (logItem, i) {
return React.createElement(logItemRenderer, {logItem: logItem, key: i});
})
);
}
}));
var logItemRenderer = mobxReact.observer(function logItem (props) {
var logItem = props.logItem;
var children = logItem;
if (_.isObject(logItem)) {
children = JSON.stringify(logItem);
} else if (_.isArray(logItem)) {
children = logItem.join(',');
}
return React.createElement('div', null, children);
});
var renderLog = function () {
ReactDOM.render(
React.createElement(logPrinter, {logger: logger}),
document.getElementById('react-log')
);
};
var wrapConsole = _.once(function () {
// logger.log('Setup');
var originalLog = console.log;
console.log = function () {
var args = arguments;
originalLog.apply(console, args);
setTimeout(function () {
logger.log.apply(logger, args);
}, 1);
};
renderLog();
});