bruce-cesium 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/bruce-cesium.es5.js +108 -10
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +104 -7
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +1 -0
  6. package/dist/lib/bruce-cesium.js.map +1 -1
  7. package/dist/lib/rendering/menu-item-manager.js +3 -1
  8. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  9. package/dist/lib/rendering/render-addons/measure-addon.js +5 -0
  10. package/dist/lib/rendering/render-addons/measure-addon.js.map +1 -1
  11. package/dist/lib/rendering/render-helper.js +32 -1
  12. package/dist/lib/rendering/render-helper.js.map +1 -1
  13. package/dist/lib/rendering/render-managers/common/shared-getters.js +34 -0
  14. package/dist/lib/rendering/render-managers/common/shared-getters.js.map +1 -0
  15. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +17 -5
  16. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  17. package/dist/lib/rendering/render-managers/render-manager.js +19 -0
  18. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
  19. package/dist/lib/viewer/cesium-view-monitor.js +2 -0
  20. package/dist/lib/viewer/cesium-view-monitor.js.map +1 -1
  21. package/dist/types/bruce-cesium.d.ts +1 -0
  22. package/dist/types/rendering/menu-item-manager.d.ts +1 -0
  23. package/dist/types/rendering/render-managers/common/shared-getters.d.ts +18 -0
  24. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +3 -1
  25. package/dist/types/rendering/render-managers/render-manager.d.ts +1 -0
  26. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
- import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, EntityFilterGetter, BatchedDataGetter, ObjectUtils, Tileset, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTileSource, Camera, MathUtils } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Cartesian3, Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Entity, Primitive, Cesium3DTileFeature, Color, HeightReference, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, OrthographicFrustum, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, createWorldTerrain, CesiumTerrainProvider, EllipsoidTerrainProvider, HeadingPitchRange, Matrix4, Cesium3DTileset, EllipsoidGeodesic } from 'cesium';
1
+ import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, ObjectUtils, Tileset, EntityFilterGetter, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTileSource, Camera, MathUtils } from 'bruce-models';
2
+ import { Cartesian2, Cartographic, Math as Math$1, Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, OrthographicFrustum, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, createWorldTerrain, CesiumTerrainProvider, EllipsoidTerrainProvider, EllipsoidGeodesic, Matrix4, Cesium3DTileset } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -117,6 +117,7 @@ var CesiumViewMonitor = /** @class */ (function () {
117
117
  clearInterval(this.checkInterval);
118
118
  };
119
119
  CesiumViewMonitor.prototype.tryDoUpdate = function () {
120
+ var _a;
120
121
  var viewRect = null;
121
122
  var center = null;
122
123
  var camera = this.viewer.camera;
@@ -177,6 +178,7 @@ var CesiumViewMonitor = /** @class */ (function () {
177
178
  viewRect.west = Math.min(viewRect.west, centerLong - (MINIMUM_VIEW_AREA_SIZE_DEGREES / 2));
178
179
  viewRect.south = Math.min(viewRect.south, centerLat - (MINIMUM_VIEW_AREA_SIZE_DEGREES / 2));
179
180
  viewRect.north = Math.max(viewRect.north, centerLat + (MINIMUM_VIEW_AREA_SIZE_DEGREES / 2));
181
+ viewRect.alt = (_a = this.viewer.scene.camera.positionCartographic) === null || _a === void 0 ? void 0 : _a.height;
180
182
  }
181
183
  if (center && viewRect) {
182
184
  if ((!this.target || (this.target && !arePosEqual(this.target, center))) ||
@@ -552,6 +554,25 @@ var RenderManager;
552
554
  return null;
553
555
  }
554
556
  Utils.GetZoomControlFromDistance = GetZoomControlFromDistance;
557
+ function GetZoomMinMax(zoomControl) {
558
+ var min = 0;
559
+ var max = 100;
560
+ for (var i = 0; i < zoomControl.length; i++) {
561
+ var zoomItem = zoomControl[i];
562
+ if (zoomItem.MinZoom != null) {
563
+ if (zoomItem.MinZoom < min) {
564
+ min = zoomItem.MinZoom;
565
+ }
566
+ }
567
+ if (zoomItem.MaxZoom != null) {
568
+ if (zoomItem.MaxZoom > max) {
569
+ max = zoomItem.MaxZoom;
570
+ }
571
+ }
572
+ }
573
+ return [min, max];
574
+ }
575
+ Utils.GetZoomMinMax = GetZoomMinMax;
555
576
  })(Utils = RenderManager.Utils || (RenderManager.Utils = {}));
556
577
  })(RenderManager || (RenderManager = {}));
557
578
 
