Skip to content

Commit 9b7ec10

Browse files
authored
Merge pull request #154 from Geode-solutions/feat/attributes-model
Feat/attributes model
2 parents 7411d82 + 01cf9e6 commit 9b7ec10

94 files changed

Lines changed: 4726 additions & 30 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

opengeodeweb_viewer_schemas.json

Lines changed: 498 additions & 0 deletions
Large diffs are not rendered by default.

pyproject.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,14 @@ where = ["src"]
5252
"opengeodeweb_viewer.rpc.model.edges.schemas" = ["*.json"]
5353
"opengeodeweb_viewer.rpc.model.points.schemas" = ["*.json"]
5454
"opengeodeweb_viewer.rpc.model.corners.schemas" = ["*.json"]
55+
"opengeodeweb_viewer.rpc.model.corners.attribute.vertex.schemas" = ["*.json"]
5556
"opengeodeweb_viewer.rpc.model.lines.schemas" = ["*.json"]
57+
"opengeodeweb_viewer.rpc.model.lines.attribute.edge.schemas" = ["*.json"]
58+
"opengeodeweb_viewer.rpc.model.lines.attribute.vertex.schemas" = ["*.json"]
5659
"opengeodeweb_viewer.rpc.model.surfaces.schemas" = ["*.json"]
60+
"opengeodeweb_viewer.rpc.model.surfaces.attribute.polygon.schemas" = ["*.json"]
61+
"opengeodeweb_viewer.rpc.model.surfaces.attribute.vertex.schemas" = ["*.json"]
5762
"opengeodeweb_viewer.rpc.model.blocks.schemas" = ["*.json"]
63+
"opengeodeweb_viewer.rpc.model.blocks.attribute.polyhedron.schemas" = ["*.json"]
64+
"opengeodeweb_viewer.rpc.model.blocks.attribute.vertex.schemas" = ["*.json"]
5865
"opengeodeweb_viewer.rpc.viewer.schemas" = ["*.json"]

requirements.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ frozenlist>=1
2222
# via
2323
# aiohttp
2424
# aiosignal
25-
idna==3.15
25+
idna==3.16
2626
# via yarl
2727
kiwisolver>=1
2828
# via matplotlib
@@ -61,4 +61,3 @@ wslink==1.12.4
6161
yarl>=1
6262
# via aiohttp
6363

64-
opengeodeweb-microservice==1.*,>=1.1.3

src/opengeodeweb_viewer/app.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,27 @@
7070
from opengeodeweb_viewer.rpc.model.blocks.model_blocks_protocols import (
7171
VtkModelBlocksView,
7272
)
73+
from opengeodeweb_viewer.rpc.model.corners.attribute.vertex.corners_attribute_vertex_protocols import (
74+
VtkModelCornersAttributeVertexView,
75+
)
76+
from opengeodeweb_viewer.rpc.model.lines.attribute.vertex.lines_attribute_vertex_protocols import (
77+
VtkModelLinesAttributeVertexView,
78+
)
79+
from opengeodeweb_viewer.rpc.model.lines.attribute.edge.lines_attribute_edge_protocols import (
80+
VtkModelLinesAttributeEdgeView,
81+
)
82+
from opengeodeweb_viewer.rpc.model.surfaces.attribute.vertex.surfaces_attribute_vertex_protocols import (
83+
VtkModelSurfacesAttributeVertexView,
84+
)
85+
from opengeodeweb_viewer.rpc.model.surfaces.attribute.polygon.surfaces_attribute_polygon_protocols import (
86+
VtkModelSurfacesAttributePolygonView,
87+
)
88+
from opengeodeweb_viewer.rpc.model.blocks.attribute.vertex.blocks_attribute_vertex_protocols import (
89+
VtkModelBlocksAttributeVertexView,
90+
)
91+
from opengeodeweb_viewer.rpc.model.blocks.attribute.polyhedron.blocks_attribute_polyhedron_protocols import (
92+
VtkModelBlocksAttributePolyhedronView,
93+
)
7394
from opengeodeweb_viewer.rpc.generic.generic_protocols import VtkGenericView
7495
from opengeodeweb_viewer.rpc.utils_protocols import VtkUtilsView
7596

@@ -136,6 +157,13 @@ def initialize(self) -> None:
136157
self.registerVtkWebProtocol(VtkModelLinesView())
137158
self.registerVtkWebProtocol(VtkModelSurfacesView())
138159
self.registerVtkWebProtocol(VtkModelBlocksView())
160+
self.registerVtkWebProtocol(VtkModelCornersAttributeVertexView())
161+
self.registerVtkWebProtocol(VtkModelLinesAttributeVertexView())
162+
self.registerVtkWebProtocol(VtkModelLinesAttributeEdgeView())
163+
self.registerVtkWebProtocol(VtkModelSurfacesAttributeVertexView())
164+
self.registerVtkWebProtocol(VtkModelSurfacesAttributePolygonView())
165+
self.registerVtkWebProtocol(VtkModelBlocksAttributeVertexView())
166+
self.registerVtkWebProtocol(VtkModelBlocksAttributePolyhedronView())
139167
self.registerVtkWebProtocol(VtkGenericView(mesh_protocols, model_protocols))
140168

