bruce-cesium 1.9.9 → 2.0.1

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.
@@ -1,6 +1,6 @@
1
1
  import { BruceEvent, Cartes, Carto, Entity as Entity$1, Geometry, Tileset, MathUtils, LRUCache, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, DelayQueue, BatchedDataGetter, EntityRelationType, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, EntityRelation, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, ProgramKey, Camera } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartesian2, Cartographic, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, SceneMode, HeightReference, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, Cesium3DTileColorBlendMode, Cesium3DTileStyle, KmlDataSource, createOsmBuildings, Cesium3DTileset, Matrix4, Matrix3, IonResource, OrthographicFrustum, JulianDate, NearFarScalar, EllipsoidGeodesic, EllipsoidTerrainProvider, sampleTerrainMostDetailed, CesiumInspector, PolygonPipeline, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, ColorMaterialProperty, EasingFunction, GeometryInstance } from 'cesium';
3
+ import { Cartesian2, Cartographic, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, Entity, Primitive, Cesium3DTileFeature, SceneMode, HeightReference, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, Cesium3DTileset, Matrix4, Matrix3, IonResource, OrthographicFrustum, JulianDate, NearFarScalar, EllipsoidGeodesic, EllipsoidTerrainProvider, sampleTerrainMostDetailed, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, CesiumInspector, PolygonPipeline, ColorMaterialProperty, EasingFunction, GeometryInstance } from 'cesium';
4
4
 
5
5
  var TIME_LAG = 300;
6
6
  var POSITION_CHECK_TIMER = 950;
@@ -2609,10 +2609,18 @@ var EntitiesRenderManager;
2609
2609
  clearInterval(this.renderQueueInterval);
2610
2610
  this.renderQueueInterval = null;
2611
2611
  this.renderQueue = [];
