Allow modify interaction to be configured with a source
This commit is contained in:
@@ -74,19 +74,20 @@ describe('ol.interaction.Modify', function() {
|
||||
* @param {string} type Event type.
|
||||
* @param {number} x Horizontal offset from map center.
|
||||
* @param {number} y Vertical offset from map center.
|
||||
* @param {boolean=} opt_shiftKey Shift key is pressed.
|
||||
* @param {Object} modifiers Lookup of modifier keys.
|
||||
* @param {number} button The mouse button.
|
||||
*/
|
||||
function simulateEvent(type, x, y, opt_shiftKey, button) {
|
||||
function simulateEvent(type, x, y, modifiers, button) {
|
||||
modifiers = modifiers || {};
|
||||
var viewport = map.getViewport();
|
||||
// calculated in case body has top < 0 (test runner with small window)
|
||||
var position = viewport.getBoundingClientRect();
|
||||
var shiftKey = opt_shiftKey !== undefined ? opt_shiftKey : false;
|
||||
var pointerEvent = new ol.pointer.PointerEvent(type, {
|
||||
type: type,
|
||||
clientX: position.left + x + width / 2,
|
||||
clientY: position.top + y + height / 2,
|
||||
shiftKey: shiftKey
|
||||
shiftKey: modifiers.shift || false,
|
||||
altKey: modifiers.alt || false
|
||||
}, {
|
||||
button: button,
|
||||
isPrimary: true
|
||||
@@ -177,6 +178,16 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(rbushEntries[0].feature).to.be(feature);
|
||||
});
|
||||
|
||||
it('accepts a source', function() {
|
||||
var feature = new ol.Feature(
|
||||
new ol.geom.Point([0, 0]));
|
||||
var source = new ol.source.Vector({features: [feature]});
|
||||
var modify = new ol.interaction.Modify({source: source});
|
||||
var rbushEntries = modify.rBush_.getAll();
|
||||
expect(rbushEntries.length).to.be(1);
|
||||
expect(rbushEntries[0].feature).to.be(feature);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('vertex deletion', function() {
|
||||
@@ -201,10 +212,10 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(second.getGeometry().getRevision()).to.equal(secondRevision);
|
||||
expect(second.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
|
||||
simulateEvent('pointerdown', 10, -20, false, 0);
|
||||
simulateEvent('pointerup', 10, -20, false, 0);
|
||||
simulateEvent('click', 10, -20, false, 0);
|
||||
simulateEvent('singleclick', 10, -20, false, 0);
|
||||
simulateEvent('pointerdown', 10, -20, {alt: true}, 0);
|
||||
simulateEvent('pointerup', 10, -20, {alt: true}, 0);
|
||||
simulateEvent('click', 10, -20, {alt: true}, 0);
|
||||
simulateEvent('singleclick', 10, -20, {alt: true}, 0);
|
||||
|
||||
expect(first.getGeometry().getRevision()).to.equal(firstRevision + 1);
|
||||
expect(first.getGeometry().getCoordinates()[0]).to.have.length(4);
|
||||
@@ -237,10 +248,10 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(first.getGeometry().getRevision()).to.equal(firstRevision);
|
||||
expect(first.getGeometry().getCoordinates()).to.have.length(5);
|
||||
|
||||
simulateEvent('pointerdown', 0, 0, false, 0);
|
||||
simulateEvent('pointerup', 0, 0, false, 0);
|
||||
simulateEvent('click', 0, 0, false, 0);
|
||||
simulateEvent('singleclick', 0, 0, false, 0);
|
||||
simulateEvent('pointerdown', 0, 0, {alt: true}, 0);
|
||||
simulateEvent('pointerup', 0, 0, {alt: true}, 0);
|
||||
simulateEvent('click', 0, 0, {alt: true}, 0);
|
||||
simulateEvent('singleclick', 0, 0, {alt: true}, 0);
|
||||
|
||||
expect(first.getGeometry().getRevision()).to.equal(firstRevision + 1);
|
||||
expect(first.getGeometry().getCoordinates()).to.have.length(4);
|
||||
@@ -273,10 +284,10 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(first.getGeometry().getRevision()).to.equal(firstRevision);
|
||||
expect(first.getGeometry().getCoordinates()).to.have.length(5);
|
||||
|
||||
simulateEvent('pointerdown', 40, 0, false, 0);
|
||||
simulateEvent('pointerup', 40, 0, false, 0);
|
||||
simulateEvent('click', 40, 0, false, 0);
|
||||
simulateEvent('singleclick', 40, 0, false, 0);
|
||||
simulateEvent('pointerdown', 40, 0, {alt: true}, 0);
|
||||
simulateEvent('pointerup', 40, 0, {alt: true}, 0);
|
||||
simulateEvent('click', 40, 0, {alt: true}, 0);
|
||||
simulateEvent('singleclick', 40, 0, {alt: true}, 0);
|
||||
|
||||
expect(first.getGeometry().getRevision()).to.equal(firstRevision + 1);
|
||||
expect(first.getGeometry().getCoordinates()).to.have.length(4);
|
||||
@@ -309,8 +320,8 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(first.getGeometry().getRevision()).to.equal(firstRevision);
|
||||
expect(first.getGeometry().getCoordinates()).to.have.length(5);
|
||||
|
||||
simulateEvent('pointerdown', 40, 0, false, 0);
|
||||
simulateEvent('pointerup', 40, 0, false, 0);
|
||||
simulateEvent('pointerdown', 40, 0, null, 0);
|
||||
simulateEvent('pointerup', 40, 0, null, 0);
|
||||
|
||||
var removed = modify.removePoint();
|
||||
|
||||
@@ -343,25 +354,25 @@ describe('ol.interaction.Modify', function() {
|
||||
map.addInteraction(modify);
|
||||
|
||||
// Move first vertex
|
||||
simulateEvent('pointermove', 0, 0, false, 0);
|
||||
simulateEvent('pointerdown', 0, 0, false, 0);
|
||||
simulateEvent('pointermove', -10, -10, false, 0);
|
||||
simulateEvent('pointerdrag', -10, -10, false, 0);
|
||||
simulateEvent('pointerup', -10, -10, false, 0);
|
||||
simulateEvent('pointermove', 0, 0, null, 0);
|
||||
simulateEvent('pointerdown', 0, 0, null, 0);
|
||||
simulateEvent('pointermove', -10, -10, null, 0);
|
||||
simulateEvent('pointerdrag', -10, -10, null, 0);
|
||||
simulateEvent('pointerup', -10, -10, null, 0);
|
||||
|
||||
// Move middle vertex
|
||||
simulateEvent('pointermove', 0, -40, false, 0);
|
||||
simulateEvent('pointerdown', 0, -40, false, 0);
|
||||
simulateEvent('pointermove', 10, -30, false, 0);
|
||||
simulateEvent('pointerdrag', 10, -30, false, 0);
|
||||
simulateEvent('pointerup', 10, -30, false, 0);
|
||||
simulateEvent('pointermove', 0, -40, null, 0);
|
||||
simulateEvent('pointerdown', 0, -40, null, 0);
|
||||
simulateEvent('pointermove', 10, -30, null, 0);
|
||||
simulateEvent('pointerdrag', 10, -30, null, 0);
|
||||
simulateEvent('pointerup', 10, -30, null, 0);
|
||||
|
||||
// Move last vertex
|
||||
simulateEvent('pointermove', 40, 0, false, 0);
|
||||
simulateEvent('pointerdown', 40, 0, false, 0);
|
||||
simulateEvent('pointermove', 50, -10, false, 0);
|
||||
simulateEvent('pointerdrag', 50, -10, false, 0);
|
||||
simulateEvent('pointerup', 50, -10, false, 0);
|
||||
simulateEvent('pointermove', 40, 0, null, 0);
|
||||
simulateEvent('pointerdown', 40, 0, null, 0);
|
||||
simulateEvent('pointermove', 50, -10, null, 0);
|
||||
simulateEvent('pointerdrag', 50, -10, null, 0);
|
||||
simulateEvent('pointerup', 50, -10, null, 0);
|
||||
|
||||
expect(lineFeature.getGeometry().getCoordinates()[0][2]).to.equal(10);
|
||||
expect(lineFeature.getGeometry().getCoordinates()[2][2]).to.equal(30);
|
||||
@@ -382,21 +393,21 @@ describe('ol.interaction.Modify', function() {
|
||||
map.addInteraction(modify);
|
||||
|
||||
// Change center
|
||||
simulateEvent('pointermove', 10, -10, false, 0);
|
||||
simulateEvent('pointerdown', 10, -10, false, 0);
|
||||
simulateEvent('pointermove', 5, -5, false, 0);
|
||||
simulateEvent('pointerdrag', 5, -5, false, 0);
|
||||
simulateEvent('pointerup', 5, -5, false, 0);
|
||||
simulateEvent('pointermove', 10, -10, null, 0);
|
||||
simulateEvent('pointerdown', 10, -10, null, 0);
|
||||
simulateEvent('pointermove', 5, -5, null, 0);
|
||||
simulateEvent('pointerdrag', 5, -5, null, 0);
|
||||
simulateEvent('pointerup', 5, -5, null, 0);
|
||||
|
||||
expect(circleFeature.getGeometry().getRadius()).to.equal(20);
|
||||
expect(circleFeature.getGeometry().getCenter()).to.eql([5, 5]);
|
||||
|
||||
// Increase radius
|
||||
simulateEvent('pointermove', 25, -4, false, 0);
|
||||
simulateEvent('pointerdown', 25, -4, false, 0);
|
||||
simulateEvent('pointermove', 30, -5, false, 0);
|
||||
simulateEvent('pointerdrag', 30, -5, false, 0);
|
||||
simulateEvent('pointerup', 30, -5, false, 0);
|
||||
simulateEvent('pointermove', 25, -4, null, 0);
|
||||
simulateEvent('pointerdown', 25, -4, null, 0);
|
||||
simulateEvent('pointermove', 30, -5, null, 0);
|
||||
simulateEvent('pointerdrag', 30, -5, null, 0);
|
||||
simulateEvent('pointerup', 30, -5, null, 0);
|
||||
|
||||
expect(circleFeature.getGeometry().getRadius()).to.equal(25);
|
||||
expect(circleFeature.getGeometry().getCenter()).to.eql([5, 5]);
|
||||
@@ -421,10 +432,10 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(feature.getGeometry().getRevision()).to.equal(1);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
|
||||
simulateEvent('pointerdown', 10, -20, false, 0);
|
||||
simulateEvent('pointerup', 10, -20, false, 0);
|
||||
simulateEvent('click', 10, -20, false, 0);
|
||||
simulateEvent('singleclick', 10, -20, false, 0);
|
||||
simulateEvent('pointerdown', 10, -20, {alt: true}, 0);
|
||||
simulateEvent('pointerup', 10, -20, {alt: true}, 0);
|
||||
simulateEvent('click', 10, -20, {alt: true}, 0);
|
||||
simulateEvent('singleclick', 10, -20, {alt: true}, 0);
|
||||
|
||||
expect(feature.getGeometry().getRevision()).to.equal(2);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(4);
|
||||
@@ -436,10 +447,10 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(feature.getGeometry().getRevision()).to.equal(1);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
|
||||
simulateEvent('pointerdown', 40, -20, false, 0);
|
||||
simulateEvent('pointerup', 40, -20, false, 0);
|
||||
simulateEvent('click', 40, -20, false, 0);
|
||||
simulateEvent('singleclick', 40, -20, false, 0);
|
||||
simulateEvent('pointerdown', 40, -20, null, 0);
|
||||
simulateEvent('pointerup', 40, -20, null, 0);
|
||||
simulateEvent('click', 40, -20, null, 0);
|
||||
simulateEvent('singleclick', 40, -20, null, 0);
|
||||
|
||||
expect(feature.getGeometry().getRevision()).to.equal(2);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(6);
|
||||
@@ -451,10 +462,10 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(feature.getGeometry().getRevision()).to.equal(1);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
|
||||
simulateEvent('pointerdown', 40, -20, false, 0);
|
||||
simulateEvent('pointerup', 40, -20, false, 0);
|
||||
simulateEvent('click', 40, -20, false, 0);
|
||||
simulateEvent('singleclick', 40, -20, false, 0);
|
||||
simulateEvent('pointerdown', 40, -20, null, 0);
|
||||
simulateEvent('pointerup', 40, -20, null, 0);
|
||||
simulateEvent('click', 40, -20, null, 0);
|
||||
simulateEvent('singleclick', 40, -20, null, 0);
|
||||
|
||||
expect(feature.getGeometry().getRevision()).to.equal(2);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(6);
|
||||
@@ -462,10 +473,10 @@ describe('ol.interaction.Modify', function() {
|
||||
validateEvents(events, [feature]);
|
||||
events.length = 0;
|
||||
|
||||
simulateEvent('pointerdown', 40, -20, false, 0);
|
||||
simulateEvent('pointerup', 40, -20, false, 0);
|
||||
simulateEvent('click', 40, -20, false, 0);
|
||||
simulateEvent('singleclick', 40, -20, false, 0);
|
||||
simulateEvent('pointerdown', 40, -20, {alt: true}, 0);
|
||||
simulateEvent('pointerup', 40, -20, {alt: true}, 0);
|
||||
simulateEvent('click', 40, -20, {alt: true}, 0);
|
||||
simulateEvent('singleclick', 40, -20, {alt: true}, 0);
|
||||
|
||||
expect(feature.getGeometry().getRevision()).to.equal(3);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
@@ -477,11 +488,11 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(feature.getGeometry().getRevision()).to.equal(1);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
|
||||
simulateEvent('pointermove', 40, -20, false, 0);
|
||||
simulateEvent('pointerdown', 40, -20, false, 0);
|
||||
simulateEvent('pointermove', 30, -20, false, 0);
|
||||
simulateEvent('pointerdrag', 30, -20, false, 0);
|
||||
simulateEvent('pointerup', 30, -20, false, 0);
|
||||
simulateEvent('pointermove', 40, -20, null, 0);
|
||||
simulateEvent('pointerdown', 40, -20, null, 0);
|
||||
simulateEvent('pointermove', 30, -20, null, 0);
|
||||
simulateEvent('pointerdrag', 30, -20, null, 0);
|
||||
simulateEvent('pointerup', 30, -20, null, 0);
|
||||
|
||||
expect(feature.getGeometry().getRevision()).to.equal(4);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(6);
|
||||
@@ -493,12 +504,12 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(feature.getGeometry().getRevision()).to.equal(1);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
|
||||
simulateEvent('pointermove', 40, -20, false, 0);
|
||||
simulateEvent('pointermove', 40, -20, null, 0);
|
||||
// right click
|
||||
simulateEvent('pointerdown', 40, -20, false, 1);
|
||||
simulateEvent('pointermove', 30, -20, false, 1);
|
||||
simulateEvent('pointerdrag', 30, -20, false, 1);
|
||||
simulateEvent('pointerup', 30, -20, false, 1);
|
||||
simulateEvent('pointerdown', 40, -20, null, 1);
|
||||
simulateEvent('pointermove', 30, -20, null, 1);
|
||||
simulateEvent('pointerdrag', 30, -20, null, 1);
|
||||
simulateEvent('pointerup', 30, -20, null, 1);
|
||||
|
||||
expect(feature.getGeometry().getRevision()).to.equal(1);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
@@ -528,13 +539,13 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(feature.getGeometry().getRevision()).to.equal(1);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
|
||||
simulateEvent('pointerdown', 10, -20, false, 0);
|
||||
simulateEvent('pointerup', 10, -20, false, 0);
|
||||
simulateEvent('click', 10, -20, false, 0);
|
||||
simulateEvent('pointerdown', 10, -20, false, 0);
|
||||
simulateEvent('pointerup', 10, -20, false, 0);
|
||||
simulateEvent('click', 10, -20, false, 0);
|
||||
simulateEvent('dblclick', 10, -20, false, 0);
|
||||
simulateEvent('pointerdown', 10, -20, null, 0);
|
||||
simulateEvent('pointerup', 10, -20, null, 0);
|
||||
simulateEvent('click', 10, -20, null, 0);
|
||||
simulateEvent('pointerdown', 10, -20, null, 0);
|
||||
simulateEvent('pointerup', 10, -20, null, 0);
|
||||
simulateEvent('click', 10, -20, null, 0);
|
||||
simulateEvent('dblclick', 10, -20, null, 0);
|
||||
|
||||
expect(feature.getGeometry().getRevision()).to.equal(2);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(4);
|
||||
@@ -547,10 +558,10 @@ describe('ol.interaction.Modify', function() {
|
||||
expect(feature.getGeometry().getRevision()).to.equal(1);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
|
||||
simulateEvent('pointerdown', 10, -20, false, 0);
|
||||
simulateEvent('pointerup', 10, -20, false, 0);
|
||||
simulateEvent('click', 10, -20, false, 0);
|
||||
simulateEvent('singleclick', 10, -20, false, 0);
|
||||
simulateEvent('pointerdown', 10, -20, null, 0);
|
||||
simulateEvent('pointerup', 10, -20, null, 0);
|
||||
simulateEvent('click', 10, -20, null, 0);
|
||||
simulateEvent('singleclick', 10, -20, null, 0);
|
||||
|
||||
expect(feature.getGeometry().getRevision()).to.equal(1);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
@@ -573,20 +584,20 @@ describe('ol.interaction.Modify', function() {
|
||||
var feature = features[0];
|
||||
|
||||
// move first vertex
|
||||
simulateEvent('pointermove', 0, 0, false, 0);
|
||||
simulateEvent('pointerdown', 0, 0, false, 0);
|
||||
simulateEvent('pointermove', -10, -10, false, 0);
|
||||
simulateEvent('pointerdrag', -10, -10, false, 0);
|
||||
simulateEvent('pointerup', -10, -10, false, 0);
|
||||
simulateEvent('pointermove', 0, 0, null, 0);
|
||||
simulateEvent('pointerdown', 0, 0, null, 0);
|
||||
simulateEvent('pointermove', -10, -10, null, 0);
|
||||
simulateEvent('pointerdrag', -10, -10, null, 0);
|
||||
simulateEvent('pointerup', -10, -10, null, 0);
|
||||
|
||||
expect(listenerSpy.callCount).to.be(0);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
|
||||
// try to add vertex
|
||||
simulateEvent('pointerdown', 40, -20, false, 0);
|
||||
simulateEvent('pointerup', 40, -20, false, 0);
|
||||
simulateEvent('click', 40, -20, false, 0);
|
||||
simulateEvent('singleclick', 40, -20, false, 0);
|
||||
simulateEvent('pointerdown', 40, -20, null, 0);
|
||||
simulateEvent('pointerup', 40, -20, null, 0);
|
||||
simulateEvent('click', 40, -20, null, 0);
|
||||
simulateEvent('singleclick', 40, -20, null, 0);
|
||||
|
||||
expect(listenerSpy.callCount).to.be(1);
|
||||
expect(feature.getGeometry().getCoordinates()[0]).to.have.length(5);
|
||||
@@ -693,7 +704,7 @@ describe('ol.interaction.Modify', function() {
|
||||
map.addInteraction(modify);
|
||||
expect(modify.vertexFeature_).to.be(null);
|
||||
|
||||
simulateEvent('pointermove', 10, -20, false, 0);
|
||||
simulateEvent('pointermove', 10, -20, null, 0);
|
||||
expect(modify.vertexFeature_).to.not.be(null);
|
||||
|
||||
modify.setActive(false);
|
||||
|
||||
Reference in New Issue
Block a user