diff --git a/commitlint.config.js b/commitlint.config.js index a397334..0c07c26 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -14,6 +14,7 @@ const Configuration = { "type-empty": [0], "type-enum": [2, "always", ["feat", "fix", "perf"]], }, -} + defaultIgnores: false, +}; -export default Configuration +export default Configuration; diff --git a/requirements.txt b/requirements.txt index 74d61ff..7819587 100644 --- a/requirements.txt +++ b/requirements.txt @@ -61,4 +61,3 @@ wslink==1.12.4 yarl>=1 # via aiohttp -opengeodeweb-microservice==1.*,>=1.1.3 diff --git a/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py b/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py index bfc7645..3791b24 100644 --- a/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py +++ b/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py @@ -236,12 +236,24 @@ def pickedIds(self, rpc_params: RpcParams) -> dict[str, list[str] | int | None]: ) params = schemas.PickedIDS.from_dict(rpc_params) renderer = self.getView("-1").GetRenderers().GetFirstRenderer() + + actors = [] picker = vtkCellPicker(tolerance=0.005) picker.Pick(params.x, params.y, 0, renderer) actor = picker.GetActor() viewer_id = picker.GetFlatBlockIndex() + + while actor: + actors.append(actor) + actor.SetPickable(False) + picker.Pick(params.x, params.y, 0, renderer) + actor = picker.GetActor() + + for actor in actors: + actor.SetPickable(True) + array_ids = [ - id for id in params.ids if self.get_vtk_pipeline(id).actor == actor + id for id in params.ids if self.get_vtk_pipeline(id).actor in actors ] if not array_ids: return {"array_ids": [], "viewer_id": None}