Skip to content

Commit b18c492

Browse files
committed
fix(viewer): Fix the viewer responsive
1 parent 9393b9d commit b18c492

File tree

1 file changed

+39
-32
lines changed

1 file changed

+39
-32
lines changed

components/RemoteRenderingView.vue

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<ClientOnly>
3-
<div style="position: relative; width: 100%; height: 100%">
3+
<div style="position: relative; width: 100%; height: calc(100vh - 80px)">
44
<view-toolbar />
55
<div
66
style="
@@ -35,12 +35,17 @@
3535

3636
<script setup>
3737
import vtkRemoteView from "@kitware/vtk.js/Rendering/Misc/RemoteView"
38-
import { useElementSize } from "@vueuse/core"
38+
import { useElementSize, useWindowSize } from "@vueuse/core"
3939
import viewer_schemas from "@geode/opengeodeweb-viewer/schemas.json"
4040
4141
const viewer_store = use_viewer_store()
4242
const { client, is_running, picking_mode } = storeToRefs(viewer_store)
4343
44+
const viewer = ref(null)
45+
const { width, height } = useElementSize(viewer)
46+
47+
const { width: windowWidth, height: windowHeight } = useWindowSize()
48+
4449
function get_x_y(event) {
4550
if (picking_mode.value === true) {
4651
const { offsetX, offsetY } = event
@@ -56,36 +61,38 @@
5661
viewId: { type: String, default: "-1" },
5762
})
5863
59-
const viewer = ref(null)
60-
const { width, height } = useElementSize(viewer)
61-
62-
function resize() {
63-
view.getCanvasView().setSize(0, 0)
64-
view.resize()
65-
}
66-
67-
watch(picking_mode, (value) => {
68-
const cursor = value == true ? "crosshair" : "pointer"
69-
view.getCanvasView().setCursor(cursor)
70-
})
71-
watch(width, (value) => {
72-
resize()
73-
})
74-
watch(height, (value) => {
75-
resize()
76-
})
7764
const { viewId } = toRefs(props)
7865
const connected = ref(false)
7966
8067
const view = vtkRemoteView.newInstance({
8168
rpcWheelEvent: "viewport.mouse.zoom.wheel",
8269
})
83-
// default of 0.5 causes 2x size labels on high-DPI screens. 1 good for demo, not for production.
70+
8471
if (location.hostname.split(".")[0] === "localhost") {
8572
view.setInteractiveRatio(1)
8673
}
8774
88-
watch(client, (new_client) => {
75+
function resize() {
76+
if (view) {
77+
view.getCanvasView().setSize(0, 0)
78+
view.resize()
79+
}
80+
}
81+
82+
watch([windowWidth, windowHeight], () => {
83+
resize()
84+
})
85+
86+
watch(picking_mode, (value) => {
87+
const cursor = value ? "crosshair" : "pointer"
88+
view.getCanvasView().setCursor(cursor)
89+
})
90+
91+
watch([width, height], () => {
92+
resize()
93+
})
94+
95+
watch(client, () => {
8996
connect()
9097
})
9198
@@ -96,16 +103,6 @@
96103
}
97104
})
98105
99-
onMounted(async () => {
100-
if (process.client) {
101-
window.addEventListener("resize", resize)
102-
await nextTick()
103-
view.setContainer(viewer.value.$el)
104-
connect()
105-
resize()
106-
}
107-
})
108-
109106
function connect() {
110107
if (!is_running.value) {
111108
return
@@ -116,6 +113,16 @@
116113
connected.value = true
117114
view.render()
118115
}
116+
117+
onMounted(async () => {
118+
if (process.client) {
119+
window.addEventListener("resize", resize)
120+
await nextTick()
121+
view.setContainer(viewer.value.$el)
122+
connect()
123+
resize()
124+
}
125+
})
119126
</script>
120127

121128
<style scoped>

0 commit comments

Comments
 (0)