2612
- this.visualsManager.RemoveRegos({
2613
- menuItemId: this.item.id
2614
- });
2615
- if (!shouldRender) {
2612
+ // Remove just the ones that shouldn't be rendered.
2613
+ // Eg: for a tag menu item we can see what tags are selected and only render those.
2614
+ if (shouldRender) {
2615
+ this.visualsManager.RemoveRegos({
2616
+ menuItemId: this.item.id,
2617
+ retainTagIds: tagsToRender
2618
+ });
2619
+ }
2620
+ else {
2621
+ this.visualsManager.RemoveRegos({
2622
+ menuItemId: this.item.id
2623
+ });
2616
2624
  return;
2617
2625
  }
2618
2626
  var api = this.apiGetter.getApi();
@@ -4165,10 +4173,13 @@ var VisualsRegister;
4165
4173
  */
4166
4174
  Register.prototype.RemoveRegos = function (params) {
4167
4175
  var _a, _b, _c;
4168
- var entityId = params.entityId, menuItemId = params.menuItemId, doUpdate = params.doUpdate, relation = params.relation;
4176
+ var entityId = params.entityId, menuItemId = params.menuItemId, doUpdate = params.doUpdate, relation = params.relation, retainTagIds = params.retainTagIds;
4169
4177
  if (doUpdate == null) {
4170
4178
  doUpdate = true;
4171
4179
  }
4180
+ if (retainTagIds == null) {
4181
+ retainTagIds = [];
4182
+ }
4172
4183
  // TODO: refactor.
4173
4184
  // Currently this was made by merging two functions.
4174
4185
  if (menuItemId && !entityId) {
@@ -4179,6 +4190,11 @@ var VisualsRegister;
4179
4190
  if (!rego) {
4180
4191
  continue;
4181
4192
  }
4193
+ var regoTagIds = rego.tagIds ? rego.tagIds : [];
4194
+ var shouldRetain = regoTagIds.some(function (tagId) { return retainTagIds.includes(tagId); });
4195
+ if (shouldRetain) {
4196
+ continue;
4197
+ }
4182
4198
  removeEntity(this.viewer, rego.visual);
4183
4199
  var doesInclude = this.rego[entityId_3].find(function (r) { return r.menuItemId === menuItemId; });
4184
4200
  if (doesInclude) {
@@ -4262,7 +4278,8 @@ var VisualsRegister;
4262
4278
  var height = Math.ceil(EnsureNumber(params.height, 5));
4263
4279
  var x = Math.ceil(cursor.x - width / 2);
4264
4280
  var y = Math.ceil(cursor.y - height / 2);
4265
- var picked = this.viewer.scene.drillPick(new Cartesian2(x, y), 5, width, height);
4281
+ var pickLimit = Math.ceil(EnsureNumber(params.pickLimit, 5));
4282
+ var picked = this.viewer.scene.drillPick(new Cartesian2(x, y), pickLimit, width, height);
4266
4283
  for (var i = 0; i < picked.length; i++) {
4267
4284
  var object = picked[i];
4268
4285
  var entity = (object && object.id && object.id instanceof Entity ? object.id : object);
@@ -7291,14 +7308,28 @@ var MenuItemManager;
7291
7308
  * @returns
7292
7309
  */
7293
7310
  Manager.prototype.RenderItem = function (params) {
7294
- var _a, _b, _c;
7311
+ var _a, _b, _c, _d;
7295
7312
  if (this.viewer.isDestroyed()) {
7296
7313
  return null;
7297
7314
  }
7298
7315
  var rItem = this.items.find(function (x) { return x.id == params.item.id; });
7299
- if (!rItem) {
7316
+ if (rItem) {
7317
+ // This means we're updating a tag menu item.
7318
+ // Tag menu items have alternative states based on bookmark settings.
7319
+ // Eg: different tags that were enabled.
7320
+ if (rItem.type == MenuItem.EType.Entities && params.item.Type == MenuItem.EType.Entities) {
7321
+ var eItem = rItem.item;
7322
+ if ((_a = eItem === null || eItem === void 0 ? void 0 : eItem.BruceEntity) === null || _a === void 0 ? void 0 : _a.ExpandLayers) {
7323
+ rItem.renderManager.Init({
7324
+ item: params.item,
7325
+ });
7326
+ rItem.item = params.item;
7327
+ }
7328
+ }
7329
+ }
7330
+ else {
7300
7331
  rItem = {
7301
- id: (_a = params.item.id) !== null && _a !== void 0 ? _a : ObjectUtils.UId(),
7332
+ id: (_b = params.item.id) !== null && _b !== void 0 ? _b : ObjectUtils.UId(),
7302
7333
  childIds: [],
7303
7334
  item: params.item,
7304
7335
  renderManager: null,
@@ -7433,8 +7464,8 @@ var MenuItemManager;
7433
7464
  rItem.childIds.push(childId);
7434
7465
  }
7435
7466
  }
7436
- if (!rItem.renderManager || !((_b = rItem.renderManager) === null || _b === void 0 ? void 0 : _b.Disposed)) {
7437
- (_c = this.onUpdate) === null || _c === void 0 ? void 0 : _c.Trigger({ isEnabling: true, itemId: rItem.id });
7467
+ if (rItem.renderManager && !((_c = rItem.renderManager) === null || _c === void 0 ? void 0 : _c.Disposed)) {
7468
+ (_d = this.onUpdate) === null || _d === void 0 ? void 0 : _d.Trigger({ isEnabling: true, itemId: rItem.id });
7438
7469
  }
7439
7470
  rItem.id;
7440
7471
  };
@@ -7781,28 +7812,29 @@ var MenuItemCreator;
7781
7812
  }
7782
7813
  MenuItemCreator.RenderTileset = RenderTileset;
7783
7814
  function RenderBookmarkItems(params) {
7815
+ var _a;
7784
7816
  return __awaiter(this, void 0, void 0, function () {
7785
- var viewId, bookmarkId, api, view, _a, bookmark, _b, enabledIds, menuItems, version, vSettings, bSettings, vSettings, bSettings, renderedItemIds, traverseItems_1, i;
7817
+ var viewId, bookmarkId, api, view, _b, bookmark, _c, enabledIds, menuItems, version, vSettings, bSettings, vSettings, bSettings, alternations, renderedItemIds, traverseItems_1, i;
7786
7818
  var _this = this;
7787
- return __generator(this, function (_c) {
7788
- switch (_c.label) {
7819
+ return __generator(this, function (_d) {
7820
+ switch (_d.label) {
7789
7821
  case 0:
7790
7822
  viewId = params.viewId, bookmarkId = params.bookmarkId;
7791
7823
  api = params.apiGetter.getApi();
7792
7824
  if (!params.view) return [3 /*break*/, 1];
7793
- _a = params.view;
7825
+ _b = params.view;
7794
7826
  return [3 /*break*/, 3];
7795
7827
  case 1: return [4 /*yield*/, ProjectView.Get({
7796
7828
  api: api,
7797
7829
  viewId: viewId
7798
7830
  })];
7799
7831
  case 2:
7800
- _a = (_c.sent()).view;
7801
- _c.label = 3;
7832
+ _b = (_d.sent()).view;
7833
+ _d.label = 3;
7802
7834
  case 3:
7803
- view = _a;
7835
+ view = _b;
7804
7836
  if (!params.bookmark) return [3 /*break*/, 4];
7805
- _b = params.bookmark;
7837
+ _c = params.bookmark;
7806
7838
  return [3 /*break*/, 6];
7807
7839
  case 4: return [4 /*yield*/, ProjectViewBookmark.Get({
7808
7840
  api: api,
@@ -7810,10 +7842,10 @@ var MenuItemCreator;
7810
7842
  bookmarkId: bookmarkId
7811
7843
  })];
7812
7844
  case 5:
7813
- _b = (_c.sent()).bookmark;
7814
- _c.label = 6;
7845
+ _c = (_d.sent()).bookmark;
7846
+ _d.label = 6;
7815
7847
  case 6:
7816
- bookmark = _b;
7848
+ bookmark = _c;
7817
7849
  if (view.DataVersion != bookmark.DataVersion) {
7818
7850
  throw new Error("View and bookmark settings version mismatch.");
7819
7851
  }
@@ -7834,32 +7866,48 @@ var MenuItemCreator;
7834
7866
  enabledIds = bSettings.selectedItemIds;
7835
7867
  }
7836
7868
  }
7869
+ alternations = (_a = bookmark.Settings) === null || _a === void 0 ? void 0 : _a.menuItemAlternations;
7870
+ if (!alternations) {
7871
+ alternations = {};
7872
+ }
7837
7873
  renderedItemIds = [];
7838
7874
  if (!((menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) && (enabledIds === null || enabledIds === void 0 ? void 0 : enabledIds.length))) return [3 /*break*/, 10];
7839
7875
  traverseItems_1 = function (item) { return __awaiter(_this, void 0, void 0, function () {
7840
- var itemId, i;
7841
- return __generator(this, function (_a) {
7842
- switch (_a.label) {
7876
+ var eItem, eItemAlt, itemId, i;
7877
+ var _a;
7878
+ return __generator(this, function (_b) {
7879
+ switch (_b.label) {
7843
7880
  case 0:
7881
+ if (alternations[item.id]) {
7882
+ // The only alternation we support right now is tag menu item ones.
7883
+ // The project view menu item contains the instruction to enable tags, the bookmark specifies which ones.
7884
+ if (item.Type == MenuItem.EType.Entities) {
7885
+ eItem = item;
7886
+ if (eItem.BruceEntity.ExpandLayers) {
7887
+ eItemAlt = alternations[item.id];
7888
+ eItem.BruceEntity = __assign(__assign({}, eItem.BruceEntity), { SelectedExpandLayers: (_a = eItemAlt.BruceEntity) === null || _a === void 0 ? void 0 : _a.SelectedExpandLayers });
7889
+ }
7890
+ }
7891
+ }
7844
7892
  if (!enabledIds.includes(item.id)) return [3 /*break*/, 2];
7845
7893
  return [4 /*yield*/, params.manager.RenderItem({
7846
7894
  item: item,
7847
7895
  apiGetter: params.apiGetter
7848
7896
  })];
7849
7897
  case 1:
7850
- itemId = _a.sent();
7898
+ itemId = _b.sent();
7851
7899
  renderedItemIds.push(itemId);
7852
- _a.label = 2;
7900
+ _b.label = 2;
7853
7901
  case 2:
7854
7902
  if (!item.Children) return [3 /*break*/, 6];
7855
7903
  i = 0;
7856
- _a.label = 3;
7904
+ _b.label = 3;
7857
7905
  case 3:
7858
7906
  if (!(i < item.Children.length)) return [3 /*break*/, 6];
7859
7907
  return [4 /*yield*/, traverseItems_1(item.Children[i])];
7860
7908
  case 4:
7861
- _a.sent();
7862
- _a.label = 5;
7909
+ _b.sent();
7910
+ _b.label = 5;
7863
7911
  case 5:
7864
7912
  i++;
7865
7913
  return [3 /*break*/, 3];
@@ -7868,13 +7916,13 @@ var MenuItemCreator;
7868
7916
  });
7869
7917
  }); };
7870
7918
  i = 0;
7871
- _c.label = 7;
7919
+ _d.label = 7;
7872
7920
  case 7:
7873
7921
  if (!(i < menuItems.length)) return [3 /*break*/, 10];
7874
7922
  return [4 /*yield*/, traverseItems_1(menuItems[i])];
7875
7923
  case 8:
7876
- _c.sent();
7877
- _c.label = 9;
7924
+ _d.sent();
7925
+ _d.label = 9;
7878
7926
  case 9:
7879
7927
  i++;
7880
7928
  return [3 /*break*/, 7];