summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/consts.js3
-rw-r--r--src/history.js12
-rw-r--r--src/main.js2
-rw-r--r--src/model/graph.js19
-rw-r--r--src/rz_core.js10
-rw-r--r--src/signal.js22
-rw-r--r--src/textanalysis.js10
-rw-r--r--src/textanalysis.ui.js13
8 files changed, 37 insertions, 54 deletions
diff --git a/src/consts.js b/src/consts.js
index 27460033..310d6153 100644
--- a/src/consts.js
+++ b/src/consts.js
@@ -3,11 +3,8 @@
define(function() {
// TODO: enums, sometime
return {
- APPLIED_GRAPH_DIFF: 'graph_diff',
- KEYSTROKES: 'keystrokes',
KEYSTROKE_WHERE_EDIT_NODE: 'keystroke_where_edit_node',
KEYSTROKE_WHERE_DOCUMENT: 'keystroke_where_document',
KEYSTROKE_WHERE_TEXTANALYSIS: 'keystroke_where_textanalysis',
- SUGGESTED_NAME_ADD: 'suggested_name_add',
};
});
diff --git a/src/history.js b/src/history.js
index 89237033..a6a02ec3 100644
--- a/src/history.js
+++ b/src/history.js
@@ -16,23 +16,21 @@
// ReferenceError: __commandLineAPI is not defined
//var ActionEnum = Enum();
-define(['jquery', 'FileSaver', 'consts', 'signal'],
- function($, saveAs, consts, signal) {
+define(['jquery', 'FileSaver', 'consts', 'rz_bus'],
+ function($, saveAs, consts, rz_bus) {
/* user - username (string)
* svg - svg element for catching zoom events (jquery DOMNode wrapper)
*/
-function History(user, transform_element) {
+function History(user, graph, transform_element) {
var that = this;
this.records = [];
this.user = user;
this.transform_element = transform_element;
- signal.slot(consts.APPLIED_GRAPH_DIFF, function(obj) {
+ graph.diffBus.onValue(function (obj) {
return that.record_graph_diff(obj)
});
- signal.slot(consts.KEYSTROKES, function(obj) {
- return that.record_keystrokes(obj);
- });
+ rz_bus.ui_key.onValue(that.record_keystrokes.bind(that));
// XXX create zoom behavior - then proof to event name change
$(window).on('wheel.history', function(obj) {
that.record_zoom(obj);
diff --git a/src/main.js b/src/main.js
index 80837cdb..9b021298 100644
--- a/src/main.js
+++ b/src/main.js
@@ -49,7 +49,7 @@ function(textanalysis_ui, textanalysis, buttons, history, drag_n_drop,
});
// TODO: interaction between the hack above and this
model_core.init(rz_config);
- textanalysis.init();
+ textanalysis.init(rz_core.graph);
}
return {
diff --git a/src/model/graph.js b/src/model/graph.js
index 9123b669..6a299b5e 100644
--- a/src/model/graph.js
+++ b/src/model/graph.js
@@ -1,14 +1,17 @@
"use strict"
-define(['signal', 'consts', 'util', 'model/core', 'model/util', 'rz_api_backend', 'rz_api_mesh'],
-function (signal, consts, util, model_core, model_util, rz_api_backend, rz_api_mesh) {
+define(['Bacon', 'consts', 'util', 'model/core', 'model/util', 'rz_api_backend', 'rz_api_mesh', 'history'],
+function (Bacon, consts, util, model_core, model_util, rz_api_backend, rz_api_mesh, history) {
var debug = false;
function Graph() {
var nodes = [],
- links = [];
+ links = [],
+ diffBus = new Bacon.Bus();
+
+ this.diffBus = diffBus;
/**
* add node if no previous node is present whose id equals that of the node being added
@@ -59,7 +62,7 @@ function Graph() {
nodes.push(node);
if (notify) {
- signal.signal(consts.APPLIED_GRAPH_DIFF, [{nodes: {add: [node]}}]);
+ diffBus.push({nodes: {add: [node]}});
}
return node;
@@ -76,7 +79,7 @@ function Graph() {
if (index !== undefined) {
nodes.splice(index, 1);
}
- signal.signal(consts.APPLIED_GRAPH_DIFF, [{nodes: {removed: [id]}}]);
+ diffBus.push({nodes: {removed: [id]}});
}
this.removeNodes = function(state) {
@@ -95,7 +98,7 @@ function Graph() {
}
}
if (ns.length > 0) {
- signal.signal(consts.APPLIED_GRAPH_DIFF, [{nodes: {removed: ns.map(function(n) { return n.id; })}}]);
+ diffBus.push({nodes: {removed: ns.map(function(n) { return n.id; })}});
}
}
@@ -283,7 +286,7 @@ function Graph() {
if (!found) {
var link = model_core.create_link__set_random_id(src, dst, { name: name, state: state });
links.push(link);
- signal.signal(consts.APPLIED_GRAPH_DIFF, [{links: {add: [link]}}]);
+ diffBus.push({links: {add: [link]}});
} else {
found.name = name;
found.state = state;
@@ -585,7 +588,7 @@ function Graph() {
data.links.forEach(function(link) {
that.addLink(link.__src, link.__dst, link.name, "perm");
});
- signal.signal(consts.SUGGESTED_NAME_ADD, [added_names]);
+ rz_bus.names.push(added_names);
this.clear_history();
}
diff --git a/src/rz_core.js b/src/rz_core.js
index 44dd02fb..46fc753a 100644
--- a/src/rz_core.js
+++ b/src/rz_core.js
@@ -1,7 +1,7 @@
"use strict"
-define(['jquery', 'd3', 'consts', 'signal', 'util', 'model/graph', 'model/core', 'view/helpers', 'view/view', 'rz_observer', 'view/selection'],
-function($, d3, consts, signal, util, model_graph, model_core, view_helpers, view, rz_observer, selection) {
+define(['jquery', 'd3', 'consts', 'rz_bus', 'util', 'model/graph', 'model/core', 'view/helpers', 'view/view', 'rz_observer', 'view/selection'],
+function($, d3, consts, rz_bus, util, model_graph, model_core, view_helpers, view, rz_observer, selection) {
var addednodes = [];
@@ -597,7 +597,7 @@ function mousedown() {
}
$('#editform').keypress(function(e) {
- signal.signal(consts.KEYSTROKES, [{where: consts.KEYSTROKE_WHERE_EDIT_NODE, keys: [e.which]}]);
+ var ret = undefined;
if (e.which == 13) {
$('.editinfo').css('top', -100);
$('.editinfo').css('left', 0);
@@ -606,8 +606,10 @@ $('#editform').keypress(function(e) {
var d = element.data().d;
graph.editName(d.id, newname);
update_view__graph(true);
- return false;
+ ret = false;
}
+ rz_bus.ui_key.push({where: consts.KEYSTROKE_WHERE_EDIT_NODE, keys: [e.which]});
+ return ret;
});
diff --git a/src/signal.js b/src/signal.js
deleted file mode 100644
index e5888b4c..00000000
--- a/src/signal.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Signal/slot (i.e. blackboard pattern) for rhizi.
- *
- * This is a thin wrapper over jquery right now.
- * But just keeping it here to make any future change of implementation slightly
- * easier.
- */
-
-define(['jquery'], function($) {
- function slot(name, handler) {
- $(window).on(name, function(e, args) {
- handler(args);
- });
- };
- function signal(name, obj) {
- $(window).trigger(name, obj);
- }
- return {
- 'slot': slot,
- 'signal': signal
- };
-})
diff --git a/src/textanalysis.js b/src/textanalysis.js
index 9114bbff..f1277050 100644
--- a/src/textanalysis.js
+++ b/src/textanalysis.js
@@ -1,7 +1,7 @@
"use strict";
-define(['rz_core', 'model/core', 'model/util', 'model/diff', 'signal', 'consts'],
-function(rz_core, model_core, model_util, model_diff, signal, consts) {
+define(['rz_core', 'model/core', 'model/util', 'model/diff', 'rz_bus', 'consts'],
+function(rz_core, model_core, model_util, model_diff, rz_bus, consts) {
var typeindex = 0;
var nodetypes = ["person", "club", "skill", "interest", "third-internship-proposal", "internship"];
@@ -466,7 +466,7 @@ var textAnalyser = function (newtext, finalize) {
return ret;
};
-function init()
+function init(graph)
{
function onNodeAdded(diff) {
if (!diff || !diff.nodes || diff.nodes.added) {
@@ -480,8 +480,8 @@ function init()
function onSuggestedNameAdd(names) {
names.map(String.toLowerCase).forEach(autoSuggestAddName);
}
- signal.slot(consts.APPLIED_GRAPH_DIFF, onNodeAdded);
- signal.slot(consts.SUGGESTED_NAME_ADD, onSuggestedNameAdd);
+ graph.diffBus.onValue(onNodeAdded);
+ rz_bus.names.onValue(onSuggestedNameAdd);
}
return {
diff --git a/src/textanalysis.ui.js b/src/textanalysis.ui.js
index 15d3d2e2..380427be 100644
--- a/src/textanalysis.ui.js
+++ b/src/textanalysis.ui.js
@@ -1,7 +1,7 @@
"use strict"
-define(['jquery', 'autocomplete', 'rz_core', 'textanalysis', 'signal', 'consts'],
-function($, autocomplete, rz_core, textanalysis, signal, consts) {
+define(['jquery', 'Bacon', 'consts', 'rz_bus', 'autocomplete', 'rz_core', 'textanalysis'],
+function($, Bacon, consts, rz_bus, autocomplete, rz_core, textanalysis) {
var text = ""; // Last text of sentence
var element_name = '#textanalyser';
@@ -116,6 +116,9 @@ return {
},
});
+ var document_keypress = new Bacon.Bus();
+ rz_bus.ui_key.plug(document_keypress);
+
$(document).keypress(function(e) {
var ret = undefined;
switch (e.keyCode) {
@@ -137,10 +140,12 @@ return {
suggestionChange = true;
break;
}
- signal.signal(consts.KEYSTROKES, [{where: consts.KEYSTROKE_WHERE_DOCUMENT, keys: [e.keyCode]}]);
+ document_keypress.push({where: consts.KEYSTROKE_WHERE_DOCUMENT, keys: [e.keyCode]});
return ret;
});
+ var element_keypress = new Bacon.Bus();
+ rz_bus.ui_key.plug(element_keypress);
element.keypress(function(e) {
var ret = undefined;
switch (e.which) {
@@ -165,7 +170,7 @@ return {
ret = false;
break;
}
- signal.signal(consts.KEYSTROKES, [{where: consts.KEYSTROKE_WHERE_TEXTANALYSIS, keys:[e.which]}]);
+ element_keypress.push({where: consts.KEYSTROKE_WHERE_TEXTANALYSIS, keys:[e.which]});
return ret;
});