Skip to content

Commit d0408f1

Browse files
fix checking for mesh presents in localsegmentation data for mesh visibility api
- Also add api to wait for a specific action, making async script easier implementable
1 parent bee0e1c commit d0408f1

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

frontend/javascripts/viewer/api/api_latest.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import {
5757
import { flatToNestedMatrix } from "viewer/model/accessors/dataset_layer_transformation_accessor";
5858
import {
5959
getActiveMagIndexForLayer,
60+
getAdditionalCoordinatesAsString,
6061
getPosition,
6162
getRotationInRadian,
6263
} from "viewer/model/accessors/flycam_accessor";
@@ -149,6 +150,7 @@ import type { Bucket, DataBucket } from "viewer/model/bucket_data_handling/bucke
149150
import type DataLayer from "viewer/model/data_layer";
150151
import Dimensions from "viewer/model/dimensions";
151152
import dimensions from "viewer/model/dimensions";
153+
import { eventBus } from "viewer/model/helpers/event_bus";
152154
import { MagInfo } from "viewer/model/helpers/mag_info";
153155
import { parseNml } from "viewer/model/helpers/nml_helpers";
154156
import { overwriteAction } from "viewer/model/helpers/overwrite_action_middleware";
@@ -2575,12 +2577,18 @@ class DataApi {
25752577
* api.data.setMeshVisibility(segmentId, false);
25762578
*/
25772579
setMeshVisibility(segmentId: number, isVisible: boolean, layerName?: string) {
2580+
const state = Store.getState();
25782581
const effectiveLayerName = getRequestedOrVisibleSegmentationLayerEnforced(
2579-
Store.getState(),
2582+
state,
25802583
layerName,
25812584
).name;
2585+
const additionalCoordinates = state.flycam.additionalCoordinates;
2586+
const additionalCoordKey = getAdditionalCoordinatesAsString(additionalCoordinates);
25822587

2583-
if (Store.getState().localSegmentationData[effectiveLayerName].meshes?.[segmentId] != null) {
2588+
if (
2589+
state.localSegmentationData[effectiveLayerName].meshes?.[additionalCoordKey]?.[segmentId] !=
2590+
null
2591+
) {
25842592
Store.dispatch(updateMeshVisibilityAction(effectiveLayerName, segmentId, isVisible));
25852593
} else {
25862594
throw new Error(
@@ -2945,6 +2953,15 @@ class UtilsApi {
29452953
unregister: keyboard.destroy.bind(keyboard),
29462954
};
29472955
}
2956+
2957+
waitForAction(actionType: string): Promise<any> {
2958+
return new Promise((resolve) => {
2959+
const unsubscribe = eventBus.on(actionType, (payload) => {
2960+
unsubscribe();
2961+
resolve(payload);
2962+
});
2963+
});
2964+
}
29482965
}
29492966

29502967
export type ApiInterface = {

0 commit comments

Comments
 (0)