bruce-cesium 5.7.7 → 5.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 (230) hide show
  1. package/package.json +2 -2
  2. package/dist/bruce-cesium.es5.js +0 -32263
  3. package/dist/bruce-cesium.es5.js.map +0 -1
  4. package/dist/bruce-cesium.umd.js +0 -32187
  5. package/dist/bruce-cesium.umd.js.map +0 -1
  6. package/dist/lib/bruce-cesium.js +0 -76
  7. package/dist/lib/bruce-cesium.js.map +0 -1
  8. package/dist/lib/internal/cesium-utils.js +0 -109
  9. package/dist/lib/internal/cesium-utils.js.map +0 -1
  10. package/dist/lib/internal/js-utils.js +0 -22
  11. package/dist/lib/internal/js-utils.js.map +0 -1
  12. package/dist/lib/internal/limited-log.js +0 -17
  13. package/dist/lib/internal/limited-log.js.map +0 -1
  14. package/dist/lib/rendering/cesium-animated-in-out.js +0 -166
  15. package/dist/lib/rendering/cesium-animated-in-out.js.map +0 -1
  16. package/dist/lib/rendering/cesium-animated-property.js +0 -1111
  17. package/dist/lib/rendering/cesium-animated-property.js.map +0 -1
  18. package/dist/lib/rendering/entity-gatherer.js +0 -327
  19. package/dist/lib/rendering/entity-gatherer.js.map +0 -1
  20. package/dist/lib/rendering/entity-render-engine-model3d.js +0 -689
  21. package/dist/lib/rendering/entity-render-engine-model3d.js.map +0 -1
  22. package/dist/lib/rendering/entity-render-engine-point.js +0 -984
  23. package/dist/lib/rendering/entity-render-engine-point.js.map +0 -1
  24. package/dist/lib/rendering/entity-render-engine-polygon.js +0 -669
  25. package/dist/lib/rendering/entity-render-engine-polygon.js.map +0 -1
  26. package/dist/lib/rendering/entity-render-engine-polyline.js +0 -415
  27. package/dist/lib/rendering/entity-render-engine-polyline.js.map +0 -1
  28. package/dist/lib/rendering/entity-render-engine.js +0 -442
  29. package/dist/lib/rendering/entity-render-engine.js.map +0 -1
  30. package/dist/lib/rendering/getters/batched-data-getter.js +0 -91
  31. package/dist/lib/rendering/getters/batched-data-getter.js.map +0 -1
  32. package/dist/lib/rendering/getters/entity-filter-getter.js +0 -634
  33. package/dist/lib/rendering/getters/entity-filter-getter.js.map +0 -1
  34. package/dist/lib/rendering/getters/entity-globe.js +0 -172
  35. package/dist/lib/rendering/getters/entity-globe.js.map +0 -1
  36. package/dist/lib/rendering/menu-item-creator.js +0 -354
  37. package/dist/lib/rendering/menu-item-creator.js.map +0 -1
  38. package/dist/lib/rendering/menu-item-manager.js +0 -464
  39. package/dist/lib/rendering/menu-item-manager.js.map +0 -1
  40. package/dist/lib/rendering/relation-render-engine.js +0 -235
  41. package/dist/lib/rendering/relation-render-engine.js.map +0 -1
  42. package/dist/lib/rendering/render-managers/common/cesium-parabola.js +0 -368
  43. package/dist/lib/rendering/render-managers/common/cesium-parabola.js.map +0 -1
  44. package/dist/lib/rendering/render-managers/common/entity-label.js +0 -703
  45. package/dist/lib/rendering/render-managers/common/entity-label.js.map +0 -1
  46. package/dist/lib/rendering/render-managers/common/point-clustering.js +0 -826
  47. package/dist/lib/rendering/render-managers/common/point-clustering.js.map +0 -1
  48. package/dist/lib/rendering/render-managers/common/shared-getters.js +0 -187
  49. package/dist/lib/rendering/render-managers/common/shared-getters.js.map +0 -1
  50. package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js +0 -668
  51. package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js.map +0 -1
  52. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js +0 -92
  53. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js.map +0 -1
  54. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +0 -143
  55. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +0 -1
  56. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +0 -510
  57. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +0 -1
  58. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +0 -717
  59. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +0 -1
  60. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +0 -999
  61. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +0 -1
  62. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +0 -186
  63. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +0 -1
  64. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js +0 -226
  65. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js.map +0 -1
  66. package/dist/lib/rendering/render-managers/other/google-search-render-manager.js +0 -430
  67. package/dist/lib/rendering/render-managers/other/google-search-render-manager.js.map +0 -1
  68. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +0 -290
  69. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +0 -1
  70. package/dist/lib/rendering/render-managers/other/relations-render-manager.js +0 -401
  71. package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +0 -1
  72. package/dist/lib/rendering/render-managers/render-manager.js +0 -276
  73. package/dist/lib/rendering/render-managers/render-manager.js.map +0 -1
  74. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +0 -356
  75. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +0 -1
  76. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +0 -861
  77. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +0 -1
  78. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +0 -279
  79. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +0 -1
  80. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js +0 -104
  81. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js.map +0 -1
  82. package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js +0 -81
  83. package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js.map +0 -1
  84. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +0 -378
  85. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +0 -1
  86. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +0 -140
  87. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +0 -1
  88. package/dist/lib/rendering/tile-render-engine.js +0 -1328
  89. package/dist/lib/rendering/tile-render-engine.js.map +0 -1
  90. package/dist/lib/rendering/tileset-render-engine.js +0 -588
  91. package/dist/lib/rendering/tileset-render-engine.js.map +0 -1
  92. package/dist/lib/rendering/tileset-styler.js +0 -590
  93. package/dist/lib/rendering/tileset-styler.js.map +0 -1
  94. package/dist/lib/rendering/view-render-engine.js +0 -1004
  95. package/dist/lib/rendering/view-render-engine.js.map +0 -1
  96. package/dist/lib/rendering/visual-register-culler.js +0 -676
  97. package/dist/lib/rendering/visual-register-culler.js.map +0 -1
  98. package/dist/lib/rendering/visuals-register.js +0 -1695
  99. package/dist/lib/rendering/visuals-register.js.map +0 -1
  100. package/dist/lib/utils/cesium-entity-styler.js +0 -915
  101. package/dist/lib/utils/cesium-entity-styler.js.map +0 -1
  102. package/dist/lib/utils/drawing-utils.js +0 -308
  103. package/dist/lib/utils/drawing-utils.js.map +0 -1
  104. package/dist/lib/utils/entity-utils.js +0 -1382
  105. package/dist/lib/utils/entity-utils.js.map +0 -1
  106. package/dist/lib/utils/measure-utils.js +0 -73
  107. package/dist/lib/utils/measure-utils.js.map +0 -1
  108. package/dist/lib/utils/simplify-geometry.js +0 -323
  109. package/dist/lib/utils/simplify-geometry.js.map +0 -1
  110. package/dist/lib/utils/view-utils.js +0 -392
  111. package/dist/lib/utils/view-utils.js.map +0 -1
  112. package/dist/lib/viewer/cesium-view-monitor.js +0 -393
  113. package/dist/lib/viewer/cesium-view-monitor.js.map +0 -1
  114. package/dist/lib/viewer/viewer-event-tracker.js +0 -70
  115. package/dist/lib/viewer/viewer-event-tracker.js.map +0 -1
  116. package/dist/lib/viewer/viewer-utils.js +0 -310
  117. package/dist/lib/viewer/viewer-utils.js.map +0 -1
  118. package/dist/lib/widgets/common/draw-3d-polygon.js +0 -458
  119. package/dist/lib/widgets/common/draw-3d-polygon.js.map +0 -1
  120. package/dist/lib/widgets/common/draw-3d-polyline.js +0 -415
  121. package/dist/lib/widgets/common/draw-3d-polyline.js.map +0 -1
  122. package/dist/lib/widgets/common/measure-creator.js +0 -468
  123. package/dist/lib/widgets/common/measure-creator.js.map +0 -1
  124. package/dist/lib/widgets/common/walkthrough.js +0 -336
  125. package/dist/lib/widgets/common/walkthrough.js.map +0 -1
  126. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js +0 -36
  127. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js.map +0 -1
  128. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js +0 -437
  129. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js.map +0 -1
  130. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js +0 -38
  131. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js.map +0 -1
  132. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js +0 -219
  133. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js.map +0 -1
  134. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js +0 -304
  135. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js.map +0 -1
  136. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js +0 -29
  137. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js.map +0 -1
  138. package/dist/lib/widgets/widget-bookmarks.js +0 -497
  139. package/dist/lib/widgets/widget-bookmarks.js.map +0 -1
  140. package/dist/lib/widgets/widget-branding.js +0 -165
  141. package/dist/lib/widgets/widget-branding.js.map +0 -1
  142. package/dist/lib/widgets/widget-cursorbar.js +0 -1179
  143. package/dist/lib/widgets/widget-cursorbar.js.map +0 -1
  144. package/dist/lib/widgets/widget-embedded-info-view.js +0 -201
  145. package/dist/lib/widgets/widget-embedded-info-view.js.map +0 -1
  146. package/dist/lib/widgets/widget-info-view.js +0 -681
  147. package/dist/lib/widgets/widget-info-view.js.map +0 -1
  148. package/dist/lib/widgets/widget-left-panel.js +0 -548
  149. package/dist/lib/widgets/widget-left-panel.js.map +0 -1
  150. package/dist/lib/widgets/widget-nav-compass.js +0 -469
  151. package/dist/lib/widgets/widget-nav-compass.js.map +0 -1
  152. package/dist/lib/widgets/widget-view-bar.js +0 -284
  153. package/dist/lib/widgets/widget-view-bar.js.map +0 -1
  154. package/dist/lib/widgets/widget.js +0 -66
  155. package/dist/lib/widgets/widget.js.map +0 -1
  156. package/dist/types/bruce-cesium.d.ts +0 -58
  157. package/dist/types/internal/cesium-utils.d.ts +0 -23
  158. package/dist/types/internal/js-utils.d.ts +0 -8
  159. package/dist/types/internal/limited-log.d.ts +0 -6
  160. package/dist/types/rendering/cesium-animated-in-out.d.ts +0 -12
  161. package/dist/types/rendering/cesium-animated-property.d.ts +0 -245
  162. package/dist/types/rendering/entity-gatherer.d.ts +0 -36
  163. package/dist/types/rendering/entity-render-engine-model3d.d.ts +0 -56
  164. package/dist/types/rendering/entity-render-engine-point.d.ts +0 -73
  165. package/dist/types/rendering/entity-render-engine-polygon.d.ts +0 -26
  166. package/dist/types/rendering/entity-render-engine-polyline.d.ts +0 -47
  167. package/dist/types/rendering/entity-render-engine.d.ts +0 -108
  168. package/dist/types/rendering/getters/batched-data-getter.d.ts +0 -28
  169. package/dist/types/rendering/getters/entity-filter-getter.d.ts +0 -104
  170. package/dist/types/rendering/getters/entity-globe.d.ts +0 -21
  171. package/dist/types/rendering/menu-item-creator.d.ts +0 -53
  172. package/dist/types/rendering/menu-item-manager.d.ts +0 -85
  173. package/dist/types/rendering/relation-render-engine.d.ts +0 -32
  174. package/dist/types/rendering/render-managers/common/cesium-parabola.d.ts +0 -39
  175. package/dist/types/rendering/render-managers/common/entity-label.d.ts +0 -82
  176. package/dist/types/rendering/render-managers/common/point-clustering.d.ts +0 -91
  177. package/dist/types/rendering/render-managers/common/shared-getters.d.ts +0 -41
  178. package/dist/types/rendering/render-managers/data-source/data-source-static-csv-manager.d.ts +0 -41
  179. package/dist/types/rendering/render-managers/data-source/data-source-static-kml-manager.d.ts +0 -25
  180. package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +0 -31
  181. package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +0 -76
  182. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +0 -90
  183. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +0 -90
  184. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +0 -42
  185. package/dist/types/rendering/render-managers/other/assembly-render-manager.d.ts +0 -38
  186. package/dist/types/rendering/render-managers/other/google-search-render-manager.d.ts +0 -45
  187. package/dist/types/rendering/render-managers/other/legacy-relations-render-manager.d.ts +0 -60
  188. package/dist/types/rendering/render-managers/other/relations-render-manager.d.ts +0 -53
  189. package/dist/types/rendering/render-managers/render-manager.d.ts +0 -30
  190. package/dist/types/rendering/render-managers/tilesets/tileset-arb-render-manager.d.ts +0 -37
  191. package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +0 -86
  192. package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +0 -41
  193. package/dist/types/rendering/render-managers/tilesets/tileset-google-photos-render-manager.d.ts +0 -26
  194. package/dist/types/rendering/render-managers/tilesets/tileset-i3s-render-manager.d.ts +0 -25
  195. package/dist/types/rendering/render-managers/tilesets/tileset-osm-render-manager.d.ts +0 -48
  196. package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +0 -27
  197. package/dist/types/rendering/tile-render-engine.d.ts +0 -80
  198. package/dist/types/rendering/tileset-render-engine.d.ts +0 -99
  199. package/dist/types/rendering/tileset-styler.d.ts +0 -86
  200. package/dist/types/rendering/view-render-engine.d.ts +0 -32
  201. package/dist/types/rendering/visual-register-culler.d.ts +0 -18
  202. package/dist/types/rendering/visuals-register.d.ts +0 -351
  203. package/dist/types/utils/cesium-entity-styler.d.ts +0 -103
  204. package/dist/types/utils/drawing-utils.d.ts +0 -59
  205. package/dist/types/utils/entity-utils.d.ts +0 -133
  206. package/dist/types/utils/measure-utils.d.ts +0 -20
  207. package/dist/types/utils/simplify-geometry.d.ts +0 -19
  208. package/dist/types/utils/view-utils.d.ts +0 -101
  209. package/dist/types/viewer/cesium-view-monitor.d.ts +0 -35
  210. package/dist/types/viewer/viewer-event-tracker.d.ts +0 -47
  211. package/dist/types/viewer/viewer-utils.d.ts +0 -88
  212. package/dist/types/widgets/common/draw-3d-polygon.d.ts +0 -62
  213. package/dist/types/widgets/common/draw-3d-polyline.d.ts +0 -50
  214. package/dist/types/widgets/common/measure-creator.d.ts +0 -60
  215. package/dist/types/widgets/common/walkthrough.d.ts +0 -37
  216. package/dist/types/widgets/controls-view-bar/widget-control-view-bar-fullscreen.d.ts +0 -10
  217. package/dist/types/widgets/controls-view-bar/widget-control-view-bar-search.d.ts +0 -18
  218. package/dist/types/widgets/controls-view-bar/widget-control-view-bar.d.ts +0 -23
  219. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.d.ts +0 -11
  220. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-user.d.ts +0 -24
  221. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab.d.ts +0 -17
  222. package/dist/types/widgets/widget-bookmarks.d.ts +0 -40
  223. package/dist/types/widgets/widget-branding.d.ts +0 -15
  224. package/dist/types/widgets/widget-cursorbar.d.ts +0 -48
  225. package/dist/types/widgets/widget-embedded-info-view.d.ts +0 -13
  226. package/dist/types/widgets/widget-info-view.d.ts +0 -21
  227. package/dist/types/widgets/widget-left-panel.d.ts +0 -73
  228. package/dist/types/widgets/widget-nav-compass.d.ts +0 -27
  229. package/dist/types/widgets/widget-view-bar.d.ts +0 -37
  230. package/dist/types/widgets/widget.d.ts +0 -29
