Skip to content

Commit 95c9a8c

Browse files
committed
reset camera
1 parent 3f6c333 commit 95c9a8c

File tree

8 files changed

+101
-36
lines changed

8 files changed

+101
-36
lines changed

components/CrsSelector.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,20 @@ watch(selected_crs, (new_value) => {
2929
set_crs(crs)
3030
})
3131
32-
function set_crs (crs_value) {
32+
function set_crs(crs_value) {
3333
stepper_tree[variable_to_update] = crs_value
3434
stepper_tree[variable_to_increment]++
3535
}
3636
37-
function get_selected_crs (crs_code) {
37+
function get_selected_crs(crs_code) {
3838
for (let i = 0; i <= crs_list.value.length; i++) {
3939
if (crs_list.value[i]['code'] == crs_code) {
4040
return crs_list.value[i]
4141
}
4242
}
4343
}
4444
45-
async function get_crs_table () {
45+
async function get_crs_table() {
4646
let params = new FormData()
4747
params.append('geode_object', geode_object)
4848
toggle_loading()

components/RemoteRenderingView.client.vue

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<template>
2-
<v-col v-element-size="resize" style="overflow: hidden; position: relative; z-index: 1; height: 100%; width: 100%"
3-
ref="viewer" class="viewer" @click="get_x_y" @keydown.esc="app_store.toggle_picking_mode(false)">
4-
</v-col>
2+
<div style="position: relative;">
3+
<view-toolbar />
4+
<v-col v-element-size="resize" style="overflow: hidden; position: relative; z-index: 0; height: 100%; width: 100%"
5+
ref="viewer" @click="get_x_y" @keydown.esc="app_store.toggle_picking_mode(false)">
6+
</v-col>
7+
</div>
58
</template>
69

710
<script setup>
@@ -10,23 +13,24 @@ import { useElementSize } from '@vueuse/core'
1013
1114
const viewer_store = use_viewer_store()
1215
const { picking_mode } = storeToRefs(viewer_store)
16+
const websocket_store = use_websocket_store()
17+
const { client, is_client_created } = storeToRefs(websocket_store)
1318
14-
function get_x_y (event) {
19+
function get_x_y(event) {
1520
if (picking_mode.value === true) {
1621
const { offsetX, offsetY } = event
1722
viewer_store.set_picked_point(offsetX, offsetY)
1823
}
1924
}
2025
2126
const props = defineProps({
22-
viewId: { type: String, default: '-1' },
23-
client: { type: Object, required: true }
27+
viewId: { type: String, default: '-1' }
2428
})
2529
2630
const viewer = ref(null)
2731
const { width, height } = useElementSize(viewer)
2832
29-
function resize () {
33+
function resize() {
3034
view.getCanvasView().setSize(1, 1)
3135
view.resize();
3236
}
@@ -41,7 +45,7 @@ watch(width, value => {
4145
watch(height, value => {
4246
resize()
4347
})
44-
const { client, viewId } = toRefs(props)
48+
const { viewId } = toRefs(props)
4549
const connected = ref(false)
4650
4751
const view = vtkRemoteView.newInstance({ rpcWheelEvent: 'viewport.mouse.zoom.wheel' })
@@ -72,16 +76,13 @@ onMounted(async () => {
7276
}
7377
})
7478
75-
function connect () {
79+
function connect() {
80+
if (!is_client_created.value) { return }
81+
console.log('connecting', client.value)
7682
const session = client.value.getConnection().getSession()
7783
view.setSession(session)
7884
view.setViewId(viewId.value)
7985
connected.value = true
8086
view.render()
8187
}
82-
function handleClick (event) {
83-
onClick(event)
84-
}
85-
86-
8788
</script>

components/ViewToolbar.vue

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<template>
2+
<v-row dense :class="[$style.floatToolbar, 'flex-column']">
3+
<v-col>
4+
<v-tooltip location="left">
5+
Reset camera
6+
<template #activator="{ props }">
7+
<v-btn @click.stop=reset_camera icon="mdi-crop-free" density="comfortable" v-bind="props" />
8+
</template>
9+
</v-tooltip>
10+
</v-col>
11+
</v-row>
12+
</template>
13+
14+
<script setup>
15+
const viewer_store = use_viewer_store()
16+
function reset_camera() {
17+
viewer_store.reset_camera()
18+
}
19+
</script>
20+
21+
<style module>
22+
.floatToolbar {
23+
position: absolute;
24+
z-index: 2;
25+
right: 20px;
26+
top: 20px;
27+
background-color: rgba(0, 0, 0, 0.4);
28+
border-radius: 16px;
29+
}
30+
</style>

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,21 @@
99
"lint": "eslint --fix --ext .js,.vue --ignore-path .gitignore ."
1010
},
1111
"devDependencies": {
12-
"nuxt": "^3.6.5",
1312
"eslint": "^8.47.0",
1413
"eslint-plugin-import": "^2.28.1",
1514
"eslint-plugin-nuxt": "^4.0.0",
1615
"eslint-plugin-prettier": "^5.0.0",
1716
"eslint-plugin-prettier-vue": "^4.2.0",
1817
"eslint-plugin-vue": "^9.17.0",
19-
"eslint-plugin-vuetify": "^2.0.5"
18+
"eslint-plugin-vuetify": "^2.0.5",
19+
"nuxt": "^3.6.5"
2020
},
2121
"overrides": {
2222
"vue": "latest"
2323
},
2424
"description": "OpenSource Vue/Vuetify framework for web applications",
2525
"type": "module",
26-
"version": "0.0.23",
26+
"version": "0.0.24",
2727
"main": "./nuxt.config.js",
2828
"dependencies": {
2929
"@kitware/vtk.js": "^28.8.0",
@@ -54,4 +54,4 @@
5454
"url": "https://github.com/Geode-solutions/OpenGeodeWeb-Front/issues"
5555
},
5656
"homepage": "https://github.com/Geode-solutions/OpenGeodeWeb-Front#readme"
57-
}
57+
}

protocols/vtk.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ export default function createMethods (session) {
66
reset: () => session.call('reset'),
77
reset_camera: () => session.call('reset_camera', []),
88
toggle_object_visibility: (params) => session.call('toggle_object_visibility', [params]),
9+
toggle_edge_visibility: (params) => session.call('toggle_edge_visibility', [params]),
10+
toggle_point_visibility: (params) => session.call('toggle_point_visibility', [params]),
11+
point_size: (params) => session.call('point_size', [params]),
912
apply_textures: (params) => session.call('apply_textures', [params]),
1013
get_point_position: (params) => session.call('get_point_position', [params]),
1114
update_data: (params) => session.call('update_data', [params])

stores/cloud.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { defineStore } from 'pinia'
2-
import { use_errors_store } from './errors'
32

43
export const use_cloud_store = defineStore('cloud', {
54
state: () => ({

stores/viewer.js

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ export const use_viewer_store = defineStore('viewer', {
66
picked_point: { x: null, y: null }
77
}),
88
actions: {
9-
toggle_picking_mode (value) {
9+
toggle_picking_mode(value) {
1010
this.picking_mode = value
1111
},
12-
async set_picked_point (x, y) {
12+
async set_picked_point(x, y) {
1313
const response = await get_point_position({ x, y })
1414
const { x: world_x, y: world_y } = response
1515
this.picked_point.x = world_x
1616
this.picked_point.y = world_y
1717
this.picking_mode = false
1818
},
19-
async create_object_pipeline (params) {
19+
async create_object_pipeline(params) {
2020
const websocket_store = use_websocket_store()
2121
if (websocket_store.client) {
2222
use_websocket_store().client
@@ -25,7 +25,16 @@ export const use_viewer_store = defineStore('viewer', {
2525
.catch(console.error);
2626
}
2727
},
28-
async toggle_object_visibility (params) {
28+
async reset_camera() {
29+
const websocket_store = use_websocket_store()
30+
if (websocket_store.client) {
31+
use_websocket_store().client
32+
.getRemote()
33+
.vtk.reset_camera()
34+
.catch(console.error);
35+
}
36+
},
37+
async toggle_object_visibility(params) {
2938
const websocket_store = use_websocket_store()
3039
if (websocket_store.client) {
3140
use_websocket_store().client
@@ -34,53 +43,76 @@ export const use_viewer_store = defineStore('viewer', {
3443
.catch(console.error);
3544
}
3645
},
37-
async apply_textures (params) {
46+
async toggle_edge_visibility(params) {
47+
const websocket_store = use_websocket_store()
48+
if (websocket_store.client) {
49+
use_websocket_store().client
50+
.getRemote()
51+
.vtk.toggle_edge_visibility(params)
52+
.catch(console.error);
53+
}
54+
},
55+
async toggle_point_visibility(params) {
56+
const websocket_store = use_websocket_store()
57+
if (websocket_store.client) {
58+
use_websocket_store().client
59+
.getRemote()
60+
.vtk.toggle_point_visibility(params)
61+
.catch(console.error);
62+
}
63+
},
64+
async point_size(params) {
65+
const websocket_store = use_websocket_store()
66+
if (websocket_store.client) {
67+
use_websocket_store().client
68+
.getRemote()
69+
.vtk.point_size(params)
70+
.catch(console.error);
71+
}
72+
},
73+
async apply_textures(params) {
3874
const websocket_store = use_websocket_store()
3975
if (websocket_store.client) {
4076
websocket_store.$patch({ busy: true })
4177
use_websocket_store().client
4278
.getRemote()
4379
.vtk.apply_textures(params)
4480
.catch(console.error);
45-
4681
websocket_store.$patch({ busy: false })
4782
}
4883
},
49-
async get_point_position (params) {
84+
async get_point_position(params) {
5085
const websocket_store = use_websocket_store()
5186
if (websocket_store.client) {
5287
websocket_store.$patch({ busy: true })
5388
const response = await use_websocket_store().client
5489
.getRemote()
5590
.vtk.get_point_position(params)
5691
.catch(console.error);
57-
console.log('response', response)
5892
websocket_store.$patch({ busy: false })
5993
return response
6094
}
6195
},
62-
async update_data (params) {
96+
async update_data(params) {
6397
const websocket_store = use_websocket_store()
6498
if (websocket_store.client) {
6599
websocket_store.$patch({ busy: true })
66100
const response = await use_websocket_store().client
67101
.getRemote()
68102
.vtk.update_data(params)
69103
.catch(console.error);
70-
console.log('response', response)
71104
websocket_store.$patch({ busy: false })
72105
return response
73106
}
74107
},
75-
async reset () {
108+
async reset() {
76109
const websocket_store = use_websocket_store()
77110
if (websocket_store.client) {
78111
websocket_store.$patch({ busy: true })
79112
const response = await use_websocket_store().client
80113
.getRemote()
81114
.vtk.reset()
82115
.catch(console.error);
83-
console.log('response', response)
84116
websocket_store.$patch({ busy: false })
85117
return response
86118
}

0 commit comments

Comments
 (0)