diff --git a/CHANGELOG.md b/CHANGELOG.md index 44bf01f..e146da7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,22 @@ # CHANGELOG +## v1.1.1-rc.2 (2024-12-20) + +### Bug Fixes + +- **schemas**: Add missing schemas + ([`37e8504`](https://github.com/Geode-solutions/OpenGeodeWeb-Viewer/commit/37e8504236a9f622cefffb99c4fbe684853e4d13)) + + +## v1.1.1-rc.1 (2024-12-20) + +### Bug Fixes + +- **semantic**: Trigger semantic release + ([`5025b3b`](https://github.com/Geode-solutions/OpenGeodeWeb-Viewer/commit/5025b3b8aa9008103939ff51dbbead85bb9ca37e)) + + ## v1.1.0 (2024-12-09) @@ -14,6 +30,11 @@ ## v1.1.0-rc.1 (2024-12-04) +### Features + +- **get_mouse**: New rpc + ([`94280f3`](https://github.com/Geode-solutions/OpenGeodeWeb-Viewer/commit/94280f3bc30f03e0c550cd7baf76afd30192c1e3)) + ## v1.0.0 (2024-11-29) @@ -55,9 +76,6 @@ - **generic rpcs**: Refactor all classes/tests ([`297b005`](https://github.com/Geode-solutions/OpenGeodeWeb-Viewer/commit/297b0050e4ab47817659021c3a099e715fba6a87)) -- **get_mouse**: New rpc - ([`94280f3`](https://github.com/Geode-solutions/OpenGeodeWeb-Viewer/commit/94280f3bc30f03e0c550cd7baf76afd30192c1e3)) - - **new rpcs**: Refactor rpcs ([`c2fb4e7`](https://github.com/Geode-solutions/OpenGeodeWeb-Viewer/commit/c2fb4e75b83a862267ed4641e41e9344e6a2d70f)) diff --git a/pyproject.toml b/pyproject.toml index 58a3916..22c1e1d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "OpenGeodeWeb-Viewer" -version = "1.1.0" +version = "1.1.1-rc.2" dynamic = ["dependencies"] authors = [ { name="Geode-solutions", email="team-web@geode-solutions.com" }, @@ -38,10 +38,12 @@ where = ["src"] [tool.setuptools.package-data] "opengeodeweb_viewer.rpc.generic.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.mesh.schemas" = ["*.json"] +"opengeodeweb_viewer.rpc.mesh.points.schemas" = ["*.json"] +"opengeodeweb_viewer.rpc.mesh.edges.schemas" = ["*.json"] +"opengeodeweb_viewer.rpc.mesh.polygons.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.model.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.viewer.schemas" = ["*.json"] - [tool.semantic_release] version_toml = [ "pyproject.toml:project.version", diff --git a/src/opengeodeweb_viewer/object/object_methods.py b/src/opengeodeweb_viewer/object/object_methods.py index 11a3c33..1554c5c 100644 --- a/src/opengeodeweb_viewer/object/object_methods.py +++ b/src/opengeodeweb_viewer/object/object_methods.py @@ -100,24 +100,56 @@ def SetOpacity(self, id, opacity): self.render() def SetColor(self, id, red, green, blue): - reader = self.get_object(id)["reader"] mapper = self.get_object(id)["mapper"] mapper.ScalarVisibilityOff() actor = self.get_object(id)["actor"] actor.GetProperty().SetColor([red, green, blue]) self.render() - def SetEdgeVisibility(self, id, visibility): + def SetEdgesVisibility(self, id, visibility): actor = self.get_object(id)["actor"] actor.GetProperty().SetEdgeVisibility(visibility) self.render() + + def SetEdgesSize(self, id, size): + actor = self.get_object(id)["actor"] + actor.GetProperty().SetEdgeWidth(size) + self.render() - def SetVertexVisibility(self, id, visibility): + def SetEdgesColor(self, id, color): + actor = self.get_object(id)["actor"] + actor.GetProperty().SetEdgeColor(color) + self.render() + def SetPointsVisibility(self, id, visibility): actor = self.get_object(id)["actor"] actor.GetProperty().SetVertexVisibility(visibility) + actor.GetProperty().SetEdgeVisibility(visibility) self.render() - def SetPointSize(self, id, size): + def SetPointsSize(self, id, size): actor = self.get_object(id)["actor"] actor.GetProperty().SetPointSize(size) - self.render() \ No newline at end of file + self.render() + + def SetPointsColor(self, id, color): + actor = self.get_object(id)["actor"] + actor.GetProperty().SetVertexColor(color) + self.render() + + def SetPolygonsVisibility(self, id, visibility): + actor = self.get_object(id)["actor"] + actor.SetVisibility(visibility) + self.render() + + def SetPolygonsColor(self, id, color): + actor = self.get_object(id)["actor"] + actor.GetProperty().SetColor(color) + self.render() + + def clearColors(self, id): + db = self.get_object(id) + mapper = db["mapper"] + reader = db["reader"] + reader.GetOutput().GetPointData().SetActiveScalars("") + reader.GetOutput().GetCellData().SetActiveScalars("") + mapper.ScalarVisibilityOff() \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/generic/generic_protocols.py b/src/opengeodeweb_viewer/rpc/generic/generic_protocols.py index e8d8ec0..983aed6 100644 --- a/src/opengeodeweb_viewer/rpc/generic/generic_protocols.py +++ b/src/opengeodeweb_viewer/rpc/generic/generic_protocols.py @@ -9,23 +9,21 @@ # Local application imports from opengeodeweb_viewer.vtk_protocol import VtkView -from opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView -from opengeodeweb_viewer.rpc.model.model_protocols import VtkModelView from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema class VtkGenericView(VtkView): - prefix = "opengeodeweb_viewer.generic." - schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas")) + generic_prefix = "opengeodeweb_viewer.generic." + generic_schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas")) def __init__(self, mesh_protocols, model_protocols): super().__init__() self.mesh_protocols = mesh_protocols self.model_protocols = model_protocols - @exportRpc(prefix + schemas_dict["register"]["rpc"]) + @exportRpc(generic_prefix + generic_schemas_dict["register"]["rpc"]) def register(self, params): - print(self.schemas_dict["register"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["register"]) + print(self.generic_prefix + self.generic_schemas_dict["register"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.generic_schemas_dict["register"]) viewer_object = params["viewer_object"] params.pop('viewer_object', None) print(f"{params=}", flush=True) @@ -34,10 +32,10 @@ def register(self, params): elif viewer_object == "model": self.model_protocols.registerModel(params) - @exportRpc(prefix + schemas_dict["deregister"]["rpc"]) + @exportRpc(generic_prefix + generic_schemas_dict["deregister"]["rpc"]) def deregister(self, params): - print(self.schemas_dict["deregister"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["deregister"]) + print(self.generic_prefix + self.generic_schemas_dict["deregister"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.generic_schemas_dict["deregister"]) viewer_object = params["viewer_object"] params.pop('viewer_object', None) if viewer_object == "mesh": diff --git a/src/opengeodeweb_viewer/rpc/mesh/edges/edges_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/edges/edges_protocols.py new file mode 100644 index 0000000..09e8e12 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/edges/edges_protocols.py @@ -0,0 +1,43 @@ +# Standard library imports +import os + +# Third party imports +from wslink import register as exportRpc + +# Local application imports +from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema +from opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView + +class VtkMeshEdgesView(VtkMeshView): + mesh_edges_prefix = "opengeodeweb_viewer.mesh.edges." + mesh_edges_schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas")) + + def __init__(self): + super().__init__() + + @exportRpc(mesh_edges_prefix + mesh_edges_schemas_dict["visibility"]["rpc"]) + def setMeshEdgesVisibility(self, params): + print(self.mesh_edges_prefix + self.mesh_edges_schemas_dict["visibility"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_edges_schemas_dict["visibility"]) + id = params["id"] + visibility = bool(params["visibility"]) + self.SetEdgesVisibility(id, visibility) + + @exportRpc(mesh_edges_prefix + mesh_edges_schemas_dict["color"]["rpc"]) + def setMeshEdgesColor(self, params): + print(self.mesh_edges_prefix + self.mesh_edges_schemas_dict["color"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_edges_schemas_dict["color"]) + id = params["id"] + red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] + self.SetEdgesColor(id, [red, green, blue]) + + @exportRpc(mesh_edges_prefix + mesh_edges_schemas_dict["size"]["rpc"]) + def setMeshEdgesSize(self, params): + print(self.mesh_edges_prefix + self.mesh_edges_schemas_dict["size"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_edges_schemas_dict["size"]) + id = params["id"] + size = bool(params["size"]) + self.SetEdgesSize(id, size) + + + diff --git a/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/color.json b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/color.json new file mode 100644 index 0000000..720d50b --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/color.json @@ -0,0 +1,46 @@ +{ + "rpc": "color", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "color": { + "type": "object", + "properties": { + "r": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "g": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "b": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "a": { + "type": "number", + "minimum": 0, + "maximum": 1, + "default": 1 + } + }, + "required": [ + "r", + "g", + "b" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "color" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/size.json b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/size.json new file mode 100644 index 0000000..d403c33 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/size.json @@ -0,0 +1,17 @@ +{ + "rpc": "size", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "size": { + "type": "integer" + } + }, + "required": [ + "id", + "size" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/schemas/display_vertex_attribute.json b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/vertex_attribute.json similarity index 84% rename from src/opengeodeweb_viewer/rpc/mesh/schemas/display_vertex_attribute.json rename to src/opengeodeweb_viewer/rpc/mesh/edges/schemas/vertex_attribute.json index 6b21bbd..05368b8 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/schemas/display_vertex_attribute.json +++ b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/vertex_attribute.json @@ -1,5 +1,5 @@ { - "rpc": "display_vertex_attribute", + "rpc": "vertex_attribute", "type": "object", "properties": { "id": { diff --git a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_visibility.json b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/visibility.json similarity index 88% rename from src/opengeodeweb_viewer/rpc/mesh/schemas/set_visibility.json rename to src/opengeodeweb_viewer/rpc/mesh/edges/schemas/visibility.json index eed641c..4b2368d 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_visibility.json +++ b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/visibility.json @@ -1,5 +1,5 @@ { - "rpc": "set_visibility", + "rpc": "visibility", "type": "object", "properties": { "id": { diff --git a/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py index 26f93be..e01eaf2 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py @@ -1,12 +1,8 @@ # Standard library imports -import json import os # Third party imports import vtk -from vtk.web import protocols as vtk_protocols -from vtkmodules.vtkIOImage import vtkPNGWriter, vtkJPEGWriter -from vtkmodules.vtkRenderingCore import (vtkWindowToImageFilter) from wslink import register as exportRpc # Local application imports @@ -14,16 +10,16 @@ from opengeodeweb_viewer.object.object_methods import VtkObjectView class VtkMeshView(VtkObjectView): - prefix = "opengeodeweb_viewer.mesh." - schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas")) + mesh_prefix = "opengeodeweb_viewer.mesh." + mesh_schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas")) def __init__(self): super().__init__() - @exportRpc(prefix + schemas_dict["register"]["rpc"]) + @exportRpc(mesh_prefix + mesh_schemas_dict["register"]["rpc"]) def registerMesh(self, params): - print(self.schemas_dict["register"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["register"]) + print(self.mesh_prefix + self.mesh_schemas_dict["register"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_schemas_dict["register"]) id = params["id"] file_name = params["file_name"] try: @@ -35,69 +31,38 @@ def registerMesh(self, params): except Exception as e: print("error : ", str(e), flush=True) - @exportRpc(prefix + schemas_dict["deregister"]["rpc"]) + @exportRpc(mesh_prefix + mesh_schemas_dict["deregister"]["rpc"]) def deregisterMesh(self, params): - print(self.schemas_dict["deregister"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["deregister"]) + print(self.mesh_prefix + self.mesh_schemas_dict["deregister"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_schemas_dict["deregister"]) id = params["id"] self.deregisterObject(id) - @exportRpc(prefix + schemas_dict["set_visibility"]["rpc"]) + @exportRpc(mesh_prefix + mesh_schemas_dict["visibility"]["rpc"]) def SetMeshVisibility(self, params): - print(self.schemas_dict["set_visibility"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["set_visibility"]) + print(self.mesh_prefix + self.mesh_schemas_dict["visibility"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_schemas_dict["visibility"]) id = params["id"] visibility = bool(params["visibility"]) self.SetVisibility(id, visibility) - @exportRpc(prefix + schemas_dict["set_opacity"]["rpc"]) + @exportRpc(mesh_prefix + mesh_schemas_dict["opacity"]["rpc"]) def setMeshOpacity(self, params): - print(self.schemas_dict["set_opacity"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["set_opacity"]) + print(self.mesh_prefix + self.mesh_schemas_dict["opacity"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_schemas_dict["opacity"]) id = params["id"] opacity = float(params["opacity"]) self.SetOpacity(id, opacity) - @exportRpc(prefix + schemas_dict["set_edge_visibility"]["rpc"]) - def setMeshEdgeVisibility(self, params): - print(self.schemas_dict["set_edge_visibility"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["set_edge_visibility"]) - id = params["id"] - visibility = bool(params["visibility"]) - self.SetEdgeVisibility(id, visibility) - - @exportRpc(prefix + schemas_dict["set_point_visibility"]["rpc"]) - def setMeshPointVisibility(self, params): - print(self.schemas_dict["set_point_visibility"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["set_point_visibility"]) - id = params["id"] - visibility = bool(params["visibility"]) - self.SetVertexVisibility(id, visibility) - - @exportRpc(prefix + schemas_dict["set_point_size"]["rpc"]) - def setMeshPointSize(self, params): - print(self.schemas_dict["set_point_size"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["set_point_size"]) - id = params["id"] - size = float(params["size"]) - self.SetPointSize(id, size) - - @exportRpc(prefix + schemas_dict["set_color"]["rpc"]) + @exportRpc(mesh_prefix + mesh_schemas_dict["color"]["rpc"]) def setMeshColor(self, params): - print(self.schemas_dict["set_color"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["set_color"]) + print(self.mesh_prefix + self.mesh_schemas_dict["color"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_schemas_dict["color"]) id = params["id"] - red = params["red"] - green = params["green"] - blue = params["blue"] + red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] self.SetColor(id, red, green, blue) - @exportRpc(prefix + schemas_dict["display_vertex_attribute"]["rpc"]) - def setVertexAttribute(self, params): - print(self.schemas_dict["display_vertex_attribute"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["display_vertex_attribute"]) - id = params["id"] - name = params["name"] + def setMeshVertexAttribute(self, id, name): reader = self.get_object(id)["reader"] points = reader.GetOutput().GetPointData() points.SetActiveScalars(name) @@ -107,12 +72,7 @@ def setVertexAttribute(self, params): mapper.SetScalarRange(points.GetScalars().GetRange()) self.render() - @exportRpc(prefix + schemas_dict["display_polygon_attribute"]["rpc"]) - def setPolygonAttribute(self, params): - print(self.schemas_dict["display_polygon_attribute"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["display_polygon_attribute"]) - id = params["id"] - name = params["name"] + def setMeshPolygonAttribute(self, id, name): reader = self.get_object(id)["reader"] cells = reader.GetOutput().GetCellData() cells.SetActiveScalars(name) diff --git a/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py new file mode 100644 index 0000000..e2ec634 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py @@ -0,0 +1,51 @@ +# Standard library imports +import os + +# Third party imports +from wslink import register as exportRpc + +# Local application imports +from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema +from opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView + +class VtkMeshPointsView(VtkMeshView): + mesh_points_prefix = "opengeodeweb_viewer.mesh.points." + mesh_points_schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas")) + + def __init__(self): + super().__init__() + + @exportRpc(mesh_points_prefix + mesh_points_schemas_dict["visibility"]["rpc"]) + def setMeshPointsVisibility(self, params): + print(self.mesh_points_prefix + self.mesh_points_schemas_dict["visibility"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_points_schemas_dict["visibility"]) + id = str(params["id"]) + visibility = bool(params["visibility"]) + self.SetPointsVisibility(id, visibility) + + @exportRpc(mesh_points_prefix + mesh_points_schemas_dict["color"]["rpc"]) + def setMeshPointsColor(self, params): + print(self.mesh_points_prefix + self.mesh_points_schemas_dict["color"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_points_schemas_dict["color"]) + id = str(params["id"]) + red = params["color"]["r"] + green = params["color"]["g"] + blue = params["color"]["b"] + self.SetPointsColor(id, [red, green, blue]) + + @exportRpc(mesh_points_prefix + mesh_points_schemas_dict["size"]["rpc"]) + def setMeshPointsSize(self, params): + print(self.mesh_points_prefix + self.mesh_points_schemas_dict["size"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_points_schemas_dict["size"]) + id = str(params["id"]) + size = float(params["size"]) + self.SetPointsSize(id, size) + + @exportRpc(mesh_points_prefix + mesh_points_schemas_dict["vertex_attribute"]["rpc"]) + def setMeshPointsVertexAttribute(self, params): + print(self.mesh_points_prefix + self.mesh_points_schemas_dict["vertex_attribute"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_points_schemas_dict["vertex_attribute"]) + id = str(params["id"]) + name = str(params["name"]) + self.setMeshVertexAttribute(id, name) + \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/points/schemas/color.json b/src/opengeodeweb_viewer/rpc/mesh/points/schemas/color.json new file mode 100644 index 0000000..720d50b --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/points/schemas/color.json @@ -0,0 +1,46 @@ +{ + "rpc": "color", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "color": { + "type": "object", + "properties": { + "r": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "g": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "b": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "a": { + "type": "number", + "minimum": 0, + "maximum": 1, + "default": 1 + } + }, + "required": [ + "r", + "g", + "b" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "color" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_point_size.json b/src/opengeodeweb_viewer/rpc/mesh/points/schemas/size.json similarity index 88% rename from src/opengeodeweb_viewer/rpc/mesh/schemas/set_point_size.json rename to src/opengeodeweb_viewer/rpc/mesh/points/schemas/size.json index 5745e44..b699204 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_point_size.json +++ b/src/opengeodeweb_viewer/rpc/mesh/points/schemas/size.json @@ -1,5 +1,5 @@ { - "rpc": "set_point_size", + "rpc": "size", "type": "object", "properties": { "id": { diff --git a/src/opengeodeweb_viewer/rpc/mesh/schemas/display_polygon_attribute.json b/src/opengeodeweb_viewer/rpc/mesh/points/schemas/vertex_attribute.json similarity index 84% rename from src/opengeodeweb_viewer/rpc/mesh/schemas/display_polygon_attribute.json rename to src/opengeodeweb_viewer/rpc/mesh/points/schemas/vertex_attribute.json index 75591ad..05368b8 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/schemas/display_polygon_attribute.json +++ b/src/opengeodeweb_viewer/rpc/mesh/points/schemas/vertex_attribute.json @@ -1,5 +1,5 @@ { - "rpc": "display_polygon_attribute", + "rpc": "vertex_attribute", "type": "object", "properties": { "id": { diff --git a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_edge_visibility.json b/src/opengeodeweb_viewer/rpc/mesh/points/schemas/visibility.json similarity index 87% rename from src/opengeodeweb_viewer/rpc/mesh/schemas/set_edge_visibility.json rename to src/opengeodeweb_viewer/rpc/mesh/points/schemas/visibility.json index 4ca1d7b..4b2368d 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_edge_visibility.json +++ b/src/opengeodeweb_viewer/rpc/mesh/points/schemas/visibility.json @@ -1,5 +1,5 @@ { - "rpc": "set_edge_visibility", + "rpc": "visibility", "type": "object", "properties": { "id": { diff --git a/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py new file mode 100644 index 0000000..d274e96 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py @@ -0,0 +1,48 @@ +# Standard library imports +import os + +# Third party imports +from wslink import register as exportRpc + +# Local application imports +from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema +from opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView + +class VtkMeshPolygonsView(VtkMeshView): + mesh_polygons_prefix = "opengeodeweb_viewer.mesh.polygons." + mesh_polygons_schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas")) + + def __init__(self): + super().__init__() + + @exportRpc(mesh_polygons_prefix + mesh_polygons_schemas_dict["visibility"]["rpc"]) + def setMeshPolygonsVisibility(self, params): + print(self.mesh_polygons_prefix + self.mesh_polygons_schemas_dict["visibility"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_polygons_schemas_dict["visibility"]) + id = params["id"] + visibility = bool(params["visibility"]) + self.SetPolygonsVisibility(id, visibility) + + @exportRpc(mesh_polygons_prefix + mesh_polygons_schemas_dict["color"]["rpc"]) + def setMeshPolygonsColor(self, params): + print(self.mesh_polygons_prefix + self.mesh_polygons_schemas_dict["color"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_polygons_schemas_dict["color"]) + id = params["id"] + red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] + self.SetPolygonsColor(id, [red, green, blue]) + + @exportRpc(mesh_polygons_prefix + mesh_polygons_schemas_dict["vertex_attribute"]["rpc"]) + def setMeshPolygonsVertexAttribute(self, params): + print(self.mesh_polygons_prefix + self.mesh_polygons_schemas_dict["vertex_attribute"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_polygons_schemas_dict["vertex_attribute"]) + id = params["id"] + name = str(params["name"]) + self.setMeshVertexAttribute(id, name) + + @exportRpc(mesh_polygons_prefix + mesh_polygons_schemas_dict["polygon_attribute"]["rpc"]) + def setMeshPolygonsPolygonAttribute(self, params): + print(self.mesh_polygons_prefix + self.mesh_polygons_schemas_dict["polygon_attribute"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_polygons_schemas_dict["polygon_attribute"]) + id = params["id"] + name = str(params["name"]) + self.setMeshPolygonAttribute(id, name) diff --git a/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/color.json b/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/color.json new file mode 100644 index 0000000..720d50b --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/color.json @@ -0,0 +1,46 @@ +{ + "rpc": "color", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "color": { + "type": "object", + "properties": { + "r": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "g": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "b": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "a": { + "type": "number", + "minimum": 0, + "maximum": 1, + "default": 1 + } + }, + "required": [ + "r", + "g", + "b" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "color" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/polygon_attribute.json b/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/polygon_attribute.json new file mode 100644 index 0000000..cb6c23a --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/polygon_attribute.json @@ -0,0 +1,17 @@ +{ + "rpc": "polygon_attribute", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/vertex_attribute.json b/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/vertex_attribute.json new file mode 100644 index 0000000..05368b8 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/vertex_attribute.json @@ -0,0 +1,17 @@ +{ + "rpc": "vertex_attribute", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_point_visibility.json b/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/visibility.json similarity index 86% rename from src/opengeodeweb_viewer/rpc/mesh/schemas/set_point_visibility.json rename to src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/visibility.json index fa8f2c3..4b2368d 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_point_visibility.json +++ b/src/opengeodeweb_viewer/rpc/mesh/polygons/schemas/visibility.json @@ -1,5 +1,5 @@ { - "rpc": "set_point_visibility", + "rpc": "visibility", "type": "object", "properties": { "id": { diff --git a/src/opengeodeweb_viewer/rpc/mesh/schemas/color.json b/src/opengeodeweb_viewer/rpc/mesh/schemas/color.json new file mode 100644 index 0000000..35a5200 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/schemas/color.json @@ -0,0 +1,40 @@ +{ + "rpc": "color", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "color": { + "type": "object", + "properties": { + "r": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "g": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "b": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + }, + "required": [ + "r", + "g", + "b" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "color" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_opacity.json b/src/opengeodeweb_viewer/rpc/mesh/schemas/opacity.json similarity index 91% rename from src/opengeodeweb_viewer/rpc/mesh/schemas/set_opacity.json rename to src/opengeodeweb_viewer/rpc/mesh/schemas/opacity.json index 28a9ede..86eff6d 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_opacity.json +++ b/src/opengeodeweb_viewer/rpc/mesh/schemas/opacity.json @@ -1,5 +1,5 @@ { - "rpc": "set_opacity", + "rpc": "opacity", "type": "object", "properties": { "id": { diff --git a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_color.json b/src/opengeodeweb_viewer/rpc/mesh/schemas/set_color.json deleted file mode 100644 index 32789f3..0000000 --- a/src/opengeodeweb_viewer/rpc/mesh/schemas/set_color.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "rpc": "set_color", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "red": { - "type": "integer", - "minimum": 0, - "maximum": 255 - }, - "green": { - "type": "integer", - "minimum": 0, - "maximum": 255 - }, - "blue": { - "type": "integer", - "minimum": 0, - "maximum": 255 - } - }, - "required": [ - "id", - "red", - "green", - "blue" - ], - "additionalProperties": false -} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/schemas/visibility.json b/src/opengeodeweb_viewer/rpc/mesh/schemas/visibility.json new file mode 100644 index 0000000..4b2368d --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/schemas/visibility.json @@ -0,0 +1,17 @@ +{ + "rpc": "visibility", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "visibility": { + "type": "boolean" + } + }, + "required": [ + "id", + "visibility" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/model/model_protocols.py b/src/opengeodeweb_viewer/rpc/model/model_protocols.py index 640388f..d732cf1 100644 --- a/src/opengeodeweb_viewer/rpc/model/model_protocols.py +++ b/src/opengeodeweb_viewer/rpc/model/model_protocols.py @@ -1,10 +1,8 @@ # Standard library imports -import json import os # Third party imports import vtk -from vtk.web import protocols as vtk_protocols from wslink import register as exportRpc # Local application imports @@ -12,16 +10,16 @@ from opengeodeweb_viewer.object.object_methods import VtkObjectView class VtkModelView(VtkObjectView): - prefix = "opengeodeweb_viewer.model." - schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas")) + model_prefix = "opengeodeweb_viewer.model." + model_schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas")) def __init__(self): super().__init__() - @exportRpc(prefix + schemas_dict["register"]["rpc"]) + @exportRpc(model_prefix + model_schemas_dict["register"]["rpc"]) def registerModel(self, params): - print(self.schemas_dict["register"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["register"]) + print(self.model_prefix + self.model_schemas_dict["register"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.model_schemas_dict["register"]) id = params["id"] file_name = params["file_name"] try: @@ -34,43 +32,34 @@ def registerModel(self, params): except Exception as e: print("error : ", str(e), flush=True) - @exportRpc(prefix + schemas_dict["deregister"]["rpc"]) + @exportRpc(model_prefix + model_schemas_dict["deregister"]["rpc"]) def deregisterModel(self, params): - print(self.schemas_dict["deregister"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["deregister"]) + print(self.model_prefix + self.model_schemas_dict["deregister"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.model_schemas_dict["deregister"]) id = params["id"] self.deregisterObject(id) - @exportRpc(prefix + schemas_dict["set_mesh_visibility"]["rpc"]) + @exportRpc(model_prefix + model_schemas_dict["set_mesh_visibility"]["rpc"]) def setMeshVisibility(self, params): - print(self.schemas_dict["set_mesh_visibility"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["set_mesh_visibility"]) + print(self.model_prefix + self.model_schemas_dict["set_mesh_visibility"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.model_schemas_dict["set_mesh_visibility"]) id = params["id"] visibility = bool(params["visibility"]) - self.SetEdgeVisibility(id, visibility) + self.SetEdgesVisibility(id, visibility) - @exportRpc(prefix + schemas_dict["set_components_visibility"]["rpc"]) + @exportRpc(model_prefix + model_schemas_dict["set_components_visibility"]["rpc"]) def setComponentsVisibility(self, params): - print(self.schemas_dict["set_components_visibility"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["set_components_visibility"]) + print(self.model_prefix + self.model_schemas_dict["set_components_visibility"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.model_schemas_dict["set_components_visibility"]) id = params["id"] visibility = bool(params["visibility"]) self.SetVisibility(id, visibility) - @exportRpc(prefix + schemas_dict["set_components_color"]["rpc"]) + @exportRpc(model_prefix + model_schemas_dict["set_components_color"]["rpc"]) def setComponentsColor(self, params): - print(self.schemas_dict["set_components_color"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["set_components_color"]) + print(self.model_prefix + self.model_schemas_dict["set_components_color"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.model_schemas_dict["set_components_color"]) id = params["id"] - red = params["red"] - green = params["green"] - blue = params["blue"] + red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] self.SetColor(id, red, green, blue) - @exportRpc(prefix + schemas_dict["set_corners_size"]["rpc"]) - def setCornersSize(self, params): - print(self.schemas_dict["set_corners_size"]["rpc"], f"{params=}", flush=True) - validate_schema(params, self.schemas_dict["set_corners_size"]) - id = params["id"] - size = float(params["size"]) - self.SetPointSize(id, size) \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/model/schemas/set_components_color.json b/src/opengeodeweb_viewer/rpc/model/schemas/set_components_color.json index 3704832..aabecc8 100644 --- a/src/opengeodeweb_viewer/rpc/model/schemas/set_components_color.json +++ b/src/opengeodeweb_viewer/rpc/model/schemas/set_components_color.json @@ -5,27 +5,36 @@ "id": { "type": "string" }, - "red": { - "type": "integer", - "minimum": 0, - "maximum": 255 - }, - "green": { - "type": "integer", - "minimum": 0, - "maximum": 255 - }, - "blue": { - "type": "integer", - "minimum": 0, - "maximum": 255 + "color": { + "type": "object", + "properties": { + "r": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "g": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "b": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + }, + "required": [ + "r", + "g", + "b" + ], + "additionalProperties": false } }, "required": [ "id", - "red", - "green", - "blue" + "color" ], "additionalProperties": false } \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/viewer/schemas/set_background_color.json b/src/opengeodeweb_viewer/rpc/viewer/schemas/set_background_color.json index 714c9c7..db2babd 100644 --- a/src/opengeodeweb_viewer/rpc/viewer/schemas/set_background_color.json +++ b/src/opengeodeweb_viewer/rpc/viewer/schemas/set_background_color.json @@ -1,27 +1,36 @@ { - "rpc": "set_background_color", - "type": "object", - "properties": { - "red": { - "type": "integer", - "minimum": 0, - "maximum": 255 + "rpc": "set_background_color", + "type": "object", + "properties": { + "color": { + "type": "object", + "properties": { + "r": { + "type": "integer", + "minimum": 0, + "maximum": 255 }, - "green": { - "type": "integer", - "minimum": 0, - "maximum": 255 + "g": { + "type": "integer", + "minimum": 0, + "maximum": 255 }, - "blue": { - "type": "integer", - "minimum": 0, - "maximum": 255 + "b": { + "type": "integer", + "minimum": 0, + "maximum": 255 } - }, - "required": [ - "red", - "green", - "blue" - ], - "additionalProperties": false + }, + "required": [ + "r", + "g", + "b" + ], + "additionalProperties": false + } + }, + "required": [ + "color" + ], + "additionalProperties": false } \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py b/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py index 98c355a..9bf43e9 100644 --- a/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py +++ b/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py @@ -1,12 +1,9 @@ # Standard library imports -import json import math import os -from pathlib import Path # Third party imports import vtk -from vtk.web import protocols as vtk_protocols from vtkmodules.vtkIOImage import vtkPNGWriter, vtkJPEGWriter from vtkmodules.vtkRenderingCore import vtkWindowToImageFilter from wslink import register as exportRpc @@ -44,9 +41,9 @@ def setBackgroundColor(self, params): validate_schema(params, self.schemas_dict["set_background_color"]) renderWindow = self.getView("-1") renderer = renderWindow.GetRenderers().GetFirstRenderer() - red = params["red"] - green = params["green"] - blue = params["blue"] + red = params["color"]["r"] + green = params["color"]["g"] + blue = params["color"]["b"] renderer.SetBackground([red, green, blue]) renderer.ResetCamera() diff --git a/src/opengeodeweb_viewer/vtkw_server.py b/src/opengeodeweb_viewer/vtkw_server.py index 067459d..5592922 100644 --- a/src/opengeodeweb_viewer/vtkw_server.py +++ b/src/opengeodeweb_viewer/vtkw_server.py @@ -14,6 +14,9 @@ from .vtk_protocol import VtkView from .rpc.viewer.viewer_protocols import VtkViewerView from .rpc.mesh.mesh_protocols import VtkMeshView +from .rpc.mesh.points.points_protocols import VtkMeshPointsView +from .rpc.mesh.edges.edges_protocols import VtkMeshEdgesView +from .rpc.mesh.polygons.polygons_protocols import VtkMeshPolygonsView from .rpc.model.model_protocols import VtkModelView from .rpc.generic.generic_protocols import VtkGenericView @@ -55,8 +58,11 @@ def initialize(self): self.registerVtkWebProtocol(VtkView()) self.registerVtkWebProtocol(VtkViewerView()) self.registerVtkWebProtocol(mesh_protocols) + self.registerVtkWebProtocol(VtkMeshPointsView()) + self.registerVtkWebProtocol(VtkMeshEdgesView()) + self.registerVtkWebProtocol(VtkMeshPolygonsView()) self.registerVtkWebProtocol(model_protocols) - self.registerVtkWebProtocol(VtkGenericView(mesh_protocols,model_protocols)) + self.registerVtkWebProtocol(VtkGenericView(mesh_protocols, model_protocols)) # tell the C++ web app to use no encoding. # ParaViewWebPublishImageDelivery must be set to decode=False to match. diff --git a/src/tests/data/images/mesh/set_color.jpeg b/src/tests/data/images/mesh/color.jpeg similarity index 100% rename from src/tests/data/images/mesh/set_color.jpeg rename to src/tests/data/images/mesh/color.jpeg diff --git a/src/tests/data/images/mesh/edges/color.jpeg b/src/tests/data/images/mesh/edges/color.jpeg new file mode 100644 index 0000000..12ff1e3 Binary files /dev/null and b/src/tests/data/images/mesh/edges/color.jpeg differ diff --git a/src/tests/data/images/mesh/set_edge_visibility.jpeg b/src/tests/data/images/mesh/edges/visibility.jpeg similarity index 100% rename from src/tests/data/images/mesh/set_edge_visibility.jpeg rename to src/tests/data/images/mesh/edges/visibility.jpeg diff --git a/src/tests/data/images/mesh/set_opacity.jpeg b/src/tests/data/images/mesh/opacity.jpeg similarity index 100% rename from src/tests/data/images/mesh/set_opacity.jpeg rename to src/tests/data/images/mesh/opacity.jpeg diff --git a/src/tests/data/images/mesh/points/color.jpeg b/src/tests/data/images/mesh/points/color.jpeg new file mode 100644 index 0000000..de7d7cd Binary files /dev/null and b/src/tests/data/images/mesh/points/color.jpeg differ diff --git a/src/tests/data/images/mesh/points/size.jpeg b/src/tests/data/images/mesh/points/size.jpeg new file mode 100644 index 0000000..2ccfcb8 Binary files /dev/null and b/src/tests/data/images/mesh/points/size.jpeg differ diff --git a/src/tests/data/images/mesh/points/visibility.jpeg b/src/tests/data/images/mesh/points/visibility.jpeg new file mode 100644 index 0000000..eb0a0df Binary files /dev/null and b/src/tests/data/images/mesh/points/visibility.jpeg differ diff --git a/src/tests/data/images/mesh/polygons/color.jpeg b/src/tests/data/images/mesh/polygons/color.jpeg new file mode 100644 index 0000000..e77373b Binary files /dev/null and b/src/tests/data/images/mesh/polygons/color.jpeg differ diff --git a/src/tests/data/images/model/color.jpeg b/src/tests/data/images/model/color.jpeg new file mode 100644 index 0000000..8773175 Binary files /dev/null and b/src/tests/data/images/model/color.jpeg differ diff --git a/src/tests/mesh/edges/test_edges_protocols.py b/src/tests/mesh/edges/test_edges_protocols.py new file mode 100644 index 0000000..f9fb721 --- /dev/null +++ b/src/tests/mesh/edges/test_edges_protocols.py @@ -0,0 +1,21 @@ +# Standard library imports + +# Third party imports +from opengeodeweb_viewer.rpc.mesh.edges.edges_protocols import VtkMeshEdgesView + +# Local application imports +from tests.test_mesh_protocols import test_register_mesh + +def test_edges_visibility(server): + + test_register_mesh(server) + + server.call(VtkMeshEdgesView.mesh_edges_prefix + VtkMeshEdgesView.mesh_edges_schemas_dict["visibility"]["rpc"], [{"id": "123456789", "visibility": True}]) + assert server.compare_image(3, "mesh/edges/visibility.jpeg") == True + +def test_edges_color(server): + + test_edges_visibility(server) + + server.call(VtkMeshEdgesView.mesh_edges_prefix + VtkMeshEdgesView.mesh_edges_schemas_dict["color"]["rpc"], [{"id": "123456789", "color": {"r": 255, "g": 0, "b": 0}}]) + assert server.compare_image(3, "mesh/edges/color.jpeg") == True diff --git a/src/tests/mesh/points/test_points_protocols.py b/src/tests/mesh/points/test_points_protocols.py new file mode 100644 index 0000000..74ce746 --- /dev/null +++ b/src/tests/mesh/points/test_points_protocols.py @@ -0,0 +1,30 @@ +# Standard library imports + +# Third party imports +from opengeodeweb_viewer.rpc.mesh.points.points_protocols import VtkMeshPointsView + +# Local application imports +from tests.test_mesh_protocols import test_register_mesh + +def test_points_visibility(server): + + test_register_mesh(server) + + server.call(VtkMeshPointsView.mesh_points_prefix + VtkMeshPointsView.mesh_points_schemas_dict["visibility"]["rpc"], [{"id": "123456789", "visibility": True}]) + assert server.compare_image(3, "mesh/points/visibility.jpeg") == True + +def test_points_size(server): + + test_points_visibility(server) + + server.call(VtkMeshPointsView.mesh_points_prefix + VtkMeshPointsView.mesh_points_schemas_dict["size"]["rpc"], [{"id": "123456789", "size": 15}]) + assert server.compare_image(3, "mesh/points/size.jpeg") == True + + +def test_points_color(server): + + test_points_size(server) + + server.call(VtkMeshPointsView.mesh_points_prefix + VtkMeshPointsView.mesh_points_schemas_dict["color"]["rpc"], [{"id": "123456789", "color": {"r": 255, "g": 0, "b": 0}}]) + assert server.compare_image(3, "mesh/points/color.jpeg") == True + diff --git a/src/tests/mesh/polygons/test_polygons_protocols.py b/src/tests/mesh/polygons/test_polygons_protocols.py new file mode 100644 index 0000000..78655aa --- /dev/null +++ b/src/tests/mesh/polygons/test_polygons_protocols.py @@ -0,0 +1,15 @@ +# Standard library imports + +# Third party imports +from opengeodeweb_viewer.rpc.mesh.polygons.polygons_protocols import VtkMeshPolygonsView + +# Local application imports +from tests.test_mesh_protocols import test_register_mesh + + +def test_polygons_color(server): + + test_register_mesh(server) + + server.call(VtkMeshPolygonsView.mesh_polygons_prefix + VtkMeshPolygonsView.mesh_polygons_schemas_dict["color"]["rpc"], [{"id": "123456789", "color": {"r": 255, "g": 0, "b": 0}}]) + assert server.compare_image(3, "mesh/polygons/color.jpeg") == True \ No newline at end of file diff --git a/src/tests/test_generic_protocols.py b/src/tests/test_generic_protocols.py index 5c1f27c..a536d7b 100644 --- a/src/tests/test_generic_protocols.py +++ b/src/tests/test_generic_protocols.py @@ -1,21 +1,21 @@ from opengeodeweb_viewer.rpc.generic.generic_protocols import VtkGenericView def test_register_mesh(server): - server.call(VtkGenericView.prefix + VtkGenericView.schemas_dict["register"]["rpc"], [{"viewer_object": "mesh", "id": "123456789", "file_name": "hat.vtp"}]) + server.call(VtkGenericView.generic_prefix + VtkGenericView.generic_schemas_dict["register"]["rpc"], [{"viewer_object": "mesh", "id": "123456789", "file_name": "hat.vtp"}]) assert server.compare_image(3, "mesh/register.jpeg") == True def test_register_model(server): - server.call(VtkGenericView.prefix + VtkGenericView.schemas_dict["register"]["rpc"], [{"viewer_object": "model", "id": "123456789", "file_name": "CrossSection.vtm"}]) + server.call(VtkGenericView.generic_prefix + VtkGenericView.generic_schemas_dict["register"]["rpc"], [{"viewer_object": "model", "id": "123456789", "file_name": "CrossSection.vtm"}]) assert server.compare_image(3, "model/register.jpeg") == True def test_deregister_mesh(server): test_register_mesh(server) - server.call(VtkGenericView.prefix + VtkGenericView.schemas_dict["deregister"]["rpc"], [{"viewer_object": "mesh", "id": "123456789"}]) + server.call(VtkGenericView.generic_prefix + VtkGenericView.generic_schemas_dict["deregister"]["rpc"], [{"viewer_object": "mesh", "id": "123456789"}]) assert server.compare_image(3, "mesh/deregister.jpeg") == True def test_deregister_model(server): test_register_model(server) - server.call(VtkGenericView.prefix + VtkGenericView.schemas_dict["deregister"]["rpc"], [{"viewer_object": "model", "id": "123456789"}]) + server.call(VtkGenericView.generic_prefix + VtkGenericView.generic_schemas_dict["deregister"]["rpc"], [{"viewer_object": "model", "id": "123456789"}]) assert server.compare_image(3, "model/deregister.jpeg") == True \ No newline at end of file diff --git a/src/tests/test_mesh_protocols.py b/src/tests/test_mesh_protocols.py index 0091b5d..40064f1 100644 --- a/src/tests/test_mesh_protocols.py +++ b/src/tests/test_mesh_protocols.py @@ -4,80 +4,55 @@ def test_register_mesh(server): - server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["register"]["rpc"], [{"id": "123456789", "file_name": "hat.vtp"}]) + server.call(VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"], [{"id": "123456789", "file_name": "hat.vtp"}]) assert server.compare_image(3, "mesh/register.jpeg") == True def test_deregister_mesh(server): test_register_mesh(server) - server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["deregister"]["rpc"], [{"id": "123456789"}]) + server.call(VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["deregister"]["rpc"], [{"id": "123456789"}]) assert server.compare_image(3, "mesh/deregister.jpeg") == True -def test_set_opacity(server): +def test_opacity(server): test_register_mesh(server) - server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["set_opacity"]["rpc"], [{"id": "123456789", "opacity": 0.1}]) - assert server.compare_image(3, "mesh/set_opacity.jpeg") == True + server.call(VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["opacity"]["rpc"], [{"id": "123456789", "opacity": 0.1}]) + assert server.compare_image(3, "mesh/opacity.jpeg") == True -def test_set_edge_visibility(server): - test_register_mesh(server) - - server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["set_edge_visibility"]["rpc"], [{"id": "123456789", "visibility": True}]) - assert server.compare_image(3, "mesh/set_edge_visibility.jpeg") == True - -# def test_set_point_visibility(server): - -# test_register_mesh(server) - -# server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["set_point_visibility"]["rpc"], [{"id": "123456789", "visibility": True}]) -# assert server.compare_image(3, "mesh/set_point_visibility.jpeg") == True - -# def test_set_point_size(server): - -# server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["register"]["rpc"], [{"id": "123456789", "file_name": "vertex_attribute.vtp"}]) -# assert server.compare_image(3, "mesh/set_point_size_1.jpeg") == True - - # server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["set_point_visibility"]["rpc"], [{"id": "123456789", "visibility": True}]) - # assert server.compare_image(3, "mesh/set_point_size_2.jpeg") == True - - # server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["set_point_size"]["rpc"], [{"id": "123456789", "size": 10}]) - # assert server.compare_image(3, "mesh/set_point_size_3.jpeg") == True - - -def test_set_color(server): +def test_color(server): test_register_mesh(server) - server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["set_color"]["rpc"], [{"id": "123456789", "red": 50, "green": 2, "blue": 250}]) - assert server.compare_image(3, "mesh/set_color.jpeg") == True + server.call(VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["color"]["rpc"], [{"id": "123456789", "color": {"r": 50, "g": 2, "b": 250}}]) + assert server.compare_image(3, "mesh/color.jpeg") == True -def test_display_vertex_attribute(server): - server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["register"]["rpc"], [{"id": "123456789", "file_name": "vertex_attribute.vtp"}]) - assert server.compare_image(3, "mesh/display_vertex_attribute_1.jpeg") == True +# def test_display_vertex_attribute(server): +# server.call(VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"], [{"id": "123456789", "file_name": "vertex_attribute.vtp"}]) +# assert server.compare_image(3, "mesh/display_vertex_attribute_1.jpeg") == True - server.call( - VtkMeshView.prefix + VtkMeshView.schemas_dict["display_vertex_attribute"]["rpc"], - [{"id": "123456789", "name": "geode_implicit_attribute"}], - ) - assert server.compare_image(3, "mesh/display_vertex_attribute_2.jpeg") == True +# server.call( +# VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["display_vertex_attribute"]["rpc"], +# [{"id": "123456789", "name": "geode_implicit_attribute"}], +# ) +# assert server.compare_image(3, "mesh/display_vertex_attribute_2.jpeg") == True - server.call( - VtkMeshView.prefix + VtkMeshView.schemas_dict["set_color"]["rpc"], - [{"id": "123456789", "red": 250, "green": 0, "blue": 0}], - ) - assert server.compare_image(3, "mesh/display_vertex_attribute_3.jpeg") == True +# server.call( +# VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["color"]["rpc"], +# [{"id": "123456789", "red": 250, "green": 0, "blue": 0}], +# ) +# assert server.compare_image(3, "mesh/display_vertex_attribute_3.jpeg") == True -def test_display_polygon_attribute(server): - server.call(VtkMeshView.prefix + VtkMeshView.schemas_dict["register"]["rpc"], [{"id": "123456789", "file_name": "polygon_attribute.vtp"}]) - assert server.compare_image(3, "mesh/display_polygon_attribute_1.jpeg") == True +# def test_display_polygon_attribute(server): +# server.call(VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"], [{"id": "123456789", "file_name": "polygon_attribute.vtp"}]) +# assert server.compare_image(3, "mesh/display_polygon_attribute_1.jpeg") == True - server.call( - VtkMeshView.prefix + VtkMeshView.schemas_dict["display_polygon_attribute"]["rpc"], - [{"id": "123456789", "name": "implicit_on_polygons"}], - ) - assert server.compare_image(3, "mesh/display_polygon_attribute_2.jpeg") == True \ No newline at end of file +# server.call( +# VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["display_polygon_attribute"]["rpc"], +# [{"id": "123456789", "name": "implicit_on_polygons"}], +# ) +# assert server.compare_image(3, "mesh/display_polygon_attribute_2.jpeg") == True \ No newline at end of file diff --git a/src/tests/test_model_protocols.py b/src/tests/test_model_protocols.py index 2212d7d..54ca560 100644 --- a/src/tests/test_model_protocols.py +++ b/src/tests/test_model_protocols.py @@ -2,14 +2,14 @@ def test_register_model(server): - server.call(VtkModelView.prefix + VtkModelView.schemas_dict["register"]["rpc"], [{"id": "123456789", "file_name": "CrossSection.vtm"}]) + server.call(VtkModelView.model_prefix + VtkModelView.model_schemas_dict["register"]["rpc"], [{"id": "123456789", "file_name": "CrossSection.vtm"}]) assert server.compare_image(3, "model/register.jpeg") == True def test_deregister_model(server): test_register_model(server) - server.call(VtkModelView.prefix + VtkModelView.schemas_dict["deregister"]["rpc"], [{"id": "123456789"}]) + server.call(VtkModelView.model_prefix + VtkModelView.model_schemas_dict["deregister"]["rpc"], [{"id": "123456789"}]) assert server.compare_image(3, "model/deregister.jpeg") == True @@ -17,19 +17,19 @@ def test_set_mesh_visibility(server): test_register_model(server) - server.call(VtkModelView.prefix + VtkModelView.schemas_dict["set_mesh_visibility"]["rpc"], [{"id": "123456789", "visibility": True}]) + server.call(VtkModelView.model_prefix + VtkModelView.model_schemas_dict["set_mesh_visibility"]["rpc"], [{"id": "123456789", "visibility": True}]) assert server.compare_image(3, "model/set_mesh_visibility.jpeg") == True def test_set_components_visibility(server): test_register_model(server) - server.call(VtkModelView.prefix + VtkModelView.schemas_dict["set_components_visibility"]["rpc"], [{"id": "123456789", "visibility": False}]) + server.call(VtkModelView.model_prefix + VtkModelView.model_schemas_dict["set_components_visibility"]["rpc"], [{"id": "123456789", "visibility": False}]) assert server.compare_image(3, "model/set_components_visibility.jpeg") == True def test_set_components_color(server): test_register_model(server) - server.call(VtkModelView.prefix + VtkModelView.schemas_dict["set_components_color"]["rpc"], [{"id": "123456789", "red": 255, "green": 0, "blue": 0}]) + server.call(VtkModelView.model_prefix + VtkModelView.model_schemas_dict["set_components_color"]["rpc"], [{"id": "123456789", "color": {"r": 255, "g": 0, "b": 0}}]) assert server.compare_image(3, "model/set_components_color.jpeg") == True \ No newline at end of file diff --git a/src/tests/test_viewer_protocols.py b/src/tests/test_viewer_protocols.py index bef7ac1..90e769b 100644 --- a/src/tests/test_viewer_protocols.py +++ b/src/tests/test_viewer_protocols.py @@ -26,7 +26,7 @@ def test_set_viewer_background_color(server): server.call( VtkViewerView.prefix + VtkViewerView.schemas_dict["set_background_color"]["rpc"], - [{"red": 0, "green": 0, "blue": 255}], + [{"color": {"r": 0, "g": 0, "b": 255}}], ) assert server.compare_image(3, "viewer/set_background_color.jpeg") == True