diff options
| author | LV-426 <lv-426@taproot.org.il> | 2014-11-17 13:29:01 +0200 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2014-11-17 13:29:01 +0200 |
| commit | 42f0b3fdc68059560858ba957b3aabf7630d2e27 (patch) | |
| tree | 078638731802b042a5f9ffcc95aac68b403acdc5 /src/model | |
| parent | 6ade2f0bec75ca3d0be2fc0e162d729170d049f1 (diff) | |
crete_node_from_spec, create_node__set_random_id & link equivalents
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/core.js | 90 |
1 files changed, 80 insertions, 10 deletions
diff --git a/src/model/core.js b/src/model/core.js index 43a87b5d..ce75e41c 100644 --- a/src/model/core.js +++ b/src/model/core.js @@ -19,29 +19,72 @@ define([], function() { function Node() { } - function create_node__set_random_id(node_spec) { - if (undefined == node_spec) { - node_spec = {}; - } + function Link() { + } + /** + * 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(); - ret.id = random_id(); + // name + if (undefined == node_spec.name) { + console.debug('crete_node_from_spec: undefined name, falling back to \"\"'); + node_spec.name = ""; + } 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; 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 + }); } /** @@ -62,6 +105,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 * @@ -74,6 +142,8 @@ define([], function() { return { random_node_name : random_node_name, + 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, }; |
