bruce-cesium 0.2.2 → 0.2.3

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.
@@ -120,6 +120,7 @@
120
120
  clearInterval(this.checkInterval);
121
121
  };
122
122
  CesiumViewMonitor.prototype.tryDoUpdate = function () {
123
+ var _a;
123
124
  var viewRect = null;
124
125
  var center = null;
125
126
  var camera = this.viewer.camera;
@@ -180,6 +181,7 @@
180
181
  viewRect.west = Math.min(viewRect.west, centerLong - (MINIMUM_VIEW_AREA_SIZE_DEGREES / 2));
181
182
  viewRect.south = Math.min(viewRect.south, centerLat - (MINIMUM_VIEW_AREA_SIZE_DEGREES / 2));
182
183
  viewRect.north = Math.max(viewRect.north, centerLat + (MINIMUM_VIEW_AREA_SIZE_DEGREES / 2));
184
+ viewRect.alt = (_a = this.viewer.scene.camera.positionCartographic) === null || _a === void 0 ? void 0 : _a.height;
183
185
  }
184
186
  if (center && viewRect) {
185
187
  if ((!this.target || (this.target && !arePosEqual(this.target, center))) ||
@@ -553,6 +555,25 @@
553
555
  return null;
554
556
  }
555
557
  Utils.GetZoomControlFromDistance = GetZoomControlFromDistance;
558
+ function GetZoomMinMax(zoomControl) {
559
+ var min = 0;
560
+ var max = 100;
561
+ for (var i = 0; i < zoomControl.length; i++) {
562
+ var zoomItem = zoomControl[i];
563
+ if (zoomItem.MinZoom != null) {
564
+ if (zoomItem.MinZoom < min) {
565
+ min = zoomItem.MinZoom;
566
+ }
567
+ }
568
+ if (zoomItem.MaxZoom != null) {
569
+ if (zoomItem.MaxZoom > max) {
570
+ max = zoomItem.MaxZoom;
571
+ }
572
+ }
573
+ }
574
+ return [min, max];
575
+ }
576
+ Utils.GetZoomMinMax = GetZoomMinMax;
556
577
  })(Utils = RenderManager.Utils || (RenderManager.Utils = {}));
557
578
  })(exports.RenderManager || (exports.RenderManager = {}));
558
579
 
@@ -1350,7 +1371,7 @@
1350
1371
 
