bruce-cesium 0.7.7 → 0.7.9

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 (42) hide show
  1. package/dist/bruce-cesium.es5.js +303 -53
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +302 -52
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/rendering/entity-render-engine.js +21 -20
  6. package/dist/lib/rendering/entity-render-engine.js.map +1 -1
  7. package/dist/lib/rendering/menu-item-manager.js +35 -0
  8. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  9. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js +11 -0
  10. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js.map +1 -1
  11. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +20 -0
  12. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
  13. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +73 -3
  14. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
  15. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +42 -15
  16. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  17. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +17 -0
  18. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  19. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
  20. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +16 -0
  21. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  22. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +11 -0
  23. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
  24. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +11 -0
  25. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -1
  26. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +11 -0
  27. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -1
  28. package/dist/lib/rendering/visuals-register.js +50 -10
  29. package/dist/lib/rendering/visuals-register.js.map +1 -1
  30. package/dist/types/rendering/menu-item-manager.d.ts +8 -0
  31. package/dist/types/rendering/render-managers/data-source/data-source-static-kml-manager.d.ts +1 -0
  32. package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +1 -0
  33. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +2 -0
  34. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +2 -0
  35. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +1 -0
  36. package/dist/types/rendering/render-managers/render-manager.d.ts +1 -0
  37. package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +1 -0
  38. package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +1 -0
  39. package/dist/types/rendering/render-managers/tilesets/tileset-osm-render-manager.d.ts +1 -0
  40. package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +1 -0
  41. package/dist/types/rendering/visuals-register.d.ts +17 -1
  42. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, ObjectUtils, Tileset, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, TilesetExtMapTiles, ProgramKey, Camera } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, OrthographicFrustum, JulianDate, Matrix4, Cesium3DTileset, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, KmlDataSource, createOsmBuildings, Cesium3DTileStyle } from 'cesium';
2
+ import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, OrthographicFrustum, JulianDate, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, createOsmBuildings, Cesium3DTileStyle, KmlDataSource } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -940,10 +940,6 @@ function getStyle(api, entity, styleId) {
940
940
  });
941
941
  });
942
942
  }
