Skip to content

Commit 03ba21b

Browse files
wip(generic protocols): new class with rpcs
1 parent ac8ca3e commit 03ba21b

File tree

5 files changed

+105
-0
lines changed

5 files changed

+105
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
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+
schemas_dir = os.path.join(os.path.dirname(__file__), "schemas")
17+
schemas_dict = get_schemas_dict(schemas_dir)
18+
prefix = "opengeodeweb_viewer."
19+
20+
class VtkGenericView(VtkView):
21+
def __init__(self):
22+
super().__init__()
23+
self.prefix = prefix
24+
self.schemas_dict = schemas_dict
25+
26+
@exportRpc(prefix + schemas_dict["register"]["rpc"])
27+
def register(self, params):
28+
29+
print(f"{schemas_dict=}", flush=True)
30+
print(f"{params=}", flush=True)
31+
validate_schema(params, schemas_dict["register"])
32+
viewer_object = params["viewer_object"]
33+
params.pop('viewer_object', None)
34+
print(f"{params=}", flush=True)
35+
if viewer_object == "mesh":
36+
print(f"MESH", flush=True)
37+
class_ = VtkMeshView()
38+
class_.registerMesh(params)
39+
elif viewer_object == "model":
40+
print(f"MODEL", flush=True)
41+
class_ = VtkModelView()
42+
class_.registerModel(params)
43+
44+
@exportRpc(prefix + schemas_dict["deregister"]["rpc"])
45+
def deregister(self, params):
46+
validate_schema(params, schemas_dict["deregister"])
47+
viewer_object = params["viewer_object"]
48+
params.pop('viewer_object', None)
49+
if viewer_object == "mesh":
50+
VtkMeshView.registerMesh(self, params)
51+
elif viewer_object == "model":
52+
VtkModelView.registerModel(self, params)
53+
54+
55+
56+
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/vtkw_server.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from .rpc.viewer.viewer_protocols import VtkViewerView
1616
from .rpc.mesh.mesh_protocols import VtkMeshView
1717
from .rpc.model.model_protocols import VtkModelView
18+
from .generic.generic_protocols import VtkGenericView
1819

1920

2021
# =============================================================================
@@ -53,6 +54,7 @@ def initialize(self):
5354
self.registerVtkWebProtocol(VtkViewerView())
5455
self.registerVtkWebProtocol(VtkMeshView())
5556
self.registerVtkWebProtocol(VtkModelView())
57+
self.registerVtkWebProtocol(VtkGenericView())
5658

5759
# tell the C++ web app to use no encoding.
5860
# ParaViewWebPublishImageDelivery must be set to decode=False to match.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from opengeodeweb_viewer.generic.generic_protocols import VtkGenericView
2+
class_ = VtkGenericView()
3+
4+
def test_register(server):
5+
print(class_.prefix + class_.schemas_dict["register"]["rpc"], flush=True)
6+
server.call(class_.prefix + class_.schemas_dict["register"]["rpc"], [{"viewer_object": "mesh", "id": "123456789", "file_name": "hat.vtp"}])
7+
assert server.compare_image(3, "mesh/register.jpeg") == True

0 commit comments

Comments
 (0)