@@ -1355,7 +1376,7 @@ var EntityRenderEngine;
1355
1376
  var EntitiesRenderManager;
1356
1377
  (function (EntitiesRenderManager) {
1357
1378
  var Manager = /** @class */ (function () {
1358
- function Manager(viewer, visualsManager, apiGetter, item) {
1379
+ function Manager(viewer, visualsManager, apiGetter, item, sharedGetters) {
1359
1380
  this.getter = null;
1360
1381
  this.getterSub = null;
1361
1382
  this.disposed = false;
@@ -1365,6 +1386,7 @@ var EntitiesRenderManager;
1365
1386
  this.isRunningCheck = false;
1366
1387
  this.viewMonitorRemoval = null;
1367
1388
  this.viewer = viewer;
1389
+ this.sharedGetters = sharedGetters;
1368
1390
  this.apiGetter = apiGetter;
1369
1391
  this.item = item;
1370
1392
  this.visualsManager = visualsManager;
@@ -1377,16 +1399,23 @@ var EntitiesRenderManager;
1377
1399
  configurable: true
1378
1400
  });
1379
1401
  Manager.prototype.Init = function () {
1402
+ var _a;
1380
1403
  return __awaiter(this, void 0, void 0, function () {
1381
- var api;
1404
+ var api, minMax;
1382
1405
  var _this = this;
1383
- return __generator(this, function (_a) {
1406
+ return __generator(this, function (_b) {
1384
1407
  if (this.disposed) {
1385
1408
  throw (new Error("This item is disposed."));
1386
1409
  }
1387
1410
  api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
1388
- this.getter = new EntityFilterGetter.Getter(api, new CesiumViewMonitor(this.viewer), this.item.BruceEntity["EntityType.ID"], 500, {});
1389
- this.getter.IncludeMenuItem(this.item.id, [], 0, 100000);
1411
+ this.getter = this.sharedGetters.GetOrCreateFilterGetter({
1412
+ api: api,
1413
+ attrFilter: (_a = this.item.BruceEntity.Filter) !== null && _a !== void 0 ? _a : {},
1414
+ batchSize: 500,
1415
+ typeId: this.item.BruceEntity["EntityType.ID"]
1416
+ });
1417
+ minMax = RenderManager.Utils.GetZoomMinMax(this.item.CameraZoomSettings);
1418
+ this.getter.IncludeMenuItem(this.item.id, [], minMax[0], minMax[1]);
1390
1419
  this.getterSub = this.getter.OnUpdate.Subscribe(function (entities) {
1391
1420
  _this.onGetterUpdate(entities);
1392
1421
  });
@@ -1407,6 +1436,9 @@ var EntitiesRenderManager;
1407
1436
  }
1408
1437
  (_a = this.getterSub) === null || _a === void 0 ? void 0 : _a.call(this);
1409
1438
  this.getterSub = null;
1439
+ if (this.getter) {
1440
+ this.getter.ExcludeMenuItem(this.item.id);
1441
+ }
1410
1442
  this.disposed = true;
1411
1443
  this.visualsManager.RemoveByMenuItemId(this.item.id);
1412
1444
  (_b = this.entityCheckRemoval) === null || _b === void 0 ? void 0 : _b.call(this);
@@ -2828,6 +2860,35 @@ var TilesetCadRenderManager;
2828
2860
  TilesetCadRenderManager.Manager = Manager;
2829
2861
  })(TilesetCadRenderManager || (TilesetCadRenderManager = {}));
2830
2862
 
2863
+ function createFilterGetterCacheKey(params) {
2864
+ var cacheKey = "";
2865
+ cacheKey += params.api.GetBaseUrl();
2866
+ cacheKey += params.typeId;
2867
+ cacheKey += params.batchSize;
2868
+ cacheKey += JSON.stringify(params.attrFilter);
2869
+ return cacheKey;
2870
+ }
2871
+ var SharedGetters;
2872
+ (function (SharedGetters) {
2873
+ var Cache = /** @class */ (function () {
2874
+ function Cache(viewer) {
2875
+ this.data = {};
2876
+ this.viewer = viewer;
2877
+ }
2878
+ Cache.prototype.GetOrCreateFilterGetter = function (params) {
2879
+ var cacheKey = createFilterGetterCacheKey(params);
2880
+ var getter = this.data[cacheKey];
2881
+ if (!getter) {
2882
+ getter = new EntityFilterGetter.Getter(params.api, new CesiumViewMonitor(this.viewer), params.typeId, params.batchSize, params.attrFilter);
2883
+ this.data[cacheKey] = getter;
2884
+ }
2885
+ return getter;
2886
+ };
2887
+ return Cache;
2888
+ }());
2889
+ SharedGetters.Cache = Cache;
2890
+ })(SharedGetters || (SharedGetters = {}));
2891
+
2831
2892
  /**
2832
2893
  * Utility to keep track of enabled menu items within a Cesium viewer.
2833
2894
  */
@@ -2842,6 +2903,7 @@ var MenuItemManager;
2842
2903
  visualsRegister = new VisualsRegister.Register(viewer);
2843
2904
  }
2844
2905
  this.visualsRegister = visualsRegister;
2906
+ this.sharedGetters = new SharedGetters.Cache(this.viewer);
2845
2907
  }
2846
2908
  Object.defineProperty(Manager.prototype, "Viewer", {
2847
2909
  get: function () {
@@ -2892,7 +2954,7 @@ var MenuItemManager;
2892
2954
  };
2893
2955
  switch (params.item.Type) {
2894
2956
  case MenuItem.EType.Entities:
2895
- rItem.renderManager = new EntitiesRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item);
2957
+ rItem.renderManager = new EntitiesRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item, this.sharedGetters);
2896
2958
  break;
2897
2959
  case MenuItem.EType.EntitiesLoaded:
2898
2960
  rItem.renderManager = new EntitiesLoadedRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item);
@@ -3087,8 +3149,39 @@ var RenderHelper;
3087
3149
  RenderHelper.RenderEntityTypes = RenderEntityTypes;
3088
3150
  function RenderEntityFilter(params, filter) {
3089
3151
  return __awaiter(this, void 0, void 0, function () {
3152
+ var item;
3090
3153
  return __generator(this, function (_a) {
3091
- throw (new Error("Not implemented."));
3154
+ switch (_a.label) {
3155
+ case 0:
3156
+ item = {
3157
+ BruceEntity: {
3158
+ "EntityType.ID": filter.entityTypeId,
3159
+ Filter: filter
3160
+ },
3161
+ Type: MenuItem.EType.Entities,
3162
+ Caption: "Rendering Filtered Entities",
3163
+ CameraZoomSettings: [
3164
+ {
3165
+ DisplayType: ZoomControl.EDisplayType.Model3D,
3166
+ LODCategoryID: "glb",
3167
+ LODLevel: 0,
3168
+ MaxZoom: 100000,
3169
+ MinZoom: 0,
3170
+ StyleID: 0 // 0 = Attempt to get entity type's default.
3171
+ }
3172
+ ],
3173
+ id: ObjectUtils.UId(),
3174
+ Children: [],
3175
+ showAllLayers: true,
3176
+ showAllLayersExcludeBelow: false,
3177
+ tagIds: []
3178
+ };
3179
+ return [4 /*yield*/, params.manager.RenderItem({
3180
+ apiGetter: params.apiGetter,
3181
+ item: item
3182
+ })];
3183
+ case 1: return [2 /*return*/, _a.sent()];
3184
+ }
3092
3185
  });
3093
3186
  });
3094
3187
  }
@@ -3934,6 +4027,11 @@ var MeasureAddon = /** @class */ (function () {
3934
4027
  else if (entity.point || entity.billboard) {
3935
4028
  this.items = MPoint.Render(this.container, this.viewer, entity);
3936
4029
  }
4030
+ // TODO:
4031
+ // - Polygon measurement.
4032
+ // - Polygon that is an angle measurement?
4033
+ // We'll need params for the addon that dictate what measurements we want to see.
4034
+ // Eg: I care about "length", "area" but not "angle" measurements in polygons.
3937
4035
  }
3938
4036
  };
3939
4037
  MeasureAddon.prototype.Render = function (visuals) {
@@ -3961,5 +4059,5 @@ var MeasureAddon = /** @class */ (function () {
3961
4059
  return MeasureAddon;
3962
4060
  }());
3963
4061
 
3964
- export { CesiumViewMonitor, ViewerUtils, MenuItemManager, EntityRenderEngine, RenderHelper, VisualsRegister, RenderManager, EntitiesIdsRenderManager, EntitiesLoadedRenderManager, EntitiesRenderManager, EntityRenderManager, TilesetCadRenderManager, ViewRenderEngine, TileRenderEngine, MeasureAddon };
4062
+ export { CesiumViewMonitor, ViewerUtils, MenuItemManager, EntityRenderEngine, RenderHelper, VisualsRegister, RenderManager, EntitiesIdsRenderManager, EntitiesLoadedRenderManager, EntitiesRenderManager, EntityRenderManager, TilesetCadRenderManager, ViewRenderEngine, TileRenderEngine, MeasureAddon, SharedGetters };
3965
4063
  //# sourceMappingURL=bruce-cesium.es5.js.map