bruce-cesium 0.0.4 → 0.0.6

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,5 +1,5 @@
1
- import { Color, HeightReference, Cartographic, Cartesian3, Entity, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Primitive, Cesium3DTileFeature, Cartesian2, HeadingPitchRange, Math as Math$1, Matrix4, Cesium3DTileset, EllipsoidGeodesic } from 'cesium';
2
- import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, EntityFilterGetter, BatchedDataGetter, ObjectUtils, Tileset, MenuItem } from 'bruce-models';
1
+ import { Cartesian2, Cartographic, Math as Math$1, Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Color, HeightReference, Cartesian3, Entity, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, Matrix4, Cesium3DTileset, EllipsoidGeodesic } from 'cesium';
2
+ import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, EntityFilterGetter, BatchedDataGetter, ObjectUtils, Tileset, MenuItem, ProjectView, ProjectViewBookmark } from 'bruce-models';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -757,7 +757,7 @@ var EntityRenderEngine;
757
757
  _a.label = 2;
758
758
  case 2:
759
759
  if (!(polygons.length > 0)) return [3 /*break*/, 4];
760
- pParams = __assign(__assign({}, groupRenderParams), { entities: models });
760
+ pParams = __assign(__assign({}, groupRenderParams), { entities: polygons });
761
761
  return [4 /*yield*/, Polygon.RenderGroup(pParams)];
762
762
  case 3:
763
763
  pEntities = _a.sent();
@@ -774,7 +774,7 @@ var EntityRenderEngine;
774
774
  _a.label = 4;
775
775
  case 4:
776
776
  if (!(polylines.length > 0)) return [3 /*break*/, 6];
777
- pParams = __assign(__assign({}, groupRenderParams), { entities: models });
777
+ pParams = __assign(__assign({}, groupRenderParams), { entities: polylines });
778
778
  return [4 /*yield*/, Polyline.RenderGroup(pParams)];
779
779
  case 5:
780
780
  pEntities = _a.sent();
@@ -791,7 +791,7 @@ var EntityRenderEngine;
791
791
  _a.label = 6;
792
792
  case 6:
793
793
  if (!(points.length > 0)) return [3 /*break*/, 8];
794
- pParams = __assign(__assign({}, groupRenderParams), { entities: models });
794
+ pParams = __assign(__assign({}, groupRenderParams), { entities: points });
795
795
  return [4 /*yield*/, Point.RenderGroup(pParams)];
796
796
  case 7:
797
797
  pEntities = _a.sent();
@@ -1673,6 +1673,62 @@ function unmarkEntity(visual) {
1673
1673
  }
1674
1674
  }
1675
1675
  }