141169
# tell the C++ web app to use no encoding.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Standard library imports
2+
import os
3+
4+
# Third party imports
5+
from wslink import register as exportRpc # type: ignore
6+
from opengeodeweb_microservice.schemas import get_schemas_dict
7+
8+
# Local application imports
9+
from opengeodeweb_viewer.utils_functions import (
10+
validate_schema,
11+
RpcParams,
12+
)
13+
from opengeodeweb_viewer.rpc.model.model_protocols import VtkModelView
14+
from . import schemas
15+
16+
17+
class VtkModelBlocksAttributePolyhedronView(VtkModelView):
18+
model_blocks_attribute_polyhedron_prefix = (
19+
"opengeodeweb_viewer.model.blocks.attribute.polyhedron."
20+
)
21+
model_blocks_attribute_polyhedron_schemas_dict = get_schemas_dict(
22+
os.path.join(os.path.dirname(__file__), "schemas")
23+
)
24+
25+
def __init__(self) -> None:
26+
super().__init__()
27+
28+
@exportRpc(
29+
model_blocks_attribute_polyhedron_prefix
30+
+ model_blocks_attribute_polyhedron_schemas_dict["name"]["rpc"]
31+
)
32+
def setModelBlocksPolyhedronAttributeName(self, rpc_params: RpcParams) -> None:
33+
validate_schema(
34+
rpc_params,
35+
self.model_blocks_attribute_polyhedron_schemas_dict["name"],
36+
self.model_blocks_attribute_polyhedron_prefix,
37+
)
38+
params = schemas.Name.from_dict(rpc_params)
39+
pipeline = self.get_vtk_pipeline(params.id)
40+
self.displayAttributeOnCells(pipeline, params.block_ids, params.name)
41+
42+
@exportRpc(
43+
model_blocks_attribute_polyhedron_prefix
44+
+ model_blocks_attribute_polyhedron_schemas_dict["color_map"]["rpc"]
45+
)
46+
def setModelBlocksPolyhedronAttributeColorMap(self, rpc_params: RpcParams) -> None:
47+
validate_schema(
48+
rpc_params,
49+
self.model_blocks_attribute_polyhedron_schemas_dict["color_map"],
50+
self.model_blocks_attribute_polyhedron_prefix,
51+
)
52+
params = schemas.ColorMap.from_dict(rpc_params)
53+
pipeline = self.get_vtk_pipeline(params.id)
54+
self.setupColorMap(
55+
pipeline, params.block_ids, params.points, params.minimum, params.maximum
56+
)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from .name import *
2+
from .color_map import *
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"rpc": "color_map",
3+
"type": "object",
4+
"properties": {
5+
"id": {
6+
"type": "string",
7+
"minLength": 1
8+
},
9+
"block_ids": {
10+
"type": "array",
11+
"items": { "type": "integer" },
12+
"minItems": 1
13+
},
14+
"points": {
15+
"type": "array",
16+
"description": "Flat array of [value, r, g, b, ...]",
17+
"items": {
18+
"type": "number"
19+
},
20+
"minItems": 8
21+
},
22+
"minimum": {
23+
"type": "number"
24+
},
25+
"maximum": {
26+
"type": "number"
27+
}
28+
},
29+
"required": ["id", "block_ids", "points", "minimum", "maximum"],
30+
"additionalProperties": false
31+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from dataclasses_json import DataClassJsonMixin
2+
from dataclasses import dataclass
3+
from typing import List
4+
5+
6+
@dataclass
7+
class ColorMap(DataClassJsonMixin):
8+
def __post_init__(self) -> None:
9+
print(self, flush=True)
10+
11+
block_ids: List[int]
12+
id: str
13+
maximum: float
14+
minimum: float
15+
points: List[float]
16+
"""Flat array of [value, r, g, b, ...]"""
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"rpc": "name",
3+
"type": "object",
4+
"properties": {
5+
"id": {
6+
"type": "string",
7+
"minLength": 1
8+
},
9+
"block_ids": {
10+
"type": "array",
11+
"items": { "type": "integer" },
12+
"minItems": 1
13+
},
14+
"name": {
15+
"type": "string",
16+
"minLength": 1
17+
}
18+
},
19+
"required": [
20+
"id",
21+
"block_ids",
22+
"name"
23+
],
24+
"additionalProperties": false
25+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from dataclasses_json import DataClassJsonMixin
2+
from dataclasses import dataclass
3+
from typing import List
4+
5+
6+
@dataclass
7+
class Name(DataClassJsonMixin):
8+
def __post_init__(self) -> None:
9+
print(self, flush=True)
10+
11+
block_ids: List[int]
12+
id: str
13+
name: str

0 commit comments

Comments
 (0)