Skip to content

Commit 719ddd5

Browse files
Merge pull request #31 from Geode-solutions/feat/new_rpcs
Feat/new rpcs
2 parents 94b70c7 + 22ada37 commit 719ddd5

File tree

14 files changed

+204
-105
lines changed

14 files changed

+204
-105
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Standard library imports
2+
import json
3+
import os
4+
5+
# Third party imports
6+
import vtk
7+
from vtk.web import protocols as vtk_protocols
8+
from wslink import register as exportRpc
9+
10+
# Local application imports
11+
from opengeodeweb_viewer.vtk_protocol import VtkView
12+
from opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView
13+
from opengeodeweb_viewer.rpc.model.model_protocols import VtkModelView
14+
from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema
15+
16+
class VtkGenericView(VtkView):
17+
prefix = "opengeodeweb_viewer."
18+
schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
19+
20+
def __init__(self, mesh_protocols, model_protocols):
21+
super().__init__()
22+
self.mesh_protocols = mesh_protocols
23+
self.model_protocols = model_protocols
24+
25+
@exportRpc(prefix + schemas_dict["register"]["rpc"])
26+
def register(self, params):
27+
print(self.schemas_dict["register"]["rpc"], f"{params=}", flush=True)
28+
validate_schema(params, self.schemas_dict["register"])
29+
viewer_object = params["viewer_object"]
30+
params.pop('viewer_object', None)
31+
print(f"{params=}", flush=True)
32+
if viewer_object == "mesh":
33+
self.mesh_protocols.registerMesh(params)
34+
elif viewer_object == "model":
35+
self.model_protocols.registerModel(params)
36+
37+
@exportRpc(prefix + schemas_dict["deregister"]["rpc"])
38+
def deregister(self, params):
39+
print(self.schemas_dict["deregister"]["rpc"], f"{params=}", flush=True)
40+
validate_schema(params, self.schemas_dict["deregister"])
41+
viewer_object = params["viewer_object"]
42+
params.pop('viewer_object', None)
43+
if viewer_object == "mesh":
44+
self.mesh_protocols.deregisterMesh(params)
45+
elif viewer_object == "model":
46+
self.model_protocols.deregisterModel(params)
47+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"rpc": "deregister",
3+
"type": "object",
4+
"properties": {
5+
"viewer_object": {
6+
"type": "string",
7+
"enum": ["mesh", "model"]
8+
},
9+
"id": {
10+
"type": "string"
11+
}
12+
},
13+
"required": [
14+
"viewer_object",
15+
"id"
16+
],
17+
"additionalProperties": false
18+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"rpc": "register",
3+
"type": "object",
4+
"properties": {
5+
"viewer_object": {
6+
"type": "string",
7+
"enum": ["mesh", "model"]
8+
},
9+
"id": {
10+
"type": "string"
11+
},
12+
"file_name": {
13+
"type": "string"
14+
}
15+
},
16+
"required": [
17+
"viewer_object",
18+
"id",
19+
"file_name"
20+
],
21+
"additionalProperties": false
22+
}

src/opengeodeweb_viewer/object/object_methods.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class VtkObjectView(VtkView):
1212
def __init__(self):
1313
super().__init__()
1414

15-
def register(self, id, file_name, reader, filter, mapper):
15+
def registerObject(self, id, file_name, reader, filter, mapper):
1616
actor = vtk.vtkActor()
1717
self.register_object(id, reader, filter, actor, mapper, {})
1818

@@ -31,7 +31,7 @@ def register(self, id, file_name, reader, filter, mapper):
3131
renderWindow.Render()
3232
self.render()
3333

34-
def deregister(self, id):
34+
def deregisterObject(self, id):
3535
actor = self.get_object(id)["actor"]
3636
renderWindow = self.getView("-1")
3737
renderer = renderWindow.GetRenderers().GetFirstRenderer()

src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,82 +13,79 @@
1313
from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema
1414
from opengeodeweb_viewer.object.object_methods import VtkObjectView
1515

16-
schemas_dir = os.path.join(os.path.dirname(__file__), "schemas")
17-
schemas_dict = get_schemas_dict(schemas_dir)
18-
prefix = "opengeodeweb_viewer.mesh."
19-
2016
class VtkMeshView(VtkObjectView):
17+
prefix = "opengeodeweb_viewer.mesh."
18+
schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
19+
2120
def __init__(self):
2221
super().__init__()
23-
self.prefix = prefix
24-
self.schemas_dict = schemas_dict
2522

2623
@exportRpc(prefix + schemas_dict["register"]["rpc"])
2724
def registerMesh(self, params):
28-
print(schemas_dict["register"]["rpc"], params, flush=True)
29-
validate_schema(params, schemas_dict["register"])
25+
print(self.schemas_dict["register"]["rpc"], f"{params=}", flush=True)
26+
validate_schema(params, self.schemas_dict["register"])
3027
id = params["id"]
3128
file_name = params["file_name"]
3229
try:
3330
reader = vtk.vtkXMLGenericDataObjectReader()
3431
filter = {}
3532
mapper = vtk.vtkDataSetMapper()
3633
mapper.SetInputConnection(reader.GetOutputPort())
37-
self.register(id, file_name, reader, filter, mapper)
34+
self.registerObject(id, file_name, reader, filter, mapper)
3835
except Exception as e:
3936
print("error : ", str(e), flush=True)
4037

