Skip to content

Commit a9046d4

Browse files
committed
Separate id from name in serialization. Closes #14
1 parent 6c74dfe commit a9046d4

File tree

2 files changed

+33
-29
lines changed

2 files changed

+33
-29
lines changed

index.js

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,12 @@ function ReactiveFunction(options){
4343

4444
var inputs = options.inputs;
4545
var callback = options.callback;
46-
var output = options.output || function (){};
46+
var output = options.output;
47+
48+
if(!output){
49+
output = function (){};
50+
output.propertyName = "";
51+
}
4752

4853
// This gets invoked during a digest, after inputs have been evaluated.
4954
output.evaluate = function (){
@@ -165,25 +170,14 @@ ReactiveFunction.nextFrame = nextFrame;
165170
ReactiveFunction.serializeGraph = function (){
166171
var serialized = graph.serialize();
167172

168-
// Replace ids with names for nodes.
173+
// Add property names.
169174
serialized.nodes.forEach(function (node){
170-
var name = properties[node.id].propertyName;
171-
if(name){
172-
node.id = name;
175+
var propertyName = properties[node.id].propertyName;
176+
if(typeof propertyName !== "undefined"){
177+
node.propertyName = propertyName;
173178
}
174179
});
175180

176-
// Replace ids with names for links.
177-
serialized.links.forEach(function (link){
178-
var sourceName = properties[link.source].propertyName;
179-
if(sourceName){
180-
link.source = sourceName;
181-
}
182-
var targetName = properties[link.target].propertyName;
183-
if(targetName){
184-
link.target = targetName;
185-
}
186-
});
187181
return serialized;
188182
}
189183

test.js

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -580,19 +580,23 @@ describe("ReactiveFunction", function() {
580580
assert.equal(serialized.nodes.length, 3);
581581
assert.equal(serialized.links.length, 2);
582582

583-
assert.equal(serialized.nodes[0].id, "fullName");
584-
assert.equal(serialized.nodes[1].id, "firstName");
585-
assert.equal(serialized.nodes[2].id, "lastName");
583+
assert.equal(serialized.nodes[0].id, "56");
584+
assert.equal(serialized.nodes[1].id, "57");
585+
assert.equal(serialized.nodes[2].id, "58");
586586

587-
assert.equal(serialized.links[0].source, "firstName");
588-
assert.equal(serialized.links[0].target, "fullName");
589-
assert.equal(serialized.links[1].source, "lastName");
590-
assert.equal(serialized.links[1].target, "fullName");
587+
assert.equal(serialized.nodes[0].propertyName, "fullName");
588+
assert.equal(serialized.nodes[1].propertyName, "firstName");
589+
assert.equal(serialized.nodes[2].propertyName, "lastName");
590+
591+
assert.equal(serialized.links[0].source, "57");
592+
assert.equal(serialized.links[0].target, "56");
593+
assert.equal(serialized.links[1].source, "58");
594+
assert.equal(serialized.links[1].target, "56");
591595

592596
rf.destroy();
593597
});
594598

595-
it("Should serialize the data flow graph, falling back to property ids.", function (){
599+
it("Should serialize the data flow graph and omit property names if they are not present.", function (){
596600

597601
var firstName = ReactiveProperty("Jane");
598602
var lastName = ReactiveProperty("Smith");
@@ -618,6 +622,8 @@ describe("ReactiveFunction", function() {
618622
assert.equal(serialized.nodes[1].id, "60");
619623
assert.equal(serialized.nodes[2].id, "61");
620624

625+
assert.equal(typeof serialized.nodes[0].propertyName, "undefined");
626+
621627
assert.equal(serialized.links[0].source, "60");
622628
assert.equal(serialized.links[0].target, "59");
623629
assert.equal(serialized.links[1].source, "61");
@@ -626,7 +632,7 @@ describe("ReactiveFunction", function() {
626632
rf.destroy();
627633
});
628634

629-
it("Should serialize without any output specified (empty string as name).", function (){
635+
it("Should serialize case without any output specified and use empty string as property name.", function (){
630636
var a = ReactiveProperty(5);
631637
var b = ReactiveProperty(10);
632638
var sideEffect = 0;
@@ -649,12 +655,16 @@ describe("ReactiveFunction", function() {
649655
//console.log(JSON.stringify(serialized, null, 2));
650656

651657
assert.equal(serialized.nodes[0].id, "62");
652-
assert.equal(serialized.nodes[1].id, "a");
653-
assert.equal(serialized.nodes[2].id, "b");
658+
assert.equal(serialized.nodes[1].id, "63");
659+
assert.equal(serialized.nodes[2].id, "64");
660+
661+
assert.equal(serialized.nodes[0].propertyName, "");
662+
assert.equal(serialized.nodes[1].propertyName, "a");
663+
assert.equal(serialized.nodes[2].propertyName, "b");
654664

655-
assert.equal(serialized.links[0].source, "a");
665+
assert.equal(serialized.links[0].source, "63");
656666
assert.equal(serialized.links[0].target, "62");
657-
assert.equal(serialized.links[1].source, "b");
667+
assert.equal(serialized.links[1].source, "64");
658668
assert.equal(serialized.links[1].target, "62");
659669

660670
rf.destroy();

0 commit comments

Comments
 (0)