findOne Method

This commit is contained in:
lavrton
2015-02-03 10:30:27 +07:00
parent 09eb72b0a0
commit 10fab252e0
3 changed files with 85 additions and 0 deletions

View File

@@ -184,6 +184,22 @@
return Konva.Collection.toCollection(retArr); return Konva.Collection.toCollection(retArr);
}, },
/**
* return a first node from `find` method
* @method
* @memberof Konva.Container.prototype
* @param {String} selector
* @returns {Konva.Node}
* @example
* // select node with id foo
* var node = stage.findOne('#foo');
*
* // select node with name bar inside layer
* var nodes = layer.findOne('.bar');
*/
findOne : function(selector) {
return this.find(selector)[0];
},
_getNodeById: function(key) { _getNodeById: function(key) {
var node = Konva.ids[key]; var node = Konva.ids[key];

View File

@@ -229,6 +229,48 @@ suite('Container', function() {
assert.equal(node, rect); assert.equal(node, rect);
}); });
// ======================================================
test('select shape by id and name with findOne', function() {
var stage = addStage();
var layer = new Konva.Layer({
id: 'myLayer'
});
var circle = new Konva.Circle({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
radius: 70,
fill: 'green',
stroke: 'black',
strokeWidth: 4,
id: 'myCircle'
});
var rect = new Konva.Rect({
x: 300,
y: 100,
width: 100,
height: 50,
fill: 'purple',
stroke: 'black',
strokeWidth: 4,
name: 'myRect'
});
layer.add(circle);
layer.add(rect);
stage.add(layer);
var node;
node = stage.findOne('#myCircle');
assert.equal(node, circle);
node = layer.findOne('.myRect');
assert.equal(node, rect);
node = layer.findOne('#myLayer');
assert.equal(node, undefined, 'node should be undefined');
node = stage.findOne('#myLayer');
assert.equal(node, layer, 'node type should be Layer');
});
// ====================================================== // ======================================================
test('select shapes with multiple selectors', function() { test('select shapes with multiple selectors', function() {
var stage = addStage(); var stage = addStage();

View File

@@ -839,6 +839,33 @@ suite('Shape', function() {
assert.equal(rect instanceof Konva.Rect, true); assert.equal(rect instanceof Konva.Rect, true);
assert.equal(rect instanceof Konva.Shape, true); assert.equal(rect instanceof Konva.Shape, true);
assert.equal(rect instanceof Konva.Node, true); assert.equal(rect instanceof Konva.Node, true);
});
test('disable stroke for hit', function(){
var stage = addStage();
var layer = new Konva.Layer();
var rect = new Konva.Rect({
x: 100,
y: 50,
width: 100,
height: 50,
stroke: 'red',
strokeWidth: 20
});
// default value
assert.equal(rect.strokeHit(), true);
rect.strokeHit(false);
assert.equal(rect.strokeHit(), false);
layer.add(rect);
stage.add(layer);
assert.equal(rect.getY(), 50);
var trace = layer.getHitCanvas().getContext().getTrace(true);
assert.equal(trace, 'clearRect();save();transform();beginPath();rect();closePath();save();fillStyle;fill();restore();restore();');
}); });
}); });