From 45f39c23804e12459e810a1f5014d892e4177b48 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Mon, 22 Sep 2014 03:06:19 +0200 Subject: beef up event log --- web/src/js/components/eventlog.jsx.js | 102 ++++++++++++++++++++++++++++++---- 1 file changed, 90 insertions(+), 12 deletions(-) (limited to 'web/src/js/components/eventlog.jsx.js') diff --git a/web/src/js/components/eventlog.jsx.js b/web/src/js/components/eventlog.jsx.js index df212177..08a6dfb4 100644 --- a/web/src/js/components/eventlog.jsx.js +++ b/web/src/js/components/eventlog.jsx.js @@ -1,6 +1,31 @@ /** @jsx React.DOM */ -var EventLog = React.createClass({ +var LogMessage = React.createClass({ + render: function(){ + var entry = this.props.entry; + var indicator; + switch(entry.level){ + case "web": + indicator = ; + break; + case "debug": + indicator = ; + break; + default: + indicator = ; + } + return ( +
+ { indicator } {entry.message} +
+ ); + }, + shouldComponentUpdate: function(){ + return false; // log entries are immutable. + } +}); + +var EventLogContents = React.createClass({ mixins:[AutoScrollMixin], getInitialState: function () { return { @@ -20,22 +45,75 @@ var EventLog = React.createClass({ log: this.log.getAll() }); }, + render: function () { + var messages = this.state.log.map(function(row) { + if(!this.props.filter[row.level]){ + return null; + } + return ; + }.bind(this)); + return
{messages}
; + } +}); + +var ToggleFilter = React.createClass({ + toggle: function(){ + return this.props.toggleLevel(this.props.name); + }, + render: function(){ + var className = "label "; + if (this.props.active) { + className += "label-primary"; + } else { + className += "label-default"; + } + return ( + + {this.props.name} + + ); + } +}); + +var EventLog = React.createClass({ + getInitialState: function(){ + return { + filter: { + "debug": false, + "info": true, + "web": true + } + }; + }, close: function () { SettingsActions.update({ showEventLog: false }); }, + toggleLevel: function(level){ + var filter = this.state.filter; + filter[level] = !filter[level]; + this.setState({filter: filter}); + return false; + }, render: function () { - var messages = this.state.log.map(function(row) { - var indicator = null; - if(row.source === "ui"){ - indicator = ; - } - return ( -
- { indicator } {row.message} -
); - }); - return
{messages}
; + return ( +
+
+ Eventlog +
+ + + + +
+ +
+ +
+ ); } }); \ No newline at end of file -- cgit v1.2.3