From ac5d74d42c0824b5789cc030bf39a447951e4804 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Sat, 21 Mar 2015 21:55:02 +0100 Subject: web: fix bugs --- web/src/js/components/eventlog.js | 1 + 1 file changed, 1 insertion(+) (limited to 'web/src/js/components/eventlog.js') diff --git a/web/src/js/components/eventlog.js b/web/src/js/components/eventlog.js index 23508275..de69462b 100644 --- a/web/src/js/components/eventlog.js +++ b/web/src/js/components/eventlog.js @@ -3,6 +3,7 @@ var common = require("./common.js"); var Query = require("../actions.js").Query; var VirtualScrollMixin = require("./virtualscroll.js"); var views = require("../store/view.js"); +var _ = require("lodash"); var LogMessage = React.createClass({ render: function () { -- cgit v1.2.3 From 1913975fa60c76bfb7e79a908b18e7e93793f71f Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Fri, 27 Mar 2015 21:58:04 +0100 Subject: web: use contexts to pass down stores. Using contexts frees us from the contracts we have using props - namely, we can assume them to be constant for the lifetime of the object. --- web/src/js/components/eventlog.js | 43 ++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 26 deletions(-) (limited to 'web/src/js/components/eventlog.js') diff --git a/web/src/js/components/eventlog.js b/web/src/js/components/eventlog.js index de69462b..65024712 100644 --- a/web/src/js/components/eventlog.js +++ b/web/src/js/components/eventlog.js @@ -31,46 +31,37 @@ var LogMessage = React.createClass({ }); var EventLogContents = React.createClass({ + contextTypes: { + eventStore: React.PropTypes.object.isRequired + }, mixins: [common.AutoScrollMixin, VirtualScrollMixin], getInitialState: function () { - return { - log: [] - }; - }, - componentWillMount: function () { - this.openView(this.props.eventStore); - }, - componentWillUnmount: function () { - this.closeView(); - }, - openView: function (store) { - var view = new views.StoreView(store, function (entry) { + var filterFn = function (entry) { return this.props.filter[entry.level]; - }.bind(this)); - this.setState({ - view: view - }); - + }; + var view = new views.StoreView(this.context.eventStore, filterFn.bind(this)); view.addListener("add", this.onEventLogChange); view.addListener("recalculate", this.onEventLogChange); + + return { + log: view.list, + view: view + }; }, - closeView: function () { + componentWillUnmount: function () { this.state.view.close(); }, + filter: function (entry) { + return this.props.filter[entry.level]; + }, onEventLogChange: function () { - this.setState({ - log: this.state.view.list - }); + this.forceUpdate(); }, componentWillReceiveProps: function (nextProps) { if (nextProps.filter !== this.props.filter) { this.props.filter = nextProps.filter; // Dirty: Make sure that view filter sees the update. this.state.view.recalculate(); } - if (nextProps.eventStore !== this.props.eventStore) { - this.closeView(); - this.openView(nextProps.eventStore); - } }, getDefaultProps: function () { return { @@ -149,7 +140,7 @@ var EventLog = React.createClass({ - + ); } -- cgit v1.2.3 From 6d29f93e9eaaabe20c0d46887048f2367bfbb3cf Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Mon, 30 Mar 2015 03:49:50 +0200 Subject: web: add prompt for keyboard navigation --- web/src/js/components/eventlog.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'web/src/js/components/eventlog.js') diff --git a/web/src/js/components/eventlog.js b/web/src/js/components/eventlog.js index 65024712..4c6dafb1 100644 --- a/web/src/js/components/eventlog.js +++ b/web/src/js/components/eventlog.js @@ -44,7 +44,6 @@ var EventLogContents = React.createClass({ view.addListener("recalculate", this.onEventLogChange); return { - log: view.list, view: view }; }, @@ -74,12 +73,13 @@ var EventLogContents = React.createClass({ return ; }, render: function () { - var rows = this.renderRows(this.state.log); + var entries = this.state.view.list; + var rows = this.renderRows(entries); return
-            { this.getPlaceholderTop(this.state.log.length) }
+            { this.getPlaceholderTop(entries.length) }
             {rows}
-            { this.getPlaceholderBottom(this.state.log.length) }
+            { this.getPlaceholderBottom(entries.length) }
         
; } }); -- cgit v1.2.3