aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js/stores/EventLogStore.es6.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/src/js/stores/EventLogStore.es6.js')
-rw-r--r--web/src/js/stores/EventLogStore.es6.js79
1 files changed, 52 insertions, 27 deletions
diff --git a/web/src/js/stores/EventLogStore.es6.js b/web/src/js/stores/EventLogStore.es6.js
index caa9d77d..55401690 100644
--- a/web/src/js/stores/EventLogStore.es6.js
+++ b/web/src/js/stores/EventLogStore.es6.js
@@ -1,17 +1,62 @@
-class _EventLogStore extends EventEmitter {
- constructor() {
- /*jshint validthis: true */
+class EventLogView extends EventEmitter {
+ constructor(store, live){
super();
+ this._store = store;
+ this.live = live;
this.log = [];
+
+ this.add = this.add.bind(this);
+
+ if(live){
+ this._store.addListener("new_entry", this.add);
+ }
+
+ }
+ close() {
+ this._store.removeListener("new_entry", this.add);
}
getAll() {
return this.log;
}
+
+ add(entry){
+ this.log.push(entry);
+ this.emit("change");
+ }
+ add_bulk(messages){
+ var log = messages;
+ var last_id = log[log.length-1].id;
+ var to_add = _.filter(this.log, entry => entry.id > last_id);
+ this.log = log.concat(to_add);
+ this.emit("change");
+ }
+}
+
+class _EventLogStore extends EventEmitter {
+ getView(since){
+ var view = new EventLogView(this, !since);
+
+ //TODO: Really do bulk retrieval of last messages.
+
+ window.setTimeout(function(){
+ view.add_bulk([
+ { id:1, message: "Hello World"},
+ { id:2, message: "I was already transmitted as an event."}
+ ]);
+ }, 100);
+
+ var id = 2;
+ view.add({id:id++, message: "I was already transmitted as an event."});
+ view.add({id:id++, message: "I was only transmitted as an event before the bulk was added.."});
+ window.setInterval(function(){
+ view.add({id: id++, message: "."});
+ }, 1000);
+ return view;
+ }
handle(action) {
switch (action.actionType) {
- case ActionTypes.LOG_ADD:
- this.log.push(action.message);
- this.emit("change");
+ case ActionTypes.EVENTLOG_ADD:
+ this.emit("new_message", action.message);
break;
default:
return;
@@ -19,24 +64,4 @@ class _EventLogStore extends EventEmitter {
}
}
var EventLogStore = new _EventLogStore();
-AppDispatcher.register(EventLogStore.handle.bind(EventLogStore));
-
-
-var EventLogMixin = {
- getInitialState(){
- return {
- log: EventLog.getAll()
- };
- },
- componentDidMount(){
- SettingsStore.addListener("change", this._onEventLogChange);
- },
- componentWillUnmount(){
- SettingsStore.removeListener("change", this._onEventLogChange);
- },
- _onEventLogChange(){
- this.setState({
- log: EventLog.getAll()
- });
- }
-}; \ No newline at end of file
+AppDispatcher.register(EventLogStore.handle.bind(EventLogStore)); \ No newline at end of file