/** @jsx React.DOM */ 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 { log: [] }; }, componentDidMount: function () { this.log = EventLogStore.getView(); this.log.addListener("change", this.onEventLogChange); }, componentWillUnmount: function () { this.log.removeListener("change", this.onEventLogChange); this.log.close(); }, onEventLogChange: function () { this.setState({ 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 () { return (
Eventlog
); } });