Skip to content

Commit 9afac5d

Browse files
authored
Merge pull request #5043 from AnalyticalGraphicsInc/selectedEntityChangeEvent
Add viewer.selectedEntityChanged event
2 parents 8e395af + fbc0f0a commit 9afac5d

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

CHANGES.md

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ Change Log
2626
* Add support for `Scene.pickPosition` in Columbus view and 2D. [#4990](https://github.com/AnalyticalGraphicsInc/cesium/pull/4990)
2727
* Added `Label.scaleByDistance` to control minimum/maximum label size based on distance from the camera. [#5019](https://github.com/AnalyticalGraphicsInc/cesium/pull/5019)
2828
* Add support for depth picking translucent primitives when `Scene.pickTranslucentDepth` is `true`. [#4979](https://github.com/AnalyticalGraphicsInc/cesium/pull/4979)
29+
* Added the event `Viewer.selectedEntityChanged`, which is raised when the value of `viewer.selectedEntity` changes.
2930

3031
### 1.30 - 2017-02-01
3132

Source/Widgets/Viewer/Viewer.js

+15
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ define([
77
'../../Core/defineProperties',
88
'../../Core/destroyObject',
99
'../../Core/DeveloperError',
10+
'../../Core/Event',
1011
'../../Core/EventHelper',
1112
'../../Core/isArray',
1213
'../../Core/Matrix4',
@@ -49,6 +50,7 @@ define([
4950
defineProperties,
5051
destroyObject,
5152
DeveloperError,
53+
Event,
5254
EventHelper,
5355
isArray,
5456
Matrix4,
@@ -661,6 +663,7 @@ Either specify options.terrainProvider instead or set options.baseLayerPicker to
661663
this._zoomTarget = undefined;
662664
this._zoomPromise = undefined;
663665
this._zoomOptions = undefined;
666+
this._selectedEntityChanged = new Event();
664667

665668
knockout.track(this, ['_trackedEntity', '_selectedEntity', '_clockTrackedDataSource']);
666669

@@ -1200,9 +1203,21 @@ Either specify options.terrainProvider instead or set options.baseLayerPicker to
12001203
selectionIndicatorViewModel.animateDepart();
12011204
}
12021205
}
1206+
this._selectedEntityChanged.raiseEvent(value);
12031207
}
12041208
}
12051209
},
1210+
/**
1211+
* Gets the event that is raised when the selected entity chages
1212+
* @memberof Viewer.prototype
1213+
* @type {Event}
1214+
* @readonly
1215+
*/
1216+
selectedEntityChanged : {
1217+
get : function() {
1218+
return this._selectedEntityChanged;
1219+
}
1220+
},
12061221
/**
12071222
* Gets or sets the data source to track with the viewer's clock.
12081223
* @memberof Viewer.prototype

Specs/Widgets/Viewer/ViewerSpec.js

+24
Original file line numberDiff line numberDiff line change
@@ -826,6 +826,30 @@ defineSuite([
826826
viewer.destroy();
827827
});
828828

829+
it('raises an event when the selected entity changes', function() {
830+
var viewer = createViewer(container);
831+
832+
var dataSource = new MockDataSource();
833+
viewer.dataSources.add(dataSource);
834+
835+
var entity = new Entity();
836+
entity.position = new ConstantPositionProperty(new Cartesian3(123456, 123456, 123456));
837+
838+
dataSource.entities.add(entity);
839+
840+
var myEntity;
841+
viewer.selectedEntityChanged.addEventListener(function(newSelection) {
842+
myEntity = newSelection;
843+
});
844+
viewer.selectedEntity = entity;
845+
expect(myEntity).toBe(entity);
846+
847+
viewer.selectedEntity = undefined;
848+
expect(myEntity).toBeUndefined();
849+
850+
viewer.destroy();
851+
});
852+
829853
it('selectedEntity sets InfoBox properties', function() {
830854
var viewer = createViewer(container);
831855

0 commit comments

Comments
 (0)