@xeokit/xeokit-sdk 2.6.60 → 2.6.61
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/xeokit-sdk.cjs.js +33 -9
- package/dist/xeokit-sdk.es.js +33 -9
- package/dist/xeokit-sdk.es5.js +6 -5
- package/dist/xeokit-sdk.min.cjs.js +1 -1
- package/dist/xeokit-sdk.min.es.js +2 -2
- package/dist/xeokit-sdk.min.es5.js +2 -2
- package/package.json +1 -1
- package/src/plugins/FastNavPlugin/FastNavPlugin.js +4 -3
- package/src/plugins/TreeViewPlugin/TreeViewPlugin.js +29 -6
package/dist/xeokit-sdk.cjs.js
CHANGED
|
@@ -90756,7 +90756,7 @@ class FastNavPlugin extends Plugin {
|
|
|
90756
90756
|
this._hideEdges = cfg.hideEdges !== false;
|
|
90757
90757
|
this._hideTransparentObjects = !!cfg.hideTransparentObjects;
|
|
90758
90758
|
this._scaleCanvasResolution = !!cfg.scaleCanvasResolution;
|
|
90759
|
-
this._defaultScaleCanvasResolutionFactor = cfg.defaultScaleCanvasResolutionFactor
|
|
90759
|
+
this._defaultScaleCanvasResolutionFactor = cfg.defaultScaleCanvasResolutionFactor;
|
|
90760
90760
|
this._scaleCanvasResolutionFactor = cfg.scaleCanvasResolutionFactor || 0.6;
|
|
90761
90761
|
this._delayBeforeRestore = (cfg.delayBeforeRestore !== false);
|
|
90762
90762
|
this._delayBeforeRestoreSeconds = cfg.delayBeforeRestoreSeconds || 0.5;
|
|
@@ -90772,6 +90772,7 @@ class FastNavPlugin extends Plugin {
|
|
|
90772
90772
|
viewer.scene._renderer.setSAOEnabled(!this._hideSAO);
|
|
90773
90773
|
viewer.scene._renderer.setTransparentEnabled(!this._hideTransparentObjects);
|
|
90774
90774
|
viewer.scene._renderer.setEdgesEnabled(!this._hideEdges);
|
|
90775
|
+
this._originalCanvasResolutionScale = viewer.scene.canvas.resolutionScale;
|
|
90775
90776
|
if (this._scaleCanvasResolution) {
|
|
90776
90777
|
viewer.scene.canvas.resolutionScale = this._scaleCanvasResolutionFactor;
|
|
90777
90778
|
} else {
|
|
@@ -90782,7 +90783,7 @@ class FastNavPlugin extends Plugin {
|
|
|
90782
90783
|
};
|
|
90783
90784
|
|
|
90784
90785
|
const switchToHighQuality = () => {
|
|
90785
|
-
viewer.scene.canvas.resolutionScale = this._defaultScaleCanvasResolutionFactor;
|
|
90786
|
+
viewer.scene.canvas.resolutionScale = this._defaultScaleCanvasResolutionFactor || this._originalCanvasResolutionScale || 1.0;
|
|
90786
90787
|
viewer.scene._renderer.setEdgesEnabled(true);
|
|
90787
90788
|
viewer.scene._renderer.setColorTextureEnabled(true);
|
|
90788
90789
|
viewer.scene._renderer.setPBREnabled(true);
|
|
@@ -90987,7 +90988,7 @@ class FastNavPlugin extends Plugin {
|
|
|
90987
90988
|
* @param {Number} defaultScaleCanvasResolutionFactor Factor by scale canvas resolution when we stop interacting with the viewer.
|
|
90988
90989
|
*/
|
|
90989
90990
|
set defaultScaleCanvasResolutionFactor(defaultScaleCanvasResolutionFactor) {
|
|
90990
|
-
this._defaultScaleCanvasResolutionFactor = defaultScaleCanvasResolutionFactor
|
|
90991
|
+
this._defaultScaleCanvasResolutionFactor = defaultScaleCanvasResolutionFactor;
|
|
90991
90992
|
}
|
|
90992
90993
|
|
|
90993
90994
|
/**
|
|
@@ -126544,6 +126545,7 @@ class TreeViewPlugin extends Plugin {
|
|
|
126544
126545
|
* @param {Boolean} [cfg.pruneEmptyNodes=true] When true, will not contain nodes that don't have content in the {@link Scene}. These are nodes whose {@link MetaObject}s don't have {@link Entity}s.
|
|
126545
126546
|
* @param {RenderService} [cfg.renderService] Optional {@link RenderService} to use. Defaults to the {@link TreeViewPlugin}'s default {@link RenderService}.
|
|
126546
126547
|
* @param {Boolean} [cfg.showIndeterminate=false] When true, will show indeterminate state for checkboxes when some but not all child nodes are checked
|
|
126548
|
+
* @param {Boolean} [cfg.showProjectNode=false] When true, will show top level project node when hierarchy is set to "storeys"
|
|
126547
126549
|
*/
|
|
126548
126550
|
constructor(viewer, cfg = {}) {
|
|
126549
126551
|
|
|
@@ -126596,6 +126598,7 @@ class TreeViewPlugin extends Plugin {
|
|
|
126596
126598
|
this._showListItemElementId = null;
|
|
126597
126599
|
this._renderService = cfg.renderService || new RenderService();
|
|
126598
126600
|
this._showIndeterminate = cfg.showIndeterminate ?? false;
|
|
126601
|
+
this._showProjectNode = cfg.showProjectNode ?? false;
|
|
126599
126602
|
|
|
126600
126603
|
if (!this._renderService) {
|
|
126601
126604
|
throw new Error('TreeViewPlugin: no render service set');
|
|
@@ -127150,11 +127153,11 @@ class TreeViewPlugin extends Plugin {
|
|
|
127150
127153
|
_createStoreysNodes() {
|
|
127151
127154
|
const rootMetaObjects = this._viewer.metaScene.rootMetaObjects;
|
|
127152
127155
|
for (let id in rootMetaObjects) {
|
|
127153
|
-
this._createStoreysNodes2(rootMetaObjects[id], null, null, null);
|
|
127156
|
+
this._createStoreysNodes2(rootMetaObjects[id], null, null, null, null);
|
|
127154
127157
|
}
|
|
127155
127158
|
}
|
|
127156
127159
|
|
|
127157
|
-
_createStoreysNodes2(metaObject, buildingNode, storeyNode, typeNodes) {
|
|
127160
|
+
_createStoreysNodes2(metaObject, projectNode, buildingNode, storeyNode, typeNodes) {
|
|
127158
127161
|
if (this._pruneEmptyNodes && (metaObject._countEntities === 0)) {
|
|
127159
127162
|
return;
|
|
127160
127163
|
}
|
|
@@ -127162,20 +127165,41 @@ class TreeViewPlugin extends Plugin {
|
|
|
127162
127165
|
const metaObjectName = metaObject.name;
|
|
127163
127166
|
const children = metaObject.children;
|
|
127164
127167
|
const objectId = metaObject.id;
|
|
127165
|
-
|
|
127168
|
+
|
|
127169
|
+
if (this._showProjectNode && metaObjectType === 'IfcProject') {
|
|
127170
|
+
projectNode = {
|
|
127171
|
+
nodeId: `${this._id}-${objectId}`,
|
|
127172
|
+
objectId,
|
|
127173
|
+
title: (metaObject.metaModels.length === 0) ? metaObjectName : this._rootNames[metaObject.metaModels[0].id] || ((metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType),
|
|
127174
|
+
type: metaObjectType,
|
|
127175
|
+
parent: null,
|
|
127176
|
+
numEntities: 0,
|
|
127177
|
+
numVisibleEntities: 0,
|
|
127178
|
+
checked: false,
|
|
127179
|
+
xrayed: false,
|
|
127180
|
+
children: [],
|
|
127181
|
+
};
|
|
127182
|
+
this._rootNodes.push(projectNode);
|
|
127183
|
+
this._objectNodes[projectNode.objectId] = projectNode;
|
|
127184
|
+
this._nodeNodes[projectNode.nodeId] = projectNode;
|
|
127185
|
+
} else if (metaObjectType === "IfcBuilding") {
|
|
127166
127186
|
buildingNode = {
|
|
127167
127187
|
nodeId: `${this._id}-${objectId}`,
|
|
127168
127188
|
objectId: objectId,
|
|
127169
127189
|
title: (metaObject.metaModels.length === 0) ? metaObjectName : this._rootNames[metaObject.metaModels[0].id] || ((metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType),
|
|
127170
127190
|
type: metaObjectType,
|
|
127171
|
-
parent:
|
|
127191
|
+
parent: projectNode,
|
|
127172
127192
|
numEntities: 0,
|
|
127173
127193
|
numVisibleEntities: 0,
|
|
127174
127194
|
checked: false,
|
|
127175
127195
|
xrayed: false,
|
|
127176
127196
|
children: []
|
|
127177
127197
|
};
|
|
127178
|
-
|
|
127198
|
+
if (projectNode) {
|
|
127199
|
+
projectNode.children.push(buildingNode);
|
|
127200
|
+
} else {
|
|
127201
|
+
this._rootNodes.push(buildingNode);
|
|
127202
|
+
}
|
|
127179
127203
|
this._objectNodes[buildingNode.objectId] = buildingNode;
|
|
127180
127204
|
this._nodeNodes[buildingNode.nodeId] = buildingNode;
|
|
127181
127205
|
} else if (metaObjectType === "IfcBuildingStorey") {
|
|
@@ -127245,7 +127269,7 @@ class TreeViewPlugin extends Plugin {
|
|
|
127245
127269
|
if (children) {
|
|
127246
127270
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
127247
127271
|
const childMetaObject = children[i];
|
|
127248
|
-
this._createStoreysNodes2(childMetaObject, buildingNode, storeyNode, typeNodes);
|
|
127272
|
+
this._createStoreysNodes2(childMetaObject, projectNode, buildingNode, storeyNode, typeNodes);
|
|
127249
127273
|
}
|
|
127250
127274
|
}
|
|
127251
127275
|
}
|
package/dist/xeokit-sdk.es.js
CHANGED
|
@@ -90752,7 +90752,7 @@ class FastNavPlugin extends Plugin {
|
|
|
90752
90752
|
this._hideEdges = cfg.hideEdges !== false;
|
|
90753
90753
|
this._hideTransparentObjects = !!cfg.hideTransparentObjects;
|
|
90754
90754
|
this._scaleCanvasResolution = !!cfg.scaleCanvasResolution;
|
|
90755
|
-
this._defaultScaleCanvasResolutionFactor = cfg.defaultScaleCanvasResolutionFactor
|
|
90755
|
+
this._defaultScaleCanvasResolutionFactor = cfg.defaultScaleCanvasResolutionFactor;
|
|
90756
90756
|
this._scaleCanvasResolutionFactor = cfg.scaleCanvasResolutionFactor || 0.6;
|
|
90757
90757
|
this._delayBeforeRestore = (cfg.delayBeforeRestore !== false);
|
|
90758
90758
|
this._delayBeforeRestoreSeconds = cfg.delayBeforeRestoreSeconds || 0.5;
|
|
@@ -90768,6 +90768,7 @@ class FastNavPlugin extends Plugin {
|
|
|
90768
90768
|
viewer.scene._renderer.setSAOEnabled(!this._hideSAO);
|
|
90769
90769
|
viewer.scene._renderer.setTransparentEnabled(!this._hideTransparentObjects);
|
|
90770
90770
|
viewer.scene._renderer.setEdgesEnabled(!this._hideEdges);
|
|
90771
|
+
this._originalCanvasResolutionScale = viewer.scene.canvas.resolutionScale;
|
|
90771
90772
|
if (this._scaleCanvasResolution) {
|
|
90772
90773
|
viewer.scene.canvas.resolutionScale = this._scaleCanvasResolutionFactor;
|
|
90773
90774
|
} else {
|
|
@@ -90778,7 +90779,7 @@ class FastNavPlugin extends Plugin {
|
|
|
90778
90779
|
};
|
|
90779
90780
|
|
|
90780
90781
|
const switchToHighQuality = () => {
|
|
90781
|
-
viewer.scene.canvas.resolutionScale = this._defaultScaleCanvasResolutionFactor;
|
|
90782
|
+
viewer.scene.canvas.resolutionScale = this._defaultScaleCanvasResolutionFactor || this._originalCanvasResolutionScale || 1.0;
|
|
90782
90783
|
viewer.scene._renderer.setEdgesEnabled(true);
|
|
90783
90784
|
viewer.scene._renderer.setColorTextureEnabled(true);
|
|
90784
90785
|
viewer.scene._renderer.setPBREnabled(true);
|
|
@@ -90983,7 +90984,7 @@ class FastNavPlugin extends Plugin {
|
|
|
90983
90984
|
* @param {Number} defaultScaleCanvasResolutionFactor Factor by scale canvas resolution when we stop interacting with the viewer.
|
|
90984
90985
|
*/
|
|
90985
90986
|
set defaultScaleCanvasResolutionFactor(defaultScaleCanvasResolutionFactor) {
|
|
90986
|
-
this._defaultScaleCanvasResolutionFactor = defaultScaleCanvasResolutionFactor
|
|
90987
|
+
this._defaultScaleCanvasResolutionFactor = defaultScaleCanvasResolutionFactor;
|
|
90987
90988
|
}
|
|
90988
90989
|
|
|
90989
90990
|
/**
|
|
@@ -126540,6 +126541,7 @@ class TreeViewPlugin extends Plugin {
|
|
|
126540
126541
|
* @param {Boolean} [cfg.pruneEmptyNodes=true] When true, will not contain nodes that don't have content in the {@link Scene}. These are nodes whose {@link MetaObject}s don't have {@link Entity}s.
|
|
126541
126542
|
* @param {RenderService} [cfg.renderService] Optional {@link RenderService} to use. Defaults to the {@link TreeViewPlugin}'s default {@link RenderService}.
|
|
126542
126543
|
* @param {Boolean} [cfg.showIndeterminate=false] When true, will show indeterminate state for checkboxes when some but not all child nodes are checked
|
|
126544
|
+
* @param {Boolean} [cfg.showProjectNode=false] When true, will show top level project node when hierarchy is set to "storeys"
|
|
126543
126545
|
*/
|
|
126544
126546
|
constructor(viewer, cfg = {}) {
|
|
126545
126547
|
|
|
@@ -126592,6 +126594,7 @@ class TreeViewPlugin extends Plugin {
|
|
|
126592
126594
|
this._showListItemElementId = null;
|
|
126593
126595
|
this._renderService = cfg.renderService || new RenderService();
|
|
126594
126596
|
this._showIndeterminate = cfg.showIndeterminate ?? false;
|
|
126597
|
+
this._showProjectNode = cfg.showProjectNode ?? false;
|
|
126595
126598
|
|
|
126596
126599
|
if (!this._renderService) {
|
|
126597
126600
|
throw new Error('TreeViewPlugin: no render service set');
|
|
@@ -127146,11 +127149,11 @@ class TreeViewPlugin extends Plugin {
|
|
|
127146
127149
|
_createStoreysNodes() {
|
|
127147
127150
|
const rootMetaObjects = this._viewer.metaScene.rootMetaObjects;
|
|
127148
127151
|
for (let id in rootMetaObjects) {
|
|
127149
|
-
this._createStoreysNodes2(rootMetaObjects[id], null, null, null);
|
|
127152
|
+
this._createStoreysNodes2(rootMetaObjects[id], null, null, null, null);
|
|
127150
127153
|
}
|
|
127151
127154
|
}
|
|
127152
127155
|
|
|
127153
|
-
_createStoreysNodes2(metaObject, buildingNode, storeyNode, typeNodes) {
|
|
127156
|
+
_createStoreysNodes2(metaObject, projectNode, buildingNode, storeyNode, typeNodes) {
|
|
127154
127157
|
if (this._pruneEmptyNodes && (metaObject._countEntities === 0)) {
|
|
127155
127158
|
return;
|
|
127156
127159
|
}
|
|
@@ -127158,20 +127161,41 @@ class TreeViewPlugin extends Plugin {
|
|
|
127158
127161
|
const metaObjectName = metaObject.name;
|
|
127159
127162
|
const children = metaObject.children;
|
|
127160
127163
|
const objectId = metaObject.id;
|
|
127161
|
-
|
|
127164
|
+
|
|
127165
|
+
if (this._showProjectNode && metaObjectType === 'IfcProject') {
|
|
127166
|
+
projectNode = {
|
|
127167
|
+
nodeId: `${this._id}-${objectId}`,
|
|
127168
|
+
objectId,
|
|
127169
|
+
title: (metaObject.metaModels.length === 0) ? metaObjectName : this._rootNames[metaObject.metaModels[0].id] || ((metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType),
|
|
127170
|
+
type: metaObjectType,
|
|
127171
|
+
parent: null,
|
|
127172
|
+
numEntities: 0,
|
|
127173
|
+
numVisibleEntities: 0,
|
|
127174
|
+
checked: false,
|
|
127175
|
+
xrayed: false,
|
|
127176
|
+
children: [],
|
|
127177
|
+
};
|
|
127178
|
+
this._rootNodes.push(projectNode);
|
|
127179
|
+
this._objectNodes[projectNode.objectId] = projectNode;
|
|
127180
|
+
this._nodeNodes[projectNode.nodeId] = projectNode;
|
|
127181
|
+
} else if (metaObjectType === "IfcBuilding") {
|
|
127162
127182
|
buildingNode = {
|
|
127163
127183
|
nodeId: `${this._id}-${objectId}`,
|
|
127164
127184
|
objectId: objectId,
|
|
127165
127185
|
title: (metaObject.metaModels.length === 0) ? metaObjectName : this._rootNames[metaObject.metaModels[0].id] || ((metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType),
|
|
127166
127186
|
type: metaObjectType,
|
|
127167
|
-
parent:
|
|
127187
|
+
parent: projectNode,
|
|
127168
127188
|
numEntities: 0,
|
|
127169
127189
|
numVisibleEntities: 0,
|
|
127170
127190
|
checked: false,
|
|
127171
127191
|
xrayed: false,
|
|
127172
127192
|
children: []
|
|
127173
127193
|
};
|
|
127174
|
-
|
|
127194
|
+
if (projectNode) {
|
|
127195
|
+
projectNode.children.push(buildingNode);
|
|
127196
|
+
} else {
|
|
127197
|
+
this._rootNodes.push(buildingNode);
|
|
127198
|
+
}
|
|
127175
127199
|
this._objectNodes[buildingNode.objectId] = buildingNode;
|
|
127176
127200
|
this._nodeNodes[buildingNode.nodeId] = buildingNode;
|
|
127177
127201
|
} else if (metaObjectType === "IfcBuildingStorey") {
|
|
@@ -127241,7 +127265,7 @@ class TreeViewPlugin extends Plugin {
|
|
|
127241
127265
|
if (children) {
|
|
127242
127266
|
for (let i = 0, len = children.length; i < len; i++) {
|
|
127243
127267
|
const childMetaObject = children[i];
|
|
127244
|
-
this._createStoreysNodes2(childMetaObject, buildingNode, storeyNode, typeNodes);
|
|
127268
|
+
this._createStoreysNodes2(childMetaObject, projectNode, buildingNode, storeyNode, typeNodes);
|
|
127245
127269
|
}
|
|
127246
127270
|
}
|
|
127247
127271
|
}
|
package/dist/xeokit-sdk.es5.js
CHANGED
|
@@ -20567,7 +20567,7 @@ return pickResult&&pickResult.worldPos?pickResult.worldPos:snap&&tryPickWorldPos
|
|
|
20567
20567
|
* @param {Number} [cfg.scaleCanvasResolutionFactor=0.6] The factor by which we downscale the canvas resolution whenever we interact with the Viewer.
|
|
20568
20568
|
* @param {Boolean} [cfg.delayBeforeRestore=true] Whether to temporarily have a delay before restoring normal rendering after we stop interacting with the Viewer.
|
|
20569
20569
|
* @param {Number} [cfg.delayBeforeRestoreSeconds=0.5] Delay in seconds before restoring normal rendering after we stop interacting with the Viewer.
|
|
20570
|
-
*/function FastNavPlugin(viewer){var _this99;var cfg=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,FastNavPlugin);_this99=_super129.call(this,"FastNav",viewer);_this99._hideColorTexture=cfg.hideColorTexture!==false;_this99._hidePBR=cfg.hidePBR!==false;_this99._hideSAO=cfg.hideSAO!==false;_this99._hideEdges=cfg.hideEdges!==false;_this99._hideTransparentObjects=!!cfg.hideTransparentObjects;_this99._scaleCanvasResolution=!!cfg.scaleCanvasResolution;_this99._defaultScaleCanvasResolutionFactor=cfg.defaultScaleCanvasResolutionFactor
|
|
20570
|
+
*/function FastNavPlugin(viewer){var _this99;var cfg=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,FastNavPlugin);_this99=_super129.call(this,"FastNav",viewer);_this99._hideColorTexture=cfg.hideColorTexture!==false;_this99._hidePBR=cfg.hidePBR!==false;_this99._hideSAO=cfg.hideSAO!==false;_this99._hideEdges=cfg.hideEdges!==false;_this99._hideTransparentObjects=!!cfg.hideTransparentObjects;_this99._scaleCanvasResolution=!!cfg.scaleCanvasResolution;_this99._defaultScaleCanvasResolutionFactor=cfg.defaultScaleCanvasResolutionFactor;_this99._scaleCanvasResolutionFactor=cfg.scaleCanvasResolutionFactor||0.6;_this99._delayBeforeRestore=cfg.delayBeforeRestore!==false;_this99._delayBeforeRestoreSeconds=cfg.delayBeforeRestoreSeconds||0.5;var timer=_this99._delayBeforeRestoreSeconds*1000;var fastMode=false;var switchToLowQuality=function switchToLowQuality(){timer=_this99._delayBeforeRestoreSeconds*1000;if(!fastMode){viewer.scene._renderer.setColorTextureEnabled(!_this99._hideColorTexture);viewer.scene._renderer.setPBREnabled(!_this99._hidePBR);viewer.scene._renderer.setSAOEnabled(!_this99._hideSAO);viewer.scene._renderer.setTransparentEnabled(!_this99._hideTransparentObjects);viewer.scene._renderer.setEdgesEnabled(!_this99._hideEdges);_this99._originalCanvasResolutionScale=viewer.scene.canvas.resolutionScale;if(_this99._scaleCanvasResolution){viewer.scene.canvas.resolutionScale=_this99._scaleCanvasResolutionFactor;}else{viewer.scene.canvas.resolutionScale=_this99._defaultScaleCanvasResolutionFactor;}fastMode=true;}};var switchToHighQuality=function switchToHighQuality(){viewer.scene.canvas.resolutionScale=_this99._defaultScaleCanvasResolutionFactor||_this99._originalCanvasResolutionScale||1.0;viewer.scene._renderer.setEdgesEnabled(true);viewer.scene._renderer.setColorTextureEnabled(true);viewer.scene._renderer.setPBREnabled(true);viewer.scene._renderer.setSAOEnabled(true);viewer.scene._renderer.setTransparentEnabled(true);fastMode=false;};_this99._onCanvasBoundary=viewer.scene.canvas.on("boundary",switchToLowQuality);_this99._onCameraMatrix=viewer.scene.camera.on("matrix",switchToLowQuality);_this99._onSceneTick=viewer.scene.on("tick",function(tickEvent){if(!fastMode){return;}timer-=tickEvent.deltaTime;if(!_this99._delayBeforeRestore||timer<=0){switchToHighQuality();}});var down=false;_this99._onSceneMouseDown=viewer.scene.input.on("mousedown",function(){down=true;});_this99._onSceneMouseUp=viewer.scene.input.on("mouseup",function(){down=false;});_this99._onSceneMouseMove=viewer.scene.input.on("mousemove",function(){if(!down){return;}switchToLowQuality();});return _this99;}/**
|
|
20571
20571
|
* Gets whether to temporarily hide color textures whenever we interact with the Viewer.
|
|
20572
20572
|
*
|
|
20573
20573
|
* Default is ````true````.
|
|
@@ -20665,7 +20665,7 @@ return pickResult&&pickResult.worldPos?pickResult.worldPos:snap&&tryPickWorldPos
|
|
|
20665
20665
|
* Enable canvas resolution scaling by setting {@link FastNavPlugin#scaleCanvasResolution} ````true````.
|
|
20666
20666
|
*
|
|
20667
20667
|
* @param {Number} defaultScaleCanvasResolutionFactor Factor by scale canvas resolution when we stop interacting with the viewer.
|
|
20668
|
-
*/,set:function set(defaultScaleCanvasResolutionFactor){this._defaultScaleCanvasResolutionFactor=defaultScaleCanvasResolutionFactor
|
|
20668
|
+
*/,set:function set(defaultScaleCanvasResolutionFactor){this._defaultScaleCanvasResolutionFactor=defaultScaleCanvasResolutionFactor;}/**
|
|
20669
20669
|
* Gets the factor by which we temporarily scale the canvas resolution when we interact with the viewer.
|
|
20670
20670
|
*
|
|
20671
20671
|
* Default is ````0.6````.
|
|
@@ -27622,7 +27622,8 @@ addMesh(modelNode,positions,normals,colors,material,options);}function addMesh(m
|
|
|
27622
27622
|
* @param {Boolean} [cfg.pruneEmptyNodes=true] When true, will not contain nodes that don't have content in the {@link Scene}. These are nodes whose {@link MetaObject}s don't have {@link Entity}s.
|
|
27623
27623
|
* @param {RenderService} [cfg.renderService] Optional {@link RenderService} to use. Defaults to the {@link TreeViewPlugin}'s default {@link RenderService}.
|
|
27624
27624
|
* @param {Boolean} [cfg.showIndeterminate=false] When true, will show indeterminate state for checkboxes when some but not all child nodes are checked
|
|
27625
|
-
|
|
27625
|
+
* @param {Boolean} [cfg.showProjectNode=false] When true, will show top level project node when hierarchy is set to "storeys"
|
|
27626
|
+
*/function TreeViewPlugin(viewer){var _cfg$showIndeterminat,_cfg$showProjectNode;var _this158;var cfg=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,TreeViewPlugin);_this158=_super166.call(this,"TreeViewPlugin",viewer);/**
|
|
27626
27627
|
* Contains messages for any errors found while last rebuilding this TreeView.
|
|
27627
27628
|
* @type {String[]}
|
|
27628
27629
|
*/_this158.errors=[];/**
|
|
@@ -27631,7 +27632,7 @@ addMesh(modelNode,positions,normals,colors,material,options);}function addMesh(m
|
|
|
27631
27632
|
*/_this158.valid=true;var containerElement=cfg.containerElement||document.getElementById(cfg.containerElementId);if(!(containerElement instanceof HTMLElement)){_this158.error("Mandatory config expected: valid containerElementId or containerElement");return _possibleConstructorReturn(_this158);}for(var _i539=0;;_i539++){if(!treeViews[_i539]){treeViews[_i539]=_assertThisInitialized(_this158);_this158._index=_i539;_this158._id="tree-".concat(_i539);break;}}_this158._containerElement=containerElement;_this158._metaModels={};_this158._autoAddModels=cfg.autoAddModels!==false;_this158._autoExpandDepth=cfg.autoExpandDepth||0;_this158._sortNodes=cfg.sortNodes!==false;_this158._viewer=viewer;_this158._rootElement=null;_this158._muteSceneEvents=false;_this158._muteTreeEvents=false;_this158._rootNodes=[];_this158._objectNodes={};// Object ID -> Node
|
|
27632
27633
|
_this158._nodeNodes={};// Node ID -> Node
|
|
27633
27634
|
_this158._rootNames={};// Node ID -> Root name
|
|
27634
|
-
_this158._sortNodes=cfg.sortNodes;_this158._pruneEmptyNodes=cfg.pruneEmptyNodes;_this158._showListItemElementId=null;_this158._renderService=cfg.renderService||new RenderService();_this158._showIndeterminate=(_cfg$showIndeterminat=cfg.showIndeterminate)!==null&&_cfg$showIndeterminat!==void 0?_cfg$showIndeterminat:false;if(!_this158._renderService){throw new Error('TreeViewPlugin: no render service set');}_this158._containerElement.oncontextmenu=function(e){e.preventDefault();};_this158._onObjectVisibility=_this158._viewer.scene.on("objectVisibility",function(entity){if(_this158._muteSceneEvents){return;}var objectId=entity.id;var node=_this158._objectNodes[objectId];if(!node){return;// Not in this tree
|
|
27635
|
+
_this158._sortNodes=cfg.sortNodes;_this158._pruneEmptyNodes=cfg.pruneEmptyNodes;_this158._showListItemElementId=null;_this158._renderService=cfg.renderService||new RenderService();_this158._showIndeterminate=(_cfg$showIndeterminat=cfg.showIndeterminate)!==null&&_cfg$showIndeterminat!==void 0?_cfg$showIndeterminat:false;_this158._showProjectNode=(_cfg$showProjectNode=cfg.showProjectNode)!==null&&_cfg$showProjectNode!==void 0?_cfg$showProjectNode:false;if(!_this158._renderService){throw new Error('TreeViewPlugin: no render service set');}_this158._containerElement.oncontextmenu=function(e){e.preventDefault();};_this158._onObjectVisibility=_this158._viewer.scene.on("objectVisibility",function(entity){if(_this158._muteSceneEvents){return;}var objectId=entity.id;var node=_this158._objectNodes[objectId];if(!node){return;// Not in this tree
|
|
27635
27636
|
}var visible=entity.visible;var updated=visible!==node.checked;if(!updated){return;}_this158._muteTreeEvents=true;node.checked=visible;if(visible){node.numVisibleEntities++;}else{node.numVisibleEntities--;}_this158._renderService.setCheckbox(node.nodeId,visible);var parent=node.parent;while(parent){parent.checked=visible;if(visible){parent.numVisibleEntities++;}else{parent.numVisibleEntities--;}var indeterminate=_this158._showIndeterminate&&parent.numVisibleEntities>0&&parent.numVisibleEntities<parent.numEntities;_this158._renderService.setCheckbox(parent.nodeId,parent.numVisibleEntities>0,indeterminate);parent=parent.parent;}_this158._muteTreeEvents=false;});_this158._onObjectXrayed=_this158._viewer.scene.on('objectXRayed',function(entity){if(_this158._muteSceneEvents){return;}var objectId=entity.id;var node=_this158._objectNodes[objectId];if(!node){return;// Not in this tree
|
|
27636
27637
|
}_this158._muteTreeEvents=true;var xrayed=entity.xrayed;var updated=xrayed!==node.xrayed;if(!updated){return;}node.xrayed=xrayed;_this158._renderService.setXRayed(node.nodeId,xrayed);_this158._muteTreeEvents=false;});_this158._switchExpandHandler=function(event){event.preventDefault();event.stopPropagation();var switchElement=event.target;_this158._expandSwitchElement(switchElement);};_this158._switchCollapseHandler=function(event){event.preventDefault();event.stopPropagation();var switchElement=event.target;_this158._collapseSwitchElement(switchElement);};_this158._checkboxChangeHandler=function(event){if(_this158._muteTreeEvents){return;}_this158._muteSceneEvents=true;var checkbox=event.target;var visible=_this158._renderService.isChecked(checkbox);var nodeId=_this158._renderService.getIdFromCheckbox(checkbox);var checkedNode=_this158._nodeNodes[nodeId];var objects=_this158._viewer.scene.objects;var numUpdated=0;_this158._withNodeTree(checkedNode,function(node){var objectId=node.objectId;var entity=objects[objectId];var isLeaf=node.children.length===0;node.numVisibleEntities=visible?node.numEntities:0;if(isLeaf&&visible!==node.checked){numUpdated++;}node.checked=visible;_this158._renderService.setCheckbox(node.nodeId,visible);if(entity){entity.visible=visible;}});var parent=checkedNode.parent;while(parent){parent.checked=visible;if(visible){parent.numVisibleEntities+=numUpdated;}else{parent.numVisibleEntities-=numUpdated;}var indeterminate=_this158._showIndeterminate&&parent.numVisibleEntities>0&&parent.numVisibleEntities<parent.numEntities;_this158._renderService.setCheckbox(parent.nodeId,parent.numVisibleEntities>0,indeterminate);parent=parent.parent;}_this158._muteSceneEvents=false;};_this158._hierarchy=cfg.hierarchy||"containment";_this158._autoExpandDepth=cfg.autoExpandDepth||0;if(_this158._autoAddModels){var modelIds=Object.keys(_this158.viewer.metaScene.metaModels);for(var _i540=0,len=modelIds.length;_i540<len;_i540++){var modelId=modelIds[_i540];var metaModel=_this158.viewer.metaScene.metaModels[modelId];if(metaModel.finalized){_this158.addModel(modelId);}}_this158.viewer.scene.on("modelLoaded",function(modelId){if(_this158.viewer.metaScene.metaModels[modelId]){_this158.addModel(modelId);}});}_this158.hierarchy=cfg.hierarchy;return _this158;}/**
|
|
27637
27638
|
* Sets how the nodes are organized within this tree view.
|
|
@@ -27736,7 +27737,7 @@ _this158._sortNodes=cfg.sortNodes;_this158._pruneEmptyNodes=cfg.pruneEmptyNodes;
|
|
|
27736
27737
|
// // errors.push("Can't build storeys hierarchy: no IfcBuildingStoreys found");
|
|
27737
27738
|
// }
|
|
27738
27739
|
// }
|
|
27739
|
-
return true;}},{key:"_createEnabledNodes",value:function _createEnabledNodes(){if(this._pruneEmptyNodes){this._findEmptyNodes();}switch(this._hierarchy){case"storeys":this._createStoreysNodes();if(this._rootNodes.length===0){this.error("Failed to build storeys hierarchy");}break;case"types":this._createTypesNodes();break;case"containment":default:this._createContainmentNodes();}if(this._sortNodes){this._doSortNodes();}this._synchNodesToEntities();this._createTrees();this.expandToDepth(this._autoExpandDepth);}},{key:"_createDisabledNodes",value:function _createDisabledNodes(){var rootNode=this._renderService.createRootNode();this._rootElement=rootNode;this._containerElement.appendChild(rootNode);var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var objectId in rootMetaObjects){var rootMetaObject=rootMetaObjects[objectId];var metaObjectType=rootMetaObject.type;var metaObjectName=rootMetaObject.name;var rootName=metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType;var childNode=this._renderService.createDisabledNodeElement(rootName);rootNode.appendChild(childNode);}}},{key:"_findEmptyNodes",value:function _findEmptyNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var objectId in rootMetaObjects){this._findEmptyNodes2(rootMetaObjects[objectId]);}}},{key:"_findEmptyNodes2",value:function _findEmptyNodes2(metaObject){var countEntities=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var viewer=this.viewer;var scene=viewer.scene;var children=metaObject.children;var objectId=metaObject.id;var entity=scene.objects[objectId];metaObject._countEntities=0;if(entity){metaObject._countEntities++;}if(children){for(var _i545=0,len=children.length;_i545<len;_i545++){var childMetaObject=children[_i545];childMetaObject._countEntities=this._findEmptyNodes2(childMetaObject);metaObject._countEntities+=childMetaObject._countEntities;}}return metaObject._countEntities;}},{key:"_createStoreysNodes",value:function _createStoreysNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createStoreysNodes2(rootMetaObjects[id],null,null,null);}}},{key:"_createStoreysNodes2",value:function _createStoreysNodes2(metaObject,buildingNode,storeyNode,typeNodes){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name;var children=metaObject.children;var objectId=metaObject.id;if(metaObjectType==="IfcBuilding"){buildingNode={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObject.metaModels.length===0?metaObjectName:this._rootNames[metaObject.metaModels[0].id]||(metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType),type:metaObjectType,parent:null,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};this._rootNodes.push(buildingNode);this._objectNodes[buildingNode.objectId]=buildingNode;this._nodeNodes[buildingNode.nodeId]=buildingNode;}else if(metaObjectType==="IfcBuildingStorey"){if(!buildingNode){this.error("Failed to build storeys hierarchy for model - model does not have an IfcBuilding object, or is not an IFC model");return;}storeyNode={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:buildingNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};buildingNode.children.push(storeyNode);this._objectNodes[storeyNode.objectId]=storeyNode;this._nodeNodes[storeyNode.nodeId]=storeyNode;typeNodes={};}else{if(storeyNode){var objects=this._viewer.scene.objects;var object=objects[objectId];if(object){typeNodes=typeNodes||{};var typeNode=typeNodes[metaObjectType];if(!typeNode){typeNode={nodeId:"".concat(this._id,"-").concat(storeyNode.objectId,"-").concat(metaObjectType),objectId:"".concat(storeyNode.objectId,"-").concat(metaObjectType),title:metaObjectType,type:metaObjectType,parent:storeyNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};storeyNode.children.push(typeNode);this._objectNodes[typeNode.objectId]=typeNode;this._nodeNodes[typeNode.nodeId]=typeNode;typeNodes[metaObjectType]=typeNode;}var _node6={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:typeNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};typeNode.children.push(_node6);this._objectNodes[_node6.objectId]=_node6;this._nodeNodes[_node6.nodeId]=_node6;}}}if(children){for(var _i546=0,len=children.length;_i546<len;_i546++){var childMetaObject=children[_i546];this._createStoreysNodes2(childMetaObject,buildingNode,storeyNode,typeNodes);}}}},{key:"_createTypesNodes",value:function _createTypesNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createTypesNodes2(rootMetaObjects[id],null,null);}}},{key:"_createTypesNodes2",value:function _createTypesNodes2(metaObject,rootNode,typeNodes){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name;var children=metaObject.children;var objectId=metaObject.id;if(!metaObject.parent){rootNode={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObject.metaModels.length===0?metaObjectName:this._rootNames[metaObject.metaModels[0].id]||(metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType),type:metaObjectType,parent:null,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};this._rootNodes.push(rootNode);this._objectNodes[rootNode.objectId]=rootNode;this._nodeNodes[rootNode.nodeId]=rootNode;typeNodes={};}else{if(rootNode){var objects=this._viewer.scene.objects;var object=objects[objectId];if(object){var typeNode=typeNodes[metaObjectType];if(!typeNode){typeNode={nodeId:"".concat(this._id,"-").concat(rootNode.objectId,"-").concat(metaObjectType),objectId:"".concat(rootNode.objectId,"-").concat(metaObjectType),title:metaObjectType,type:metaObjectType,parent:rootNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};rootNode.children.push(typeNode);this._objectNodes[typeNode.objectId]=typeNode;this._nodeNodes[typeNode.nodeId]=typeNode;typeNodes[metaObjectType]=typeNode;}var _node7={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:typeNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};typeNode.children.push(_node7);this._objectNodes[_node7.objectId]=_node7;this._nodeNodes[_node7.nodeId]=_node7;}}}if(children){for(var _i547=0,len=children.length;_i547<len;_i547++){var childMetaObject=children[_i547];this._createTypesNodes2(childMetaObject,rootNode,typeNodes);}}}},{key:"_createContainmentNodes",value:function _createContainmentNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createContainmentNodes2(rootMetaObjects[id],null);}}},{key:"_createContainmentNodes2",value:function _createContainmentNodes2(metaObject,parent){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name||metaObjectType;var children=metaObject.children;var objectId=metaObject.id;var node={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:!parent?metaObject.metaModels.length===0?metaObjectName:this._rootNames[metaObject.metaModels[0].id]||metaObjectName:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:parent,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};if(parent){parent.children.push(node);}else{this._rootNodes.push(node);}this._objectNodes[node.objectId]=node;this._nodeNodes[node.nodeId]=node;if(children){for(var _i548=0,len=children.length;_i548<len;_i548++){var childMetaObject=children[_i548];this._createContainmentNodes2(childMetaObject,node);}}}},{key:"_doSortNodes",value:function _doSortNodes(){for(var _i549=0,len=this._rootNodes.length;_i549<len;_i549++){var rootNode=this._rootNodes[_i549];this._sortChildren(rootNode);}}},{key:"_sortChildren",value:function _sortChildren(node){var children=node.children;if(!children||children.length===0){return;}var firstChild=children[0];if((this._hierarchy==="storeys"||this._hierarchy==="containment")&&firstChild.type==="IfcBuildingStorey"){children.sort(this._getSpatialSortFunc());}else{children.sort(this._alphaSortFunc);}for(var _i550=0,len=children.length;_i550<len;_i550++){var _node8=children[_i550];this._sortChildren(_node8);}}},{key:"_getSpatialSortFunc",value:function _getSpatialSortFunc(){var _this161=this;var viewer=this.viewer;var scene=viewer.scene;var camera=scene.camera;return this._spatialSortFunc||(this._spatialSortFunc=function(storey1,storey2){if(camera.xUp);else if(camera.yUp);else;var metaScene=_this161.viewer.metaScene;var storey1MetaObject=metaScene.metaObjects[storey1.objectId];var storey2MetaObject=metaScene.metaObjects[storey2.objectId];if(storey1MetaObject&&storey1MetaObject.attributes&&storey1MetaObject.attributes.elevation!==undefined&&storey2MetaObject&&storey2MetaObject.attributes&&storey2MetaObject.attributes.elevation!==undefined){var elevation1=Number.parseFloat(storey1MetaObject.attributes.elevation);var elevation2=Number.parseFloat(storey2MetaObject.attributes.elevation);if(elevation1>elevation2){return-1;}if(elevation1<elevation2){return 1;}return 0;}else{return 0;}});}},{key:"_alphaSortFunc",value:function _alphaSortFunc(node1,node2){var title1=node1.title.toUpperCase();// FIXME: Should be case sensitive?
|
|
27740
|
+
return true;}},{key:"_createEnabledNodes",value:function _createEnabledNodes(){if(this._pruneEmptyNodes){this._findEmptyNodes();}switch(this._hierarchy){case"storeys":this._createStoreysNodes();if(this._rootNodes.length===0){this.error("Failed to build storeys hierarchy");}break;case"types":this._createTypesNodes();break;case"containment":default:this._createContainmentNodes();}if(this._sortNodes){this._doSortNodes();}this._synchNodesToEntities();this._createTrees();this.expandToDepth(this._autoExpandDepth);}},{key:"_createDisabledNodes",value:function _createDisabledNodes(){var rootNode=this._renderService.createRootNode();this._rootElement=rootNode;this._containerElement.appendChild(rootNode);var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var objectId in rootMetaObjects){var rootMetaObject=rootMetaObjects[objectId];var metaObjectType=rootMetaObject.type;var metaObjectName=rootMetaObject.name;var rootName=metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType;var childNode=this._renderService.createDisabledNodeElement(rootName);rootNode.appendChild(childNode);}}},{key:"_findEmptyNodes",value:function _findEmptyNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var objectId in rootMetaObjects){this._findEmptyNodes2(rootMetaObjects[objectId]);}}},{key:"_findEmptyNodes2",value:function _findEmptyNodes2(metaObject){var countEntities=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var viewer=this.viewer;var scene=viewer.scene;var children=metaObject.children;var objectId=metaObject.id;var entity=scene.objects[objectId];metaObject._countEntities=0;if(entity){metaObject._countEntities++;}if(children){for(var _i545=0,len=children.length;_i545<len;_i545++){var childMetaObject=children[_i545];childMetaObject._countEntities=this._findEmptyNodes2(childMetaObject);metaObject._countEntities+=childMetaObject._countEntities;}}return metaObject._countEntities;}},{key:"_createStoreysNodes",value:function _createStoreysNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createStoreysNodes2(rootMetaObjects[id],null,null,null,null);}}},{key:"_createStoreysNodes2",value:function _createStoreysNodes2(metaObject,projectNode,buildingNode,storeyNode,typeNodes){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name;var children=metaObject.children;var objectId=metaObject.id;if(this._showProjectNode&&metaObjectType==='IfcProject'){projectNode={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObject.metaModels.length===0?metaObjectName:this._rootNames[metaObject.metaModels[0].id]||(metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType),type:metaObjectType,parent:null,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};this._rootNodes.push(projectNode);this._objectNodes[projectNode.objectId]=projectNode;this._nodeNodes[projectNode.nodeId]=projectNode;}else if(metaObjectType==="IfcBuilding"){buildingNode={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObject.metaModels.length===0?metaObjectName:this._rootNames[metaObject.metaModels[0].id]||(metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType),type:metaObjectType,parent:projectNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};if(projectNode){projectNode.children.push(buildingNode);}else{this._rootNodes.push(buildingNode);}this._objectNodes[buildingNode.objectId]=buildingNode;this._nodeNodes[buildingNode.nodeId]=buildingNode;}else if(metaObjectType==="IfcBuildingStorey"){if(!buildingNode){this.error("Failed to build storeys hierarchy for model - model does not have an IfcBuilding object, or is not an IFC model");return;}storeyNode={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:buildingNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};buildingNode.children.push(storeyNode);this._objectNodes[storeyNode.objectId]=storeyNode;this._nodeNodes[storeyNode.nodeId]=storeyNode;typeNodes={};}else{if(storeyNode){var objects=this._viewer.scene.objects;var object=objects[objectId];if(object){typeNodes=typeNodes||{};var typeNode=typeNodes[metaObjectType];if(!typeNode){typeNode={nodeId:"".concat(this._id,"-").concat(storeyNode.objectId,"-").concat(metaObjectType),objectId:"".concat(storeyNode.objectId,"-").concat(metaObjectType),title:metaObjectType,type:metaObjectType,parent:storeyNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};storeyNode.children.push(typeNode);this._objectNodes[typeNode.objectId]=typeNode;this._nodeNodes[typeNode.nodeId]=typeNode;typeNodes[metaObjectType]=typeNode;}var _node6={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:typeNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};typeNode.children.push(_node6);this._objectNodes[_node6.objectId]=_node6;this._nodeNodes[_node6.nodeId]=_node6;}}}if(children){for(var _i546=0,len=children.length;_i546<len;_i546++){var childMetaObject=children[_i546];this._createStoreysNodes2(childMetaObject,projectNode,buildingNode,storeyNode,typeNodes);}}}},{key:"_createTypesNodes",value:function _createTypesNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createTypesNodes2(rootMetaObjects[id],null,null);}}},{key:"_createTypesNodes2",value:function _createTypesNodes2(metaObject,rootNode,typeNodes){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name;var children=metaObject.children;var objectId=metaObject.id;if(!metaObject.parent){rootNode={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObject.metaModels.length===0?metaObjectName:this._rootNames[metaObject.metaModels[0].id]||(metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType),type:metaObjectType,parent:null,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};this._rootNodes.push(rootNode);this._objectNodes[rootNode.objectId]=rootNode;this._nodeNodes[rootNode.nodeId]=rootNode;typeNodes={};}else{if(rootNode){var objects=this._viewer.scene.objects;var object=objects[objectId];if(object){var typeNode=typeNodes[metaObjectType];if(!typeNode){typeNode={nodeId:"".concat(this._id,"-").concat(rootNode.objectId,"-").concat(metaObjectType),objectId:"".concat(rootNode.objectId,"-").concat(metaObjectType),title:metaObjectType,type:metaObjectType,parent:rootNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};rootNode.children.push(typeNode);this._objectNodes[typeNode.objectId]=typeNode;this._nodeNodes[typeNode.nodeId]=typeNode;typeNodes[metaObjectType]=typeNode;}var _node7={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:typeNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};typeNode.children.push(_node7);this._objectNodes[_node7.objectId]=_node7;this._nodeNodes[_node7.nodeId]=_node7;}}}if(children){for(var _i547=0,len=children.length;_i547<len;_i547++){var childMetaObject=children[_i547];this._createTypesNodes2(childMetaObject,rootNode,typeNodes);}}}},{key:"_createContainmentNodes",value:function _createContainmentNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createContainmentNodes2(rootMetaObjects[id],null);}}},{key:"_createContainmentNodes2",value:function _createContainmentNodes2(metaObject,parent){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name||metaObjectType;var children=metaObject.children;var objectId=metaObject.id;var node={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:!parent?metaObject.metaModels.length===0?metaObjectName:this._rootNames[metaObject.metaModels[0].id]||metaObjectName:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:parent,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};if(parent){parent.children.push(node);}else{this._rootNodes.push(node);}this._objectNodes[node.objectId]=node;this._nodeNodes[node.nodeId]=node;if(children){for(var _i548=0,len=children.length;_i548<len;_i548++){var childMetaObject=children[_i548];this._createContainmentNodes2(childMetaObject,node);}}}},{key:"_doSortNodes",value:function _doSortNodes(){for(var _i549=0,len=this._rootNodes.length;_i549<len;_i549++){var rootNode=this._rootNodes[_i549];this._sortChildren(rootNode);}}},{key:"_sortChildren",value:function _sortChildren(node){var children=node.children;if(!children||children.length===0){return;}var firstChild=children[0];if((this._hierarchy==="storeys"||this._hierarchy==="containment")&&firstChild.type==="IfcBuildingStorey"){children.sort(this._getSpatialSortFunc());}else{children.sort(this._alphaSortFunc);}for(var _i550=0,len=children.length;_i550<len;_i550++){var _node8=children[_i550];this._sortChildren(_node8);}}},{key:"_getSpatialSortFunc",value:function _getSpatialSortFunc(){var _this161=this;var viewer=this.viewer;var scene=viewer.scene;var camera=scene.camera;return this._spatialSortFunc||(this._spatialSortFunc=function(storey1,storey2){if(camera.xUp);else if(camera.yUp);else;var metaScene=_this161.viewer.metaScene;var storey1MetaObject=metaScene.metaObjects[storey1.objectId];var storey2MetaObject=metaScene.metaObjects[storey2.objectId];if(storey1MetaObject&&storey1MetaObject.attributes&&storey1MetaObject.attributes.elevation!==undefined&&storey2MetaObject&&storey2MetaObject.attributes&&storey2MetaObject.attributes.elevation!==undefined){var elevation1=Number.parseFloat(storey1MetaObject.attributes.elevation);var elevation2=Number.parseFloat(storey2MetaObject.attributes.elevation);if(elevation1>elevation2){return-1;}if(elevation1<elevation2){return 1;}return 0;}else{return 0;}});}},{key:"_alphaSortFunc",value:function _alphaSortFunc(node1,node2){var title1=node1.title.toUpperCase();// FIXME: Should be case sensitive?
|
|
27740
27741
|
var title2=node2.title.toUpperCase();if(title1<title2){return-1;}if(title1>title2){return 1;}return 0;}},{key:"_synchNodesToEntities",value:function _synchNodesToEntities(){var objectIds=Object.keys(this.viewer.metaScene.metaObjects);var metaObjects=this._viewer.metaScene.metaObjects;var objects=this._viewer.scene.objects;for(var _i551=0,len=objectIds.length;_i551<len;_i551++){var objectId=objectIds[_i551];var metaObject=metaObjects[objectId];if(metaObject){var _node9=this._objectNodes[objectId];if(_node9){var entity=objects[objectId];if(entity){var visible=entity.visible;_node9.numEntities=1;_node9.xrayed=entity.xrayed;if(visible){_node9.numVisibleEntities=1;_node9.checked=true;}else{_node9.numVisibleEntities=0;_node9.checked=false;}var parent=_node9.parent;// Synch parents
|
|
27741
27742
|
while(parent){parent.numEntities++;if(visible){parent.numVisibleEntities++;parent.checked=true;}parent=parent.parent;}}}}}}},{key:"_withNodeTree",value:function _withNodeTree(node,callback){callback(node);var children=node.children;if(!children){return;}for(var _i552=0,len=children.length;_i552<len;_i552++){this._withNodeTree(children[_i552],callback);}}},{key:"_createTrees",value:function _createTrees(){var _this162=this;if(this._rootNodes.length===0){return;}var rootNodeElements=this._rootNodes.map(function(rootNode){return _this162._createNodeElement(rootNode);});var rootNode=this._renderService.createRootNode();rootNodeElements.forEach(function(nodeElement){rootNode.appendChild(nodeElement);});this._containerElement.appendChild(rootNode);this._rootElement=rootNode;}},{key:"_createNodeElement",value:function _createNodeElement(node){var _this163=this;var contextmenuHandler=function contextmenuHandler(event){_this163.fire("contextmenu",{event:event,viewer:_this163._viewer,treeViewPlugin:_this163,treeViewNode:node});event.preventDefault();};var onclickHandler=function onclickHandler(event){_this163.fire("nodeTitleClicked",{event:event,viewer:_this163._viewer,treeViewPlugin:_this163,treeViewNode:node});event.preventDefault();};return this._renderService.createNodeElement(node,this._switchExpandHandler,this._checkboxChangeHandler,contextmenuHandler,onclickHandler);}},{key:"_expandSwitchElement",value:function _expandSwitchElement(switchElement){var _this164=this;var expanded=this._renderService.isExpanded(switchElement);if(expanded){return;}var nodeId=this._renderService.getId(switchElement);var nodeElements=this._nodeNodes[nodeId].children.map(function(node){return _this164._createNodeElement(node);});this._renderService.addChildren(switchElement,nodeElements);this._renderService.expand(switchElement,this._switchExpandHandler,this._switchCollapseHandler);}},{key:"_collapseNode",value:function _collapseNode(nodeId){var switchElement=this._renderService.getSwitchElement(nodeId);this._collapseSwitchElement(switchElement);}},{key:"_collapseSwitchElement",value:function _collapseSwitchElement(switchElement){this._renderService.collapse(switchElement,this._switchExpandHandler,this._switchCollapseHandler);}}]);return TreeViewPlugin;}(Plugin);/**
|
|
27742
27743
|
* For each Entity in its Scene, efficiently combines updates from multiple culling systems into a single "culled" state.
|