diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-01-13 00:30:32 +0200 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-01-13 00:30:32 +0200 |
| commit | 2459b68954750c4f6a4706f38437d8b27a67e1f2 (patch) | |
| tree | d3748a465739b90bb6a3c58a104e47af1e626774 /src/client | |
| parent | 6ffabc45dc18e21c414b18310967c57c1f4600fb (diff) | |
model/diff: new_attr_diff_from_spec()
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/model/diff.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/client/model/diff.js b/src/client/model/diff.js index 5d7755ed..403b8de9 100644 --- a/src/client/model/diff.js +++ b/src/client/model/diff.js @@ -160,6 +160,48 @@ define([], return ret; } + /** + * Convert a Attr_Diff spec to an Attr_Diff object + * + */ + function new_attr_diff_from_spec(attr_diff_spec) { + var ret = new_attr_diff(); + + for (var n_id in attr_diff_spec['__type_node']) { + + var n_attr_diff = attr_diff_spec['__type_node'][n_id]; + + // process attr writes: node + for (var attr_name in n_attr_diff['__attr_write']) { + var attr_val = n_attr_diff['__attr_write'][attr_name]; + ret.add_node_attr_write(n_id, attr_name, attr_val); + }; + + // process attr removals: node + for (var attr_name in n_attr_diff['__attr_remove']) { + ret.add_node_attr_remove(n_id, attr_name); + }; + }; + + for (var l_id in attr_diff_spec['__type_link']) { + + var n_attr_diff = attr_diff_spec['__type_link'][l_id]; + + // process attr writes: link + for (var attr_name in n_attr_diff['__attr_write']) { + var attr_val = n_attr_diff['__attr_write'][attr_name]; + ret.add_link_attr_write(l_id, attr_name, attr_val); + }; + + // process attr removals: link + for (var attr_name in n_attr_diff['__attr_remove']) { + ret.add_link_attr_remove(l_id, attr_name); + }; + }; + + return ret; + } + function new_vis_diff(obj_spec) { /* * validate obj_spec @@ -181,6 +223,7 @@ define([], return { new_topo_diff : new_topo_diff, new_attr_diff : new_attr_diff, + new_attr_diff_from_spec : new_attr_diff_from_spec, new_vis_diff : new_vis_diff, new_diff_set : new_diff_set, is_attr_diff: function (obj) { return obj instanceof Attr_Diff; }, |