4138
@exportRpc(prefix + schemas_dict["deregister"]["rpc"])
4239
def deregisterMesh(self, params):
43-
print(schemas_dict["deregister"]["rpc"], params, flush=True)
44-
validate_schema(params, schemas_dict["deregister"])
40+
print(self.schemas_dict["deregister"]["rpc"], f"{params=}", flush=True)
41+
validate_schema(params, self.schemas_dict["deregister"])
4542
id = params["id"]
46-
self.deregister(id)
43+
self.deregisterObject(id)
4744

4845
@exportRpc(prefix + schemas_dict["set_visibility"]["rpc"])
4946
def SetMeshVisibility(self, params):
50-
print(schemas_dict["set_visibility"]["rpc"], params, flush=True)
51-
validate_schema(params, schemas_dict["set_visibility"])
47+
print(self.schemas_dict["set_visibility"]["rpc"], f"{params=}", flush=True)
48+
validate_schema(params, self.schemas_dict["set_visibility"])
5249
id = params["id"]
5350
visibility = bool(params["visibility"])
5451
self.SetVisibility(id, visibility)
5552

5653
@exportRpc(prefix + schemas_dict["set_opacity"]["rpc"])
5754
def setMeshOpacity(self, params):
58-
print(schemas_dict["set_opacity"]["rpc"], params, flush=True)
59-
validate_schema(params, schemas_dict["set_opacity"])
55+
print(self.schemas_dict["set_opacity"]["rpc"], f"{params=}", flush=True)
56+
validate_schema(params, self.schemas_dict["set_opacity"])
6057
id = params["id"]
6158
opacity = float(params["opacity"])
6259
self.SetOpacity(id, opacity)
6360

6461
@exportRpc(prefix + schemas_dict["set_edge_visibility"]["rpc"])
6562
def setMeshEdgeVisibility(self, params):
66-
print(schemas_dict["set_edge_visibility"]["rpc"], params, flush=True)
67-
validate_schema(params, schemas_dict["set_edge_visibility"])
63+
print(self.schemas_dict["set_edge_visibility"]["rpc"], f"{params=}", flush=True)
64+
validate_schema(params, self.schemas_dict["set_edge_visibility"])
6865
id = params["id"]
6966
visibility = bool(params["visibility"])
7067
self.SetEdgeVisibility(id, visibility)
7168

7269
@exportRpc(prefix + schemas_dict["set_point_visibility"]["rpc"])
7370
def setMeshPointVisibility(self, params):
74-
print(schemas_dict["set_point_visibility"]["rpc"], params, flush=True)
75-
validate_schema(params, schemas_dict["set_point_visibility"])
71+
print(self.schemas_dict["set_point_visibility"]["rpc"], f"{params=}", flush=True)
72+
validate_schema(params, self.schemas_dict["set_point_visibility"])
7673
id = params["id"]
7774
visibility = bool(params["visibility"])
7875
self.SetVertexVisibility(id, visibility)
7976

8077
@exportRpc(prefix + schemas_dict["set_point_size"]["rpc"])
8178
def setMeshPointSize(self, params):
82-
print(schemas_dict["set_point_size"]["rpc"], params, flush=True)
83-
validate_schema(params, schemas_dict["set_point_size"])
79+
print(self.schemas_dict["set_point_size"]["rpc"], f"{params=}", flush=True)
80+
validate_schema(params, self.schemas_dict["set_point_size"])
8481
id = params["id"]
8582
size = float(params["size"])
8683
self.SetPointSize(id, size)
8784

8885
@exportRpc(prefix + schemas_dict["set_color"]["rpc"])
8986
def setMeshColor(self, params):
90-
print(schemas_dict["set_color"]["rpc"], params, flush=True)
91-
validate_schema(params, schemas_dict["set_color"])
87+
print(self.schemas_dict["set_color"]["rpc"], f"{params=}", flush=True)
88+
validate_schema(params, self.schemas_dict["set_color"])
9289
id = params["id"]
9390
red = params["red"]
9491
green = params["green"]
@@ -97,8 +94,8 @@ def setMeshColor(self, params):
9794

9895
@exportRpc(prefix + schemas_dict["display_vertex_attribute"]["rpc"])
9996
def setVertexAttribute(self, params):
100-
print(schemas_dict["display_vertex_attribute"]["rpc"], params, flush=True)
101-
validate_schema(params, schemas_dict["display_vertex_attribute"])
97+
print(self.schemas_dict["display_vertex_attribute"]["rpc"], f"{params=}", flush=True)
98+
validate_schema(params, self.schemas_dict["display_vertex_attribute"])
10299
id = params["id"]
103100
name = params["name"]
104101
reader = self.get_object(id)["reader"]
@@ -112,8 +109,8 @@ def setVertexAttribute(self, params):
112109

