bruce-cesium 0.0.5 → 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,4 +1,4 @@
1
- import { Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, Matrix4, Cesium3DTileset, EllipsoidGeodesic } from 'cesium';
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
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;
@@ -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,25 +2926,27 @@ 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
  });
@@ -2858,17 +2964,36 @@ var RenderHelper;
2858
2964
  var _a, _b, _c, _d;
2859
2965
  return __awaiter(this, void 0, void 0, function () {
2860
2966
  function traverseItems(item) {
2861
- var _a;
2862
- if (enabledItemIds.includes(item.id)) {
2863
- (_a = groupItem.Children) === null || _a === void 0 ? void 0 : _a.push(item);
2864
- }
2865
- if (item.Children) {
2866
- for (var i = 0; i < item.Children.length; i++) {
2867
- traverseItems(item.Children[i]);
2868
- }
2869
- }
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
+ });
2870
2995
  }
2871
- var view, bookmark, items, enabledItemIds, groupItem, i;
2996
+ var view, bookmark, items, enabledItemIds, renderedItemIds, i;
2872
2997
  return __generator(this, function (_e) {
2873
2998
  switch (_e.label) {
2874
2999
  case 0: return [4 /*yield*/, ProjectView.Get(api, viewId)];
@@ -2879,41 +3004,45 @@ var RenderHelper;
2879
3004
  bookmark = _e.sent();
2880
3005
  items = (_b = (_a = view.Settings) === null || _a === void 0 ? void 0 : _a.LayersMenu) !== null && _b !== void 0 ? _b : [];
2881
3006
  enabledItemIds = (_d = (_c = bookmark.Settings) === null || _c === void 0 ? void 0 : _c.selectedItemIds) !== null && _d !== void 0 ? _d : [];
2882
- groupItem = {
2883
- Caption: "Rendering Bookmark",
2884
- Type: MenuItem.EType.None,
2885
- id: ObjectUtils.UId(),
2886
- Children: []
2887
- };
2888
- for (i = 0; i < items.length; i++) {
2889
- traverseItems(items[i]);
2890
- }
2891
- return [4 /*yield*/, manager.RenderItem(api, groupItem)];
2892
- case 3: return [2 /*return*/, _e.sent()];
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];
2893
3020
  }
2894
3021
  });
2895
3022
  });
2896
3023
  }
2897
3024
  RenderHelper.RenderBookmarkItems = RenderBookmarkItems;
2898
3025
  function RenderMenuItems(manager, api, menuItems) {
2899
- var _a;
2900
3026
  return __awaiter(this, void 0, void 0, function () {
2901
- var groupItem, i, menuItem;
2902
- return __generator(this, function (_b) {
2903
- switch (_b.label) {
3027
+ var renderedItemIds, i, menuItem, itemId;
3028
+ return __generator(this, function (_a) {
3029
+ switch (_a.label) {
2904
3030
  case 0:
2905
- groupItem = {
2906
- Caption: "Rendering Menu Items",
2907
- Type: MenuItem.EType.None,
2908
- id: ObjectUtils.UId(),
2909
- Children: []
2910
- };
2911
- for (i = 0; i < menuItems.length; i++) {
2912
- menuItem = menuItems[i];
2913
- (_a = groupItem.Children) === null || _a === void 0 ? void 0 : _a.push(menuItem);
2914
- }
2915
- return [4 /*yield*/, manager.RenderItem(api, groupItem)];
2916
- 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];
2917
3046
  }
2918
3047
  });
2919
3048
  });