943
- function getExistingCEntity(entityId, menuItemId, item, visualRegister) {
944
- var _a;
945
- return (_a = visualRegister.GetRego(entityId, menuItemId)) === null || _a === void 0 ? void 0 : _a.visual;
946
- }
947
943
  function getRenderGroupId(zoomItem) {
948
944
  if (!zoomItem) {
949
945
  return null;
@@ -953,10 +949,11 @@ function getRenderGroupId(zoomItem) {
953
949
  var EntityRenderEngine;
954
950
  (function (EntityRenderEngine) {
955
951
  function Render(params) {
952
+ var _a;
956
953
  return __awaiter(this, void 0, void 0, function () {
957
- var groupRenderParams, cEntities, models, polygons, polylines, points, i, entity, id, zoomItem, displayType, newRenderId, existing, oldRenderId, mParams, mEntities, i, entity, id, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity;
958
- return __generator(this, function (_a) {
959
- switch (_a.label) {
954
+ var groupRenderParams, cEntities, models, polygons, polylines, points, i, entity, id, zoomItem, displayType, newRenderId, existingRego, oldRenderId, mParams, mEntities, i, entity, id, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity, pParams, pEntities, i, entity, cEntity;
955
+ return __generator(this, function (_b) {
956
+ switch (_b.label) {
960
957
  case 0:
961
958
  groupRenderParams = {
962
959
  apiGetter: params.apiGetter,
@@ -986,10 +983,10 @@ var EntityRenderEngine;
986
983
  }
987
984
  if (displayType != ZoomControl.EDisplayType.Hidden) {
988
985
  newRenderId = getRenderGroupId(zoomItem);
989
- existing = getExistingCEntity(id, params.menuItemId, zoomItem, params.visualRegister);
990
- oldRenderId = existing === null || existing === void 0 ? void 0 : existing._renderGroup;
991
- if (newRenderId == oldRenderId) {
992
- cEntities[id] = existing;
986
+ existingRego = params.visualRegister.GetRego(id, params.menuItemId);
987
+ oldRenderId = (_a = existingRego === null || existingRego === void 0 ? void 0 : existingRego.visual) === null || _a === void 0 ? void 0 : _a._renderGroup;
988
+ if (newRenderId == oldRenderId && !(existingRego === null || existingRego === void 0 ? void 0 : existingRego.stale)) {
989
+ cEntities[id] = existingRego.visual;
993
990
  }
994
991
  else {
995
992
  if (displayType == ZoomControl.EDisplayType.Model3D) {
@@ -1009,7 +1006,7 @@ var EntityRenderEngine;
1009
1006
  mParams = __assign(__assign({}, groupRenderParams), { entities: models });
1010
1007
  return [4 /*yield*/, Model3d.RenderGroup(mParams)];
1011
1008
  case 1:
1012
- mEntities = _a.sent();
1009
+ mEntities = _b.sent();
1013
1010
  for (i = 0; i < mParams.entities.length; i++) {
1014
1011
  entity = mParams.entities[i];
1015
1012
  id = entity.Bruce.ID;
@@ -1021,13 +1018,13 @@ var EntityRenderEngine;
1021
1018
  polygons.push(entity);
1022
1019
  }
1023
1020
  }
1024
- _a.label = 2;
1021
+ _b.label = 2;
1025
1022
  case 2:
1026
1023
  if (!(polygons.length > 0)) return [3 /*break*/, 4];
1027
1024
  pParams = __assign(__assign({}, groupRenderParams), { entities: polygons });
1028
1025
  return [4 /*yield*/, Polygon.RenderGroup(pParams)];
1029
1026
  case 3:
1030
- pEntities = _a.sent();
1027
+ pEntities = _b.sent();
1031
1028
  for (i = 0; i < pParams.entities.length; i++) {
1032
1029
  entity = pParams.entities[i];
1033
1030
  cEntity = pEntities[entity.Bruce.ID];
@@ -1038,13 +1035,13 @@ var EntityRenderEngine;
1038
1035
  polylines.push(entity);
1039
1036
  }
1040
1037
  }
1041
- _a.label = 4;
1038
+ _b.label = 4;
1042
1039
  case 4:
1043
1040
  if (!(polylines.length > 0)) return [3 /*break*/, 6];
1044
1041
  pParams = __assign(__assign({}, groupRenderParams), { entities: polylines });
1045
1042
  return [4 /*yield*/, Polyline.RenderGroup(pParams)];
1046
1043
  case 5:
1047
- pEntities = _a.sent();
1044
+ pEntities = _b.sent();
1048
1045
  for (i = 0; i < pParams.entities.length; i++) {
1049
1046
  entity = pParams.entities[i];
1050
1047
  cEntity = pEntities[entity.Bruce.ID];
@@ -1055,13 +1052,13 @@ var EntityRenderEngine;
1055
1052
  points.push(entity);
1056
1053
  }
1057
1054
  }
1058
- _a.label = 6;
1055
+ _b.label = 6;
1059
1056
  case 6:
1060
1057
  if (!(points.length > 0)) return [3 /*break*/, 8];
1061
1058
  pParams = __assign(__assign({}, groupRenderParams), { entities: points });
1062
1059
  return [4 /*yield*/, Point.RenderGroup(pParams)];
1063
1060
  case 7:
1064
- pEntities = _a.sent();
1061
+ pEntities = _b.sent();
1065
1062
  for (i = 0; i < pParams.entities.length; i++) {
1066
1063
  entity = pParams.entities[i];
1067
1064
  cEntity = pEntities[entity.Bruce.ID];
@@ -1069,7 +1066,7 @@ var EntityRenderEngine;
1069
1066
  cEntities[entity.Bruce.ID] = cEntity;
1070
1067
  }
1071
1068
  }
1072
- _a.label = 8;
1069
+ _b.label = 8;
1073
1070
  case 8: return [2 /*return*/, cEntities];
1074
1071
  }
1075
1072
  });
@@ -1145,7 +1142,7 @@ var EntityRenderEngine;
1145
1142
  }
1146
1143
  if (type == Style.EPointType.Cylinder) ;
1147
1144
  if (!cEntity) {
1148
- var bColor = style.color ? Calculator.GetValue(style.color, entity, params.tags) : null;
1145
+ var bColor = style.color ? Calculator.GetColor(style.color, entity, params.tags) : null;
1149
1146
  var cColor = bColor ? colorToCColor(bColor) : Color.RED;
1150
1147
  var size = style.size ? Calculator.GetValue(style.size, entity, params.tags) : null;
1151
1148
  if (size == null) {
@@ -1255,7 +1252,7 @@ var EntityRenderEngine;
1255
1252
  }
1256
1253
  }
1257
1254
  var style = params.style;
1258
- var bColor = style.lineColor ? Calculator.GetValue(style.lineColor, entity, params.tags) : null;
1255
+ var bColor = style.lineColor ? Calculator.GetColor(style.lineColor, entity, params.tags) : null;
1259
1256
  var cColor = bColor ? colorToCColor(bColor) : Color.RED;
1260
1257
  var width = style.lineWidth ? Calculator.GetValue(style.lineWidth, entity, params.tags) : null;
1261
1258
  if (width == null) {
@@ -1341,9 +1338,9 @@ var EntityRenderEngine;
1341
1338
  return null;
1342
1339
  }
1343
1340
  var style = params.style;
1344
- var bFillColor = Calculator.GetValue(style.fillColor, entity, params.tags);
1341
+ var bFillColor = Calculator.GetColor(style.fillColor, entity, params.tags);
1345
1342
  var cFillColor = bFillColor ? colorToCColor(bFillColor) : Color.RED;
1346
- var bLineColor = Calculator.GetValue(style.lineColor, entity, params.tags);
1343
+ var bLineColor = Calculator.GetColor(style.lineColor, entity, params.tags);
1347
1344
  var cLineColor = bLineColor ? colorToCColor(bLineColor) : Color.RED;
1348
1345
  var width = style.lineWidth ? Calculator.GetValue(style.lineWidth, entity, params.tags) : null;
1349
1346
  if (width == null) {
@@ -1494,7 +1491,7 @@ var EntityRenderEngine;
1494
1491
  blendAmount = 0.5;
1495
1492
  }
1496
1493
  }
1497
- var bColor = Calculator.GetValue(style.fillColor, entity, params.tags);
1494
+ var bColor = Calculator.GetColor(style.fillColor, entity, params.tags);
1498
1495
  if (bColor) {
1499
1496
  color = colorToCColor(bColor);
1500
1497
  }
@@ -1645,6 +1642,7 @@ var EntitiesRenderManager;
1645
1642
  this.disposed = false;
1646
1643
  this.renderedEntities = {};
1647
1644
  this.entityCheckQueue = null;
1645
+ this.entityCheckQueueIds = [];
1648
1646
  this.entityCheckRemoval = null;
1649
1647
  this.isRunningCheck = false;
1650
1648
  this.viewMonitorRemoval = null;
@@ -1688,7 +1686,7 @@ var EntitiesRenderManager;
1688
1686
  _this.entityCheckQueue.Call();
1689
1687
  });
1690
1688
  this.entityCheckQueue = new DelayQueue(function () {
1691
- _this.doEntityCheck();
1689
+ _this.doEntityCheck(Object.keys(_this.renderedEntities));
1692
1690
  }, 3000);
1693
1691
  return [2 /*return*/];
1694
1692
  });
@@ -1709,34 +1707,56 @@ var EntitiesRenderManager;
1709
1707
  (_b = this.entityCheckRemoval) === null || _b === void 0 ? void 0 : _b.call(this);
1710
1708
  (_c = this.viewMonitorRemoval) === null || _c === void 0 ? void 0 : _c.call(this);
1711
1709
  };
1712
- Manager.prototype.doEntityCheck = function () {
1710
+ Manager.prototype.ReRender = function (entityIds) {
1711
+ return __awaiter(this, void 0, void 0, function () {
1712
+ return __generator(this, function (_a) {
1713
+ switch (_a.label) {
1714
+ case 0:
1715
+ if (entityIds == null) {
1716
+ entityIds = Object.keys(this.renderedEntities);
1717
+ }
1718
+ this.visualsManager.MarkStale(entityIds, [this.item.id]);
1719
+ return [4 /*yield*/, this.doEntityCheck(entityIds)];
1720
+ case 1:
1721
+ _a.sent();
1722
+ return [2 /*return*/];
1723
+ }
1724
+ });
1725
+ });
1726
+ };
1727
+ Manager.prototype.doEntityCheck = function (ids) {
1713
1728
  return __awaiter(this, void 0, void 0, function () {
1714
- var api, ids_1, CHECK_BATCH_SIZE_1, checkBatch, e_1;
1729
+ var api, CHECK_BATCH_SIZE_1, checkBatch, e_1;
1715
1730
  var _this = this;
1716
1731
  return __generator(this, function (_a) {
1717
1732
  switch (_a.label) {
1718
1733
  case 0:
1719
1734
  if (this.isRunningCheck) {
1735
+ this.entityCheckQueueIds = this.entityCheckQueueIds.concat(ids);
1720
1736
  this.entityCheckQueue.Call();
1721
1737
  return [2 /*return*/];
1722
1738
  }
1739
+ ids.concat(this.entityCheckQueueIds);
1740
+ this.entityCheckQueueIds = [];
1741
+ ids = ids.filter(function (id, index) {
1742
+ return ids.indexOf(id) === index;
1743
+ });
1723
1744
  this.isRunningCheck = true;
1724
1745
  api = this.apiGetter.getApi();
1725
1746
  _a.label = 1;
1726
1747
  case 1:
1727
1748
  _a.trys.push([1, 5, , 6]);
1728
- ids_1 = Object.keys(this.renderedEntities);
1729
1749
  if (this.disposed) {
1730
1750
  return [2 /*return*/];
1731
1751
  }
1732
- if (!(ids_1.length > 0)) return [3 /*break*/, 4];
1752
+ if (!(ids.length > 0)) return [3 /*break*/, 4];
1733
1753
  CHECK_BATCH_SIZE_1 = 150;
1734
1754
  checkBatch = function () { return __awaiter(_this, void 0, void 0, function () {
1735
1755
  var entityIds, entities;
1736
1756
  return __generator(this, function (_a) {
1737
1757
  switch (_a.label) {
1738
1758
  case 0:
1739
- entityIds = ids_1.splice(0, CHECK_BATCH_SIZE_1);
1759
+ entityIds = ids.splice(0, CHECK_BATCH_SIZE_1);
1740
1760
  return [4 /*yield*/, Entity$1.GetListByIds(api, entityIds)];
1741
1761
  case 1:
1742
1762
  entities = _a.sent();
@@ -1750,7 +1770,7 @@ var EntitiesRenderManager;
1750
1770
  }); };
1751
1771
  _a.label = 2;
1752
1772
  case 2:
1753
- if (!(ids_1.length > 0)) return [3 /*break*/, 4];
1773
+ if (!(ids.length > 0)) return [3 /*break*/, 4];
1754
1774
  return [4 /*yield*/, checkBatch()];
1755
1775
  case 3:
1756
1776
  _a.sent();
@@ -1775,16 +1795,20 @@ var EntitiesRenderManager;
1775
1795
  }
1776
1796
  };
1777
1797
  Manager.prototype.onGetterUpdate = function (entities) {
1778
- var _a;
1798
+ var _a, _b;
1779
1799
  return __awaiter(this, void 0, void 0, function () {
1780
- var cEntities, i, entity, id, cEntity, visual, e_2;
1781
- return __generator(this, function (_b) {
1782
- switch (_b.label) {
1800
+ var typeId_1, cEntities, i, entity, id, cEntity, visual, e_2;
1801
+ return __generator(this, function (_c) {
1802
+ switch (_c.label) {
1783
1803
  case 0:
1784
- _b.trys.push([0, 2, , 3]);
1804
+ _c.trys.push([0, 2, , 3]);
1785
1805
  if (this.disposed || this.viewer.isDestroyed()) {
1786
1806
  return [2 /*return*/];
1787
1807
  }
1808
+ typeId_1 = (_a = this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a["EntityType.ID"];
1809
+ if (typeId_1) {
1810
+ entities = entities.filter(function (x) { var _a; return ((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a["EntityType.ID"]) == typeId_1; });
1811
+ }
1788
1812
  return [4 /*yield*/, EntityRenderEngine.Render({
1789
1813
  viewer: this.viewer,
1790
1814
  apiGetter: this.apiGetter,
@@ -1794,14 +1818,14 @@ var EntitiesRenderManager;
1794
1818
  zoomControl: this.item.CameraZoomSettings
1795
1819
  })];
1796
1820
  case 1:
1797
- cEntities = _b.sent();
1821
+ cEntities = _c.sent();
1798
1822
  for (i = 0; i < entities.length; i++) {
1799
1823
  entity = entities[i];
1800
1824
  id = entity.Bruce.ID;
1801
1825
  cEntity = cEntities[id];
1802
1826
  this.renderedEntities[id] = !!cEntity;
1803
1827
  if (cEntity) {
1804
- visual = (_a = this.visualsManager.GetRego(id, this.item.id)) === null || _a === void 0 ? void 0 : _a.visual;
1828
+ visual = (_b = this.visualsManager.GetRego(id, this.item.id)) === null || _b === void 0 ? void 0 : _b.visual;
1805
1829
  if (!visual || visual != cEntity) {
1806
1830
  this.visualsManager.Add({
1807
1831
  entityId: id,
@@ -1818,7 +1842,7 @@ var EntitiesRenderManager;
1818
1842
  }
1819
1843
  return [3 /*break*/, 3];
1820
1844
  case 2:
1821
- e_2 = _b.sent();
1845
+ e_2 = _c.sent();
1822
1846
  console.error(e_2);
1823
1847
  return [3 /*break*/, 3];
1824
1848
  case 3: return [2 /*return*/];
@@ -1883,10 +1907,80 @@ var EntitiesLoadedRenderManager;
1883
1907
  this.disposed = true;
1884
1908
  this.visualsManager.RemoveByMenuItemId(this.item.id);
1885
1909
  };
1910
+ Manager.prototype.ReRender = function (entityIds) {
1911
+ return __awaiter(this, void 0, void 0, function () {
1912
+ var _this = this;
1913
+ return __generator(this, function (_a) {
1914
+ if (entityIds == null) {
1915
+ entityIds = Object.keys(this.renderedEntities);
1916
+ }
1917
+ else {
1918
+ // ensure entity ids are part of menu item.
1919
+ entityIds = entityIds.filter(function (x) {
1920
+ var _a, _b;
1921
+ return (_b = (_a = _this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.Entities) === null || _b === void 0 ? void 0 : _b.find(function (y) { var _a; return ((_a = y === null || y === void 0 ? void 0 : y.Bruce) === null || _a === void 0 ? void 0 : _a.ID) == x; });
1922
+ });
1923
+ }
1924
+ this.visualsManager.MarkStale(entityIds, [this.item.id]);
1925
+ this.doEntityCheck(entityIds);
1926
+ return [2 /*return*/];
1927
+ });
1928
+ });
1929
+ };
1930
+ Manager.prototype.doEntityCheck = function (ids) {
1931
+ return __awaiter(this, void 0, void 0, function () {
1932
+ var api, CHECK_BATCH_SIZE_1, checkBatch, e_1;
1933
+ var _this = this;
1934
+ return __generator(this, function (_a) {
1935
+ switch (_a.label) {
1936
+ case 0:
1937
+ api = this.apiGetter.getApi();
1938
+ _a.label = 1;
1939
+ case 1:
1940
+ _a.trys.push([1, 5, , 6]);
1941
+ if (this.disposed) {
1942
+ return [2 /*return*/];
1943
+ }
1944
+ if (!(ids.length > 0)) return [3 /*break*/, 4];
1945
+ CHECK_BATCH_SIZE_1 = 150;
1946
+ checkBatch = function () { return __awaiter(_this, void 0, void 0, function () {
1947
+ var entityIds, entities;
1948
+ return __generator(this, function (_a) {
1949
+ switch (_a.label) {
1950
+ case 0:
1951
+ entityIds = ids.splice(0, CHECK_BATCH_SIZE_1);
1952
+ return [4 /*yield*/, Entity$1.GetListByIds(api, entityIds)];
1953
+ case 1:
1954
+ entities = _a.sent();
1955
+ if (this.disposed) {
1956
+ return [2 /*return*/];
1957
+ }
1958
+ this.onGetterUpdate(entities);
1959
+ return [2 /*return*/];
1960
+ }
1961
+ });
1962
+ }); };
1963
+ _a.label = 2;
1964
+ case 2:
1965
+ if (!(ids.length > 0)) return [3 /*break*/, 4];
1966
+ return [4 /*yield*/, checkBatch()];
1967
+ case 3:
1968
+ _a.sent();
1969
+ return [3 /*break*/, 2];
1970
+ case 4: return [3 /*break*/, 6];
1971
+ case 5:
1972
+ e_1 = _a.sent();
1973
+ console.error(e_1);
1974
+ return [3 /*break*/, 6];
1975
+ case 6: return [2 /*return*/];
1976
+ }
1977
+ });
1978
+ });
1979
+ };
1886
1980
  Manager.prototype.onGetterUpdate = function (entities) {
1887
1981
  var _a;
1888
1982
  return __awaiter(this, void 0, void 0, function () {
1889
- var cEntities, i, entity, id, cEntity, visual, e_1;
1983
+ var cEntities, i, entity, id, cEntity, visual, e_2;
1890
1984
  return __generator(this, function (_b) {
1891
1985
  switch (_b.label) {
1892
1986
  case 0:
@@ -1927,8 +2021,8 @@ var EntitiesLoadedRenderManager;
1927
2021
  }
1928
2022
  return [3 /*break*/, 3];
1929
2023
  case 2:
1930
- e_1 = _b.sent();
1931
- console.error(e_1);
2024
+ e_2 = _b.sent();
2025
+ console.error(e_2);
1932
2026
  return [3 /*break*/, 3];
1933
2027
  case 3: return [2 /*return*/];
1934
2028
  }
@@ -2354,22 +2448,41 @@ var VisualsRegister;
2354
2448
  }
2355
2449
  }
2356
2450
  };
2451
+ /**
2452
+ *
2453
+ * @param entityId
2454
+ * @param menuItemId if not supplied it will affect all menu items.
2455
+ * @param _doUpdate
2456
+ * @returns
2457
+ */
2357
2458
  Register.prototype.Remove = function (entityId, menuItemId, _doUpdate) {
2358
2459
  var _a;
2359
- if (_doUpdate === void 0) { _doUpdate = true; }
2460
+ if (_doUpdate == null) {
2461
+ _doUpdate = true;
2462
+ }
2360
2463
  var entityRegos = this.rego[entityId];
2361
2464
  if (!entityRegos) {
2362
2465
  return;
2363
2466
  }
2364
- var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
2365
- if (!rego) {
2366
- return;
2367
- }
2368
- (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
2369
- removeEntity(this.viewer, rego.visual);
2370
- this.rego[entityId] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
2371
- if (_doUpdate) {
2372
- updateEntity(this.viewer, entityId, this);
2467
+ var menuItems = menuItemId ? menuItemId : Object.keys(entityRegos);
2468
+ var _loop_3 = function (i) {
2469
+ var menuItemId_1 = menuItems[i];
2470
+ var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId_1; });
2471
+ if (!rego) {
2472
+ return { value: void 0 };
2473
+ }
2474
+ (_a = this_1.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
2475
+ removeEntity(this_1.viewer, rego.visual);
2476
+ this_1.rego[entityId] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId_1; });
2477
+ if (_doUpdate) {
2478
+ updateEntity(this_1.viewer, entityId, this_1);
2479
+ }
2480
+ };
2481
+ var this_1 = this;
2482
+ for (var i = 0; i < menuItems.length; i++) {
2483
+ var state_1 = _loop_3(i);
2484
+ if (typeof state_1 === "object")
2485
+ return state_1.value;
2373
2486
  }
2374
2487
  };
2375
2488
  /**
@@ -2405,6 +2518,27 @@ var VisualsRegister;
2405
2518
  }
2406
2519
  return ids;
2407
2520
  };
2521
+ /**
2522
+ * Marks regos corresponding to given entity ids as stale.
2523
+ * This will cause them to be updated on the next update cycle.
2524
+ * Optionally include menu item ids to restrict the filter.
2525
+ * @param entityIds
2526
+ * @param menuItemIds
2527
+ */
2528
+ Register.prototype.MarkStale = function (entityIds, menuItemIds) {
2529
+ for (var _i = 0, entityIds_1 = entityIds; _i < entityIds_1.length; _i++) {
2530
+ var entityId = entityIds_1[_i];
2531
+ var regos = this.rego[entityId];
2532
+ if (regos && regos.length) {
2533
+ for (var _a = 0, regos_1 = regos; _a < regos_1.length; _a++) {
2534
+ var rego = regos_1[_a];
2535
+ if (!menuItemIds || menuItemIds.includes(rego.menuItemId)) {
2536
+ rego.stale = true;
2537
+ }
2538
+ }
2539
+ }
2540
+ }
2541
+ };
2408
2542
  Register.prototype.updateAllEntities = function () {
2409
2543
  for (var entityId in this.rego) {
2410
2544
  var regos = this.rego[entityId];
@@ -2469,6 +2603,26 @@ var EntitiesIdsRenderManager;
2469
2603
  this.disposed = true;
2470
2604
  this.visualsManager.RemoveByMenuItemId(this.item.id);
2471
2605
  };
2606
+ Manager.prototype.ReRender = function (entityIds) {
2607
+ return __awaiter(this, void 0, void 0, function () {
2608
+ var _this = this;
2609
+ return __generator(this, function (_a) {
2610
+ if (entityIds == null) {
2611
+ entityIds = Object.keys(this.renderedEntities);
2612
+ }
2613
+ else {
2614
+ // ensure entity ids are part of menu item.
2615
+ entityIds = entityIds.filter(function (x) {
2616
+ var _a;
2617
+ return (_a = _this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.EntityIds.includes(x);
2618
+ });
2619
+ }
2620
+ this.visualsManager.MarkStale(entityIds, [this.item.id]);
2621
+ this.onGetterUpdate(entityIds);
2622
+ return [2 /*return*/];
2623
+ });
2624
+ });
2625
+ };
2472
2626
  Manager.prototype.onGetterUpdate = function (entityIds) {
2473
2627
  var _a;
2474
2628
  return __awaiter(this, void 0, void 0, function () {
@@ -2581,6 +2735,23 @@ var EntityRenderManager;
2581
2735
  this.getterSub = null;
2582
2736
  this.visualsManager.RemoveByMenuItemId(this.item.id);
2583
2737
  };
2738
+ Manager.prototype.ReRender = function (entityIds) {
2739
+ return __awaiter(this, void 0, void 0, function () {
2740
+ return __generator(this, function (_a) {
2741
+ switch (_a.label) {
2742
+ case 0:
2743
+ if (entityIds && !entityIds.includes(this.item.BruceEntity.EntityId)) {
2744
+ return [2 /*return*/];
2745
+ }
2746
+ this.visualsManager.MarkStale(entityIds, [this.item.id]);
2747
+ return [4 /*yield*/, this.onGetterUpdate(this.item.BruceEntity.EntityId)];
2748
+ case 1:
2749
+ _a.sent();
2750
+ return [2 /*return*/];
2751
+ }
2752
+ });
2753
+ });
2754
+ };
2584
2755
  Manager.prototype.onGetterUpdate = function (id) {
2585
2756
  var _a;
2586
2757
  return __awaiter(this, void 0, void 0, function () {
@@ -3371,6 +3542,22 @@ var TilesetCadRenderManager;
3371
3542
  (_a = this.styler) === null || _a === void 0 ? void 0 : _a.Dispose();
3372
3543
  this.visualsManager.RemoveByMenuItemId(this.item.id);
3373
3544
  };
3545
+ Manager.prototype.ReRender = function (entityIds) {
3546
+ return __awaiter(this, void 0, void 0, function () {
3547
+ var regos;
3548
+ return __generator(this, function (_a) {
3549
+ if (!this.styler) {
3550
+ return [2 /*return*/];
3551
+ }
3552
+ regos = this.visualsManager.GetMenuItemRegos(this.item.id);
3553
+ if (entityIds != null) {
3554
+ regos = regos.filter(function (r) { return entityIds.indexOf(r.entityId) >= 0; });
3555
+ }
3556
+ this.styler.QueueEntities(regos);
3557
+ return [2 /*return*/];
3558
+ });
3559
+ });
3560
+ };
3374
3561
  return Manager;
3375
3562
  }());
3376
3563
  TilesetCadRenderManager.Manager = Manager;
@@ -3699,6 +3886,13 @@ var TilesetOsmRenderManager;
3699
3886
  }
3700
3887
  return removed > 0;
3701
3888
  };
3889
+ Manager.prototype.ReRender = function (entityIds) {
3890
+ return __awaiter(this, void 0, void 0, function () {
3891
+ return __generator(this, function (_a) {
3892
+ return [2 /*return*/];
3893
+ });
3894
+ });
3895
+ };
3702
3896
  return Manager;
3703
3897
  }());
3704
3898
  TilesetOsmRenderManager.Manager = Manager;
@@ -3816,6 +4010,13 @@ var TilesetEntitiesRenderManager;
3816
4010
  this.visualsManager.Add(rego);
3817
4011
  }
3818
4012
  };
4013
+ Manager.prototype.ReRender = function (entityIds) {
4014
+ return __awaiter(this, void 0, void 0, function () {
4015
+ return __generator(this, function (_a) {
4016
+ return [2 /*return*/];
4017
+ });
4018
+ });
4019
+ };
3819
4020
  return Manager;
3820
4021
  }());
3821
4022
  TilesetEntitiesRenderManager.Manager = Manager;
@@ -3905,6 +4106,13 @@ var TilesetPointcloudRenderManager;
3905
4106
  this.cTileset = null;
3906
4107
  }
3907
4108
  };
4109
+ Manager.prototype.ReRender = function (entityIds) {
4110
+ return __awaiter(this, void 0, void 0, function () {
4111
+ return __generator(this, function (_a) {
4112
+ return [2 /*return*/];
4113
+ });
4114
+ });
4115
+ };
3908
4116
  return Manager;
3909
4117
  }());
3910
4118
  TilesetPointcloudRenderManager.Manager = Manager;
@@ -3957,6 +4165,13 @@ var DataSourceStaticKmlManager;
3957
4165
  this.viewer.dataSources.remove(this.dataSource);
3958
4166
  }
3959
4167
  };
4168
+ Manager.prototype.ReRender = function (entityIds) {
4169
+ return __awaiter(this, void 0, void 0, function () {
4170
+ return __generator(this, function (_a) {
4171
+ return [2 /*return*/];
4172
+ });
4173
+ });
4174
+ };
3960
4175
  return Manager;
3961
4176
  }());
3962
4177
  DataSourceStaticKmlManager.Manager = Manager;
@@ -4165,6 +4380,41 @@ var MenuItemManager;
4165
4380
  Manager.prototype.GetEnabledItem = function (id) {
4166
4381
  return this.items.find(function (x) { return x.id === id; });
4167
4382
  };
4383
+ /**
4384
+ * Rerenders given entities.
4385
+ * If no menu items are specified then the rerender is called on all enabled menu items.
4386
+ * It is highly recommended to supply menu item ids.
4387
+ * @param entityIds
4388
+ * @param menuItemIds
4389
+ */
4390
+ Manager.prototype.ReRender = function (entityIds, menuItemIds) {
4391
+ return __awaiter(this, void 0, void 0, function () {
4392
+ var items, i, item;
4393
+ return __generator(this, function (_a) {
4394
+ switch (_a.label) {
4395
+ case 0:
4396
+ if (!(entityIds === null || entityIds === void 0 ? void 0 : entityIds.length)) {
4397
+ return [2 /*return*/];
4398
+ }
4399
+ items = (menuItemIds === null || menuItemIds === void 0 ? void 0 : menuItemIds.length) ? this.items.filter(function (x) { return menuItemIds.includes(x.id); }) : this.items;
4400
+ i = 0;
4401
+ _a.label = 1;
4402
+ case 1:
4403
+ if (!(i < items.length)) return [3 /*break*/, 4];
4404
+ item = items[i];
4405
+ if (!item.renderManager) return [3 /*break*/, 3];
4406
+ return [4 /*yield*/, item.renderManager.ReRender(entityIds)];
4407
+ case 2:
4408
+ _a.sent();
4409
+ _a.label = 3;
4410
+ case 3:
4411
+ i++;
4412
+ return [3 /*break*/, 1];
4413
+ case 4: return [2 /*return*/];
4414
+ }
4415
+ });
4416
+ });
4417
+ };
4168
4418
  return Manager;
4169
4419
  }());
4170
4420
  MenuItemManager.Manager = Manager;