From 7b74d207f39e642e5029a4855da47314ce224a33 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Sat, 13 Sep 2014 23:57:01 +0200 Subject: update Gruntfile --- web/src/js/datastructures.es6.js | 101 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 web/src/js/datastructures.es6.js (limited to 'web/src/js/datastructures.es6.js') diff --git a/web/src/js/datastructures.es6.js b/web/src/js/datastructures.es6.js new file mode 100644 index 00000000..4bc781b2 --- /dev/null +++ b/web/src/js/datastructures.es6.js @@ -0,0 +1,101 @@ +class EventEmitter { + constructor(){ + this._listeners = {}; + } + emit(event){ + if(!(event in this._listeners)){ + return; + } + this._listeners[event].forEach(function (listener) { + listener(event, this); + }.bind(this)); + } + addListener(event, f){ + this._listeners[event] = this._listeners[event] || []; + this._listeners[event].push(f); + } + removeListener(event, f){ + if(!(event in this._listeners)){ + return false; + } + var index = this._listeners.indexOf(f); + if (index >= 0) { + this._listeners.splice(this._listeners.indexOf(f), 1); + } + } +} + +var FLOW_CHANGED = "flow.changed"; + +class FlowStore extends EventEmitter{ + constructor() { + super(); + this.flows = []; + this._listeners = []; + } + + getAll() { + return this.flows; + } + + emitChange() { + return this.emit(FLOW_CHANGED); + } + + addChangeListener(f) { + this.addListener(FLOW_CHANGED, f); + } + + removeChangeListener(f) { + this.removeListener(FLOW_CHANGED, f); + } +} + +class DummyFlowStore extends FlowStore { + constructor(flows) { + super(); + this.flows = flows; + } + + addFlow(f) { + this.flows.push(f); + this.emitChange(); + } +} + + +var SETTINGS_CHANGED = "settings.change"; + +class Settings extends EventEmitter { + constructor(){ + super(); + this.settings = false; + } + + getAll(){ + return this.settings; + } + + emitChange() { + return this.emit(SETTINGS_CHANGED); + } + + addChangeListener(f) { + this.addListener(SETTINGS_CHANGED, f); + } + + removeChangeListener(f) { + this.removeListener(SETTINGS_CHANGED, f); + } +} + +class DummySettings extends Settings { + constructor(settings){ + super(); + this.settings = settings; + } + update(obj){ + _.merge(this.settings, obj); + this.emitChange(); + } +} \ No newline at end of file -- cgit v1.2.3