1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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,
}
});
|