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.
- package/dist/bruce-cesium.es5.js +32308 -0
- package/dist/bruce-cesium.es5.js.map +1 -0
- package/dist/bruce-cesium.umd.js +32232 -0
- package/dist/bruce-cesium.umd.js.map +1 -0
- package/dist/lib/bruce-cesium.js +76 -0
- package/dist/lib/bruce-cesium.js.map +1 -0
- package/dist/lib/internal/cesium-utils.js +109 -0
- package/dist/lib/internal/cesium-utils.js.map +1 -0
- package/dist/lib/internal/js-utils.js +22 -0
- package/dist/lib/internal/js-utils.js.map +1 -0
- package/dist/lib/internal/limited-log.js +17 -0
- package/dist/lib/internal/limited-log.js.map +1 -0
- package/dist/lib/rendering/cesium-animated-in-out.js +166 -0
- package/dist/lib/rendering/cesium-animated-in-out.js.map +1 -0
- package/dist/lib/rendering/cesium-animated-property.js +1111 -0
- package/dist/lib/rendering/cesium-animated-property.js.map +1 -0
- package/dist/lib/rendering/entity-gatherer.js +327 -0
- package/dist/lib/rendering/entity-gatherer.js.map +1 -0
- package/dist/lib/rendering/entity-render-engine-model3d.js +689 -0
- package/dist/lib/rendering/entity-render-engine-model3d.js.map +1 -0
- package/dist/lib/rendering/entity-render-engine-point.js +984 -0
- package/dist/lib/rendering/entity-render-engine-point.js.map +1 -0
- package/dist/lib/rendering/entity-render-engine-polygon.js +669 -0
- package/dist/lib/rendering/entity-render-engine-polygon.js.map +1 -0
- package/dist/lib/rendering/entity-render-engine-polyline.js +415 -0
- package/dist/lib/rendering/entity-render-engine-polyline.js.map +1 -0
- package/dist/lib/rendering/entity-render-engine.js +442 -0
- package/dist/lib/rendering/entity-render-engine.js.map +1 -0
- package/dist/lib/rendering/getters/batched-data-getter.js +91 -0
- package/dist/lib/rendering/getters/batched-data-getter.js.map +1 -0
- package/dist/lib/rendering/getters/entity-filter-getter.js +634 -0
- package/dist/lib/rendering/getters/entity-filter-getter.js.map +1 -0
- package/dist/lib/rendering/getters/entity-globe.js +172 -0
- package/dist/lib/rendering/getters/entity-globe.js.map +1 -0
- package/dist/lib/rendering/menu-item-creator.js +354 -0
- package/dist/lib/rendering/menu-item-creator.js.map +1 -0
- package/dist/lib/rendering/menu-item-manager.js +464 -0
- package/dist/lib/rendering/menu-item-manager.js.map +1 -0
- package/dist/lib/rendering/relation-render-engine.js +235 -0
- package/dist/lib/rendering/relation-render-engine.js.map +1 -0
- package/dist/lib/rendering/render-managers/common/cesium-parabola.js +368 -0
- package/dist/lib/rendering/render-managers/common/cesium-parabola.js.map +1 -0
- package/dist/lib/rendering/render-managers/common/entity-label.js +703 -0
- package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -0
- package/dist/lib/rendering/render-managers/common/point-clustering.js +826 -0
- package/dist/lib/rendering/render-managers/common/point-clustering.js.map +1 -0
- package/dist/lib/rendering/render-managers/common/shared-getters.js +187 -0
- package/dist/lib/rendering/render-managers/common/shared-getters.js.map +1 -0
- package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js +668 -0
- package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js +92 -0
- package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +143 -0
- package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +510 -0
- package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +717 -0
- package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +999 -0
- package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +186 -0
- package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/other/assembly-render-manager.js +226 -0
- package/dist/lib/rendering/render-managers/other/assembly-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/other/google-search-render-manager.js +430 -0
- package/dist/lib/rendering/render-managers/other/google-search-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +290 -0
- package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/other/relations-render-manager.js +401 -0
- package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/render-manager.js +276 -0
- package/dist/lib/rendering/render-managers/render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +356 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +861 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +279 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js +104 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js +81 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +378 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +140 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -0
- package/dist/lib/rendering/tile-render-engine.js +1328 -0
- package/dist/lib/rendering/tile-render-engine.js.map +1 -0
- package/dist/lib/rendering/tileset-render-engine.js +588 -0
- package/dist/lib/rendering/tileset-render-engine.js.map +1 -0
- package/dist/lib/rendering/tileset-styler.js +590 -0
- package/dist/lib/rendering/tileset-styler.js.map +1 -0
- package/dist/lib/rendering/view-render-engine.js +1004 -0
- package/dist/lib/rendering/view-render-engine.js.map +1 -0
- package/dist/lib/rendering/visual-register-culler.js +676 -0
- package/dist/lib/rendering/visual-register-culler.js.map +1 -0
- package/dist/lib/rendering/visuals-register.js +1741 -0
- package/dist/lib/rendering/visuals-register.js.map +1 -0
- package/dist/lib/utils/cesium-entity-styler.js +914 -0
- package/dist/lib/utils/cesium-entity-styler.js.map +1 -0
- package/dist/lib/utils/drawing-utils.js +308 -0
- package/dist/lib/utils/drawing-utils.js.map +1 -0
- package/dist/lib/utils/entity-utils.js +1382 -0
- package/dist/lib/utils/entity-utils.js.map +1 -0
- package/dist/lib/utils/measure-utils.js +73 -0
- package/dist/lib/utils/measure-utils.js.map +1 -0
- package/dist/lib/utils/simplify-geometry.js +323 -0
- package/dist/lib/utils/simplify-geometry.js.map +1 -0
- package/dist/lib/utils/view-utils.js +392 -0
- package/dist/lib/utils/view-utils.js.map +1 -0
- package/dist/lib/viewer/cesium-view-monitor.js +393 -0
- package/dist/lib/viewer/cesium-view-monitor.js.map +1 -0
- package/dist/lib/viewer/viewer-event-tracker.js +70 -0
- package/dist/lib/viewer/viewer-event-tracker.js.map +1 -0
- package/dist/lib/viewer/viewer-utils.js +310 -0
- package/dist/lib/viewer/viewer-utils.js.map +1 -0
- package/dist/lib/widgets/common/draw-3d-polygon.js +458 -0
- package/dist/lib/widgets/common/draw-3d-polygon.js.map +1 -0
- package/dist/lib/widgets/common/draw-3d-polyline.js +415 -0
- package/dist/lib/widgets/common/draw-3d-polyline.js.map +1 -0
- package/dist/lib/widgets/common/measure-creator.js +468 -0
- package/dist/lib/widgets/common/measure-creator.js.map +1 -0
- package/dist/lib/widgets/common/walkthrough.js +336 -0
- package/dist/lib/widgets/common/walkthrough.js.map +1 -0
- package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js +36 -0
- package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js.map +1 -0
- package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js +437 -0
- package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js.map +1 -0
- package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js +38 -0
- package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js.map +1 -0
- package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js +219 -0
- package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js.map +1 -0
- package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js +304 -0
- package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js.map +1 -0
- package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js +29 -0
- package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js.map +1 -0
- package/dist/lib/widgets/widget-bookmarks.js +497 -0
- package/dist/lib/widgets/widget-bookmarks.js.map +1 -0
- package/dist/lib/widgets/widget-branding.js +165 -0
- package/dist/lib/widgets/widget-branding.js.map +1 -0
- package/dist/lib/widgets/widget-cursorbar.js +1179 -0
- package/dist/lib/widgets/widget-cursorbar.js.map +1 -0
- package/dist/lib/widgets/widget-embedded-info-view.js +201 -0
- package/dist/lib/widgets/widget-embedded-info-view.js.map +1 -0
- package/dist/lib/widgets/widget-info-view.js +681 -0
- package/dist/lib/widgets/widget-info-view.js.map +1 -0
- package/dist/lib/widgets/widget-left-panel.js +548 -0
- package/dist/lib/widgets/widget-left-panel.js.map +1 -0
- package/dist/lib/widgets/widget-nav-compass.js +469 -0
- package/dist/lib/widgets/widget-nav-compass.js.map +1 -0
- package/dist/lib/widgets/widget-view-bar.js +284 -0
- package/dist/lib/widgets/widget-view-bar.js.map +1 -0
- package/dist/lib/widgets/widget.js +66 -0
- package/dist/lib/widgets/widget.js.map +1 -0
- package/dist/types/bruce-cesium.d.ts +58 -0
- package/dist/types/internal/cesium-utils.d.ts +23 -0
- package/dist/types/internal/js-utils.d.ts +8 -0
- package/dist/types/internal/limited-log.d.ts +6 -0
- package/dist/types/rendering/cesium-animated-in-out.d.ts +12 -0
- package/dist/types/rendering/cesium-animated-property.d.ts +245 -0
- package/dist/types/rendering/entity-gatherer.d.ts +36 -0
- package/dist/types/rendering/entity-render-engine-model3d.d.ts +56 -0
- package/dist/types/rendering/entity-render-engine-point.d.ts +73 -0
- package/dist/types/rendering/entity-render-engine-polygon.d.ts +26 -0
- package/dist/types/rendering/entity-render-engine-polyline.d.ts +47 -0
- package/dist/types/rendering/entity-render-engine.d.ts +108 -0
- package/dist/types/rendering/getters/batched-data-getter.d.ts +28 -0
- package/dist/types/rendering/getters/entity-filter-getter.d.ts +104 -0
- package/dist/types/rendering/getters/entity-globe.d.ts +21 -0
- package/dist/types/rendering/menu-item-creator.d.ts +53 -0
- package/dist/types/rendering/menu-item-manager.d.ts +85 -0
- package/dist/types/rendering/relation-render-engine.d.ts +32 -0
- package/dist/types/rendering/render-managers/common/cesium-parabola.d.ts +39 -0
- package/dist/types/rendering/render-managers/common/entity-label.d.ts +82 -0
- package/dist/types/rendering/render-managers/common/point-clustering.d.ts +91 -0
- package/dist/types/rendering/render-managers/common/shared-getters.d.ts +41 -0
- package/dist/types/rendering/render-managers/data-source/data-source-static-csv-manager.d.ts +41 -0
- package/dist/types/rendering/render-managers/data-source/data-source-static-kml-manager.d.ts +25 -0
- package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +31 -0
- package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +76 -0
- package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +90 -0
- package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +90 -0
- package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +42 -0
- package/dist/types/rendering/render-managers/other/assembly-render-manager.d.ts +38 -0
- package/dist/types/rendering/render-managers/other/google-search-render-manager.d.ts +45 -0
- package/dist/types/rendering/render-managers/other/legacy-relations-render-manager.d.ts +60 -0
- package/dist/types/rendering/render-managers/other/relations-render-manager.d.ts +53 -0
- package/dist/types/rendering/render-managers/render-manager.d.ts +30 -0
- package/dist/types/rendering/render-managers/tilesets/tileset-arb-render-manager.d.ts +37 -0
- package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +86 -0
- package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +41 -0
- package/dist/types/rendering/render-managers/tilesets/tileset-google-photos-render-manager.d.ts +26 -0
- package/dist/types/rendering/render-managers/tilesets/tileset-i3s-render-manager.d.ts +25 -0
- package/dist/types/rendering/render-managers/tilesets/tileset-osm-render-manager.d.ts +48 -0
- package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +27 -0
- package/dist/types/rendering/tile-render-engine.d.ts +80 -0
- package/dist/types/rendering/tileset-render-engine.d.ts +99 -0
- package/dist/types/rendering/tileset-styler.d.ts +86 -0
- package/dist/types/rendering/view-render-engine.d.ts +32 -0
- package/dist/types/rendering/visual-register-culler.d.ts +18 -0
- package/dist/types/rendering/visuals-register.d.ts +361 -0
- package/dist/types/utils/cesium-entity-styler.d.ts +103 -0
- package/dist/types/utils/drawing-utils.d.ts +59 -0
- package/dist/types/utils/entity-utils.d.ts +133 -0
- package/dist/types/utils/measure-utils.d.ts +20 -0
- package/dist/types/utils/simplify-geometry.d.ts +19 -0
- package/dist/types/utils/view-utils.d.ts +101 -0
- package/dist/types/viewer/cesium-view-monitor.d.ts +35 -0
- package/dist/types/viewer/viewer-event-tracker.d.ts +47 -0
- package/dist/types/viewer/viewer-utils.d.ts +88 -0
- package/dist/types/widgets/common/draw-3d-polygon.d.ts +62 -0
- package/dist/types/widgets/common/draw-3d-polyline.d.ts +50 -0
- package/dist/types/widgets/common/measure-creator.d.ts +60 -0
- package/dist/types/widgets/common/walkthrough.d.ts +37 -0
- package/dist/types/widgets/controls-view-bar/widget-control-view-bar-fullscreen.d.ts +10 -0
- package/dist/types/widgets/controls-view-bar/widget-control-view-bar-search.d.ts +18 -0
- package/dist/types/widgets/controls-view-bar/widget-control-view-bar.d.ts +23 -0
- package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.d.ts +11 -0
- package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-user.d.ts +24 -0
- package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab.d.ts +17 -0
- package/dist/types/widgets/widget-bookmarks.d.ts +40 -0
- package/dist/types/widgets/widget-branding.d.ts +15 -0
- package/dist/types/widgets/widget-cursorbar.d.ts +48 -0
- package/dist/types/widgets/widget-embedded-info-view.d.ts +13 -0
- package/dist/types/widgets/widget-info-view.d.ts +21 -0
- package/dist/types/widgets/widget-left-panel.d.ts +73 -0
- package/dist/types/widgets/widget-nav-compass.d.ts +27 -0
- package/dist/types/widgets/widget-view-bar.d.ts +37 -0
- package/dist/types/widgets/widget.d.ts +29 -0
- package/package.json +1 -1
|
@@ -0,0 +1,717 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntitiesLoadedRenderManager = void 0;
|
|
4
|
+
const bruce_models_1 = require("bruce-models");
|
|
5
|
+
const Cesium = require("cesium");
|
|
6
|
+
const entity_render_engine_1 = require("../../entity-render-engine");
|
|
7
|
+
const visuals_register_1 = require("../../visuals-register");
|
|
8
|
+
const batched_data_getter_1 = require("../../getters/batched-data-getter");
|
|
9
|
+
const js_utils_1 = require("../../../internal/js-utils");
|
|
10
|
+
const BATCH_SIZE = 500;
|
|
11
|
+
const CHECK_BATCH_SIZE = 250;
|
|
12
|
+
function getValue(viewer, obj) {
|
|
13
|
+
if (obj === null || obj === void 0 ? void 0 : obj.getValue) {
|
|
14
|
+
let date = viewer.scene.lastRenderTime;
|
|
15
|
+
if (!date) {
|
|
16
|
+
date = viewer.clock.currentTime;
|
|
17
|
+
}
|
|
18
|
+
return obj.getValue(date);
|
|
19
|
+
}
|
|
20
|
+
return obj;
|
|
21
|
+
}
|
|
22
|
+
function colorToCColor(color) {
|
|
23
|
+
return new Cesium.Color(color.red ? color.red / 255 : 0, color.green ? color.green / 255 : 0, color.blue ? color.blue / 255 : 0, color.alpha);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Render manager for a group of pre-loaded entities.
|
|
27
|
+
* The entities may or may not have records.
|
|
28
|
+
* If the entities DON'T have records, it is recommended to avoid using the 3dmodel visualization as it will fail to locate LODs.
|
|
29
|
+
*/
|
|
30
|
+
var EntitiesLoadedRenderManager;
|
|
31
|
+
(function (EntitiesLoadedRenderManager) {
|
|
32
|
+
class Manager {
|
|
33
|
+
get Disposed() {
|
|
34
|
+
return this.disposed;
|
|
35
|
+
}
|
|
36
|
+
constructor(params) {
|
|
37
|
+
var _a;
|
|
38
|
+
this.getter = null;
|
|
39
|
+
this.getterSub = null;
|
|
40
|
+
this.disposed = false;
|
|
41
|
+
this.renderedEntities = {};
|
|
42
|
+
this.sources = [];
|
|
43
|
+
// Highly experimental flag to try improve rendering large sets of polygons and polylines.
|
|
44
|
+
// Many things are not supported when this is enabled.
|
|
45
|
+
this.useGeojson = false;
|
|
46
|
+
const { viewer, apiGetter, monitor, item, register: visualsManager } = params;
|
|
47
|
+
this.viewer = viewer;
|
|
48
|
+
this.apiGetter = apiGetter;
|
|
49
|
+
this.monitor = monitor;
|
|
50
|
+
this.item = item;
|
|
51
|
+
this.visualsManager = visualsManager;
|
|
52
|
+
this.useGeojson = item.renderAsGeojson == true;
|
|
53
|
+
if (!((_a = this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.Entities)) {
|
|
54
|
+
this.item.BruceEntity = {
|
|
55
|
+
...this.item.BruceEntity,
|
|
56
|
+
Entities: []
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Adds entities to menu item and queues the render for them.
|
|
62
|
+
* If the entity already exists in the menu item, it will be removed and redrawn.
|
|
63
|
+
* @param params
|
|
64
|
+
*/
|
|
65
|
+
AddEntities(params) {
|
|
66
|
+
if (this.disposed) {
|
|
67
|
+
throw (new Error("This item is disposed."));
|
|
68
|
+
}
|
|
69
|
+
const { entities } = params;
|
|
70
|
+
entities.forEach((x) => {
|
|
71
|
+
var _a;
|
|
72
|
+
// If already in the menu item we'll first remove it.
|
|
73
|
+
// That way we're using the latest provided data.
|
|
74
|
+
const entityId = (_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.ID;
|
|
75
|
+
const index = this.item.BruceEntity.Entities.findIndex(y => { var _a; return ((_a = y === null || y === void 0 ? void 0 : y.Bruce) === null || _a === void 0 ? void 0 : _a.ID) == entityId; });
|
|
76
|
+
if (index > -1) {
|
|
77
|
+
this.item.BruceEntity.Entities.splice(index, 1);
|
|
78
|
+
}
|
|
79
|
+
this.item.BruceEntity.Entities.push(x);
|
|
80
|
+
});
|
|
81
|
+
this.ReRender({
|
|
82
|
+
entities: entities,
|
|
83
|
+
entityIds: entities.map(x => { var _a; return (_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.ID; }),
|
|
84
|
+
force: true
|
|
85
|
+
});
|
|
86
|
+
this.recreateGetter();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Removes entities from the menu item that match provided IDs.
|
|
90
|
+
* Any visuals will be removed as well.
|
|
91
|
+
* @param params
|
|
92
|
+
*/
|
|
93
|
+
RemoveEntities(params) {
|
|
94
|
+
if (this.disposed) {
|
|
95
|
+
throw (new Error("This item is disposed."));
|
|
96
|
+
}
|
|
97
|
+
const { entityIds } = params;
|
|
98
|
+
entityIds.forEach((x) => {
|
|
99
|
+
const index = this.item.BruceEntity.Entities.findIndex(y => { var _a; return ((_a = y === null || y === void 0 ? void 0 : y.Bruce) === null || _a === void 0 ? void 0 : _a.ID) == x; });
|
|
100
|
+
if (index > -1) {
|
|
101
|
+
this.item.BruceEntity.Entities.splice(index, 1);
|
|
102
|
+
}
|
|
103
|
+
this.visualsManager.RemoveRegos({
|
|
104
|
+
entityId: x,
|
|
105
|
+
menuItemId: this.item.id
|
|
106
|
+
});
|
|
107
|
+
this.renderedEntities[x] = false;
|
|
108
|
+
});
|
|
109
|
+
this.recreateGetter();
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Clears all entities from the menu item.
|
|
113
|
+
* Any visuals will be removed as well.
|
|
114
|
+
*/
|
|
115
|
+
ClearEntities() {
|
|
116
|
+
if (this.disposed) {
|
|
117
|
+
throw (new Error("This item is disposed."));
|
|
118
|
+
}
|
|
119
|
+
this.item.BruceEntity.Entities = [];
|
|
120
|
+
this.visualsManager.RemoveRegos({
|
|
121
|
+
menuItemId: this.item.id
|
|
122
|
+
});
|
|
123
|
+
this.renderedEntities = {};
|
|
124
|
+
this.recreateGetter();
|
|
125
|
+
}
|
|
126
|
+
Init() {
|
|
127
|
+
var _a;
|
|
128
|
+
if (this.disposed) {
|
|
129
|
+
throw (new Error("This item is disposed."));
|
|
130
|
+
}
|
|
131
|
+
if (!((_a = this.item.CameraZoomSettings) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
132
|
+
this.item.CameraZoomSettings = [
|
|
133
|
+
{
|
|
134
|
+
MinZoom: 0,
|
|
135
|
+
MaxZoom: 200000,
|
|
136
|
+
DisplayType: bruce_models_1.ZoomControl.EDisplayType.Model3D,
|
|
137
|
+
LODCategoryID: "glb",
|
|
138
|
+
LODLevel: 0,
|
|
139
|
+
StyleID: 0
|
|
140
|
+
}
|
|
141
|
+
];
|
|
142
|
+
}
|
|
143
|
+
this.renderPriority = this.item.renderPriority;
|
|
144
|
+
if (this.renderPriority == null) {
|
|
145
|
+
this.renderPriority = 2;
|
|
146
|
+
}
|
|
147
|
+
if (this.renderAsGeojson && this.item.CameraZoomSettings.length > 1) {
|
|
148
|
+
console.warn("Geojson rendering does not support multiple zoom controls. Only the first one will be used.");
|
|
149
|
+
this.item.CameraZoomSettings = [this.item.CameraZoomSettings[0]];
|
|
150
|
+
}
|
|
151
|
+
this.recreateGetter();
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Recreates the getter for the entities.
|
|
155
|
+
* This is used when the entities within the menu item are updated.
|
|
156
|
+
* @todo: this causes a bad side-effect where all menu item entities are queued for a re-render.
|
|
157
|
+
*/
|
|
158
|
+
recreateGetter() {
|
|
159
|
+
var _a;
|
|
160
|
+
(_a = this.getterSub) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
161
|
+
this.getter = new batched_data_getter_1.BatchedDataGetter.Getter(this.item.BruceEntity.Entities, this.monitor, BATCH_SIZE);
|
|
162
|
+
this.getterSub = this.getter.OnUpdate.Subscribe((entities) => {
|
|
163
|
+
var _a;
|
|
164
|
+
const latest = [];
|
|
165
|
+
for (const entity of entities) {
|
|
166
|
+
if (this.renderedEntities[(_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID]) {
|
|
167
|
+
latest.push(entity);
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
latest.push(entity);
|
|
171
|
+
}
|
|
172
|
+
this.onGetterUpdate(entities);
|
|
173
|
+
});
|
|
174
|
+
this.getter.Start();
|
|
175
|
+
}
|
|
176
|
+
Dispose() {
|
|
177
|
+
if (this.disposed) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
this.doDispose();
|
|
181
|
+
}
|
|
182
|
+
doDispose() {
|
|
183
|
+
var _a;
|
|
184
|
+
(_a = this.getterSub) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
185
|
+
this.getterSub = null;
|
|
186
|
+
this.disposed = true;
|
|
187
|
+
this.visualsManager.RemoveRegos({
|
|
188
|
+
menuItemId: this.item.id
|
|
189
|
+
});
|
|
190
|
+
for (let i = 0; i < this.sources.length; i++) {
|
|
191
|
+
const source = this.sources[i];
|
|
192
|
+
this.viewer.dataSources.remove(source);
|
|
193
|
+
}
|
|
194
|
+
this.sources = [];
|
|
195
|
+
}
|
|
196
|
+
async ReRender(params) {
|
|
197
|
+
let { entityIds, force, entities } = params;
|
|
198
|
+
if (entities && !entityIds) {
|
|
199
|
+
entityIds = entities.map(x => { var _a; return (_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.ID; });
|
|
200
|
+
}
|
|
201
|
+
if (entityIds == null) {
|
|
202
|
+
entityIds = Object.keys(this.renderedEntities);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// ensure entity ids are part of menu item.
|
|
206
|
+
entityIds = entityIds.filter(x => {
|
|
207
|
+
var _a, _b;
|
|
208
|
+
return (_b = (_a = this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.Entities) === null || _b === void 0 ? void 0 : _b.find(y => { var _a; return ((_a = y === null || y === void 0 ? void 0 : y.Bruce) === null || _a === void 0 ? void 0 : _a.ID) == x; });
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
if (entities === null || entities === void 0 ? void 0 : entities.length) {
|
|
212
|
+
entities = [].concat(entities).filter(x => { var _a; return entityIds.includes((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.ID); });
|
|
213
|
+
}
|
|
214
|
+
this.visualsManager.MarkStale({
|
|
215
|
+
entityIds: entityIds,
|
|
216
|
+
menuItemIds: [this.item.id]
|
|
217
|
+
});
|
|
218
|
+
if (entities === null || entities === void 0 ? void 0 : entities.length) {
|
|
219
|
+
this.onGetterUpdate(entities, force);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
this.doEntityCheck(entityIds, force);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
UpdateSettings(params) {
|
|
226
|
+
const { zoomControl: CameraZoomSettings, queueRerender } = params;
|
|
227
|
+
if (this.disposed) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (CameraZoomSettings === null || CameraZoomSettings === void 0 ? void 0 : CameraZoomSettings.length) {
|
|
231
|
+
this.item.CameraZoomSettings = CameraZoomSettings;
|
|
232
|
+
if (this.renderAsGeojson && this.item.CameraZoomSettings.length > 1) {
|
|
233
|
+
console.warn("Geojson rendering does not support multiple zoom controls. Only the first one will be used.");
|
|
234
|
+
this.item.CameraZoomSettings = [this.item.CameraZoomSettings[0]];
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (queueRerender != false) {
|
|
238
|
+
const entityIds = Object.keys(this.renderedEntities);
|
|
239
|
+
this.visualsManager.MarkStale({
|
|
240
|
+
entityIds: entityIds,
|
|
241
|
+
menuItemIds: [this.item.id]
|
|
242
|
+
});
|
|
243
|
+
this.doEntityCheck(entityIds);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
async doEntityCheck(ids, force = false) {
|
|
247
|
+
const api = this.apiGetter.getApi();
|
|
248
|
+
try {
|
|
249
|
+
if (this.disposed) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
if (ids.length > 0) {
|
|
253
|
+
const checkBatch = async () => {
|
|
254
|
+
const entityIds = ids.splice(0, CHECK_BATCH_SIZE);
|
|
255
|
+
const { entities } = await bruce_models_1.Entity.GetListByIds({
|
|
256
|
+
api,
|
|
257
|
+
entityIds,
|
|
258
|
+
migrated: true
|
|
259
|
+
});
|
|
260
|
+
if (this.disposed) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
this.onGetterUpdate(entities, force);
|
|
264
|
+
};
|
|
265
|
+
while (ids.length > 0) {
|
|
266
|
+
await checkBatch();
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
catch (e) {
|
|
271
|
+
console.error(e);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
async onGetterUpdate(entities, force = false) {
|
|
275
|
+
try {
|
|
276
|
+
if (this.disposed || this.viewer.isDestroyed()) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Returns if a given entityId is associated with the menu item.
|
|
281
|
+
* @param entityId
|
|
282
|
+
* @returns
|
|
283
|
+
*/
|
|
284
|
+
const isEntityInItem = (entityId) => {
|
|
285
|
+
var _a, _b;
|
|
286
|
+
return (_b = (_a = this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.Entities) === null || _b === void 0 ? void 0 : _b.find(y => { var _a; return ((_a = y === null || y === void 0 ? void 0 : y.Bruce) === null || _a === void 0 ? void 0 : _a.ID) == entityId; });
|
|
287
|
+
};
|
|
288
|
+
// Filter out entities that aren't in the menu item.
|
|
289
|
+
// This can happen if the menu item is updated while the getter is running.
|
|
290
|
+
entities = entities.filter(x => {
|
|
291
|
+
var _a;
|
|
292
|
+
return isEntityInItem((_a = x === null || x === void 0 ? void 0 : x.Bruce) === null || _a === void 0 ? void 0 : _a.ID);
|
|
293
|
+
});
|
|
294
|
+
if (this.useGeojson) {
|
|
295
|
+
const zoomItem = this.item.CameraZoomSettings[0];
|
|
296
|
+
if (zoomItem.DisplayType == bruce_models_1.ZoomControl.EDisplayType.Point) {
|
|
297
|
+
// We'll just render these as individuals since we don't support point geojson.
|
|
298
|
+
await this.renderAsIndividuals(entities, force);
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
await this.renderAsGeojson(entities, force);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
await this.renderAsIndividuals(entities, force);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
catch (e) {
|
|
309
|
+
console.error(e);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Our optimized and more stable path.
|
|
314
|
+
* We construct a geojson that we draw in one go.
|
|
315
|
+
* @param entities
|
|
316
|
+
* @param force TODO: This should re-render entities that are already rendered.
|
|
317
|
+
*/
|
|
318
|
+
async renderAsGeojson(entities, force) {
|
|
319
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
320
|
+
entities = entities.filter((entity) => {
|
|
321
|
+
var _a;
|
|
322
|
+
return !this.renderedEntities[(_a = entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID];
|
|
323
|
+
});
|
|
324
|
+
// Mark these as rendered.
|
|
325
|
+
entities.forEach((entity) => {
|
|
326
|
+
var _a;
|
|
327
|
+
this.renderedEntities[(_a = entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID] = true;
|
|
328
|
+
});
|
|
329
|
+
// This process only supports a single zoom control item.
|
|
330
|
+
const zoomItem = this.item.CameraZoomSettings[0];
|
|
331
|
+
// If we're after 3d models then we'll check if there are LODs and render those as individuals.
|
|
332
|
+
if (zoomItem.DisplayType == bruce_models_1.ZoomControl.EDisplayType.Model3D && entities.length) {
|
|
333
|
+
const { lods } = await bruce_models_1.EntityLod.GetLods({
|
|
334
|
+
api: this.apiGetter.getApi(),
|
|
335
|
+
filter: {
|
|
336
|
+
externalSources: false,
|
|
337
|
+
Items: entities.map(x => {
|
|
338
|
+
var _a, _b;
|
|
339
|
+
return {
|
|
340
|
+
entityId: (_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.ID,
|
|
341
|
+
categoryId: (_b = zoomItem.LODCategoryID) !== null && _b !== void 0 ? _b : "GLB",
|
|
342
|
+
group: "DEFAULT",
|
|
343
|
+
level: Number(zoomItem.LODLevel)
|
|
344
|
+
};
|
|
345
|
+
}),
|
|
346
|
+
strict: false
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
if (this.disposed) {
|
|
350
|
+
this.doDispose();
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
const withLods = lods.filter(x => x.entityId && !!x.clientFileId).map(x => x.entityId);
|
|
354
|
+
const individuals = entities.filter((entity) => {
|
|
355
|
+
var _a;
|
|
356
|
+
return withLods.includes((_a = entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID);
|
|
357
|
+
});
|
|
358
|
+
if (individuals.length) {
|
|
359
|
+
this.renderAsIndividuals(individuals, force);
|
|
360
|
+
}
|
|
361
|
+
// Now we proceed with what is left.
|
|
362
|
+
entities = entities.filter((entity) => {
|
|
363
|
+
var _a;
|
|
364
|
+
return !withLods.includes((_a = entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID);
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
if (!entities.length) {
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
let style = null;
|
|
371
|
+
if ((zoomItem === null || zoomItem === void 0 ? void 0 : zoomItem.StyleID) && zoomItem.StyleID != -1) {
|
|
372
|
+
try {
|
|
373
|
+
style = (_a = (await bruce_models_1.Style.Get({
|
|
374
|
+
api: this.apiGetter.getApi(),
|
|
375
|
+
styleId: zoomItem === null || zoomItem === void 0 ? void 0 : zoomItem.StyleID
|
|
376
|
+
})).style) === null || _a === void 0 ? void 0 : _a.Settings;
|
|
377
|
+
}
|
|
378
|
+
// Probably deleted.
|
|
379
|
+
catch (e) {
|
|
380
|
+
console.error(e);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
let entityTypeId = (_b = this.item.BruceEntity) === null || _b === void 0 ? void 0 : _b["EntityType.ID"];
|
|
384
|
+
if (!entityTypeId) {
|
|
385
|
+
entityTypeId = (_d = (_c = entities.find(x => { var _a; return !!((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a["EntityType.ID"]); })) === null || _c === void 0 ? void 0 : _c.Bruce) === null || _d === void 0 ? void 0 : _d["EntityType.ID"];
|
|
386
|
+
}
|
|
387
|
+
// Getting type regardless cause it's needed for name calculations.
|
|
388
|
+
let entityType;
|
|
389
|
+
if (entityTypeId) {
|
|
390
|
+
// Try using the Entity Type default if one is specified in the menu item.
|
|
391
|
+
try {
|
|
392
|
+
entityType = (_e = (await bruce_models_1.EntityType.Get({
|
|
393
|
+
entityTypeId: entityTypeId,
|
|
394
|
+
api: this.apiGetter.getApi()
|
|
395
|
+
}))) === null || _e === void 0 ? void 0 : _e.entityType;
|
|
396
|
+
if (!style && entityType) {
|
|
397
|
+
if (entityType["DisplaySetting.ID"] && entityType["DisplaySetting.ID"] > 0) {
|
|
398
|
+
style = (_f = (await bruce_models_1.Style.Get({
|
|
399
|
+
api: this.apiGetter.getApi(),
|
|
400
|
+
styleId: entityType["DisplaySetting.ID"]
|
|
401
|
+
})).style) === null || _f === void 0 ? void 0 : _f.Settings;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
catch (e) {
|
|
406
|
+
console.error(e);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
const pStyle = (_g = style === null || style === void 0 ? void 0 : style.polygonStyle) !== null && _g !== void 0 ? _g : {};
|
|
410
|
+
const lStyle = (_h = style === null || style === void 0 ? void 0 : style.polylineStyle) !== null && _h !== void 0 ? _h : {};
|
|
411
|
+
const polygonsClamped = ((_j = pStyle === null || pStyle === void 0 ? void 0 : pStyle.altitudeOption) === null || _j === void 0 ? void 0 : _j.id) == null ? true : ((_k = pStyle === null || pStyle === void 0 ? void 0 : pStyle.altitudeOption) === null || _k === void 0 ? void 0 : _k.id) == 0;
|
|
412
|
+
const bFillColor = bruce_models_1.Calculator.GetColor(pStyle.fillColor, {}, []);
|
|
413
|
+
const cFillColor = bFillColor ? colorToCColor(bFillColor) : Cesium.Color.fromCssColorString("rgba(139, 195, 74, 0.8)");
|
|
414
|
+
const bLineColor = bruce_models_1.Calculator.GetColor(pStyle.lineColor, {}, []);
|
|
415
|
+
const cLineColor = bLineColor ? colorToCColor(bLineColor) : Cesium.Color.fromCssColorString("rgba(80, 80, 80, 0.8)");
|
|
416
|
+
let lineWidthPx = pStyle.lineWidth ? bruce_models_1.Calculator.GetNumber(pStyle.lineWidth, {}, []) : null;
|
|
417
|
+
if (lineWidthPx == null) {
|
|
418
|
+
lineWidthPx = 1;
|
|
419
|
+
}
|
|
420
|
+
lineWidthPx = (0, js_utils_1.EnsureNumber)(lineWidthPx);
|
|
421
|
+
if (lineWidthPx < 0.01) {
|
|
422
|
+
lineWidthPx = 0;
|
|
423
|
+
}
|
|
424
|
+
lineWidthPx = Math.round(lineWidthPx);
|
|
425
|
+
const collection = {
|
|
426
|
+
features: [],
|
|
427
|
+
type: "FeatureCollection"
|
|
428
|
+
};
|
|
429
|
+
for (let i = 0; i < entities.length; i++) {
|
|
430
|
+
const entity = entities[i];
|
|
431
|
+
const feature = bruce_models_1.Geometry.ToGeoJsonFeature({
|
|
432
|
+
geometry: entity.Bruce.VectorGeometry,
|
|
433
|
+
noAltitude: polygonsClamped && lineWidthPx <= 0,
|
|
434
|
+
altitude: lineWidthPx > 0 && polygonsClamped ? 1 : null,
|
|
435
|
+
properties: {
|
|
436
|
+
...entity,
|
|
437
|
+
Bruce: {
|
|
438
|
+
...entity.Bruce,
|
|
439
|
+
// Exclude as we just converted it to geojson.
|
|
440
|
+
VectorGeometry: null
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
if (feature) {
|
|
445
|
+
collection.features.push(feature);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
// Anything that failed to turn into geojson or points we'll render as individuals.
|
|
449
|
+
const individuals = entities.filter((entity) => {
|
|
450
|
+
const feature = collection.features.find(x => { var _a, _b; return ((_b = (_a = x.properties) === null || _a === void 0 ? void 0 : _a.Bruce) === null || _b === void 0 ? void 0 : _b.ID) == entity.Bruce.ID; });
|
|
451
|
+
if (!feature) {
|
|
452
|
+
return true;
|
|
453
|
+
}
|
|
454
|
+
if (feature.geometry.type == "Point") {
|
|
455
|
+
return true;
|
|
456
|
+
}
|
|
457
|
+
return false;
|
|
458
|
+
});
|
|
459
|
+
if (individuals.length) {
|
|
460
|
+
this.renderAsIndividuals(individuals, force);
|
|
461
|
+
}
|
|
462
|
+
// Filter out points (the ones we just rendered as individuals).
|
|
463
|
+
collection.features = collection.features.filter(x => x.geometry.type != "Point");
|
|
464
|
+
// If there is nothing to render now, return.
|
|
465
|
+
if (!collection.features.length) {
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
const source = await Cesium.GeoJsonDataSource.load(collection, {
|
|
469
|
+
stroke: cLineColor,
|
|
470
|
+
fill: cFillColor,
|
|
471
|
+
strokeWidth: lineWidthPx,
|
|
472
|
+
clampToGround: lineWidthPx <= 0 && polygonsClamped
|
|
473
|
+
});
|
|
474
|
+
this.viewer.dataSources.add(source);
|
|
475
|
+
this.sources.push(source);
|
|
476
|
+
if (this.disposed) {
|
|
477
|
+
this.doDispose();
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
const groups = [];
|
|
481
|
+
/**
|
|
482
|
+
* Applies individual styling to a rendered entity.
|
|
483
|
+
* This will exclude tag styling for now since it's harder to load that on the fly.
|
|
484
|
+
* @param thing
|
|
485
|
+
* @param entityId
|
|
486
|
+
* @param data
|
|
487
|
+
* @returns
|
|
488
|
+
*/
|
|
489
|
+
const applyStyle = (thing, entityId, data) => {
|
|
490
|
+
if (thing.polygon) {
|
|
491
|
+
const bFillColor = bruce_models_1.Calculator.GetColor(pStyle.fillColor, data, []);
|
|
492
|
+
const cFillColor = bFillColor ? colorToCColor(bFillColor) : Cesium.Color.fromCssColorString("rgba(139, 195, 74, 0.8)");
|
|
493
|
+
const bLineColor = bruce_models_1.Calculator.GetColor(pStyle.lineColor, data, []);
|
|
494
|
+
const cLineColor = bLineColor ? colorToCColor(bLineColor) : Cesium.Color.fromCssColorString("rgba(80, 80, 80, 0.8)");
|
|
495
|
+
let width = pStyle.lineWidth ? bruce_models_1.Calculator.GetNumber(pStyle.lineWidth, data, []) : null;
|
|
496
|
+
if (width == null) {
|
|
497
|
+
width = 1;
|
|
498
|
+
}
|
|
499
|
+
width = (0, js_utils_1.EnsureNumber)(width);
|
|
500
|
+
if (width < 0.01) {
|
|
501
|
+
width = 0;
|
|
502
|
+
}
|
|
503
|
+
let curFillColor = getValue(this.viewer, thing.polygon.material);
|
|
504
|
+
if (curFillColor && curFillColor instanceof Cesium.ColorMaterialProperty) {
|
|
505
|
+
curFillColor = curFillColor.color;
|
|
506
|
+
}
|
|
507
|
+
let curLineColor = getValue(this.viewer, thing.polygon.outlineColor);
|
|
508
|
+
if (curLineColor && curLineColor instanceof Cesium.ColorMaterialProperty) {
|
|
509
|
+
curLineColor = curLineColor.color;
|
|
510
|
+
}
|
|
511
|
+
const curWidth = getValue(this.viewer, thing.polygon.outlineWidth);
|
|
512
|
+
if ((curFillColor instanceof Cesium.Color && curFillColor.equals(cFillColor)) &&
|
|
513
|
+
(curLineColor instanceof Cesium.Color && curLineColor.equals(cLineColor)) &&
|
|
514
|
+
curWidth == width) {
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
thing.polygon.material = new Cesium.ColorMaterialProperty(cFillColor);
|
|
518
|
+
thing.polygon.outlineColor = new Cesium.ConstantProperty(cLineColor);
|
|
519
|
+
thing.polygon.outlineWidth = new Cesium.ConstantProperty(width);
|
|
520
|
+
}
|
|
521
|
+
else if (thing.polyline) {
|
|
522
|
+
const bColor = lStyle.lineColor ? bruce_models_1.Calculator.GetColor(lStyle.lineColor, data, []) : null;
|
|
523
|
+
const cColor = bColor ? colorToCColor(bColor) : Cesium.Color.fromCssColorString("rgba(255, 193, 7, 0.8)");
|
|
524
|
+
let width = lStyle.lineWidth ? bruce_models_1.Calculator.GetNumber(lStyle.lineWidth, data, []) : null;
|
|
525
|
+
if (width == null) {
|
|
526
|
+
width = 2;
|
|
527
|
+
}
|
|
528
|
+
width = (0, js_utils_1.EnsureNumber)(width);
|
|
529
|
+
if (width < 0.01) {
|
|
530
|
+
width = 0;
|
|
531
|
+
}
|
|
532
|
+
let curColor = getValue(this.viewer, thing.polyline.material);
|
|
533
|
+
if (curColor && curColor instanceof Cesium.ColorMaterialProperty) {
|
|
534
|
+
curColor = curColor.color;
|
|
535
|
+
}
|
|
536
|
+
const curWidth = getValue(this.viewer, thing.polyline.width);
|
|
537
|
+
if ((curColor instanceof Cesium.Color && curColor.equals(cColor)) &&
|
|
538
|
+
curWidth == width) {
|
|
539
|
+
return;
|
|
540
|
+
}
|
|
541
|
+
thing.polyline.material = new Cesium.ColorMaterialProperty(cColor);
|
|
542
|
+
thing.polyline.width = new Cesium.ConstantProperty(width);
|
|
543
|
+
}
|
|
544
|
+
};
|
|
545
|
+
let toForceUpdate = [];
|
|
546
|
+
/**
|
|
547
|
+
* Registers a given cesium entity produced from rendering geojson.
|
|
548
|
+
* Since one nextspace entity can have multiple cesium entities, there is special logic to group them together.
|
|
549
|
+
* @param thing
|
|
550
|
+
* @returns
|
|
551
|
+
*/
|
|
552
|
+
const register = (thing) => {
|
|
553
|
+
var _a, _b, _c, _d;
|
|
554
|
+
// See if the cesium entity already exists in a group.
|
|
555
|
+
let group = groups.find((x) => { var _a; return ((_a = x.visual) === null || _a === void 0 ? void 0 : _a.id) == thing.id || x.siblings.find(x => (x === null || x === void 0 ? void 0 : x.id) == thing.id); });
|
|
556
|
+
if (group) {
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
const metadata = getValue(this.viewer, thing === null || thing === void 0 ? void 0 : thing.properties);
|
|
560
|
+
const entityId = (_a = metadata === null || metadata === void 0 ? void 0 : metadata.Bruce) === null || _a === void 0 ? void 0 : _a.ID;
|
|
561
|
+
if (!entityId) {
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
// Find group for the nextspace entity ID.
|
|
565
|
+
group = groups.find((x) => x.entityId == entityId);
|
|
566
|
+
// No group yet. We can designate this as the primary entity and create a new group for it.
|
|
567
|
+
if (!group) {
|
|
568
|
+
group = {
|
|
569
|
+
entityId: entityId,
|
|
570
|
+
visual: thing,
|
|
571
|
+
tagIds: (_b = metadata === null || metadata === void 0 ? void 0 : metadata.Bruce) === null || _b === void 0 ? void 0 : _b["Layer.ID"],
|
|
572
|
+
entityTypeId: (_c = metadata === null || metadata === void 0 ? void 0 : metadata.Bruce) === null || _c === void 0 ? void 0 : _c["EntityType.ID"],
|
|
573
|
+
siblings: [],
|
|
574
|
+
data: entities.find(x => { var _a; return ((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a.ID) == entityId; }),
|
|
575
|
+
rego: null
|
|
576
|
+
};
|
|
577
|
+
groups.push(group);
|
|
578
|
+
applyStyle(thing, entityId, group.data);
|
|
579
|
+
const rego = {
|
|
580
|
+
canEdit: true,
|
|
581
|
+
entityId: entityId,
|
|
582
|
+
menuItemId: this.item.id,
|
|
583
|
+
menuItemType: this.item.Type,
|
|
584
|
+
visual: thing,
|
|
585
|
+
priority: this.renderPriority,
|
|
586
|
+
entityTypeId: group.entityTypeId,
|
|
587
|
+
accountId: this.apiGetter.accountId,
|
|
588
|
+
tagIds: group.tagIds ? [].concat(group.tagIds) : [],
|
|
589
|
+
name: entityType ? (_d = bruce_models_1.Entity.CalculateName({
|
|
590
|
+
entity: group.data,
|
|
591
|
+
type: entityType,
|
|
592
|
+
defaultToId: false
|
|
593
|
+
})) !== null && _d !== void 0 ? _d : "Unnamed Entity" : "Unnamed Entity",
|
|
594
|
+
cdn: this.item.cdnEnabled,
|
|
595
|
+
collection: source.entities
|
|
596
|
+
};
|
|
597
|
+
group.rego = rego;
|
|
598
|
+
this.visualsManager.AddRego({
|
|
599
|
+
rego,
|
|
600
|
+
requestRender: false
|
|
601
|
+
});
|
|
602
|
+
}
|
|
603
|
+
// Found a group. We flag this as a sibling entity of the primary.
|
|
604
|
+
else {
|
|
605
|
+
applyStyle(thing, entityId, group.data);
|
|
606
|
+
group.siblings.push(thing);
|
|
607
|
+
group.visual._siblingGraphics = group.siblings;
|
|
608
|
+
thing._parentEntity = group.visual;
|
|
609
|
+
if (group.rego) {
|
|
610
|
+
this.visualsManager.RefreshMark({
|
|
611
|
+
rego: group.rego
|
|
612
|
+
});
|
|
613
|
+
if (!toForceUpdate.includes(entityId)) {
|
|
614
|
+
toForceUpdate.push(entityId);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
};
|
|
619
|
+
const sEntities = source.entities.values;
|
|
620
|
+
for (let i = 0; i < sEntities.length; i++) {
|
|
621
|
+
const cEntity = sEntities[i];
|
|
622
|
+
register(cEntity);
|
|
623
|
+
}
|
|
624
|
+
if (toForceUpdate.length) {
|
|
625
|
+
this.visualsManager.ForceUpdate({
|
|
626
|
+
entityIds: toForceUpdate,
|
|
627
|
+
refreshColors: true,
|
|
628
|
+
requestRender: false
|
|
629
|
+
});
|
|
630
|
+
}
|
|
631
|
+
this.viewer.scene.requestRender();
|
|
632
|
+
}
|
|
633
|
+
/**
|
|
634
|
+
* Our default path.
|
|
635
|
+
* We render each entity individually.
|
|
636
|
+
* @param entities
|
|
637
|
+
* @param force
|
|
638
|
+
* @returns
|
|
639
|
+
*/
|
|
640
|
+
async renderAsIndividuals(entities, force = false) {
|
|
641
|
+
const { updated, entities: cEntities } = await entity_render_engine_1.EntityRenderEngine.Render({
|
|
642
|
+
viewer: this.viewer,
|
|
643
|
+
apiGetter: this.apiGetter,
|
|
644
|
+
entities: entities,
|
|
645
|
+
menuItemId: this.item.id,
|
|
646
|
+
visualRegister: this.visualsManager,
|
|
647
|
+
zoomControl: this.item.CameraZoomSettings,
|
|
648
|
+
force
|
|
649
|
+
});
|
|
650
|
+
if (this.disposed) {
|
|
651
|
+
this.visualsManager.RemoveRegos({
|
|
652
|
+
menuItemId: this.item.id
|
|
653
|
+
});
|
|
654
|
+
return;
|
|
655
|
+
}
|
|
656
|
+
/**
|
|
657
|
+
* Returns if a given entityId is associated with the menu item.
|
|
658
|
+
* @param entityId
|
|
659
|
+
* @returns
|
|
660
|
+
*/
|
|
661
|
+
const isEntityInItem = (entityId) => {
|
|
662
|
+
var _a, _b;
|
|
663
|
+
return (_b = (_a = this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.Entities) === null || _b === void 0 ? void 0 : _b.find(y => { var _a; return ((_a = y === null || y === void 0 ? void 0 : y.Bruce) === null || _a === void 0 ? void 0 : _a.ID) == entityId; });
|
|
664
|
+
};
|
|
665
|
+
for (let i = 0; i < entities.length; i++) {
|
|
666
|
+
const entity = entities[i];
|
|
667
|
+
const id = entity.Bruce.ID;
|
|
668
|
+
const cEntity = cEntities.get(id);
|
|
669
|
+
this.renderedEntities[id] = !!cEntity;
|
|
670
|
+
if (cEntity && isEntityInItem(id)) {
|
|
671
|
+
const rego = this.visualsManager.GetRego({
|
|
672
|
+
entityId: id,
|
|
673
|
+
menuItemId: this.item.id
|
|
674
|
+
});
|
|
675
|
+
const visual = rego === null || rego === void 0 ? void 0 : rego.visual;
|
|
676
|
+
if (!visual || visual != cEntity) {
|
|
677
|
+
this.visualsManager.AddRego({
|
|
678
|
+
rego: {
|
|
679
|
+
canEdit: true,
|
|
680
|
+
entityId: id,
|
|
681
|
+
menuItemId: this.item.id,
|
|
682
|
+
menuItemType: this.item.Type,
|
|
683
|
+
visual: cEntity,
|
|
684
|
+
priority: this.renderPriority,
|
|
685
|
+
entityTypeId: entity.Bruce["EntityType.ID"],
|
|
686
|
+
accountId: this.apiGetter.accountId,
|
|
687
|
+
name: cEntity.name
|
|
688
|
+
},
|
|
689
|
+
requestRender: false
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
else if (updated.get(id) && rego) {
|
|
693
|
+
rego.visual = cEntity;
|
|
694
|
+
rego.entityTypeId = entity.Bruce["EntityType.ID"];
|
|
695
|
+
rego.name = cEntity.name;
|
|
696
|
+
// We manually trigger an update event since the graphic was updated but not recreated.
|
|
697
|
+
this.visualsManager.OnUpdate.Trigger({
|
|
698
|
+
type: visuals_register_1.VisualsRegister.EVisualUpdateType.Update,
|
|
699
|
+
entityId: id,
|
|
700
|
+
rego: rego
|
|
701
|
+
});
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
else {
|
|
705
|
+
this.visualsManager.RemoveRegos({
|
|
706
|
+
entityId: id,
|
|
707
|
+
menuItemId: this.item.id,
|
|
708
|
+
requestRender: false
|
|
709
|
+
});
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
this.viewer.scene.requestRender();
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
EntitiesLoadedRenderManager.Manager = Manager;
|
|
716
|
+
})(EntitiesLoadedRenderManager = exports.EntitiesLoadedRenderManager || (exports.EntitiesLoadedRenderManager = {}));
|
|
717
|
+
//# sourceMappingURL=entities-loaded-render-manager.js.map
|