Skip to content

Commit d9790f3

Browse files
authored
Merge pull request #155 from Geode-solutions/feat/ColorMapViewer
Feat/color map viewer
2 parents a266b83 + 26378f7 commit d9790f3

105 files changed

Lines changed: 263 additions & 47 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: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@
99
"id": {
1010
"type": "string",
1111
"minLength": 1
12+
},
13+
"name": {
14+
"type": "string"
1215
}
1316
},
1417
"required": [
15-
"id"
18+
"id",
19+
"name"
1620
],
1721
"additionalProperties": false
1822
},
@@ -1014,10 +1018,14 @@
10141018
"id": {
10151019
"type": "string",
10161020
"minLength": 1
1021+
},
1022+
"name": {
1023+
"type": "string"
10171024
}
10181025
},
10191026
"required": [
1020-
"id"
1027+
"id",
1028+
"name"
10211029
],
10221030
"additionalProperties": false
10231031
},
@@ -1863,10 +1871,14 @@
18631871
"id": {
18641872
"type": "string",
18651873
"minLength": 1
1874+
},
1875+
"name": {
1876+
"type": "string"
18661877
}
18671878
},
18681879
"required": [
1869-
"id"
1880+
"id",
1881+
"name"
18701882
],
18711883
"additionalProperties": false
18721884
},
@@ -2470,6 +2482,24 @@
24702482
],
24712483
"additionalProperties": false
24722484
},
2485+
"pick_colormap": {
2486+
"$id": "opengeodeweb_viewer.viewer.pick_colormap",
2487+
"route": "pick_colormap",
2488+
"rpc": "pick_colormap",
2489+
"type": "object",
2490+
"properties": {
2491+
"x": {
2492+
"type": "number"
2493+
},
2494+
"y": {
2495+
"type": "number"
2496+
}
2497+
},
2498+
"required": [
2499+
"x",
2500+
"y"
2501+
]
2502+
},
24732503
"highlight": {
24742504
"$id": "opengeodeweb_viewer.viewer.highlight",
24752505
"rpc": "highlight",

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.16
25+
idna==3.17
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/object/object_methods.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def registerObject(
3737
data.mapper.SetResolveCoincidentTopologyLineOffsetParameters(1, -0.1)
3838
data.mapper.SetResolveCoincidentTopologyPolygonOffsetParameters(2, 0)
3939
data.mapper.SetResolveCoincidentTopologyPointOffsetParameter(-2)
40+
data.scalarBar.SetVisibility(False)
4041

4142
renderWindow = self.getView("-1")
4243
renderer = renderWindow.GetRenderers().GetFirstRenderer()
@@ -48,6 +49,7 @@ def registerObject(
4849
resetCamara = False
4950
renderer.AddActor(data.actor)
5051
renderer.AddActor(data.highlight.actor)
52+
renderer.AddActor2D(data.scalarBar)
5153
if resetCamara:
5254
renderer.ResetCamera()
5355

@@ -57,11 +59,22 @@ def deregisterObject(self, data_id: str) -> None:
5759
renderer = renderWindow.GetRenderers().GetFirstRenderer()
5860
renderer.RemoveActor(pipeline.actor)
5961
renderer.RemoveActor(pipeline.highlight.actor)
62+
renderer.RemoveActor2D(pipeline.scalarBar)
6063
self.deregister_object(data_id)
64+
self.update_scalar_bars_layout()
6165

6266
def SetVisibility(self, data_id: str, visibility: bool) -> None:
63-
actor = self.get_vtk_pipeline(data_id).actor
64-
actor.SetVisibility(visibility)
67+
pipeline = self.get_vtk_pipeline(data_id)
68+
pipeline.actor.SetVisibility(visibility)
69+
if not visibility:
70+
pipeline.scalarBar.SetVisibility(False)
71+
else:
72+
if (
73+
pipeline.mapper.GetScalarVisibility()
74+
and pipeline.mapper.GetLookupTable() is not None
75+
):
76+
pipeline.scalarBar.SetVisibility(True)
77+
self.update_scalar_bars_layout()
6578

6679
def SetOpacity(self, data_id: str, opacity: float) -> None:
6780
actor = self.get_vtk_pipeline(data_id).actor
@@ -153,14 +166,16 @@ def SetBlocksColor(
153166
attributes.SetBlockOpacity(blocks[block_id], alpha)
154167

155168
def clearColors(self, data_id: str) -> None:
156-
db = self.get_vtk_pipeline(data_id)
157-
mapper = db.mapper
158-
reader = db.reader
169+
pipeline = self.get_vtk_pipeline(data_id)
170+
mapper = pipeline.mapper
171+
reader = pipeline.reader
159172
output = reader.GetOutputDataObject(0)
160173
if isinstance(output, vtkDataSet):
161174
output.GetPointData().SetActiveScalars("")
162175
output.GetCellData().SetActiveScalars("")
163176
mapper.ScalarVisibilityOff()
177+
pipeline.scalarBar.SetVisibility(False)
178+
self.update_scalar_bars_layout()
164179

165180
def _apply_highlight_style(self, actor: vtkActor, mapper: vtkDataSetMapper) -> None:
166181
mapper.ScalarVisibilityOff()

src/opengeodeweb_viewer/rpc/generic/generic_protocols.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def register(self, rpc_params: RpcParams) -> None:
3737
)
3838
params = schemas.Register.from_dict(rpc_params)
3939
data_id = params.id
40-
specific_params = {"id": data_id}
40+
specific_params = {"id": data_id, "name": params.name}
4141
viewer_object = self.get_viewer_data(data_id).viewer_object
4242
if viewer_object == "mesh":
4343
self.mesh_protocols.registerMesh(specific_params)

src/opengeodeweb_viewer/rpc/generic/schemas/register.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@
55
"id": {
66
"type": "string",
77
"minLength": 1
8+
},
9+
"name": {
10+
"type": "string"
811
}
912
},
1013
"required": [
11-
"id"
14+
"id",
15+
"name"
1216
],
1317
"additionalProperties": false
1418
}

src/opengeodeweb_viewer/rpc/generic/schemas/register.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ def __post_init__(self) -> None:
88
print(self, flush=True)
99

1010
id: str
11+
name: str

src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,15 @@ def registerMesh(self, rpc_params: RpcParams) -> None:
4444
params = schemas.Register.from_dict(rpc_params)
4545
data_id = params.id
4646
try:
47-
file_name = str(self.get_viewer_data(data_id).viewable_file)
47+
viewer_data = self.get_viewer_data(data_id)
48+
file_name = str(viewer_data.viewable_file)
49+
4850
reader = vtkXMLGenericDataObjectReader()
4951
reader.SetFileName(os.path.join(self.DATA_FOLDER_PATH, data_id, file_name))
5052
reader.Update()
53+
dataset = reader.GetOutputDataObject(0)
54+
if dataset:
55+
dataset.SetObjectName(params.name)
5156
mapper = vtkDataSetMapper()
5257
mapper.SetInputConnection(reader.GetOutputPort())
5358
data = VtkPipeline(reader, mapper)
@@ -167,6 +172,10 @@ def setupColorMap(
167172
data.mapper.SetUseLookupTableScalarRange(False)
168173
data.mapper.InterpolateScalarsBeforeMappingOn()
169174

175+
data.scalarBar.SetLookupTable(lut)
176+
data.scalarBar.SetVisibility(True)
177+
self.update_scalar_bars_layout()
178+
170179
@exportRpc(mesh_prefix + mesh_schemas_dict["highlight"]["rpc"])
171180
def setMeshhighlight(self, rpc_params: RpcParams) -> None:
172181
validate_schema(

src/opengeodeweb_viewer/rpc/mesh/schemas/register.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@
55
"id": {
66
"type": "string",
77
"minLength": 1
8+
},
9+
"name": {
10+
"type": "string"
811
}
912
},
1013
"required": [
11-
"id"
14+
"id",
15+
"name"
1216
],
1317
"additionalProperties": false
1418
}

src/opengeodeweb_viewer/rpc/mesh/schemas/register.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ def __post_init__(self) -> None:
88
print(self, flush=True)
99

1010
id: str
11+
name: str

src/opengeodeweb_viewer/rpc/model/model_protocols.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,14 +218,18 @@ def registerModel(self, rpc_params: RpcParams) -> None:
218218
params = schemas.Register.from_dict(rpc_params)
219219
data_id = params.id
220220
try:
221-
file_name = str(self.get_viewer_data(data_id).viewable_file)
221+
viewer_data = self.get_viewer_data(data_id)
222+
file_name = str(viewer_data.viewable_file)
223+
222224
reader = vtkXMLMultiBlockDataReader()
223225
reader.SetFileName(os.path.join(self.DATA_FOLDER_PATH, data_id, file_name))
224226
reader.Update()
225227
filter = vtkGeometryFilter()
226228
filter.SetInputConnection(reader.GetOutputPort())
227229
filter.Update()
228230
geometry_output = filter.GetOutputDataObject(0)
231+
if geometry_output:
232+
geometry_output.SetObjectName(params.name)
229233
mapper = vtkCompositePolyDataMapper()
230234
mapper.SetInputDataObject(geometry_output)
231235
attributes = vtkCompositeDataDisplayAttributes()

0 commit comments

Comments
 (0)