1351
1372
  (function (EntitiesRenderManager) {
1352
1373
  var Manager = /** @class */ (function () {
1353
- function Manager(viewer, visualsManager, apiGetter, item) {
1374
+ function Manager(viewer, visualsManager, apiGetter, item, sharedGetters) {
1354
1375
  this.getter = null;
1355
1376
  this.getterSub = null;
1356
1377
  this.disposed = false;
@@ -1360,6 +1381,7 @@
1360
1381
  this.isRunningCheck = false;
1361
1382
  this.viewMonitorRemoval = null;
1362
1383
  this.viewer = viewer;
1384
+ this.sharedGetters = sharedGetters;
1363
1385
  this.apiGetter = apiGetter;
1364
1386
  this.item = item;
1365
1387
  this.visualsManager = visualsManager;
@@ -1373,15 +1395,21 @@
1373
1395
  });
1374
1396
  Manager.prototype.Init = function () {
1375
1397
  return __awaiter(this, void 0, void 0, function () {
1376
- var api;
1398
+ var api, minMax;
1377
1399
  var _this = this;
1378
1400
  return __generator(this, function (_a) {
1379
1401
  if (this.disposed) {
1380
1402
  throw (new Error("This item is disposed."));
1381
1403
  }
1382
1404
  api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
1383
- this.getter = new bruceModels.EntityFilterGetter.Getter(api, new CesiumViewMonitor(this.viewer), this.item.BruceEntity["EntityType.ID"], 500, {});
1384
- this.getter.IncludeMenuItem(this.item.id, [], 0, 100000);
1405
+ this.getter = this.sharedGetters.GetOrCreateFilterGetter({
1406
+ api: api,
1407
+ attrFilter: {},
1408
+ batchSize: 500,
1409
+ typeId: this.item.BruceEntity["EntityType.ID"]
1410
+ });
1411
+ minMax = exports.RenderManager.Utils.GetZoomMinMax(this.item.CameraZoomSettings);
1412
+ this.getter.IncludeMenuItem(this.item.id, [], minMax[0], minMax[1]);
1385
1413
  this.getterSub = this.getter.OnUpdate.Subscribe(function (entities) {
1386
1414
  _this.onGetterUpdate(entities);
1387
1415
  });
@@ -1402,6 +1430,9 @@
1402
1430
  }
1403
1431
  (_a = this.getterSub) === null || _a === void 0 ? void 0 : _a.call(this);
1404
1432
  this.getterSub = null;
1433
+ if (this.getter) {
1434
+ this.getter.ExcludeMenuItem(this.item.id);
1435
+ }
1405
1436
  this.disposed = true;
1406
1437
  this.visualsManager.RemoveByMenuItemId(this.item.id);
1407
1438
  (_b = this.entityCheckRemoval) === null || _b === void 0 ? void 0 : _b.call(this);
@@ -2798,6 +2829,34 @@
2798
2829
  TilesetCadRenderManager.Manager = Manager;
2799
2830
  })(exports.TilesetCadRenderManager || (exports.TilesetCadRenderManager = {}));
2800
2831
 
2832
+ function createFilterGetterCacheKey(params) {
2833
+ var cacheKey = "";
2834
+ cacheKey += params.api.GetBaseUrl();
2835
+ cacheKey += params.typeId;
2836
+ cacheKey += params.batchSize;
2837
+ cacheKey += JSON.stringify(params.attrFilter);
2838
+ return cacheKey;
2839
+ }
2840
+ (function (SharedGetters) {
2841
+ var Cache = /** @class */ (function () {
2842
+ function Cache(viewer) {
2843
+ this.data = {};
2844
+ this.viewer = viewer;
2845
+ }
2846
+ Cache.prototype.GetOrCreateFilterGetter = function (params) {
2847
+ var cacheKey = createFilterGetterCacheKey(params);
2848
+ var getter = this.data[cacheKey];
2849
+ if (!getter) {
2850
+ getter = new bruceModels.EntityFilterGetter.Getter(params.api, new CesiumViewMonitor(this.viewer), params.typeId, params.batchSize, params.attrFilter);
2851
+ this.data[cacheKey] = getter;
2852
+ }
2853
+ return getter;
2854
+ };
2855
+ return Cache;
2856
+ }());
2857
+ SharedGetters.Cache = Cache;
2858
+ })(exports.SharedGetters || (exports.SharedGetters = {}));
2859
+
2801
2860
  (function (MenuItemManager) {
2802
2861
  var Manager = /** @class */ (function () {
2803
2862
  function Manager(viewer, visualsRegister) {
@@ -2808,6 +2867,7 @@
2808
2867
  visualsRegister = new exports.VisualsRegister.Register(viewer);
2809
2868
  }
2810
2869
  this.visualsRegister = visualsRegister;
2870
+ this.sharedGetters = new exports.SharedGetters.Cache(this.viewer);
2811
2871
  }
2812
2872
  Object.defineProperty(Manager.prototype, "Viewer", {
2813
2873
  get: function () {
@@ -2858,7 +2918,7 @@
2858
2918
  };
2859
2919
  switch (params.item.Type) {
2860
2920
  case bruceModels.MenuItem.EType.Entities:
2861
- rItem.renderManager = new exports.EntitiesRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item);
2921
+ rItem.renderManager = new exports.EntitiesRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item, this.sharedGetters);
2862
2922
  break;
2863
2923
  case bruceModels.MenuItem.EType.EntitiesLoaded:
2864
2924
  rItem.renderManager = new exports.EntitiesLoadedRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item);
@@ -3049,8 +3109,38 @@
3049
3109
  RenderHelper.RenderEntityTypes = RenderEntityTypes;
3050
3110
  function RenderEntityFilter(params, filter) {
3051
3111
  return __awaiter(this, void 0, void 0, function () {
3112
+ var item;
3052
3113
  return __generator(this, function (_a) {
3053
- throw (new Error("Not implemented."));
3114
+ switch (_a.label) {
3115
+ case 0:
3116
+ item = {
3117
+ BruceEntity: {
3118
+ "EntityType.ID": filter.entityTypeId
3119
+ },
3120
+ Type: bruceModels.MenuItem.EType.Entities,
3121
+ Caption: "Rendering Filtered Entities",
3122
+ CameraZoomSettings: [
3123
+ {
3124
+ DisplayType: bruceModels.ZoomControl.EDisplayType.Model3D,
3125
+ LODCategoryID: "glb",
3126
+ LODLevel: 0,
3127
+ MaxZoom: 100000,
3128
+ MinZoom: 0,
3129
+ StyleID: 0 // 0 = Attempt to get entity type's default.
3130
+ }
3131
+ ],
3132
+ id: bruceModels.ObjectUtils.UId(),
3133
+ Children: [],
3134
+ showAllLayers: true,
3135
+ showAllLayersExcludeBelow: false,
3136
+ tagIds: []
3137
+ };
3138
+ return [4 /*yield*/, params.manager.RenderItem({
3139
+ apiGetter: params.apiGetter,
3140
+ item: item
3141
+ })];
3142
+ case 1: return [2 /*return*/, _a.sent()];
3143
+ }
3054
3144
  });
3055
3145
  });
3056
3146
  }