summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2014-11-17 13:29:01 +0200
committerAlon Levy <alon@pobox.com>2014-11-19 23:21:42 +0200
commitcbf03e61c2f052bad71345b7ff8348ad8d4186c2 (patch)
treea6335c177aee0cb4c8569acbd29c77cea0ebd7f8
parentf9383cc394312d80a2687cb92746a0c7e2bebbaf (diff)
crete_node_from_spec, create_node__set_random_id & link equivalents
-rw-r--r--src/model/core.js98
1 files changed, 79 insertions, 19 deletions
diff --git a/src/model/core.js b/src/model/core.js
index b1758cd1..6111954b 100644
--- a/src/model/core.js
+++ b/src/model/core.js
@@ -19,29 +19,43 @@ define([], function() {
function Node() {
}
- Node.prototype.selected = function() {
- return this.state == 'chosen' || this.state == 'enter' || this.state == 'exit';
+ function Link() {
}
- function create_node__set_random_id(node_spec) {
- if (node_spec.id) {
- console.log('create_node__set_random_id: bug: given id');
- }
- node_spec.id = random_id();
- return create_node(node_spec);
- }
+ /**
+ * the most flexible way to create a node: - perform spec field validation -
+ * fill-in missing spec fields
+ */
+ function crete_node_from_spec(node_spec) {
+ var ret = new Node();
- function create_node(node_spec) {
- if (undefined == node_spec) {
- node_spec = {};
+ // name
+ if (undefined == node_spec.name) {
+ console.debug('crete_node_from_spec: undefined name, falling back to \"\"');
+ node_spec.name = "";
}
- var ret = new Node();
ret.name = node_spec.name;
+
+ // type
+ if (undefined == node_spec.type) {
+ console.debug('crete_node_from_spec: undefined type, falling back to \'empty\'');
+ node_spec.type = 'empty';
+ }
ret.type = node_spec.type;
- ret.state = node_spec.state;
+
+ // status
+ if (undefined == node_spec.status) {
+ node_spec.type = 'unknown';
+ }
ret.status = node_spec.status;
- ret.url = node_spec.url;
+ // visual
+ ret.x = node_spec.x;
+ ret.y = node_spec.y;
+
+ // other
+ ret.state = node_spec.state;
+ ret.url = node_spec.url;
ret.start = node_spec.start;
ret.end = node_spec.end;
ret.x = node_spec.x;
@@ -51,9 +65,29 @@ define([], function() {
return ret;
}
- function create_link__set_random_id(link_spec) {
- var ret = new Link();
- ret.id = random_id();
+ /**
+ *
+ */
+ function create_node__set_random_id(node_spec) {
+ if (undefined == node_spec) {
+ node_spec = {};
+ }
+
+ var ret = crete_node_from_spec(node_spec);
+ Object.defineProperty(ret, "id", {
+ value: random_id(),
+ writable: false
+ });
+
+ return ret;
+ }
+
+ function create_link__set_random_id(src, dst, link_spec) {
+ var ret = crete_link_from_spec(src, dst, link_spec);
+ Object.defineProperty(ret, "id", {
+ value: random_id(),
+ writable: false
+ });
}
/**
@@ -74,6 +108,31 @@ define([], function() {
}
+ function crete_link_from_spec(src, dst, link_spec) {
+ if (undefined == src) {
+ console.error('crete_link_from_spec: undefined: src');
+ return null;
+ }
+ if (undefined == dst) {
+ console.error('crete_link_from_spec: undefined: dst');
+ return null;
+ }
+
+ var ret = new Link();
+ ret.__src = src;
+ ret.__dst = dst;
+ ret.__type = 'textual_link';
+
+ if (undefined == link_spec.name){
+ console.warn('crete_link_from_spec: name: ' + link_spec.name);
+ link_spec.name = "";
+ }
+ ret.name = link_spec.name.trim();
+
+ ret.state = link_spec.state;
+ return ret;
+ }
+
/**
* determine if links are equal by ID
*
@@ -86,7 +145,8 @@ define([], function() {
return {
random_node_name : random_node_name,
- create_node: create_node,
+ crete_node_from_spec : crete_node_from_spec,
+ crete_link_from_spec : crete_link_from_spec,
create_node__set_random_id : create_node__set_random_id,
create_link__set_random_id : create_link__set_random_id,
};