From 9394844d7b752f5871760c873b1de0e89cf558cf Mon Sep 17 00:00:00 2001 From: LV-426 Date: Wed, 5 Nov 2014 00:13:38 +0200 Subject: model utility functions: - convert from/to client/backend data representations - meta attributes '__' prefixed, eg. '__src' - note: '__type' should be considered deprecated in favor of '__label_set' --- scripts/model/util.js | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 scripts/model/util.js diff --git a/scripts/model/util.js b/scripts/model/util.js new file mode 100644 index 00000000..0e54fc70 --- /dev/null +++ b/scripts/model/util.js @@ -0,0 +1,116 @@ +"use strict" + +/** + * model utility functions: + * - convert from/to client/backend data representations + */ +define([ 'jquery', 'model/diff', 'model/graph' ], function($, model_diff, model_graph) { + + /** + * read by adapting from backend format + */ + function adapt_format_read_node(n_raw) { + var ret; + + ret = $.extend({ + 'type' : n_raw['__type'].toLowerCase(), // discard all + // labels except + 'state' : 'temp', + }, n_raw); + + delete ret.__label_set; + + return ret; + } + + /** + * write by adapting to backend format + */ + function adapt_format_write_node(n_raw) { + var ret = $.extend({ + '__type' : n_raw.type, + }, n_raw); + + delete ret.type; + delete ret.state; + + return ret + } + + /** + * read by adapting from backend format + */ + function adapt_format_read_link(l_raw) { + var ret; + + ret = $.extend({ + 'sourceId' : l_raw['__src'], + 'targetId' : l_raw['__dst'], + 'type' : l_raw['__type'].toLowerCase(), // discard all + // labels except + 'state' : 'temp', + }, l_raw); + + ret['name'] = ret['type']; + + delete ret.__src; + delete ret.__dst; + delete ret.__type; + + return ret; + } + + /** + * write by adapting to backend format + */ + function adapt_format_write_link(l_raw) { + var ret = $.extend({ + '__src' : l_raw.sourceId, + '__dst' : l_raw.targetId, + '__type' : 'textual_link', + }, l_raw); + + delete ret.source; + delete ret.target; + delete ret.state; + + return ret; + } + + /** + * write adapt diff from node set, link set. sets may be passed by reference + * as they are cloned + */ + function adapt_format_write_topo_diff(n_set, l_set) { + + var new_n_set = $.extend([], n_set); + var new_l_set = $.extend([], l_set); + + // filter out 'bubble' nodes + new_n_set = new_n_set.filter(function(n) { + return 'bubble' != n.type; + }); + + new_n_set = $.map(new_n_set, function(n, _) { + return adapt_format_write_node(n); + }) + + new_l_set = $.map(new_l_set, function(l, _) { + return adapt_format_write_link(l); + }) + + var topo_diff = new model_diff.new_topo_diff({ + node_set_add : new_n_set, + link_set_add : new_l_set + }); + return topo_diff; + } + + return { + adapt_format_read_node : adapt_format_read_node, + adapt_format_read_link : adapt_format_read_link, + adapt_format_write_node : adapt_format_write_node, + adapt_format_write_link : adapt_format_write_link, + adapt_format_write_topo_diff : adapt_format_write_topo_diff, + } +}); \ No newline at end of file -- cgit v1.3.1