bruce-cesium 5.7.9 → 5.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/dist/bruce-cesium.es5.js +32308 -0
  2. package/dist/bruce-cesium.es5.js.map +1 -0
  3. package/dist/bruce-cesium.umd.js +32232 -0
  4. package/dist/bruce-cesium.umd.js.map +1 -0
  5. package/dist/lib/bruce-cesium.js +76 -0
  6. package/dist/lib/bruce-cesium.js.map +1 -0
  7. package/dist/lib/internal/cesium-utils.js +109 -0
  8. package/dist/lib/internal/cesium-utils.js.map +1 -0
  9. package/dist/lib/internal/js-utils.js +22 -0
  10. package/dist/lib/internal/js-utils.js.map +1 -0
  11. package/dist/lib/internal/limited-log.js +17 -0
  12. package/dist/lib/internal/limited-log.js.map +1 -0
  13. package/dist/lib/rendering/cesium-animated-in-out.js +166 -0
  14. package/dist/lib/rendering/cesium-animated-in-out.js.map +1 -0
  15. package/dist/lib/rendering/cesium-animated-property.js +1111 -0
  16. package/dist/lib/rendering/cesium-animated-property.js.map +1 -0
  17. package/dist/lib/rendering/entity-gatherer.js +327 -0
  18. package/dist/lib/rendering/entity-gatherer.js.map +1 -0
  19. package/dist/lib/rendering/entity-render-engine-model3d.js +689 -0
  20. package/dist/lib/rendering/entity-render-engine-model3d.js.map +1 -0
  21. package/dist/lib/rendering/entity-render-engine-point.js +984 -0
  22. package/dist/lib/rendering/entity-render-engine-point.js.map +1 -0
  23. package/dist/lib/rendering/entity-render-engine-polygon.js +669 -0
  24. package/dist/lib/rendering/entity-render-engine-polygon.js.map +1 -0
  25. package/dist/lib/rendering/entity-render-engine-polyline.js +415 -0
  26. package/dist/lib/rendering/entity-render-engine-polyline.js.map +1 -0
  27. package/dist/lib/rendering/entity-render-engine.js +442 -0
  28. package/dist/lib/rendering/entity-render-engine.js.map +1 -0
  29. package/dist/lib/rendering/getters/batched-data-getter.js +91 -0
  30. package/dist/lib/rendering/getters/batched-data-getter.js.map +1 -0
  31. package/dist/lib/rendering/getters/entity-filter-getter.js +634 -0
  32. package/dist/lib/rendering/getters/entity-filter-getter.js.map +1 -0
  33. package/dist/lib/rendering/getters/entity-globe.js +172 -0
  34. package/dist/lib/rendering/getters/entity-globe.js.map +1 -0
  35. package/dist/lib/rendering/menu-item-creator.js +354 -0
  36. package/dist/lib/rendering/menu-item-creator.js.map +1 -0
  37. package/dist/lib/rendering/menu-item-manager.js +464 -0
  38. package/dist/lib/rendering/menu-item-manager.js.map +1 -0
  39. package/dist/lib/rendering/relation-render-engine.js +235 -0
  40. package/dist/lib/rendering/relation-render-engine.js.map +1 -0
  41. package/dist/lib/rendering/render-managers/common/cesium-parabola.js +368 -0
  42. package/dist/lib/rendering/render-managers/common/cesium-parabola.js.map +1 -0
  43. package/dist/lib/rendering/render-managers/common/entity-label.js +703 -0
  44. package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -0
  45. package/dist/lib/rendering/render-managers/common/point-clustering.js +826 -0
  46. package/dist/lib/rendering/render-managers/common/point-clustering.js.map +1 -0
  47. package/dist/lib/rendering/render-managers/common/shared-getters.js +187 -0
  48. package/dist/lib/rendering/render-managers/common/shared-getters.js.map +1 -0
  49. package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js +668 -0
  50. package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js.map +1 -0
  51. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js +92 -0
  52. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js.map +1 -0
  53. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +143 -0
  54. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -0
  55. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +510 -0
  56. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -0
  57. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +717 -0
  58. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -0
  59. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +999 -0
  60. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -0
  61. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +186 -0
  62. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -0
  63. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js +226 -0
  64. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js.map +1 -0
  65. package/dist/lib/rendering/render-managers/other/google-search-render-manager.js +430 -0
  66. package/dist/lib/rendering/render-managers/other/google-search-render-manager.js.map +1 -0
  67. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +290 -0
  68. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -0
  69. package/dist/lib/rendering/render-managers/other/relations-render-manager.js +401 -0
  70. package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -0
  71. package/dist/lib/rendering/render-managers/render-manager.js +276 -0
  72. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -0
  73. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +356 -0
  74. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -0
  75. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +861 -0
  76. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -0
  77. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +279 -0
  78. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -0
  79. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js +104 -0
  80. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js.map +1 -0
  81. package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js +81 -0
  82. package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js.map +1 -0
  83. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +378 -0
  84. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -0
  85. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +140 -0
  86. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -0
  87. package/dist/lib/rendering/tile-render-engine.js +1328 -0
  88. package/dist/lib/rendering/tile-render-engine.js.map +1 -0
  89. package/dist/lib/rendering/tileset-render-engine.js +588 -0
  90. package/dist/lib/rendering/tileset-render-engine.js.map +1 -0
  91. package/dist/lib/rendering/tileset-styler.js +590 -0
  92. package/dist/lib/rendering/tileset-styler.js.map +1 -0
  93. package/dist/lib/rendering/view-render-engine.js +1004 -0
  94. package/dist/lib/rendering/view-render-engine.js.map +1 -0
  95. package/dist/lib/rendering/visual-register-culler.js +676 -0
  96. package/dist/lib/rendering/visual-register-culler.js.map +1 -0
  97. package/dist/lib/rendering/visuals-register.js +1741 -0
  98. package/dist/lib/rendering/visuals-register.js.map +1 -0
  99. package/dist/lib/utils/cesium-entity-styler.js +914 -0
  100. package/dist/lib/utils/cesium-entity-styler.js.map +1 -0
  101. package/dist/lib/utils/drawing-utils.js +308 -0
  102. package/dist/lib/utils/drawing-utils.js.map +1 -0
  103. package/dist/lib/utils/entity-utils.js +1382 -0
  104. package/dist/lib/utils/entity-utils.js.map +1 -0
  105. package/dist/lib/utils/measure-utils.js +73 -0
  106. package/dist/lib/utils/measure-utils.js.map +1 -0
  107. package/dist/lib/utils/simplify-geometry.js +323 -0
  108. package/dist/lib/utils/simplify-geometry.js.map +1 -0
  109. package/dist/lib/utils/view-utils.js +392 -0
  110. package/dist/lib/utils/view-utils.js.map +1 -0
  111. package/dist/lib/viewer/cesium-view-monitor.js +393 -0
  112. package/dist/lib/viewer/cesium-view-monitor.js.map +1 -0
  113. package/dist/lib/viewer/viewer-event-tracker.js +70 -0
  114. package/dist/lib/viewer/viewer-event-tracker.js.map +1 -0
  115. package/dist/lib/viewer/viewer-utils.js +310 -0
  116. package/dist/lib/viewer/viewer-utils.js.map +1 -0
  117. package/dist/lib/widgets/common/draw-3d-polygon.js +458 -0
  118. package/dist/lib/widgets/common/draw-3d-polygon.js.map +1 -0
  119. package/dist/lib/widgets/common/draw-3d-polyline.js +415 -0
  120. package/dist/lib/widgets/common/draw-3d-polyline.js.map +1 -0
  121. package/dist/lib/widgets/common/measure-creator.js +468 -0
  122. package/dist/lib/widgets/common/measure-creator.js.map +1 -0
  123. package/dist/lib/widgets/common/walkthrough.js +336 -0
  124. package/dist/lib/widgets/common/walkthrough.js.map +1 -0
  125. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js +36 -0
  126. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js.map +1 -0
  127. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js +437 -0
  128. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js.map +1 -0
  129. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js +38 -0
  130. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js.map +1 -0
  131. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js +219 -0
  132. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js.map +1 -0
  133. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js +304 -0
  134. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js.map +1 -0
  135. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js +29 -0
  136. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js.map +1 -0
  137. package/dist/lib/widgets/widget-bookmarks.js +497 -0
  138. package/dist/lib/widgets/widget-bookmarks.js.map +1 -0
  139. package/dist/lib/widgets/widget-branding.js +165 -0
  140. package/dist/lib/widgets/widget-branding.js.map +1 -0
  141. package/dist/lib/widgets/widget-cursorbar.js +1179 -0
  142. package/dist/lib/widgets/widget-cursorbar.js.map +1 -0
  143. package/dist/lib/widgets/widget-embedded-info-view.js +201 -0
  144. package/dist/lib/widgets/widget-embedded-info-view.js.map +1 -0
  145. package/dist/lib/widgets/widget-info-view.js +681 -0
  146. package/dist/lib/widgets/widget-info-view.js.map +1 -0
  147. package/dist/lib/widgets/widget-left-panel.js +548 -0
  148. package/dist/lib/widgets/widget-left-panel.js.map +1 -0
  149. package/dist/lib/widgets/widget-nav-compass.js +469 -0
  150. package/dist/lib/widgets/widget-nav-compass.js.map +1 -0
  151. package/dist/lib/widgets/widget-view-bar.js +284 -0
  152. package/dist/lib/widgets/widget-view-bar.js.map +1 -0
  153. package/dist/lib/widgets/widget.js +66 -0
  154. package/dist/lib/widgets/widget.js.map +1 -0
  155. package/dist/types/bruce-cesium.d.ts +58 -0
  156. package/dist/types/internal/cesium-utils.d.ts +23 -0
  157. package/dist/types/internal/js-utils.d.ts +8 -0
  158. package/dist/types/internal/limited-log.d.ts +6 -0
  159. package/dist/types/rendering/cesium-animated-in-out.d.ts +12 -0
  160. package/dist/types/rendering/cesium-animated-property.d.ts +245 -0
  161. package/dist/types/rendering/entity-gatherer.d.ts +36 -0
  162. package/dist/types/rendering/entity-render-engine-model3d.d.ts +56 -0
  163. package/dist/types/rendering/entity-render-engine-point.d.ts +73 -0
  164. package/dist/types/rendering/entity-render-engine-polygon.d.ts +26 -0
  165. package/dist/types/rendering/entity-render-engine-polyline.d.ts +47 -0
  166. package/dist/types/rendering/entity-render-engine.d.ts +108 -0
  167. package/dist/types/rendering/getters/batched-data-getter.d.ts +28 -0
  168. package/dist/types/rendering/getters/entity-filter-getter.d.ts +104 -0
  169. package/dist/types/rendering/getters/entity-globe.d.ts +21 -0
  170. package/dist/types/rendering/menu-item-creator.d.ts +53 -0
  171. package/dist/types/rendering/menu-item-manager.d.ts +85 -0
  172. package/dist/types/rendering/relation-render-engine.d.ts +32 -0
  173. package/dist/types/rendering/render-managers/common/cesium-parabola.d.ts +39 -0
  174. package/dist/types/rendering/render-managers/common/entity-label.d.ts +82 -0
  175. package/dist/types/rendering/render-managers/common/point-clustering.d.ts +91 -0
  176. package/dist/types/rendering/render-managers/common/shared-getters.d.ts +41 -0
  177. package/dist/types/rendering/render-managers/data-source/data-source-static-csv-manager.d.ts +41 -0
  178. package/dist/types/rendering/render-managers/data-source/data-source-static-kml-manager.d.ts +25 -0
  179. package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +31 -0
  180. package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +76 -0
  181. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +90 -0
  182. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +90 -0
  183. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +42 -0
  184. package/dist/types/rendering/render-managers/other/assembly-render-manager.d.ts +38 -0
  185. package/dist/types/rendering/render-managers/other/google-search-render-manager.d.ts +45 -0
  186. package/dist/types/rendering/render-managers/other/legacy-relations-render-manager.d.ts +60 -0
  187. package/dist/types/rendering/render-managers/other/relations-render-manager.d.ts +53 -0
  188. package/dist/types/rendering/render-managers/render-manager.d.ts +30 -0
  189. package/dist/types/rendering/render-managers/tilesets/tileset-arb-render-manager.d.ts +37 -0
  190. package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +86 -0
  191. package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +41 -0
  192. package/dist/types/rendering/render-managers/tilesets/tileset-google-photos-render-manager.d.ts +26 -0
  193. package/dist/types/rendering/render-managers/tilesets/tileset-i3s-render-manager.d.ts +25 -0
  194. package/dist/types/rendering/render-managers/tilesets/tileset-osm-render-manager.d.ts +48 -0
  195. package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +27 -0
  196. package/dist/types/rendering/tile-render-engine.d.ts +80 -0
  197. package/dist/types/rendering/tileset-render-engine.d.ts +99 -0
  198. package/dist/types/rendering/tileset-styler.d.ts +86 -0
  199. package/dist/types/rendering/view-render-engine.d.ts +32 -0
  200. package/dist/types/rendering/visual-register-culler.d.ts +18 -0
  201. package/dist/types/rendering/visuals-register.d.ts +361 -0
  202. package/dist/types/utils/cesium-entity-styler.d.ts +103 -0
  203. package/dist/types/utils/drawing-utils.d.ts +59 -0
  204. package/dist/types/utils/entity-utils.d.ts +133 -0
  205. package/dist/types/utils/measure-utils.d.ts +20 -0
  206. package/dist/types/utils/simplify-geometry.d.ts +19 -0
  207. package/dist/types/utils/view-utils.d.ts +101 -0
  208. package/dist/types/viewer/cesium-view-monitor.d.ts +35 -0
  209. package/dist/types/viewer/viewer-event-tracker.d.ts +47 -0
  210. package/dist/types/viewer/viewer-utils.d.ts +88 -0
  211. package/dist/types/widgets/common/draw-3d-polygon.d.ts +62 -0
  212. package/dist/types/widgets/common/draw-3d-polyline.d.ts +50 -0
  213. package/dist/types/widgets/common/measure-creator.d.ts +60 -0
  214. package/dist/types/widgets/common/walkthrough.d.ts +37 -0
  215. package/dist/types/widgets/controls-view-bar/widget-control-view-bar-fullscreen.d.ts +10 -0
  216. package/dist/types/widgets/controls-view-bar/widget-control-view-bar-search.d.ts +18 -0
  217. package/dist/types/widgets/controls-view-bar/widget-control-view-bar.d.ts +23 -0
  218. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.d.ts +11 -0
  219. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-user.d.ts +24 -0
  220. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab.d.ts +17 -0
  221. package/dist/types/widgets/widget-bookmarks.d.ts +40 -0
  222. package/dist/types/widgets/widget-branding.d.ts +15 -0
  223. package/dist/types/widgets/widget-cursorbar.d.ts +48 -0
  224. package/dist/types/widgets/widget-embedded-info-view.d.ts +13 -0
  225. package/dist/types/widgets/widget-info-view.d.ts +21 -0
  226. package/dist/types/widgets/widget-left-panel.d.ts +73 -0
  227. package/dist/types/widgets/widget-nav-compass.d.ts +27 -0
  228. package/dist/types/widgets/widget-view-bar.d.ts +37 -0
  229. package/dist/types/widgets/widget.d.ts +29 -0
  230. package/package.json +1 -1
