From 76d1de512a58f023ae348ae8500100490fba9915 Mon Sep 17 00:00:00 2001 From: LV-426 Date: Thu, 13 Nov 2014 17:41:57 +0200 Subject: rename scripts/ -> src/ --- src/model/util.js | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 src/model/util.js (limited to 'src/model/util.js') diff --git a/src/model/util.js b/src/model/util.js new file mode 100644 index 00000000..43fa66db --- /dev/null +++ b/src/model/util.js @@ -0,0 +1,117 @@ +"use strict" + +/** + * model utility functions: + * - convert from/to client/backend data representations + */ +define(['jquery', 'model/diff'], +function($, model_diff) { + + /** + * 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