@@ -1,984 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntityRenderEnginePoint = void 0;
4
- const bruce_models_1 = require("bruce-models");
5
- const cesium_animated_property_1 = require("./cesium-animated-property");
6
- const Cesium = require("cesium");
7
- const entity_render_engine_1 = require("./entity-render-engine");
8
- const entity_utils_1 = require("../utils/entity-utils");
9
- const js_utils_1 = require("../internal/js-utils");
10
- const cesium_utils_1 = require("../internal/cesium-utils");
11
- const limited_log_1 = require("../internal/limited-log");
12
- const cesium_entity_styler_1 = require("../utils/cesium-entity-styler");
13
- /**
14
- * Handles point rendering.
15
- */
16
- var EntityRenderEnginePoint;
17
- (function (EntityRenderEnginePoint) {
18
- /**
19
- * Creates a circle billboard (canvas) for a point.
20
- * @param params
21
- * @returns
22
- */
23
- function CreateCircleBillboard(params) {
24
- return createCircleBillboard(params.size, params.colorCss);
25
- }
26
- EntityRenderEnginePoint.CreateCircleBillboard = CreateCircleBillboard;
27
- /**
28
- * Renders a single point Entity.
29
- * This takes an optional prior Cesium Entity to update rather than create from scratch.
30
- * @param params
31
- * @returns
32
- */
33
- async function Render(params) {
34
- var _a, _b, _c, _d;
35
- const entity = params.entity;
36
- if (!params.entityHistoric) {
37
- params.entityHistoric = [];
38
- }
39
- const style = params.style;
40
- let type = style.Type;
41
- if (type == null) {
42
- // Very old backward compatibility.
43
- if (style.useIcon == true) {
44
- type = bruce_models_1.Style.EPointType.Icon;
45
- }
46
- }
47
- let cEntity = null;
48
- let siblings = [];
49
- let heightRef = null;
50
- let animatePosition = null;
51
- let shouldShowTrack = false;
52
- const prepareExistingGraphic = (cEntity, maxSiblings = 0) => {
53
- // Gather entity in case previous version had sibling graphics we no longer need.
54
- const parts = entity_utils_1.EntityUtils.GatherEntity({
55
- entity: cEntity,
56
- });
57
- if (parts.length > 1) {
58
- // We'll cull all except the allowed number of siblings.
59
- cEntity._siblingGraphics = cEntity._siblingGraphics.slice(0, maxSiblings);
60
- // We'll remove all that aren't in the allowed (direct) list.
61
- for (let i = 0; i < parts.length - 1; i++) {
62
- const part = parts[i];
63
- if (part && part instanceof Cesium.Entity && params.viewer.entities.contains(part) && !cEntity._siblingGraphics.includes(part)) {
64
- params.viewer.entities.remove(part);
65
- }
66
- }
67
- if (cEntity._parentEntity) {
68
- console.warn("Point.Render: Parent entity was not null. This should not happen.");
69
- }
70
- }
71
- siblings = cEntity._siblingGraphics;
72
- cEntity._siblingGraphics = [];
73
- };
74
- const updateShouldShowTrack = () => {
75
- var _a, _b, _c;
76
- if (!params.entityHistoricDrawTrack) {
77
- return;
78
- }
79
- if ((_a = params.entityHistoric) === null || _a === void 0 ? void 0 : _a.length) {
80
- const lStyle = (_c = (_b = params.fullStyle) === null || _b === void 0 ? void 0 : _b.polylineStyle) !== null && _c !== void 0 ? _c : {};
81
- let width = lStyle.width ? (0, js_utils_1.EnsureNumber)(bruce_models_1.Calculator.GetNumber(lStyle.width, entity, params.tags)) : 2;
82
- if (width == null) {
83
- width = 2;
84
- }
85
- width = (0, js_utils_1.EnsureNumber)(width);
86
- if (width > 0.01) {
87
- const bColor = lStyle.lineColor ? bruce_models_1.Calculator.GetColor(lStyle.lineColor, entity, params.tags) : null;
88
- const cColor = bColor ? (0, cesium_utils_1.ColorToCColor)(bColor) : Cesium.Color.fromCssColorString("rgba(255, 193, 7, 0.8)");
89
- if (cColor.alpha > 0) {
90
- const seriesTrackPosses = cesium_animated_property_1.CesiumAnimatedProperty.GetSeriesPossesForHistoricEntity(params.viewer, heightRef, heightRef, params.entityHistoric);
91
- seriesTrackPosses.reverse();
92
- let posses = seriesTrackPosses.map(x => x.pos3d);
93
- posses = (0, cesium_utils_1.CullDuplicateCPosses)(posses);
94
- shouldShowTrack = posses.length > 1;
95
- }
96
- }
97
- }
98
- ;
99
- };
100
- if (type == bruce_models_1.Style.EPointType.Icon) {
101
- // Fixing poor data.
102
- let iconUrlRows = style.iconUrl == null ? [] : style.iconUrl;
103
- iconUrlRows.forEach((row) => {
104
- if (row.type == bruce_models_1.Calculator.EValueType.Color) {
105
- row.type = bruce_models_1.Calculator.EValueType.Input;
106
- }
107
- });
108
- const icon = bruce_models_1.Calculator.GetString(iconUrlRows, entity, params.tags);
109
- let iconUrl = null;
110
- if (typeof icon == "string") {
111
- iconUrl = icon;
112
- const metadata = extractMetadataFromFileUrl(iconUrl);
113
- // If we're able to determine the Nextspace metadata from the url then we can use that to load the file.
114
- // Warning, if this is cross-env, eg: UAT -> DEV then it will RIGHTLY fail to load the file.
115
- if (metadata) {
116
- const api = params.apiGetter.getApi(metadata.accountId);
117
- await api.Loading;
118
- iconUrl = bruce_models_1.ClientFile.GetUrl({
119
- api: api,
120
- fileId: metadata.fileId,
121
- viaCdn: true
122
- });
123
- }
124
- }
125
- if (!iconUrl && style.iconId) {
126
- await params.api.Loading;
127
- iconUrl = bruce_models_1.ClientFile.GetUrl({
128
- api: params.api,
129
- fileId: style.iconId,
130
- viaCdn: true
131
- });
132
- }
133
- let image = null;
134
- // ND-1640 - Tags not appearing.
135
- // Validate file, else user will see nothing.
136
- // Pray we aren't loading some giant file.
137
- if (iconUrl) {
138
- try {
139
- image = await createImageBillboard(iconUrl);
140
- }
141
- catch (e) {
142
- // Expanding the logging here so we can figure out why this is happening.
143
- // Most of the time the file is missing but we're getting some strange errors so I am including logging on the API settings as well.
144
- (0, limited_log_1.OneTimeError)("ENTITY_RENDER_ENGINE_ICON_URL_ERROR_" + iconUrl, {
145
- error: e,
146
- iconUrl,
147
- apiUrl: (_a = params.api) === null || _a === void 0 ? void 0 : _a.GetBaseUrl(),
148
- apiAccountId: (_b = params.api) === null || _b === void 0 ? void 0 : _b.AccountId
149
- });
150
- }
151
- }
152
- if (image) {
153
- let iconScale = (0, js_utils_1.EnsureNumber)(bruce_models_1.Calculator.GetNumber(style.iconScale, entity, params.tags));
154
- if (!iconScale && iconScale != 0) {
155
- iconScale = 1;
156
- }
157
- const disableDepthTest = Boolean(style.renderOnTop);
158
- if (iconScale > 0) {
159
- updateShouldShowTrack();
160
- const bColor = style.iconTintColor ? bruce_models_1.Calculator.GetColor(style.iconTintColor, entity, params.tags) : null;
161
- const cColor = bColor ? (0, cesium_utils_1.ColorToCColor)(bColor) : Cesium.Color.WHITE.clone();
162
- heightRef = getHeightRef(style);
163
- if (!params.rendered || !params.rendered.billboard) {
164
- const animateColorIn = new cesium_animated_property_1.CesiumAnimatedProperty.AnimateColor({
165
- durationMs: 200,
166
- targetColor: cColor,
167
- startColor: cColor.withAlpha(0),
168
- viewer: params.viewer
169
- });
170
- let position = null;
171
- // If we have a series of time-based positions then we'll animate as time changes.
172
- const series = cesium_animated_property_1.CesiumAnimatedProperty.GetSeriesPossesForHistoricEntity(params.viewer, heightRef, heightRef, params.entityHistoric);
173
- if (series.length > 1) {
174
- animatePosition = new cesium_animated_property_1.CesiumAnimatedProperty.AnimatePositionSeries({
175
- posses: series,
176
- viewer: params.viewer
177
- });
178
- position = new Cesium.CallbackProperty(() => animatePosition.GetValue(), false);
179
- position["CesiumAnimatedProperty.AnimatePositionSeries"] = animatePosition;
180
- }
181
- else {
182
- position = new Cesium.CallbackProperty(() => entity_utils_1.EntityUtils.GetPos({
183
- viewer: params.viewer,
184
- entity,
185
- recordHeightRef: heightRef,
186
- returnHeightRef: heightRef,
187
- allowRendered: false
188
- }), true);
189
- }
190
- cEntity = new Cesium.Entity({
191
- id: bruce_models_1.ObjectUtils.UId(15),
192
- billboard: {
193
- horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
194
- verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
195
- image: image.canvasDataUri,
196
- heightReference: getHeightRef(style),
197
- scale: iconScale,
198
- disableDepthTestDistance: disableDepthTest ? Number.POSITIVE_INFINITY : undefined,
199
- distanceDisplayCondition: entity_render_engine_1.EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance),
200
- color: new Cesium.CallbackProperty(() => {
201
- const color = animateColorIn.GetColor();
202
- if (animateColorIn.IsDone() && (cEntity === null || cEntity === void 0 ? void 0 : cEntity.billboard)) {
203
- cEntity.billboard.color = new Cesium.CallbackProperty(() => color, true);
204
- }
205
- return color;
206
- }, false),
207
- // Would be great once we have a setting for this.
208
- // translucencyByDistance: getTranslucencyByDistance(params.minDistance, params.maxDistance),
209
- },
210
- position: position,
211
- show: true
212
- });
213
- cesium_entity_styler_1.CesiumEntityStyler.BakeDefaultColor({
214
- entity: cEntity,
215
- colors: {
216
- "billboard": cColor
217
- },
218
- viewer: params.viewer,
219
- refresh: false
220
- });
221
- }
222
- else {
223
- prepareExistingGraphic(params.rendered, shouldShowTrack ? 1 : 0);
224
- cEntity = params.rendered;
225
- const currentImgKey = cEntity.billboard._billboardImgKey;
226
- if (currentImgKey != iconUrl) {
227
- cEntity.billboard.image = new Cesium.ConstantProperty(image.canvasDataUri);
228
- }
229
- cEntity.billboard.scale = new Cesium.ConstantProperty(iconScale);
230
- cEntity.billboard.heightReference = new Cesium.ConstantProperty(getHeightRef(style));
231
- cEntity.billboard.disableDepthTestDistance = new Cesium.ConstantProperty(disableDepthTest ? Number.POSITIVE_INFINITY : undefined);
232
- cEntity.billboard.distanceDisplayCondition = new Cesium.ConstantProperty(entity_render_engine_1.EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance));
233
- // Unset width/height.
234
- cEntity.billboard.width = undefined;
235
- cEntity.billboard.height = undefined;
236
- const prevPos3d = (0, cesium_utils_1.GetCValue)(params.viewer, cEntity.position);
237
- let prevStartTime = null;
238
- if (cEntity.position && cEntity.position["CesiumAnimatedProperty.AnimatePositionSeries"]) {
239
- prevStartTime = cEntity.position["CesiumAnimatedProperty.AnimatePositionSeries"].GetAnimateFromDateTime();
240
- }
241
- // If we have a series of time-based positions then we'll animate as time changes.
242
- const series = cesium_animated_property_1.CesiumAnimatedProperty.GetSeriesPossesForHistoricEntity(params.viewer, heightRef, heightRef, params.entityHistoric);
243
- if (series.length > 1) {
244
- animatePosition = new cesium_animated_property_1.CesiumAnimatedProperty.AnimatePositionSeries({
245
- posses: series,
246
- viewer: params.viewer,
247
- animateFromPos3d: prevPos3d,
248
- animateFromPos3dTimeStart: prevStartTime
249
- });
250
- cEntity.position = new Cesium.CallbackProperty(() => animatePosition.GetValue(), false);
251
- cEntity.position["CesiumAnimatedProperty.AnimatePositionSeries"] = animatePosition;
252
- }
253
- else {
254
- const pos3d = entity_utils_1.EntityUtils.GetPos({
255
- viewer: params.viewer,
256
- entity,
257
- recordHeightRef: heightRef,
258
- returnHeightRef: heightRef,
259
- allowRendered: false
260
- });
261
- if (!prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d)) {
262
- animatePosition = new cesium_animated_property_1.CesiumAnimatedProperty.AnimatePosition({
263
- durationMs: 200,
264
- targetPos3d: pos3d,
265
- viewer: params.viewer,
266
- startPos3d: prevPos3d
267
- });
268
- cEntity.position = new Cesium.CallbackProperty(() => animatePosition.GetValue(), false);
269
- }
270
- }
271
- // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
272
- cesium_entity_styler_1.CesiumEntityStyler.SetDefaultColor({
273
- color: cColor ? cColor : new Cesium.Color(),
274
- entity: cEntity,
275
- viewer: params.viewer,
276
- override: true,
277
- requestRender: false
278
- });
279
- cEntity.show = true;
280
- }
281
- cEntity.billboard._billboardSize = image.height;
282
- cEntity.billboard._billboardImgKey = iconUrl;
283
- }
284
- }
285
- }
286
- if (type == bruce_models_1.Style.EPointType.Cylinder) {
287
- const radius = (0, js_utils_1.EnsureNumber)(bruce_models_1.Calculator.GetNumber(style.CylinderRadius, entity, params.tags));
288
- if (radius <= 0) {
289
- return null;
290
- }
291
- const bFill = style.CylinderFillColor ? bruce_models_1.Calculator.GetColor(style.CylinderFillColor, entity, params.tags) : null;
292
- const cFill = bFill ? (0, cesium_utils_1.ColorToCColor)(bFill) : Cesium.Color.RED;
293
- const outline = Boolean(style.CylinderBorderEnabled);
294
- let cOutline = null;
295
- let outlineWidth = 1;
296
- if (outline) {
297
- const bOutline = style.CylinderBorderColor ? bruce_models_1.Calculator.GetColor(style.CylinderBorderColor, entity, params.tags) : null;
298
- cOutline = bOutline ? (0, cesium_utils_1.ColorToCColor)(bOutline) : Cesium.Color.BLACK;
299
- outlineWidth = (0, js_utils_1.EnsureNumber)(bruce_models_1.Calculator.GetNumber(style.CylinderBorderWidth, entity, params.tags), 1);
300
- }
301
- heightRef = getHeightRef(style);
302
- let pos3d = entity_utils_1.EntityUtils.GetPos({
303
- viewer: params.viewer,
304
- entity,
305
- recordHeightRef: heightRef,
306
- returnHeightRef: heightRef,
307
- allowRendered: false
308
- });
309
- const extrusion = getCylinderExtrusion(entity, params.tags, heightRef, style.CylinderFillExtrusion);
310
- const hasOutline = outline && outlineWidth > 0;
311
- const outlineExtrusion = hasOutline ? getCylinderExtrusion(entity, params.tags, heightRef, style.CylinderBorderExtrusion) : null;
312
- // If this doesn't have its own extrusion, we must make it match the sibling.
313
- // This way they render in a uniform way.
314
- if (hasOutline) {
315
- if (outlineExtrusion.value == undefined && extrusion.value != undefined) {
316
- outlineExtrusion.exHeightRef = extrusion.exHeightRef;
317
- outlineExtrusion.value = 0;
318
- }
319
- else if (outlineExtrusion.value != undefined && extrusion.value == undefined) {
320
- extrusion.exHeightRef = outlineExtrusion.exHeightRef;
321
- extrusion.value = 0;
322
- }
323
- }
324
- let classification = Cesium.ClassificationType.TERRAIN;
325
- if (style["drapeOver"] == "ALL") {
326
- classification = Cesium.ClassificationType.BOTH;
327
- }
328
- // Height being set will kill classification.
329
- // So we want to use it only when we have to (when extruded).
330
- let height = undefined;
331
- if (heightRef != Cesium.HeightReference.CLAMP_TO_GROUND && extrusion.value != undefined) {
332
- height = Cesium.Cartographic.fromCartesian(pos3d).height;
333
- }
334
- if (!params.rendered || !params.rendered.ellipse) {
335
- cEntity = new Cesium.Entity({
336
- id: bruce_models_1.ObjectUtils.UId(15),
337
- ellipse: {
338
- semiMajorAxis: radius,
339
- semiMinorAxis: radius,
340
- material: cFill,
341
- outlineWidth: null,
342
- extrudedHeight: extrusion.value,
343
- heightReference: heightRef,
344
- extrudedHeightReference: extrusion.exHeightRef,
345
- height: height,
346
- zIndex: 1,
347
- classificationType: classification,
348
- distanceDisplayCondition: entity_render_engine_1.EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance)
349
- },
350
- position: pos3d === null || pos3d === void 0 ? void 0 : pos3d.clone(),
351
- show: true
352
- });
353
- }
354
- else {
355
- prepareExistingGraphic(params.rendered, hasOutline ? 1 : 0);
356
- cEntity = params.rendered;
357
- const curRadius = (0, cesium_utils_1.GetCValue)(params.viewer, cEntity.ellipse.semiMajorAxis);
358
- if (curRadius != radius) {
359
- cEntity.ellipse.semiMajorAxis = new Cesium.ConstantProperty(radius);
360
- cEntity.ellipse.semiMinorAxis = new Cesium.ConstantProperty(radius);
361
- }
362
- cEntity.ellipse.outlineWidth = undefined;
363
- {
364
- const curHeightRef = (0, cesium_utils_1.GetCValue)(params.viewer, cEntity.ellipse.heightReference);
365
- if (curHeightRef != heightRef) {
366
- cEntity.ellipse.heightReference = new Cesium.ConstantProperty(heightRef);
367
- }
368
- const curHeight = (0, cesium_utils_1.GetCValue)(params.viewer, cEntity.ellipse.height);
369
- if (curHeight != height) {
370
- cEntity.ellipse.height = new Cesium.ConstantProperty(height);
371
- }
372
- }
373
- {
374
- const curExtHeightRef = (0, cesium_utils_1.GetCValue)(params.viewer, cEntity.ellipse.extrudedHeightReference);
375
- if (curExtHeightRef != extrusion.exHeightRef) {
376
- cEntity.ellipse.extrudedHeightReference = new Cesium.ConstantProperty(extrusion.exHeightRef);
377
- }
378
- const curExtHeight = (0, cesium_utils_1.GetCValue)(params.viewer, cEntity.ellipse.extrudedHeight);
379
- if (curExtHeight != extrusion.value) {
380
- cEntity.ellipse.extrudedHeight = new Cesium.ConstantProperty(extrusion.value);
381
- }
382
- }
383
- cEntity.ellipse.zIndex = new Cesium.ConstantProperty(1);
384
- cEntity.ellipse.distanceDisplayCondition = new Cesium.ConstantProperty(entity_render_engine_1.EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance));
385
- const curClassification = (0, cesium_utils_1.GetCValue)(params.viewer, cEntity.ellipse.classificationType);
386
- if (curClassification != classification) {
387
- cEntity.ellipse.classificationType = new Cesium.ConstantProperty(classification);
388
- }
389
- cEntity.position = new Cesium.ConstantPositionProperty(pos3d === null || pos3d === void 0 ? void 0 : pos3d.clone());
390
- // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
391
- // WARNING: ellipse does not support animation (yet?).
392
- cesium_entity_styler_1.CesiumEntityStyler.SetDefaultColor({
393
- color: cFill,
394
- entity: cEntity,
395
- viewer: params.viewer,
396
- override: true,
397
- requestRender: false
398
- });
399
- cEntity.show = true;
400
- }
401
- if (hasOutline) {
402
- // Height being set will kill classification.
403
- // So we want to use it only when we have to (when extruded).
404
- let outlineHeight = undefined;
405
- if (outlineExtrusion.exHeightRef != Cesium.HeightReference.CLAMP_TO_GROUND && outlineExtrusion.value != undefined) {
406
- outlineHeight = Cesium.Cartographic.fromCartesian(pos3d).height;
407
- }
408
- let outlineEntity = siblings === null || siblings === void 0 ? void 0 : siblings[0];
409
- if (outlineEntity && outlineEntity.ellipse) {
410
- const curRadius = (0, cesium_utils_1.GetCValue)(params.viewer, outlineEntity.ellipse.semiMajorAxis);
411
- if (curRadius != radius + outlineWidth) {
412
- outlineEntity.ellipse.semiMajorAxis = new Cesium.ConstantProperty(radius + outlineWidth);
413
- outlineEntity.ellipse.semiMinorAxis = new Cesium.ConstantProperty(radius + outlineWidth);
414
- }
415
- {
416
- const curHeightRef = (0, cesium_utils_1.GetCValue)(params.viewer, outlineEntity.ellipse.heightReference);
417
- if (curHeightRef != heightRef) {
418
- outlineEntity.ellipse.heightReference = new Cesium.ConstantProperty(heightRef);
419
- }
420
- const curHeight = (0, cesium_utils_1.GetCValue)(params.viewer, outlineEntity.ellipse.height);
421
- if (curHeight != outlineHeight) {
422
- outlineEntity.ellipse.height = new Cesium.ConstantProperty(outlineHeight);
423
- }
424
- }
425
- {
426
- const curExtHeightRef = (0, cesium_utils_1.GetCValue)(params.viewer, outlineEntity.ellipse.extrudedHeightReference);
427
- if (curExtHeightRef != outlineExtrusion.exHeightRef) {
428
- outlineEntity.ellipse.extrudedHeightReference = new Cesium.ConstantProperty(outlineExtrusion.exHeightRef);
429
- }
430
- const curExtHeight = (0, cesium_utils_1.GetCValue)(params.viewer, outlineEntity.ellipse.extrudedHeight);
431
- if (curExtHeight != outlineExtrusion.value) {
432
- outlineEntity.ellipse.extrudedHeight = new Cesium.ConstantProperty(outlineExtrusion.value);
433
- }
434
- }
435
- outlineEntity.ellipse.zIndex = new Cesium.ConstantProperty(2);
436
- outlineEntity.ellipse.distanceDisplayCondition = new Cesium.ConstantProperty(entity_render_engine_1.EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance));
437
- const curClassification = (0, cesium_utils_1.GetCValue)(params.viewer, outlineEntity.ellipse.classificationType);
438
- if (curClassification != classification) {
439
- outlineEntity.ellipse.classificationType = new Cesium.ConstantProperty(classification);
440
- }
441
- // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
442
- // WARNING: ellipse does not support animation (yet?).
443
- cesium_entity_styler_1.CesiumEntityStyler.SetDefaultColor({
444
- color: cOutline,
445
- entity: outlineEntity,
446
- viewer: params.viewer,
447
- override: true,
448
- requestRender: false
449
- });
450
- outlineEntity.show = true;
451
- }
452
- else {
453
- outlineEntity = new Cesium.Entity({
454
- id: bruce_models_1.ObjectUtils.UId(15),
455
- ellipse: {
456
- semiMajorAxis: radius + outlineWidth,
457
- semiMinorAxis: radius + outlineWidth,
458
- material: cOutline,
459
- outlineWidth: undefined,
460
- extrudedHeight: outlineExtrusion.value,
461
- heightReference: heightRef,
462
- extrudedHeightReference: outlineExtrusion.exHeightRef,
463
- height: outlineHeight,
464
- zIndex: 2,
465
- classificationType: classification,
466
- distanceDisplayCondition: entity_render_engine_1.EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance)
467
- },
468
- position: pos3d === null || pos3d === void 0 ? void 0 : pos3d.clone()
469
- });
470
- }
471
- siblings.push(outlineEntity);
472
- }
473
- }
474
- if (!cEntity) {
475
- const bColor = style.color ? bruce_models_1.Calculator.GetColor(style.color, entity, params.tags) : null;
476
- const cColor = bColor ? (0, cesium_utils_1.ColorToCColor)(bColor) : Cesium.Color.fromCssColorString("rgba(33, 150, 243, 0.8)");
477
- let size = style.size ? bruce_models_1.Calculator.GetNumber(style.size, entity, params.tags) : null;
478
- if (size == null) {
479
- size = 20;
480
- }
481
- size = (0, js_utils_1.EnsureNumber)(size);
482
- if (size <= 0) {
483
- return null;
484
- }
485
- heightRef = getHeightRef(style);
486
- const circleBillboard = createCircleBillboard(size, cColor.toCssColorString());
487
- const disableDepthTest = Boolean(style.renderOnTop);
488
- updateShouldShowTrack();
489
- if (!params.rendered || !params.rendered.billboard) {
490
- const animateColorIn = new cesium_animated_property_1.CesiumAnimatedProperty.AnimateColor({
491
- durationMs: 200,
492
- targetColor: cColor,
493
- startColor: cColor.withAlpha(0),
494
- viewer: params.viewer
495
- });
496
- let position = null;
497
- // If we have a series of time-based positions then we'll animate as time changes.
498
- const series = cesium_animated_property_1.CesiumAnimatedProperty.GetSeriesPossesForHistoricEntity(params.viewer, heightRef, heightRef, params.entityHistoric);
499
- if (series.length > 1) {
500
- animatePosition = new cesium_animated_property_1.CesiumAnimatedProperty.AnimatePositionSeries({
501
- posses: series,
502
- viewer: params.viewer
503
- });
504
- position = new Cesium.CallbackProperty(() => animatePosition.GetValue(), false);
505
- position["CesiumAnimatedProperty.AnimatePositionSeries"] = animatePosition;
506
- }
507
- else {
508
- position = new Cesium.CallbackProperty(() => entity_utils_1.EntityUtils.GetPos({
509
- viewer: params.viewer,
510
- entity,
511
- recordHeightRef: heightRef,
512
- returnHeightRef: heightRef,
513
- allowRendered: false
514
- }), true);
515
- }
516
- cEntity = new Cesium.Entity({
517
- id: bruce_models_1.ObjectUtils.UId(15),
518
- // point: {
519
- // pixelSize: size,
520
- // color: cColor,
521
- // heightReference: getHeightRef(style),
522
- // distanceDisplayCondition: EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance)
523
- // },
524
- // We are generating a billboard instead of using the point.
525
- // This is because points were behaving strangely where they would appear oblong shapes.
526
- // This occurred consistently when rendering many icons and points at the same time.
527
- billboard: {
528
- height: circleBillboard.height,
529
- width: circleBillboard.width,
530
- image: circleBillboard.canvasDataUri,
531
- color: new Cesium.CallbackProperty(() => {
532
- const color = animateColorIn.GetColor();
533
- if (animateColorIn.IsDone() && (cEntity === null || cEntity === void 0 ? void 0 : cEntity.billboard)) {
534
- cEntity.billboard.color = new Cesium.CallbackProperty(() => color, true);
535
- }
536
- return color;
537
- }, false),
538
- heightReference: heightRef,
539
- distanceDisplayCondition: entity_render_engine_1.EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance),
540
- disableDepthTestDistance: disableDepthTest ? Number.POSITIVE_INFINITY : undefined
541
- },
542
- position: position,
543
- show: true
544
- });
545
- cesium_entity_styler_1.CesiumEntityStyler.BakeDefaultColor({
546
- entity: cEntity,
547
- viewer: params.viewer,
548
- colors: {
549
- "billboard": cColor
550
- },
551
- refresh: false
552
- });
553
- }
554
- else {
555
- prepareExistingGraphic(params.rendered, shouldShowTrack ? 1 : 0);
556
- cEntity = params.rendered;
557
- const imgKey = `${size}-${cColor.toCssColorString()}`;
558
- const currentImgKey = cEntity.billboard._billboardImgKey;
559
- if (currentImgKey != imgKey) {
560
- cEntity.billboard.image = new Cesium.ConstantProperty(circleBillboard.canvasDataUri);
561
- }
562
- cEntity.billboard.height = new Cesium.ConstantProperty(circleBillboard.height);
563
- cEntity.billboard.width = new Cesium.ConstantProperty(circleBillboard.width);
564
- cEntity.billboard.heightReference = new Cesium.ConstantProperty(heightRef);
565
- cEntity.billboard.distanceDisplayCondition = new Cesium.ConstantProperty(entity_render_engine_1.EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance));
566
- cEntity.billboard.disableDepthTestDistance = new Cesium.ConstantProperty(disableDepthTest ? Number.POSITIVE_INFINITY : undefined);
567
- const prevPos3d = (0, cesium_utils_1.GetCValue)(params.viewer, cEntity.position);
568
- let prevStartTime = null;
569
- if (cEntity.position && cEntity.position["CesiumAnimatedProperty.AnimatePositionSeries"]) {
570
- prevStartTime = cEntity.position["CesiumAnimatedProperty.AnimatePositionSeries"].GetAnimateFromDateTime();
571
- }
572
- // If we have a series of time-based positions then we'll animate as time changes.
573
- const series = cesium_animated_property_1.CesiumAnimatedProperty.GetSeriesPossesForHistoricEntity(params.viewer, heightRef, heightRef, params.entityHistoric);
574
- if (series.length > 1) {
575
- animatePosition = new cesium_animated_property_1.CesiumAnimatedProperty.AnimatePositionSeries({
576
- posses: series,
577
- viewer: params.viewer,
578
- animateFromPos3d: prevPos3d,
579
- animateFromPos3dTimeStart: prevStartTime
580
- });
581
- cEntity.position = new Cesium.CallbackProperty(() => animatePosition.GetValue(), false);
582
- cEntity.position["CesiumAnimatedProperty.AnimatePositionSeries"] = animatePosition;
583
- }
584
- else {
585
- const pos3d = entity_utils_1.EntityUtils.GetPos({
586
- viewer: params.viewer,
587
- entity,
588
- recordHeightRef: heightRef,
589
- returnHeightRef: heightRef,
590
- allowRendered: false
591
- });
592
- if (!prevPos3d || !Cesium.Cartesian3.equals(prevPos3d, pos3d)) {
593
- animatePosition = new cesium_animated_property_1.CesiumAnimatedProperty.AnimatePosition({
594
- durationMs: 200,
595
- targetPos3d: pos3d,
596
- viewer: params.viewer,
597
- startPos3d: prevPos3d
598
- });
599
- cEntity.position = new Cesium.CallbackProperty(() => animatePosition.GetValue(), false);
600
- }
601
- }
602
- // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
603
- cesium_entity_styler_1.CesiumEntityStyler.SetDefaultColor({
604
- color: cColor,
605
- entity: cEntity,
606
- viewer: params.viewer,
607
- override: true,
608
- requestRender: false
609
- });
610
- cEntity.show = true;
611
- cEntity.billboard._billboardImgKey = imgKey;
612
- }
613
- cEntity.billboard._billboardSize = Math.ceil(circleBillboard.height / 2);
614
- }
615
- // Generate a polyline 'track' for the historic data.
616
- // We do this for historic data that exists and is moving.
617
- if (shouldShowTrack && animatePosition && animatePosition instanceof cesium_animated_property_1.CesiumAnimatedProperty.AnimatePositionSeries && animatePosition.GetSeries) {
618
- const lStyle = (_d = (_c = params.fullStyle) === null || _c === void 0 ? void 0 : _c.polylineStyle) !== null && _d !== void 0 ? _d : {};
619
- const bColor = lStyle.lineColor ? bruce_models_1.Calculator.GetColor(lStyle.lineColor, entity, params.tags) : null;
620
- const cColor = bColor ? (0, cesium_utils_1.ColorToCColor)(bColor) : Cesium.Color.fromCssColorString("rgba(255, 193, 7, 0.8)");
621
- let width = lStyle.lineWidth ? (0, js_utils_1.EnsureNumber)(bruce_models_1.Calculator.GetNumber(lStyle.lineWidth, entity, params.tags)) : 2;
622
- if (width == null) {
623
- width = 2;
624
- }
625
- width = (0, js_utils_1.EnsureNumber)(width);
626
- const lHeightRef = getHeightRef(lStyle, heightRef);
627
- let trackEntity = siblings === null || siblings === void 0 ? void 0 : siblings[0];
628
- if (!trackEntity || !trackEntity.polyline) {
629
- trackEntity = new Cesium.Entity({
630
- id: bruce_models_1.ObjectUtils.UId(15),
631
- polyline: {
632
- positions: [],
633
- width: width,
634
- material: cColor,
635
- clampToGround: lHeightRef == Cesium.HeightReference.CLAMP_TO_GROUND,
636
- zIndex: 0,
637
- classificationType: Cesium.ClassificationType.BOTH,
638
- show: true
639
- },
640
- position: (0, cesium_utils_1.GetCValue)(params.viewer, cEntity.position),
641
- });
642
- // Visual was updated in a way that needs a full refresh.
643
- if (params.rego) {
644
- params.rego.stale = true;
645
- }
646
- }
647
- trackEntity._parentEntity = null;
648
- trackEntity._noEdit = true;
649
- trackEntity.polyline.positions = new Cesium.CallbackProperty(() => {
650
- return animatePosition.GetSeries();
651
- }, false);
652
- // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
653
- // WARNING: polyline does not support animation (yet?).
654
- cesium_entity_styler_1.CesiumEntityStyler.SetDefaultColor({
655
- color: cColor,
656
- entity: trackEntity,
657
- viewer: params.viewer,
658
- override: true,
659
- requestRender: false
660
- });
661
- siblings.push(trackEntity);
662
- trackEntity._parentEntity = cEntity;
663
- }
664
- cEntity._siblingGraphics = siblings;
665
- return cEntity;
666
- }
667
- EntityRenderEnginePoint.Render = Render;
668
- /**
669
- * Renders a group of point Entities.
670
- * This will take an optional set of prior rendered Cesium Entities to update rather than create from scratch.
671
- * @param params
672
- * @returns
673
- */
674
- async function RenderGroup(params) {
675
- var _a, _b, _c, _d, _e;
676
- const api = params.apiGetter.getApi();
677
- const cEntities = new Map();
678
- for (let i = 0; i < params.entities.length; i++) {
679
- const entity = params.entities[i];
680
- const zoomItem = params.zoomItems[entity.Bruce.ID];
681
- const style = zoomItem.StyleID != -1 ? (_a = (await getStyle(api, entity, zoomItem.StyleID))) === null || _a === void 0 ? void 0 : _a.Settings : zoomItem.Style;
682
- const tagIds = entity.Bruce["Layer.ID"];
683
- let tags = [];
684
- if (tagIds && tagIds.length > 0) {
685
- tags = (await bruce_models_1.EntityTag.GetListByIds({
686
- api,
687
- tagIds
688
- })).tags;
689
- }
690
- const pStyle = (_b = style === null || style === void 0 ? void 0 : style.pointStyle) !== null && _b !== void 0 ? _b : {};
691
- let rego = null;
692
- // Only used for historic tracks right now.
693
- // So won't bother getting it if we don't have historic data.
694
- if ((_c = params.entitiesHistoric) === null || _c === void 0 ? void 0 : _c[entity.Bruce.ID]) {
695
- rego = params.visualRegister.GetRego({
696
- entityId: entity.Bruce.ID,
697
- menuItemId: params.menuItemId
698
- });
699
- }
700
- const cEntity = await Render({
701
- entity: entity,
702
- style: pStyle,
703
- tags: tags,
704
- viewer: params.viewer,
705
- api: api,
706
- apiGetter: params.apiGetter,
707
- maxDistance: zoomItem.MaxZoom,
708
- minDistance: zoomItem.MinZoom,
709
- rendered: (_d = params.rendered) === null || _d === void 0 ? void 0 : _d.get(entity.Bruce.ID),
710
- entityHistoric: (_e = params.entitiesHistoric) === null || _e === void 0 ? void 0 : _e[entity.Bruce.ID],
711
- entityHistoricDrawTrack: params.entityHistoricDrawTrack,
712
- fullStyle: style,
713
- rego: rego
714
- });
715
- if (cEntity) {
716
- const name = await getName(api, entity);
717
- cEntity.name = name;
718
- cEntity._renderGroup = entity_render_engine_1.EntityRenderEngine.GetRenderGroupId(zoomItem);
719
- }
720
- cEntities.set(entity.Bruce.ID, cEntity);
721
- }
722
- return cEntities;
723
- }
724
- EntityRenderEnginePoint.RenderGroup = RenderGroup;
725
- })(EntityRenderEnginePoint = exports.EntityRenderEnginePoint || (exports.EntityRenderEnginePoint = {}));
726
- // Cache of billboards to avoid regenerating them for the same size and color.
727
- const _billboardCache = new bruce_models_1.LRUCache(150);
728
- const POINT_BILLBOARD_PADDING = 1;
729
- const createCircleBillboard = (size, colorCss) => {
730
- const key = size + "-" + colorCss;
731
- const cacheData = _billboardCache.Get(key);
732
- if ((cacheData === null || cacheData === void 0 ? void 0 : cacheData.canvasDataUri) && typeof (cacheData === null || cacheData === void 0 ? void 0 : cacheData.canvasDataUri) == "string") {
733
- return cacheData;
734
- }
735
- // Slight padding to avoid corners clipping.
736
- const canvasSize = size + (POINT_BILLBOARD_PADDING * 4);
737
- const canvas = document.createElement("canvas");
738
- canvas.width = canvasSize;
739
- canvas.height = canvasSize;
740
- const context = canvas.getContext("2d");
741
- context.beginPath();
742
- context.arc(canvasSize / 2, canvasSize / 2, size / 2, 0, 2 * Math.PI, false);
743
- context.fillStyle = colorCss;
744
- context.fill();
745
- const data = {
746
- canvasDataUri: canvas.toDataURL("image/png"),
747
- colorCss,
748
- size,
749
- height: canvasSize,
750
- width: canvasSize
751
- };
752
- _billboardCache.Set(key, data);
753
- return data;
754
- };
755
- const createImageBillboard = (url) => {
756
- const cacheKey = "image-" + url;
757
- const cacheData = _billboardCache.Get(cacheKey);
758
- if (cacheData) {
759
- return cacheData;
760
- }
761
- const prom = new Promise(async (res, rej) => {
762
- try {
763
- const response = await fetch(url);
764
- const blob = await response.blob();
765
- const canvas = document.createElement("canvas");
766
- const image = new Image();
767
- image.onload = () => {
768
- canvas.width = image.width;
769
- canvas.height = image.height;
770
- const context = canvas.getContext("2d");
771
- context.drawImage(image, 0, 0);
772
- const data = {
773
- canvasDataUri: canvas.toDataURL("image/png"),
774
- height: image.height
775
- };
776
- res(data);
777
- };
778
- image.onerror = (e) => {
779
- rej(e);
780
- };
781
- image.src = URL.createObjectURL(blob);
782
- }
783
- catch (e) {
784
- rej(e);
785
- }
786
- });
787
- _billboardCache.Set(cacheKey, prom);
788
- return prom;
789
- };
790
- /**
791
- * Turns a hard-coded file url into pieces so we can properly load it using our libraries rather than directly.
792
- * @param url eg: https://demoplantprocess.api.nextspace-uat.net/file/4c29bdf8-1f0b-4739-b0ee-421ea07ba4e5.png
793
- */
794
- function extractMetadataFromFileUrl(url) {
795
- var _a;
796
- url = url.toLowerCase();
797
- // Bzzt, invalid url format for our purposes.
798
- if (!url.includes(".api.") || !url.includes("/file/")) {
799
- return null;
800
- }
801
- url = url.replace("https://", "").replace("http://", "");
802
- let envId = bruce_models_1.Api.EEnv.PROD;
803
- if (url.includes("-dev.net")) {
804
- envId = bruce_models_1.Api.EEnv.DEV;
805
- }
806
- else if (url.includes("-stg.net")) {
807
- envId = bruce_models_1.Api.EEnv.STG;
808
- }
809
- else if (url.includes("-uat.net")) {
810
- envId = bruce_models_1.Api.EEnv.UAT;
811
- }
812
- const parts = url.split("/");
813
- const host = parts[0];
814
- const hostParts = host.split(".");
815
- const accountId = hostParts[0];
816
- let fileId = (_a = parts[2]) !== null && _a !== void 0 ? _a : "";
817
- if (fileId.includes("?")) {
818
- fileId = fileId.split("?")[0];
819
- }
820
- if (fileId.includes(".")) {
821
- fileId = fileId.split(".")[0];
822
- }
823
- if (!fileId || !accountId) {
824
- return null;
825
- }
826
- return {
827
- accountId,
828
- fileId: fileId,
829
- envId: envId
830
- };
831
- }
832
- function getHeightRef(style, defaultStyle) {
833
- var _a;
834
- let heightRef = defaultStyle == null ? Cesium.HeightReference.CLAMP_TO_GROUND : defaultStyle;
835
- const altOptionId = (_a = style === null || style === void 0 ? void 0 : style.altitudeOption) === null || _a === void 0 ? void 0 : _a.id;
836
- if (altOptionId == 0) {
837
- heightRef = Cesium.HeightReference.CLAMP_TO_GROUND;
838
- }
839
- else if (altOptionId == 1) {
840
- heightRef = Cesium.HeightReference.NONE;
841
- }
842
- else if (altOptionId == 2) {
843
- heightRef = Cesium.HeightReference.RELATIVE_TO_GROUND;
844
- }
845
- return heightRef;
846
- }
847
- function getCylinderStyleExtrusion(style, entity, tags, heightRef) {
848
- if (!style) {
849
- return null;
850
- }
851
- try {
852
- const extrusion = +bruce_models_1.Calculator.GetNumber(style, entity, tags);
853
- if (!extrusion && extrusion != 0) {
854
- return null;
855
- }
856
- /*
857
- Cesium extrudes in strange way.
858
- If you want something that is 50 meters above sea, and 5 meters tall,
859
- You need to extrude by 55 meters, if you extrude by 5 it will extrude from sea and look flat.
860
- */
861
- const height = (0, js_utils_1.EnsureNumber)(bruce_models_1.Entity.GetValue({
862
- entity: entity,
863
- path: ["Bruce", "Location", "altitude"]
864
- }), 0);
865
- return heightRef != Cesium.HeightReference.CLAMP_TO_GROUND ? extrusion + height : extrusion;
866
- }
867
- catch (e) {
868
- console.error(e);
869
- }
870
- return 0;
871
- }
872
- function getCylinderExtrusion(entity, tags, heightRef, style) {
873
- const data = {
874
- value: undefined,
875
- exHeightRef: heightRef == Cesium.HeightReference.CLAMP_TO_GROUND ? Cesium.HeightReference.RELATIVE_TO_GROUND : heightRef
876
- };
877
- const extrusion = getCylinderStyleExtrusion(style, entity, tags, heightRef);
878
- if (extrusion) {
879
- data.value = extrusion;
880
- }
881
- if (data.value != undefined) {
882
- data.value = (0, js_utils_1.EnsureNumber)(data.value);
883
- }
884
- return data;
885
- }
886
- async function getName(api, entity) {
887
- try {
888
- const typeId = entity.Bruce["EntityType.ID"];
889
- let type = null;
890
- if (typeId) {
891
- type = (await bruce_models_1.EntityType.Get({
892
- api,
893
- entityTypeId: typeId
894
- })).entityType;
895
- }
896
- if (type) {
897
- const name = bruce_models_1.Entity.CalculateName({
898
- entity,
899
- type,
900
- defaultToId: false
901
- });
902
- return name ? name : "Unnamed Entity";
903
- }
904
- }
905
- catch (e) {
906
- let hideError = false;
907
- // TODO: we need a util for extracting code + message rather than writing all this every time.
908
- if (e && typeof e == "object" && e.ERROR) {
909
- const error = e.ERROR;
910
- const code = error && typeof error == "object" ? error.Code : "";
911
- // Avoiding logging a common error.
912
- // This happens when rendering entities that don't have records.
913
- hideError = String(code).toLowerCase() == "notfound";
914
- }
915
- if (!hideError) {
916
- console.error(e);
917
- }
918
- }
919
- return "Unknown entity";
920
- }
921
- async function getStyle(api, entity, styleId) {
922
- let style = null;
923
- if (styleId && styleId != -1) {
924
- try {
925
- style = (await bruce_models_1.Style.Get({
926
- api,
927
- styleId
928
- })).style;
929
- }
930
- // Probably deleted.
931
- catch (e) {
932
- console.error(e);
933
- }
934
- }
935
- if (!style) {
936
- const typeId = entity.Bruce["EntityType.ID"];
937
- if (typeId) {
938
- try {
939
- const { entityType: type } = await bruce_models_1.EntityType.Get({
940
- api,
941
- entityTypeId: typeId
942
- });
943
- if (type["DisplaySetting.ID"]) {
944
- try {
945
- style = (await bruce_models_1.Style.Get({
946
- api,
947
- styleId: type["DisplaySetting.ID"]
948
- })).style;
949
- }
950
- catch (e) {
951
- let hideError = false;
952
- // TODO: we need a util for extracting code + message rather than writing all this every time.
953
- if (e && typeof e == "object" && e.ERROR) {
954
- const error = e.ERROR;
955
- const code = error && typeof error == "object" ? error.Code : "";
956
- // Avoiding logging a common error.
957
- // This happens when rendering entities that don't have records.
958
- hideError = String(code).toLowerCase() == "notfound";
959
- }
960
- if (!hideError) {
961
- console.error(e);
962
- }
963
- }
964
- }
965
- }
966
- catch (e) {
967
- let hideError = false;
968
- // TODO: we need a util for extracting code + message rather than writing all this every time.
969
- if (e && typeof e == "object" && e.ERROR) {
970
- const error = e.ERROR;
971
- const code = error && typeof error == "object" ? error.Code : "";
972
- // Avoiding logging a common error.
973
- // This happens when rendering entities that don't have records.
974
- hideError = String(code).toLowerCase() == "notfound";
975
- }
976
- if (!hideError) {
977
- console.error(e);
978
- }
979
- }
980
- }
981
- }
982
- return style;
983
- }
984
- //# sourceMappingURL=entity-render-engine-point.js.map