Skip to content

Commit

Permalink
feat: support piping to/from Modifiers (e.g. Draggable) with fa-pipe-…
Browse files Browse the repository at this point in the history
…to and fa-pipe-from
  • Loading branch information
zackbrown committed Aug 18, 2014
1 parent 09ad45c commit 070bf02
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 31 deletions.
23 changes: 8 additions & 15 deletions dist/famous-angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -1877,19 +1877,6 @@ angular.module('famous.angular')

isolate.modifier = new Draggable(options);

//TODO: update fa-pipe-to and fa-pipe-from to support Modifiers instead of just RenderNodes
// This is a temporary hack
// Can probably fix by making fa-pipe-to and
// fa-pipe-from select between renderNode,
// renderNode._eventOutput/Input, and renderNode._object
// for their source/target
scope.$watch(function(){
return scope.$eval(attrs.faPipeFrom);
}, function(newVal, oldVal){
if(oldVal) oldVal.unpipe(isolate.modifier);
if(newVal) newVal.pipe(isolate.modifier);
});

isolate.renderNode = new RenderNode().add(isolate.modifier);

$famousDecorator.addRole('renderable',isolate);
Expand Down Expand Up @@ -3942,7 +3929,10 @@ angular.module('famous.angular')
return scope.$eval(attrs.faPipeFrom);
},
function(newTarget, oldTarget){
var source = isolate.renderNode || Engine;
var source;
if(isolate.renderNode && isolate.renderNode._isModifier) source = isolate.renderNode._object;
else if(isolate.renderNode) source = isolate.renderNode._eventInput || isolate.renderNode;
else source = Engine;
$famousPipe.unpipesFromTargets(source, oldTarget);
$famousPipe.pipesToTargets(source, newTarget);
}
Expand Down Expand Up @@ -4198,7 +4188,10 @@ angular.module('famous.angular')
return scope.$eval(attrs.faPipeTo);
},
function(newSource, oldSource) {
var target = isolate.renderNode || Engine;
var target;
if(isolate.renderNode && isolate.renderNode._isModifier) target = isolate.renderNode._object;
else if(isolate.renderNode) target = isolate.renderNode._eventOutput || isolate.renderNode;
else target = Engine;
$famousPipe.unpipesFromTargets(oldSource, target);
$famousPipe.pipesToTargets(newSource, target);
}
Expand Down
2 changes: 1 addition & 1 deletion dist/famous-angular.min.js

Large diffs are not rendered by default.

13 changes: 0 additions & 13 deletions src/scripts/directives/fa-draggable.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,6 @@ angular.module('famous.angular')

isolate.modifier = new Draggable(options);

//TODO: update fa-pipe-to and fa-pipe-from to support Modifiers instead of just RenderNodes
// This is a temporary hack
// Can probably fix by making fa-pipe-to and
// fa-pipe-from select between renderNode,
// renderNode._eventOutput/Input, and renderNode._object
// for their source/target
scope.$watch(function(){
return scope.$eval(attrs.faPipeFrom);
}, function(newVal, oldVal){
if(oldVal) oldVal.unpipe(isolate.modifier);
if(newVal) newVal.pipe(isolate.modifier);
});

isolate.renderNode = new RenderNode().add(isolate.modifier);

$famousDecorator.addRole('renderable',isolate);
Expand Down
5 changes: 4 additions & 1 deletion src/scripts/directives/fa-pipe-from.js
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,10 @@ angular.module('famous.angular')
return scope.$eval(attrs.faPipeFrom);
},
function(newTarget, oldTarget){
var source = isolate.renderNode || Engine;
var source;
if(isolate.renderNode && isolate.renderNode._isModifier) source = isolate.renderNode._object;
else if(isolate.renderNode) source = isolate.renderNode._eventInput || isolate.renderNode;
else source = Engine;
$famousPipe.unpipesFromTargets(source, oldTarget);
$famousPipe.pipesToTargets(source, newTarget);
}
Expand Down
5 changes: 4 additions & 1 deletion src/scripts/directives/fa-pipe-to.js
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,10 @@ angular.module('famous.angular')
return scope.$eval(attrs.faPipeTo);
},
function(newSource, oldSource) {
var target = isolate.renderNode || Engine;
var target;
if(isolate.renderNode && isolate.renderNode._isModifier) target = isolate.renderNode._object;
else if(isolate.renderNode) target = isolate.renderNode._eventOutput || isolate.renderNode;
else target = Engine;
$famousPipe.unpipesFromTargets(oldSource, target);
$famousPipe.pipesToTargets(newSource, target);
}
Expand Down
4 changes: 4 additions & 0 deletions test/directives/faPipeFromSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ describe('faPipeFrom', function() {
pending();
});

it('should correctly handle piping from modifiers (e.g. Draggable)', function(){
pending();
});

it('should pipe events from a provided eventhandler to the specified target', function() {

$scope.toEventHandler = eventHandler;
Expand Down
4 changes: 4 additions & 0 deletions test/directives/faPipeToSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ describe('faPipeTo', function() {
pending();
});

it('should correctly handle piping to modifiers (e.g. Draggable)', function(){
pending();
});

it('should trigger events on a defined event listener', function() {
var faSurface = common.compileFaSurface('fa-pipe-to="eventHandler"');
var surface = common.getSurface(faSurface);
Expand Down

0 comments on commit 070bf02

Please sign in to comment.