bruce-cesium 2.0.0 → 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, HeightReference, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, SceneMode, Primitive, Cesium3DTileFeature, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, OrthographicFrustum, JulianDate, NearFarScalar, CesiumInspector, Cesium3DTileset, Matrix4, Matrix3, IonResource, PolygonPipeline, EllipsoidGeodesic, sampleTerrainMostDetailed, 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) {
@@ -7292,14 +7308,28 @@ var MenuItemManager;
7292
7308
  * @returns
7293
7309
  */
7294
7310
  Manager.prototype.RenderItem = function (params) {
7295
- var _a, _b, _c;
7311
+ var _a, _b, _c, _d;
7296
7312
  if (this.viewer.isDestroyed()) {
7297
7313
  return null;
7298
7314
  }
7299
7315
  var rItem = this.items.find(function (x) { return x.id == params.item.id; });
7300
- 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 {
7301
7331
  rItem = {
7302
- 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(),
7303
7333
  childIds: [],
7304
7334
  item: params.item,
7305
7335
  renderManager: null,
@@ -7434,8 +7464,8 @@ var MenuItemManager;
7434
7464
  rItem.childIds.push(childId);
7435
7465
  }
7436
7466
  }
7437
- if (!rItem.renderManager || !((_b = rItem.renderManager) === null || _b === void 0 ? void 0 : _b.Disposed)) {
7438
- (_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 });
7439
7469
  }
7440
7470
  rItem.id;
7441
7471
  };
@@ -7782,28 +7812,29 @@ var MenuItemCreator;
7782
7812
  }
7783
7813
  MenuItemCreator.RenderTileset = RenderTileset;
7784
7814
  function RenderBookmarkItems(params) {
7815
+ var _a;
7785
7816
  return __awaiter(this, void 0, void 0, function () {
7786
- 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;
7787
7818
  var _this = this;
7788
- return __generator(this, function (_c) {
7789
- switch (_c.label) {
7819
+ return __generator(this, function (_d) {
7820
+ switch (_d.label) {
7790
7821
  case 0:
7791
7822
  viewId = params.viewId, bookmarkId = params.bookmarkId;
7792
7823
  api = params.apiGetter.getApi();
7793
7824
  if (!params.view) return [3 /*break*/, 1];
7794
- _a = params.view;
7825
+ _b = params.view;
7795
7826
  return [3 /*break*/, 3];
7796
7827
  case 1: return [4 /*yield*/, ProjectView.Get({
7797
7828
  api: api,
7798
7829
  viewId: viewId
7799
7830
  })];
7800
7831
  case 2:
7801
- _a = (_c.sent()).view;
7802
- _c.label = 3;
7832
+ _b = (_d.sent()).view;
7833
+ _d.label = 3;
7803
7834
  case 3:
7804
- view = _a;
7835
+ view = _b;
7805
7836
  if (!params.bookmark) return [3 /*break*/, 4];
7806
- _b = params.bookmark;
7837
+ _c = params.bookmark;
7807
7838
  return [3 /*break*/, 6];
7808
7839
  case 4: return [4 /*yield*/, ProjectViewBookmark.Get({
7809
7840
  api: api,
@@ -7811,10 +7842,10 @@ var MenuItemCreator;
7811
7842
  bookmarkId: bookmarkId
7812
7843
  })];
7813
7844
  case 5:
7814
- _b = (_c.sent()).bookmark;
7815
- _c.label = 6;
7845
+ _c = (_d.sent()).bookmark;
7846
+ _d.label = 6;
7816
7847
  case 6:
7817
- bookmark = _b;
7848
+ bookmark = _c;
7818
7849
  if (view.DataVersion != bookmark.DataVersion) {
7819
7850
  throw new Error("View and bookmark settings version mismatch.");
7820
7851
  }
@@ -7835,32 +7866,48 @@ var MenuItemCreator;
7835
7866
  enabledIds = bSettings.selectedItemIds;
7836
7867
  }
7837
7868
  }
7869
+ alternations = (_a = bookmark.Settings) === null || _a === void 0 ? void 0 : _a.menuItemAlternations;
7870
+ if (!alternations) {
7871
+ alternations = {};
7872
+ }
7838
7873
  renderedItemIds = [];
7839
7874
  if (!((menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) && (enabledIds === null || enabledIds === void 0 ? void 0 : enabledIds.length))) return [3 /*break*/, 10];
7840
7875
  traverseItems_1 = function (item) { return __awaiter(_this, void 0, void 0, function () {
7841
- var itemId, i;
7842
- return __generator(this, function (_a) {
7843
- switch (_a.label) {
7876
+ var eItem, eItemAlt, itemId, i;
7877
+ var _a;
7878
+ return __generator(this, function (_b) {
7879
+ switch (_b.label) {
7844
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
+ }
7845
7892
  if (!enabledIds.includes(item.id)) return [3 /*break*/, 2];
7846
7893
  return [4 /*yield*/, params.manager.RenderItem({
7847
7894
  item: item,
7848
7895
  apiGetter: params.apiGetter
7849
7896
  })];
7850
7897
  case 1:
7851
- itemId = _a.sent();
7898
+ itemId = _b.sent();
7852
7899
  renderedItemIds.push(itemId);
7853
- _a.label = 2;
7900
+ _b.label = 2;
7854
7901
  case 2:
7855
7902
  if (!item.Children) return [3 /*break*/, 6];
7856
7903
  i = 0;
7857
- _a.label = 3;
7904
+ _b.label = 3;
7858
7905
  case 3:
7859
7906
  if (!(i < item.Children.length)) return [3 /*break*/, 6];
7860
7907
  return [4 /*yield*/, traverseItems_1(item.Children[i])];
7861
7908
  case 4:
7862
- _a.sent();
7863
- _a.label = 5;
7909
+ _b.sent();
7910
+ _b.label = 5;
7864
7911
  case 5:
7865
7912
  i++;
7866
7913
  return [3 /*break*/, 3];
@@ -7869,13 +7916,13 @@ var MenuItemCreator;
7869
7916
  });
7870
7917
  }); };
7871
7918
  i = 0;
7872
- _c.label = 7;
7919
+ _d.label = 7;
7873
7920
  case 7:
7874
7921
  if (!(i < menuItems.length)) return [3 /*break*/, 10];
7875
7922
  return [4 /*yield*/, traverseItems_1(menuItems[i])];
7876
7923
  case 8:
7877
- _c.sent();
7878
- _c.label = 9;
7924
+ _d.sent();
7925
+ _d.label = 9;
7879
7926
  case 9:
7880
7927
  i++;
7881
7928
  return [3 /*break*/, 7];