113110
@exportRpc(prefix + schemas_dict["display_polygon_attribute"]["rpc"])
114111
def setPolygonAttribute(self, params):
115-
print(schemas_dict["display_polygon_attribute"]["rpc"], params, flush=True)
116-
validate_schema(params, schemas_dict["display_polygon_attribute"])
112+
print(self.schemas_dict["display_polygon_attribute"]["rpc"], f"{params=}", flush=True)
113+
validate_schema(params, self.schemas_dict["display_polygon_attribute"])
117114
id = params["id"]
118115
name = params["name"]
119116
reader = self.get_object(id)["reader"]

src/opengeodeweb_viewer/rpc/model/model_protocols.py

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,17 @@
1111
from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema
1212
from opengeodeweb_viewer.object.object_methods import VtkObjectView
1313

14-
schemas_dir = os.path.join(os.path.dirname(__file__), "schemas")
15-
schemas_dict = get_schemas_dict(schemas_dir)
16-
prefix = "opengeodeweb_viewer.model."
17-
1814
class VtkModelView(VtkObjectView):
15+
prefix = "opengeodeweb_viewer.model."
16+
schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
17+
1918
def __init__(self):
2019
super().__init__()
21-
self.prefix = prefix
22-
self.schemas_dict = schemas_dict
2320

2421
@exportRpc(prefix + schemas_dict["register"]["rpc"])
2522
def registerModel(self, params):
26-
print(schemas_dict["register"]["rpc"], params, flush=True)
27-
validate_schema(params, schemas_dict["register"])
23+
print(self.schemas_dict["register"]["rpc"], f"{params=}", flush=True)
24+
validate_schema(params, self.schemas_dict["register"])
2825
id = params["id"]
2926
file_name = params["file_name"]
3027
try:
@@ -33,37 +30,37 @@ def registerModel(self, params):
3330
filter.SetInputConnection(reader.GetOutputPort())
3431
mapper = vtk.vtkCompositePolyDataMapper()
3532
mapper.SetInputConnection(filter.GetOutputPort())
36-
self.register(id, file_name, reader, filter, mapper)
33+
self.registerObject(id, file_name, reader, filter, mapper)
3734
except Exception as e:
3835
print("error : ", str(e), flush=True)
3936

4037
@exportRpc(prefix + schemas_dict["deregister"]["rpc"])
4138
def deregisterModel(self, params):
42-
print(schemas_dict["deregister"]["rpc"], params, flush=True)
43-
validate_schema(params, schemas_dict["deregister"])
39+
print(self.schemas_dict["deregister"]["rpc"], f"{params=}", flush=True)
40+
validate_schema(params, self.schemas_dict["deregister"])
4441
id = params["id"]
45-
self.deregister(id)
42+
self.deregisterObject(id)
4643

4744
@exportRpc(prefix + schemas_dict["set_mesh_visibility"]["rpc"])
4845
def setMeshVisibility(self, params):
49-
print(schemas_dict["set_mesh_visibility"]["rpc"], params, flush=True)
50-
validate_schema(params, schemas_dict["set_mesh_visibility"])
46+
print(self.schemas_dict["set_mesh_visibility"]["rpc"], f"{params=}", flush=True)
47+
validate_schema(params, self.schemas_dict["set_mesh_visibility"])
5148
id = params["id"]
5249
visibility = bool(params["visibility"])
5350
self.SetEdgeVisibility(id, visibility)
5451

5552
@exportRpc(prefix + schemas_dict["set_components_visibility"]["rpc"])
5653
def setComponentsVisibility(self, params):
57-
print(schemas_dict["set_components_visibility"]["rpc"], params, flush=True)
58-
validate_schema(params, schemas_dict["set_components_visibility"])
54+
print(self.schemas_dict["set_components_visibility"]["rpc"], f"{params=}", flush=True)
55+
validate_schema(params, self.schemas_dict["set_components_visibility"])
5956
id = params["id"]
6057
visibility = bool(params["visibility"])
6158
self.SetVisibility(id, visibility)
6259

6360
@exportRpc(prefix + schemas_dict["set_components_color"]["rpc"])
6461
def setComponentsColor(self, params):
65-
print(schemas_dict["set_components_color"]["rpc"], params, flush=True)
66-
validate_schema(params, schemas_dict["set_components_color"])
62+
print(self.schemas_dict["set_components_color"]["rpc"], f"{params=}", flush=True)
63+
validate_schema(params, self.schemas_dict["set_components_color"])
6764
id = params["id"]
6865
red = params["red"]
6966
green = params["green"]
@@ -72,8 +69,8 @@ def setComponentsColor(self, params):
7269

7370
@exportRpc(prefix + schemas_dict["set_corners_size"]["rpc"])
7471
def setCornersSize(self, params):
75-
print(schemas_dict["set_corners_size"]["rpc"], params, flush=True)
76-
validate_schema(params, schemas_dict["set_corners_size"])
72+
print(self.schemas_dict["set_corners_size"]["rpc"], f"{params=}", flush=True)
73+
validate_schema(params, self.schemas_dict["set_corners_size"])
7774
id = params["id"]
7875
size = float(params["size"])
7976
self.SetPointSize(id, size)

0 commit comments

Comments
 (0)