@@ -0,0 +1,634 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityFilterGetter = void 0;
4
+ const bruce_models_1 = require("bruce-models");
5
+ const entity_globe_1 = require("./entity-globe");
6
+ const Cesium = require("cesium");
7
+ const shared_getters_1 = require("../render-managers/common/shared-getters");
8
+ const MAX_AREA_IN_DEGREES = 90;
9
+ const MAX_RETRY_ATTEMPTS = 1;
10
+ const RETRY_DELAY_INCREMENT = 500;
11
+ const REQUEST_PAGE_DELAY = 50;
12
+ class regMenuItemGetter {
13
+ constructor(typeId, tagIds, minHeight, maxHeight) {
14
+ this.TypeId = typeId;
15
+ this.TagIds = tagIds;
16
+ this.MinHeight = minHeight;
17
+ this.MaxHeight = maxHeight;
18
+ }
19
+ }
20
+ async function delay(milliseconds) {
21
+ return new Promise((res) => {
22
+ setTimeout(() => {
23
+ res();
24
+ }, milliseconds);
25
+ });
26
+ }
27
+ /**
28
+ * This is a batched entity getter.
29
+ * It will scan for entity records in a view-area and emit them in batches.
30
+ * It will restart scanning if the camera moves.
31
+ */
32
+ var EntityFilterGetter;
33
+ (function (EntityFilterGetter) {
34
+ let EStatus;
35
+ (function (EStatus) {
36
+ EStatus["Scanning"] = "SCANNING";
37
+ EStatus["Loading"] = "LOADING";
38
+ })(EStatus = EntityFilterGetter.EStatus || (EntityFilterGetter.EStatus = {}));
39
+ class Getter {
40
+ get OnUpdate() {
41
+ if (!this.onUpdate) {
42
+ this.onUpdate = new bruce_models_1.BruceEvent();
43
+ }
44
+ return this.onUpdate;
45
+ }
46
+ get OnStateUpdate() {
47
+ if (!this.onStateUpdate) {
48
+ this.onStateUpdate = new bruce_models_1.BruceEvent();
49
+ }
50
+ return this.onStateUpdate;
51
+ }
52
+ get OnScanUpdate() {
53
+ if (!this.onScanUpdate) {
54
+ this.onScanUpdate = new bruce_models_1.BruceEvent();
55
+ }
56
+ return this.onScanUpdate;
57
+ }
58
+ get isLooping() {
59
+ return this.looping > 0;
60
+ }
61
+ constructor(params) {
62
+ this.onUpdate = null;
63
+ this.LastStateUpdates = {};
64
+ this.onStateUpdate = null;
65
+ this.onScanUpdate = null;
66
+ this.viewPortChangeRemoval = null;
67
+ this.viewPortDelayQueue = null;
68
+ this.viewerDateTimeChangeRemoval = null;
69
+ this.cells = null;
70
+ this.registeredItems = {};
71
+ this.getterLoopId = 0;
72
+ this.getterLoopAbortControllers = {};
73
+ this.looping = 0;
74
+ this.tagIds = null;
75
+ this.minHeight = 0;
76
+ this.maxHeight = 100000;
77
+ this.viewRect = null;
78
+ this.viewCenter = null;
79
+ this.scenario = 0;
80
+ this.historicRefreshAbortController = null;
81
+ // Entity IDs found for the latest integrity.
82
+ // We use this for refreshing historic data without having to repeat geographic queries.
83
+ this.gatheredIntegrity = null;
84
+ this.gatheredEntityIds = [];
85
+ const { api, viewer, viewPort, typeIds, schemaId, batchSize, attrFilter, historicAttrKey, historicInterpolation, historic, viaCdn, scenario } = params;
86
+ this.api = api;
87
+ this.typeIds = typeIds;
88
+ this.schemaId = schemaId;
89
+ this.historic = Boolean(historic);
90
+ this.historicAttrKey = historicAttrKey;
91
+ this.historicInterpolation = Boolean(historicInterpolation);
92
+ this.viaCdn = Boolean(viaCdn);
93
+ this.batchSize = isNaN(batchSize) ? 300 : batchSize;
94
+ this.viewPort = viewPort;
95
+ this.attrFilter = attrFilter;
96
+ this.viewer = viewer;
97
+ this.scenario = scenario ? scenario : 0;
98
+ this.updateBounds();
99
+ }
100
+ /**
101
+ * Returns id that represents the combined menu item parameters.
102
+ * If integrity changes while a request is running, the request will not emit a response.
103
+ * @returns
104
+ */
105
+ getIntegrityId() {
106
+ let integrity = this.tagIds == null ? "" : this.tagIds.join();
107
+ if (this.historicAttrKey) {
108
+ integrity += "isHistoric";
109
+ integrity += this.historicAttrKey;
110
+ }
111
+ else if (this.historic) {
112
+ integrity += "isHistoric";
113
+ }
114
+ if (this.scenario) {
115
+ integrity += this.scenario;
116
+ }
117
+ if (this.typeIds) {
118
+ integrity += this.typeIds.join();
119
+ }
120
+ return integrity;
121
+ }
122
+ viewAreaSub() {
123
+ this.viewAreaDispose();
124
+ // We'll avoid restarting the scanner too often.
125
+ this.viewPortDelayQueue = new bruce_models_1.DelayQueue(() => {
126
+ this.updateBounds();
127
+ this.startGetterLoop();
128
+ }, 2000);
129
+ this.viewPortChangeRemoval = this.viewPort.Updated().Subscribe(() => {
130
+ var _a;
131
+ (_a = this.viewPortDelayQueue) === null || _a === void 0 ? void 0 : _a.Call();
132
+ });
133
+ }
134
+ viewAreaDispose() {
135
+ var _a, _b;
136
+ (_a = this.viewPortChangeRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
137
+ this.viewPortChangeRemoval = null;
138
+ (_b = this.viewPortDelayQueue) === null || _b === void 0 ? void 0 : _b.Dispose();
139
+ this.viewPortDelayQueue = null;
140
+ }
141
+ /**
142
+ * Monitors the Cesium viewer and updates the historic data filter values.
143
+ * If there is no historic attr set, this will do nothing.
144
+ */
145
+ viewerDateTimeSub() {
146
+ if ((!this.historicAttrKey && !this.historic) || this.viewerDateTimeChangeRemoval) {
147
+ return;
148
+ }
149
+ // This is multiplied by the speed of animation to figure
150
+ // out how many animation "ticks" before we allow an update.
151
+ let INTERVAL_WHILE_ANIMATING = 2.5 * 1000;
152
+ let INTERVAL_WHILE_NOT_ANIMATING = 1000;
153
+ if (this.historicInterpolation) {
154
+ INTERVAL_WHILE_ANIMATING = 6 * 1000;
155
+ INTERVAL_WHILE_NOT_ANIMATING = 3.5 * 1000;
156
+ }
157
+ let lastUpdateTime = null;
158
+ let delayQueue = new bruce_models_1.DelayQueue(() => {
159
+ try {
160
+ // If the timeline is animating then we'll wait longer to update.
161
+ if (this.viewer.clock.shouldAnimate && lastUpdateTime) {
162
+ if (Math.abs(new Date().getTime() - lastUpdateTime) < INTERVAL_WHILE_ANIMATING) {
163
+ return;
164
+ }
165
+ }
166
+ const current = this.historicAttrDateTime;
167
+ this.updateHistoricDateTime();
168
+ if (current != this.historicAttrDateTime) {
169
+ this.emitHistoricData();
170
+ }
171
+ }
172
+ catch (e) {
173
+ console.error(e);
174
+ }
175
+ }, INTERVAL_WHILE_NOT_ANIMATING);
176
+ let postUpdateRemoval = this.viewer.scene.postUpdate.addEventListener(() => {
177
+ if (delayQueue) {
178
+ delayQueue.Call();
179
+ }
180
+ });
181
+ this.viewerDateTimeChangeRemoval = () => {
182
+ delayQueue === null || delayQueue === void 0 ? void 0 : delayQueue.Dispose();
183
+ postUpdateRemoval === null || postUpdateRemoval === void 0 ? void 0 : postUpdateRemoval();
184
+ delayQueue = null;
185
+ postUpdateRemoval = null;
186
+ };
187
+ }
188
+ updateHistoricDateTime() {
189
+ if (!this.historicAttrKey && !this.historic) {
190
+ this.historicAttrDateTime = null;
191
+ return;
192
+ }
193
+ const isChanged = (before, after) => {
194
+ if (before && !after) {
195
+ return true;
196
+ }
197
+ if (!before && after) {
198
+ return true;
199
+ }
200
+ // Change must be at least 0.1 seconds.
201
+ return Math.abs(before.getTime() - after.getTime()) > 100;
202
+ };
203
+ const oldDateTime = this.historicAttrDateTime ? new Date(this.historicAttrDateTime) : null;
204
+ const newDateTime = Cesium.JulianDate.toDate(this.viewer.clock.currentTime);
205
+ if (isChanged(oldDateTime, newDateTime)) {
206
+ this.historicAttrDateTime = newDateTime.toISOString();
207
+ }
208
+ }
209
+ viewerDateTimeDispose() {
210
+ var _a;
211
+ (_a = this.viewerDateTimeChangeRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
212
+ this.viewerDateTimeChangeRemoval = null;
213
+ }
214
+ GetMenuItems() {
215
+ return Object.keys(this.registeredItems);
216
+ }
217
+ IncludeMenuItem(menuItemId, typeId, layerIds, minHeight, maxHeight) {
218
+ this.registeredItems[menuItemId] = new regMenuItemGetter(typeId, layerIds, minHeight, maxHeight);
219
+ this.updateState();
220
+ }
221
+ ExcludeMenuItem(menuItemId) {
222
+ this.registeredItems[menuItemId] = null;
223
+ delete this.registeredItems[menuItemId];
224
+ this.updateState(true);
225
+ }
226
+ updateBounds() {
227
+ const viewRect = this.viewPort.GetBounds();
228
+ const poi = this.viewPort.GetTarget();
229
+ if (viewRect && poi) {
230
+ if (Math.abs(viewRect.west - viewRect.east) > MAX_AREA_IN_DEGREES) {
231
+ return;
232
+ }
233
+ if (Math.abs(viewRect.south - viewRect.north) > MAX_AREA_IN_DEGREES) {
234
+ return;
235
+ }
236
+ this.viewRect = viewRect;
237
+ this.viewCenter = poi;
238
+ }
239
+ }
240
+ updateState(onlyIfLooping = false) {
241
+ const tagIds = [];
242
+ const typeIds = [];
243
+ const menuItemIds = this.GetMenuItems();
244
+ let minHeight = null;
245
+ let maxHeight = null;
246
+ for (let i = 0; i < menuItemIds.length; i++) {
247
+ const menuItem = this.registeredItems[menuItemIds[i]];
248
+ if (menuItem) {
249
+ if (maxHeight == null || maxHeight < menuItem.MaxHeight) {
250
+ maxHeight = menuItem.MaxHeight;
251
+ }
252
+ if (minHeight == null || minHeight > menuItem.MinHeight) {
253
+ minHeight = menuItem.MinHeight;
254
+ }
255
+ const itemLayerIds = menuItem.TagIds;
256
+ if (itemLayerIds) {
257
+ for (let j = 0; j < itemLayerIds.length; j++) {
258
+ const itemLayerId = itemLayerIds[j];
259
+ if (!tagIds.includes(itemLayerId)) {
260
+ tagIds.push(itemLayerId);
261
+ }
262
+ }
263
+ }
264
+ const itemTypeId = menuItem.TypeId;
265
+ if (itemTypeId) {
266
+ if (!typeIds.includes(itemTypeId)) {
267
+ typeIds.push(itemTypeId);
268
+ }
269
+ }
270
+ }
271
+ }
272
+ if (menuItemIds.length > 0 && (!onlyIfLooping || this.isLooping)) {
273
+ // Reset cells so none are marked as fetched.
274
+ this.cells = new entity_globe_1.EntityGlobe.Grid();
275
+ this.tagIds = tagIds;
276
+ this.typeIds = typeIds;
277
+ this.minHeight = minHeight;
278
+ this.maxHeight = maxHeight;
279
+ this.updateBounds();
280
+ this.updateHistoricDateTime();
281
+ this.startGetterLoop();
282
+ this.viewAreaSub();
283
+ this.viewerDateTimeSub();
284
+ }
285
+ else {
286
+ this.getterLoopId += 1;
287
+ this.viewAreaDispose();
288
+ this.viewerDateTimeDispose();
289
+ }
290
+ }
291
+ postStatus(status) {
292
+ var _a;
293
+ this.LastStateUpdates[status.msg] = status;
294
+ (_a = this.onStateUpdate) === null || _a === void 0 ? void 0 : _a.Trigger(status);
295
+ }
296
+ startGetterLoop() {
297
+ // Increase id so that existing loops stop.
298
+ this.getterLoopId += 1;
299
+ const loopId = this.getterLoopId;
300
+ const loopIntegrity = this.getIntegrityId();
301
+ // Abort any existing loops that don't match the current loop.
302
+ // We tried using integrity, however we want to interrupt when user moves camera quickly.
303
+ // So it's better to use the loop ID.
304
+ const abortId = String(loopId);
305
+ {
306
+ const newAbortControllers = {};
307
+ for (const key in this.getterLoopAbortControllers) {
308
+ this.getterLoopAbortControllers[key].abort();
309
+ }
310
+ this.getterLoopAbortControllers = newAbortControllers;
311
+ }
312
+ const abortController = this.getterLoopAbortControllers[abortId] = new AbortController();
313
+ this.looping += 1;
314
+ (async () => {
315
+ var _a, _b, _c, _d, _e, _f, _g, _h;
316
+ // Larger initial delay for the first loops because terrain is likely loading in.
317
+ // We also delay because if we enable 50 Menu Items at the same time, common requests we be made if we wait a bit.
318
+ // Eg: same entity type will be grouped into the same filter getter instance.
319
+ await delay(loopId <= 3 ? 800 : 300);
320
+ const MIN_HEIGHT = this.minHeight;
321
+ const MAX_HEIGHT = this.maxHeight;
322
+ const PAGE_SIZE = this.batchSize;
323
+ let retryAttempts = MAX_RETRY_ATTEMPTS;
324
+ let retryDelay = 0;
325
+ let prevFirstId = "";
326
+ let prevLastId = "";
327
+ let prevTicks = 0;
328
+ while ((!this.viewCenter || !this.viewRect) && this.getterLoopId == loopId) {
329
+ await delay(RETRY_DELAY_INCREMENT);
330
+ }
331
+ if (this.getterLoopId != loopId) {
332
+ return;
333
+ }
334
+ const alt = this.viewRect.alt;
335
+ if (alt > MAX_HEIGHT || (alt < MIN_HEIGHT && MIN_HEIGHT > 0)) {
336
+ return;
337
+ }
338
+ const cells = this.cells.GetCellsForView(this.viewCenter, this.viewRect);
339
+ (_a = this.onScanUpdate) === null || _a === void 0 ? void 0 : _a.Trigger(cells);
340
+ let curCellIndex = cells.length > 0 ? 0 : null;
341
+ let postedScanning = false;
342
+ let postedLoading = false;
343
+ let total = 0;
344
+ while (retryAttempts > 0 && curCellIndex != null) {
345
+ if (retryDelay > 0) {
346
+ await delay(retryDelay);
347
+ }
348
+ if (this.getterLoopId != loopId) {
349
+ break;
350
+ }
351
+ if (!postedScanning) {
352
+ this.postStatus({ msg: EStatus.Scanning, revoking: false });
353
+ postedScanning = true;
354
+ }
355
+ const curCell = cells[curCellIndex];
356
+ if (curCell.IsFetched()) {
357
+ curCell.Fetching = false;
358
+ curCellIndex += 1;
359
+ if (cells[curCellIndex]) {
360
+ cells[curCellIndex].Fetching = true;
361
+ }
362
+ else {
363
+ curCellIndex = null;
364
+ }
365
+ (_b = this.onScanUpdate) === null || _b === void 0 ? void 0 : _b.Trigger(cells);
366
+ continue;
367
+ }
368
+ try {
369
+ let response = {
370
+ entities: [],
371
+ nextPage: false,
372
+ nextPageUrl: null
373
+ };
374
+ await shared_getters_1.SharedGetters.Queue.Run("Loading Entities from Menu Item that loads Entity Type: " + this.typeIds, async () => {
375
+ var _a;
376
+ if (abortController.signal.aborted || !((_a = this.GetMenuItems()) === null || _a === void 0 ? void 0 : _a.length)) {
377
+ return;
378
+ }
379
+ // API gave us a URL to use.
380
+ if (curCell.FetchURL) {
381
+ const tmpResponse = await this.api.get(curCell.FetchURL, {
382
+ abortSignal: abortController.signal,
383
+ noCache: true
384
+ });
385
+ // Same mapping as bruce-models doing Entity.GetList.
386
+ response = {
387
+ entities: tmpResponse.Items ? tmpResponse.Items : [],
388
+ nextPage: tmpResponse.NextPage,
389
+ nextPageUrl: tmpResponse.NextPageURL,
390
+ sources: tmpResponse.Source,
391
+ entityTypeSources: tmpResponse["EntityType.Source"]
392
+ };
393
+ }
394
+ else {
395
+ response = await bruce_models_1.Entity.GetList({
396
+ api: this.api,
397
+ scenario: this.scenario,
398
+ historicKey: this.historicAttrKey,
399
+ historicPoint: (this.historicAttrKey || this.historic) ? this.historicAttrDateTime : null,
400
+ schemaId: this.schemaId,
401
+ filter: {
402
+ pageSize: PAGE_SIZE,
403
+ pageIndex: curCell.FetchPageIndex,
404
+ entityTypeId: this.typeIds,
405
+ layerIds: this.tagIds,
406
+ // Any tag specified will be allowed.
407
+ layerIdsOperator: "in",
408
+ bounds: curCell.GetBounds(),
409
+ sortOrder: bruce_models_1.Api.ESortOrder.Asc,
410
+ entityTypeConditions: this.attrFilter
411
+ },
412
+ viaCdn: this.viaCdn,
413
+ migrated: true,
414
+ // If we're taking 2+ minutes to make a query, it's a dud.
415
+ // This is a timeout imposed on our DB and not external sources.
416
+ // Honestly could lower down to 30 seconds, but we'll keep it high for now.
417
+ maxSearchTimeSec: 60 * 2,
418
+ req: {
419
+ // If we are passing in an abort, we MUST pass in noCache.
420
+ // Otherwise we will cache an aborted request.
421
+ noCache: true,
422
+ abortSignal: abortController.signal
423
+ }
424
+ });
425
+ }
426
+ });
427
+ const entities = response.entities;
428
+ const integrity = this.getIntegrityId();
429
+ if (loopIntegrity == integrity && entities) {
430
+ (_c = this.onUpdate) === null || _c === void 0 ? void 0 : _c.Trigger({
431
+ entities: entities,
432
+ sources: response.sources,
433
+ entityTypeSources: response.entityTypeSources
434
+ });
435
+ }
436
+ if (this.gatheredIntegrity != integrity) {
437
+ this.gatheredIntegrity = integrity;
438
+ this.gatheredEntityIds = [];
439
+ }
440
+ // Add to the integrity list for any new IDs found.
441
+ // This lets us keep track of all IDs we've found within the same integrity for historic data.
442
+ if (this.historicAttrKey || this.historic) {
443
+ for (let i = 0; i < entities.length; i++) {
444
+ const entity = entities[i];
445
+ if (!this.gatheredEntityIds.includes(entity.Bruce.ID)) {
446
+ this.gatheredEntityIds.push(entity.Bruce.ID);
447
+ }
448
+ }
449
+ }
450
+ if (this.getterLoopId != loopId) {
451
+ break;
452
+ }
453
+ if (entities.length) {
454
+ total += entities.length;
455
+ }
456
+ if (!postedLoading) {
457
+ this.postStatus({ msg: EStatus.Loading, revoking: false });
458
+ postedLoading = true;
459
+ }
460
+ // Only mark as fetched when ALL pages are done.
461
+ // Known issue where external sources may return less than page size.
462
+ // Right now we're making it as fetched as we're siding with the majority use-case.
463
+ if (
464
+ // API explicity says no more pages.
465
+ response.nextPage === false ||
466
+ // API didn't explicity say anything so we guess based on size of response.
467
+ (response.nextPage == null &&
468
+ (entities.length <= 0 || entities.length < PAGE_SIZE))) {
469
+ curCell.Fetched = true;
470
+ curCell.Fetching = false;
471
+ (_d = this.onScanUpdate) === null || _d === void 0 ? void 0 : _d.Trigger(cells);
472
+ continue;
473
+ }
474
+ // Checking to make sure it's not just the same batch over and over again.
475
+ if (entities.length > 0) {
476
+ const first = (_f = (_e = entities[0]) === null || _e === void 0 ? void 0 : _e.Bruce) === null || _f === void 0 ? void 0 : _f.ID;
477
+ const last = (_h = (_g = entities[entities.length - 1]) === null || _g === void 0 ? void 0 : _g.Bruce) === null || _h === void 0 ? void 0 : _h.ID;
478
+ if (prevFirstId == first && prevLastId == last) {
479
+ prevTicks += 1;
480
+ if (prevTicks > 3) {
481
+ break;
482
+ }
483
+ }
484
+ else {
485
+ prevFirstId = first;
486
+ prevLastId = last;
487
+ prevTicks = 0;
488
+ }
489
+ }
490
+ // Using URL if specified.
491
+ // If not then we'll just manually paginate.
492
+ curCell.FetchURL = response.nextPageUrl;
493
+ curCell.FetchPageIndex++;
494
+ // Request passed so let's assume it was server hiccup and refresh counts.
495
+ retryAttempts = MAX_RETRY_ATTEMPTS;
496
+ retryDelay = 0;
497
+ }
498
+ catch (e) {
499
+ // Ignore abort errors.
500
+ if (e && typeof e === "object" && e.name == "AbortError") {
501
+ // console.debug("Aborted entity-filter-getter request.");
502
+ break;
503
+ }
504
+ console.error(e);
505
+ if (this.getterLoopId != loopId) {
506
+ break;
507
+ }
508
+ // Request failed so let's add a delay and try again soon.
509
+ retryDelay += RETRY_DELAY_INCREMENT;
510
+ retryAttempts -= 1;
511
+ }
512
+ await delay(REQUEST_PAGE_DELAY);
513
+ }
514
+ if (postedLoading) {
515
+ this.postStatus({ msg: EStatus.Loading, revoking: true });
516
+ }
517
+ if (postedScanning) {
518
+ this.postStatus({ msg: EStatus.Scanning, revoking: true });
519
+ }
520
+ })().then(() => {
521
+ this.looping -= 1;
522
+ }).catch(() => {
523
+ this.looping -= 1;
524
+ });
525
+ }
526
+ /**
527
+ * Gets the historic state of found Entities for the current date times and emits them.
528
+ * Since geometry searches are tied to the base Entity, we don't have to re-scan the viewport.
529
+ */
530
+ emitHistoricData() {
531
+ if (!this.GetMenuItems().length) {
532
+ return;
533
+ }
534
+ let integrity = this.getIntegrityId();
535
+ // Gathered ID does't match current one.
536
+ if (this.gatheredIntegrity != integrity) {
537
+ return;
538
+ }
539
+ const historicAttrDateTime = this.historicAttrDateTime;
540
+ const SCAN_BATCH_SIZE = 1000;
541
+ if (this.historicRefreshAbortController) {
542
+ this.historicRefreshAbortController.abort();
543
+ this.historicRefreshAbortController = null;
544
+ }
545
+ (async () => {
546
+ var _a;
547
+ let pageIndex = 0;
548
+ try {
549
+ // Loop through all IDs we've found and get their historic records.
550
+ for (let i = 0; i < this.gatheredEntityIds.length; i += SCAN_BATCH_SIZE) {
551
+ let batch = this.gatheredEntityIds.slice(i, i + SCAN_BATCH_SIZE);
552
+ if (!batch.length) {
553
+ break;
554
+ }
555
+ // Controller we can use to abort the request when a new loop starts.
556
+ const controller = this.historicRefreshAbortController = new AbortController();
557
+ let entities = [];
558
+ let sources = [];
559
+ let entityTypeSources = [];
560
+ await shared_getters_1.SharedGetters.Queue.Run("Refreshing historic data in Menu Item that loads Entity Type: " + this.typeIds, async () => {
561
+ var _a;
562
+ if (controller.signal.aborted || !((_a = this.GetMenuItems()) === null || _a === void 0 ? void 0 : _a.length)) {
563
+ return;
564
+ }
565
+ const data = await bruce_models_1.Entity.GetList({
566
+ api: this.api,
567
+ scenario: this.scenario,
568
+ historicKey: this.historicAttrKey,
569
+ historicPoint: historicAttrDateTime,
570
+ schemaId: this.schemaId,
571
+ filter: {
572
+ pageSize: batch.length,
573
+ pageIndex: 0,
574
+ entityTypeId: this.typeIds,
575
+ layerIds: this.tagIds,
576
+ layerIdsOperator: "in",
577
+ sortOrder: bruce_models_1.Api.ESortOrder.Asc,
578
+ entityTypeConditions: {
579
+ "ID": {
580
+ "in": batch
581
+ }
582
+ },
583
+ },
584
+ viaCdn: this.viaCdn,
585
+ migrated: true,
586
+ // If we're taking 5+ minutes to make a query, it's a dud.
587
+ // This is a timeout imposed on our DB and not external sources.
588
+ // Honestly could lower down to 30 seconds, but we'll keep it high for now.
589
+ maxSearchTimeSec: 60 * 5,
590
+ req: {
591
+ // If we are passing in an abort, we MUST pass in noCache.
592
+ // Otherwise we will cache an aborted request.
593
+ noCache: true,
594
+ abortSignal: controller.signal
595
+ }
596
+ });
597
+ entities = data.entities;
598
+ sources = data.sources;
599
+ entityTypeSources = data.entityTypeSources;
600
+ });
601
+ // Date changed.
602
+ if (this.historicAttrDateTime != historicAttrDateTime) {
603
+ break;
604
+ }
605
+ // Integrity changed.
606
+ if (this.gatheredIntegrity != integrity) {
607
+ break;
608
+ }
609
+ // No Menu Items.
610
+ if (!this.GetMenuItems().length) {
611
+ break;
612
+ }
613
+ (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({
614
+ entities: entities,
615
+ sources: sources,
616
+ entityTypeSources: entityTypeSources
617
+ });
618
+ pageIndex += 1;
619
+ }
620
+ }
621
+ catch (e) {
622
+ // Ignore abort errors.
623
+ if (e && typeof e === "object" && e.name == "AbortError") {
624
+ // console.debug("Aborted entity-filter-getter historic refresh request.");
625
+ return;
626
+ }
627
+ console.error(e);
628
+ }
629
+ })();
630
+ }
631
+ }
632
+ EntityFilterGetter.Getter = Getter;
633
+ })(EntityFilterGetter = exports.EntityFilterGetter || (exports.EntityFilterGetter = {}));
634
+ //# sourceMappingURL=entity-filter-getter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-filter-getter.js","sourceRoot":"","sources":["../../../../src/rendering/getters/entity-filter-getter.ts"],"names":[],"mappings":"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"}