1676
+ function select(visual) {
1677
+ var color = Color.fromAlpha(Color.YELLOW, 0.5);
1678
+ if (visual instanceof Entity) {
1679
+ var entities = EntityUtils.GatherEntity(visual);
1680
+ for (var i = 0; i < entities.length; i++) {
1681
+ var cEntity = entities[i];
1682
+ if (cEntity.point) {
1683
+ cEntity.point._orgColor = cEntity.point.color;
1684
+ cEntity.point.color = color.clone();
1685
+ }
1686
+ else if (cEntity.polyline) {
1687
+ cEntity.polyline._orgColor = cEntity.polyline.material;
1688
+ cEntity.polyline.material = color.clone();
1689
+ }
1690
+ else if (cEntity.polygon) {
1691
+ cEntity.polygon._orgColor = cEntity.polygon.material;
1692
+ cEntity.polygon.material = color.clone();
1693
+ }
1694
+ else if (cEntity.model) {
1695
+ cEntity.model._orgColor = cEntity.model.color;
1696
+ cEntity.model.color = color.clone();
1697
+ }
1698
+ }
1699
+ }
1700
+ else if (visual instanceof Primitive) ;
1701
+ else if (visual instanceof Cesium3DTileFeature) {
1702
+ var cPrim = visual;
1703
+ cPrim._orgColor = cPrim.color;
1704
+ cPrim.color = color.clone();
1705
+ }
1706
+ }
1707
+ function deselect(visual) {
1708
+ if (visual instanceof Entity) {
1709
+ var entities = EntityUtils.GatherEntity(visual);
1710
+ for (var i = 0; i < entities.length; i++) {
1711
+ var cEntity = entities[i];
1712
+ if (cEntity.point) {
1713
+ cEntity.point.color = cEntity.point._orgColor;
1714
+ }
1715
+ else if (cEntity.polyline) {
1716
+ cEntity.polyline.material = cEntity.polyline._orgColor;
1717
+ }
1718
+ else if (cEntity.polygon) {
1719
+ cEntity.polygon.material = cEntity.polygon._orgColor;
1720
+ }
1721
+ else if (cEntity.model) {
1722
+ cEntity.model.color = cEntity.model._orgColor;
1723
+ }
1724
+ }
1725
+ }
1726
+ else if (visual instanceof Primitive) ;
1727
+ else if (visual instanceof Cesium3DTileFeature) {
1728
+ var cPrim = visual;
1729
+ cPrim.color = cPrim._orgColor;
1730
+ }
1731
+ }
1676
1732
  /**
1677
1733
  * Manages a registry of all Bruce visuals being rendered by menu items.
1678
1734
  * If multiple stuff is registered with the same entity id, only the "best" one is left visible.
@@ -1684,6 +1740,7 @@ var VisualsRegister;
1684
1740
  this.id = ObjectUtils.UId();
1685
1741
  this.rego = {};
1686
1742
  this.onUpdate = null;
1743
+ this.selectedIds = [];
1687
1744
  this.viewer = viewer;
1688
1745
  }
1689
1746
  Object.defineProperty(Register.prototype, "Id", {
@@ -1700,6 +1757,47 @@ var VisualsRegister;
1700
1757
  enumerable: false,
1701
1758
  configurable: true
1702
1759
  });
1760
+ Register.prototype.Select = function (id) {
1761
+ if (this.selectedIds.indexOf(id) === -1) {
1762
+ this.selectedIds.push(id);
1763
+ var regos = this.rego[id];
1764
+ if (regos) {
1765
+ for (var i = 0; i < regos.length; i++) {
1766
+ var rego = regos[i];
1767
+ select(rego.visual);
1768
+ }
1769
+ }
1770
+ }
1771
+ };
1772
+ Register.prototype.Deselect = function (id) {
1773
+ var index = this.selectedIds.indexOf(id);
1774
+ if (index !== -1) {
1775
+ this.selectedIds.splice(index, 1);
1776
+ var regos = this.rego[id];
1777
+ if (regos) {
1778
+ for (var i = 0; i < regos.length; i++) {
1779
+ var rego = regos[i];
1780
+ deselect(rego.visual);
1781
+ }
1782
+ }
1783
+ }
1784
+ };
1785
+ Register.prototype.IsSelected = function (id) {
1786
+ return this.selectedIds.indexOf(id) !== -1;
1787
+ };
1788
+ Register.prototype.ClearSelected = function () {
1789
+ for (var i = 0; i < this.selectedIds.length; i++) {
1790
+ var id = this.selectedIds[i];
1791
+ var regos = this.rego[id];
1792
+ if (regos) {
1793
+ for (var i_1 = 0; i_1 < regos.length; i_1++) {
1794
+ var rego = regos[i_1];
1795
+ deselect(rego.visual);
1796
+ }
1797
+ }
1798
+ }
1799
+ this.selectedIds = [];
1800
+ };
1703
1801
  Register.prototype.Add = function (rego) {
1704
1802
  var _a, _b;
1705
1803
  this.Remove(rego.entityId, rego.menuItemId, false);
@@ -1709,6 +1807,9 @@ var VisualsRegister;
1709
1807
  this.rego[entityId] = entityRegos;
1710
1808
  markEntity(this, rego, rego.visual);
1711
1809
  updateEntity(this.viewer, this.rego[entityId]);
1810
+ if (this.selectedIds.includes(entityId)) {
1811
+ select(rego.visual);
1812
+ }
1712
1813
  (_b = this.onUpdate) === null || _b === void 0 ? void 0 : _b.Trigger({ rego: rego, isAdding: true });
1713
1814
  };
1714
1815
  Register.prototype.GetVisuals = function (entityId, menuItemId) {
@@ -2652,6 +2753,9 @@ var MenuItemManager;
2652
2753
  return __generator(this, function (_c) {
2653
2754
  switch (_c.label) {
2654
2755
  case 0:
2756
+ if (this.items.find(function (x) { return x.id == item.id; })) {
2757
+ return [2 /*return*/, item.id];
2758
+ }
2655
2759
  rItem = {
2656
2760
  id: (_a = item.id) !== null && _a !== void 0 ? _a : ObjectUtils.UId(),
2657
2761
  childIds: [],
@@ -2822,31 +2926,33 @@ var RenderHelper;
2822
2926
  }
2823
2927
  RenderHelper.RenderEntities = RenderEntities;
2824
2928
  function RenderEntityTypes(manager, api, typeIds) {
2825
- var _a;
2826
2929
  return __awaiter(this, void 0, void 0, function () {
2827
- var groupItem, i, typeId, menuItem;
2828
- return __generator(this, function (_b) {
2829
- switch (_b.label) {
2930
+ var renderedItemIds, i, typeId, menuItem, itemId;
2931
+ return __generator(this, function (_a) {
2932
+ switch (_a.label) {
2830
2933
  case 0:
2831
- groupItem = {
2832
- Caption: "Rendering Entity Types",
2833
- Type: MenuItem.EType.None,
2834
- id: ObjectUtils.UId(),
2835
- Children: []
2836
- };
2837
- for (i = 0; i < typeIds.length; i++) {
2838
- typeId = typeIds[i];
2839
- menuItem = MenuItem.CreateFromTypeId(typeId, 0);
2840
- (_a = groupItem.Children) === null || _a === void 0 ? void 0 : _a.push(menuItem);
2841
- }
2842
- return [4 /*yield*/, manager.RenderItem(api, groupItem)];
2843
- case 1: return [2 /*return*/, _b.sent()];
2934
+ renderedItemIds = [];
2935
+ i = 0;
2936
+ _a.label = 1;
2937
+ case 1:
2938
+ if (!(i < typeIds.length)) return [3 /*break*/, 4];
2939
+ typeId = typeIds[i];
2940
+ menuItem = MenuItem.CreateFromTypeId(typeId, 0);
2941
+ return [4 /*yield*/, manager.RenderItem(api, menuItem)];
2942
+ case 2:
2943
+ itemId = _a.sent();
2944
+ renderedItemIds.push(itemId);
2945
+ _a.label = 3;
2946
+ case 3:
2947
+ i++;
2948
+ return [3 /*break*/, 1];
2949
+ case 4: return [2 /*return*/, renderedItemIds];
2844
2950
  }
2845
2951
  });
2846
2952
  });
2847
2953
  }
2848
2954
  RenderHelper.RenderEntityTypes = RenderEntityTypes;
2849
- function RenderEntityFilter(viewer, api, filter) {
2955
+ function RenderEntityFilter(manager, api, filter) {
2850
2956
  return __awaiter(this, void 0, void 0, function () {
2851
2957
  return __generator(this, function (_a) {
2852
2958
  throw (new Error("Not implemented."));
@@ -2854,33 +2960,89 @@ var RenderHelper;
2854
2960
  });
2855
2961
  }
2856
2962
  RenderHelper.RenderEntityFilter = RenderEntityFilter;
2857
- function RenderBookmark(viewer, api, viewId, bookmarkId) {
2963
+ function RenderBookmarkItems(manager, api, viewId, bookmarkId) {
2964
+ var _a, _b, _c, _d;
2858
2965
  return __awaiter(this, void 0, void 0, function () {
2859
- return __generator(this, function (_a) {
2860
- throw (new Error("Not implemented."));
2966
+ function traverseItems(item) {
2967
+ return __awaiter(this, void 0, void 0, function () {
2968
+ var itemId, i;
2969
+ return __generator(this, function (_a) {
2970
+ switch (_a.label) {
2971
+ case 0:
2972
+ if (!enabledItemIds.includes(item.id)) return [3 /*break*/, 2];
2973
+ return [4 /*yield*/, manager.RenderItem(api, item)];
2974
+ case 1:
2975
+ itemId = _a.sent();
2976
+ renderedItemIds.push(itemId);
2977
+ _a.label = 2;
2978
+ case 2:
2979
+ if (!item.Children) return [3 /*break*/, 6];
2980
+ i = 0;
2981
+ _a.label = 3;
2982
+ case 3:
2983
+ if (!(i < item.Children.length)) return [3 /*break*/, 6];
2984
+ return [4 /*yield*/, traverseItems(item.Children[i])];
2985
+ case 4:
2986
+ _a.sent();
2987
+ _a.label = 5;
2988
+ case 5:
2989
+ i++;
2990
+ return [3 /*break*/, 3];
2991
+ case 6: return [2 /*return*/];
2992
+ }
2993
+ });
2994
+ });
2995
+ }
2996
+ var view, bookmark, items, enabledItemIds, renderedItemIds, i;
2997
+ return __generator(this, function (_e) {
2998
+ switch (_e.label) {
2999
+ case 0: return [4 /*yield*/, ProjectView.Get(api, viewId)];
3000
+ case 1:
3001
+ view = _e.sent();
3002
+ return [4 /*yield*/, ProjectViewBookmark.Get(api, viewId, bookmarkId)];
3003
+ case 2:
3004
+ bookmark = _e.sent();
3005
+ items = (_b = (_a = view.Settings) === null || _a === void 0 ? void 0 : _a.LayersMenu) !== null && _b !== void 0 ? _b : [];
3006
+ enabledItemIds = (_d = (_c = bookmark.Settings) === null || _c === void 0 ? void 0 : _c.selectedItemIds) !== null && _d !== void 0 ? _d : [];
3007
+ renderedItemIds = [];
3008
+ i = 0;
3009
+ _e.label = 3;
3010
+ case 3:
3011
+ if (!(i < items.length)) return [3 /*break*/, 6];
3012
+ return [4 /*yield*/, traverseItems(items[i])];
3013
+ case 4:
3014
+ _e.sent();
3015
+ _e.label = 5;
3016
+ case 5:
3017
+ i++;
3018
+ return [3 /*break*/, 3];
3019
+ case 6: return [2 /*return*/, renderedItemIds];
3020
+ }
2861
3021
  });
2862
3022
  });
2863
3023
  }
2864
- RenderHelper.RenderBookmark = RenderBookmark;
3024
+ RenderHelper.RenderBookmarkItems = RenderBookmarkItems;
2865
3025
  function RenderMenuItems(manager, api, menuItems) {
2866
- var _a;
2867
3026
  return __awaiter(this, void 0, void 0, function () {
2868
- var groupItem, i, menuItem;
2869
- return __generator(this, function (_b) {
2870
- switch (_b.label) {
3027
+ var renderedItemIds, i, menuItem, itemId;
3028
+ return __generator(this, function (_a) {
3029
+ switch (_a.label) {
2871
3030
  case 0:
2872
- groupItem = {
2873
- Caption: "Rendering Menu Items",
2874
- Type: MenuItem.EType.None,
2875
- id: ObjectUtils.UId(),
2876
- Children: []
2877
- };
2878
- for (i = 0; i < menuItems.length; i++) {
2879
- menuItem = menuItems[i];
2880
- (_a = groupItem.Children) === null || _a === void 0 ? void 0 : _a.push(menuItem);
2881
- }
2882
- return [4 /*yield*/, manager.RenderItem(api, groupItem)];
2883
- case 1: return [2 /*return*/, _b.sent()];
3031
+ renderedItemIds = [];
3032
+ i = 0;
3033
+ _a.label = 1;
3034
+ case 1:
3035
+ if (!(i < menuItems.length)) return [3 /*break*/, 4];
3036
+ menuItem = menuItems[i];
3037
+ return [4 /*yield*/, manager.RenderItem(api, menuItem)];
3038
+ case 2:
3039
+ itemId = _a.sent();
3040
+ renderedItemIds.push(itemId);
3041
+ _a.label = 3;
3042
+ case 3:
3043
+ i++;
3044
+ return [3 /*break*/, 1];
3045
+ case 4: return [2 /*return*/, renderedItemIds];
2884
3046
  }
2885
3047
  });
2886
3048
  });