@geode/opengeodeweb-front 10.3.2-rc.1 → 10.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/components/DragAndDrop.vue +16 -27
- package/app/components/FileUploader.vue +34 -17
- package/app/components/GlassCard.vue +50 -0
- package/app/components/HybridRenderingView.vue +1 -2
- package/app/components/RemoteRenderingView.vue +1 -1
- package/app/components/Screenshot.vue +47 -36
- package/app/components/Stepper.vue +44 -11
- package/app/components/Viewer/ContextMenuItem.vue +16 -5
- package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +1 -9
- package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +1 -9
- package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +1 -9
- package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +1 -9
- package/app/components/Viewer/Tree/ObjectTree.vue +1 -0
- package/app/components/ZScaling.vue +47 -37
- package/package.json +3 -3
- package/tests/integration/microservices/viewer/requirements.txt +1 -1
- package/app/components/OptionCard.vue +0 -55
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
loading,
|
|
6
|
-
showExtensions,
|
|
7
|
-
idleText,
|
|
8
|
-
dropText,
|
|
9
|
-
loadingText,
|
|
10
|
-
} = defineProps({
|
|
2
|
+
import GlassCard from "@ogw_front/components/GlassCard"
|
|
3
|
+
|
|
4
|
+
const props = defineProps({
|
|
11
5
|
multiple: { type: Boolean, default: false },
|
|
12
6
|
accept: { type: String, default: "" },
|
|
13
7
|
loading: { type: Boolean, default: false },
|
|
@@ -41,29 +35,26 @@
|
|
|
41
35
|
|
|
42
36
|
<template>
|
|
43
37
|
<v-hover v-slot="{ isHovering, props: hoverProps }">
|
|
44
|
-
<
|
|
38
|
+
<GlassCard
|
|
45
39
|
v-bind="hoverProps"
|
|
46
|
-
class="text-center cursor-pointer"
|
|
40
|
+
class="text-center cursor-pointer overflow-hidden border-opacity-10 border-white"
|
|
47
41
|
:class="{
|
|
48
42
|
'elevation-4': isHovering || isDragging,
|
|
49
43
|
'elevation-0': !(isHovering || isDragging),
|
|
50
44
|
}"
|
|
51
45
|
:style="{
|
|
52
46
|
position: 'relative',
|
|
53
|
-
|
|
54
|
-
transition: 'all 0.3s ease',
|
|
47
|
+
transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',
|
|
55
48
|
background:
|
|
56
49
|
isHovering || isDragging
|
|
57
|
-
? 'rgba(
|
|
58
|
-
: 'rgba(
|
|
59
|
-
border: `2px dashed ${
|
|
60
|
-
isHovering || isDragging ? 'rgb(var(--v-theme-primary))' : '#e0e0e0'
|
|
61
|
-
}`,
|
|
50
|
+
? 'rgba(255, 255, 255, 0.08) !important'
|
|
51
|
+
: 'rgba(255, 255, 255, 0.03) !important',
|
|
62
52
|
transform: isHovering || isDragging ? 'translateY(-2px)' : 'none',
|
|
63
53
|
pointerEvents: loading ? 'none' : 'auto',
|
|
64
54
|
opacity: loading ? 0.6 : 1,
|
|
65
55
|
}"
|
|
66
|
-
|
|
56
|
+
variant="panel"
|
|
57
|
+
padding="pa-0"
|
|
67
58
|
@click="triggerFileDialog"
|
|
68
59
|
@dragover.prevent="isDragging = true"
|
|
69
60
|
@dragleave.prevent="isDragging = false"
|
|
@@ -72,8 +63,9 @@
|
|
|
72
63
|
<v-card-text class="pa-8">
|
|
73
64
|
<v-sheet
|
|
74
65
|
class="mx-auto mb-6 d-flex align-center justify-center"
|
|
75
|
-
:color="
|
|
76
|
-
|
|
66
|
+
:color="
|
|
67
|
+
isHovering || isDragging ? 'white' : 'rgba(255, 255, 255, 0.1)'
|
|
68
|
+
"
|
|
77
69
|
rounded="circle"
|
|
78
70
|
width="80"
|
|
79
71
|
height="80"
|
|
@@ -82,16 +74,13 @@
|
|
|
82
74
|
<v-icon
|
|
83
75
|
:icon="loading ? 'mdi-loading' : 'mdi-cloud-upload'"
|
|
84
76
|
size="40"
|
|
85
|
-
:color="isHovering || isDragging ? '
|
|
77
|
+
:color="isHovering || isDragging ? 'primary' : 'white'"
|
|
86
78
|
:class="{ rotating: loading }"
|
|
87
79
|
/>
|
|
88
80
|
</v-sheet>
|
|
89
81
|
|
|
90
82
|
<v-card-title
|
|
91
|
-
class="text-h6 font-weight-bold justify-center pa-0 mb-1"
|
|
92
|
-
:class="
|
|
93
|
-
isHovering || isDragging ? 'text-primary' : 'text-grey-darken-2'
|
|
94
|
-
"
|
|
83
|
+
class="text-h6 font-weight-bold justify-center pa-0 mb-1 text-white"
|
|
95
84
|
style="transition: color 0.3s ease"
|
|
96
85
|
>
|
|
97
86
|
{{ loading ? loadingText : isDragging ? dropText : idleText }}
|
|
@@ -110,7 +99,7 @@
|
|
|
110
99
|
:accept="accept"
|
|
111
100
|
@change="handleFileSelect"
|
|
112
101
|
/>
|
|
113
|
-
</
|
|
102
|
+
</GlassCard>
|
|
114
103
|
</v-hover>
|
|
115
104
|
</template>
|
|
116
105
|
|
|
@@ -81,43 +81,60 @@
|
|
|
81
81
|
@files-selected="processSelectedFiles"
|
|
82
82
|
/>
|
|
83
83
|
|
|
84
|
-
<v-card-text v-if="internal_files.length" class="mt-
|
|
85
|
-
<v-sheet class="d-flex align-center mb-
|
|
86
|
-
<v-icon icon="mdi-file-check" class="mr-
|
|
87
|
-
<span class="text-subtitle-
|
|
88
|
-
|
|
84
|
+
<v-card-text v-if="internal_files.length" class="mt-6">
|
|
85
|
+
<v-sheet class="d-flex align-center mb-4" color="transparent">
|
|
86
|
+
<v-icon icon="mdi-file-check" class="mr-3" color="primary" size="24" />
|
|
87
|
+
<span class="text-subtitle-1 font-weight-bold text-white">
|
|
88
|
+
Selected Files
|
|
89
|
+
</span>
|
|
90
|
+
<v-chip
|
|
91
|
+
size="small"
|
|
92
|
+
class="ml-3 bg-white-opacity-10"
|
|
93
|
+
color="white"
|
|
94
|
+
variant="flat"
|
|
95
|
+
>
|
|
89
96
|
{{ internal_files.length }}
|
|
90
97
|
</v-chip>
|
|
91
98
|
</v-sheet>
|
|
92
99
|
|
|
93
|
-
<v-sheet class="d-flex flex-wrap
|
|
100
|
+
<v-sheet class="d-flex flex-wrap ga-2" color="transparent">
|
|
94
101
|
<v-chip
|
|
95
102
|
v-for="(file, index) in internal_files"
|
|
96
103
|
:key="index"
|
|
97
104
|
closable
|
|
98
|
-
size="
|
|
99
|
-
color="
|
|
100
|
-
variant="
|
|
101
|
-
class="font-weight-medium"
|
|
105
|
+
size="default"
|
|
106
|
+
color="white"
|
|
107
|
+
variant="outlined"
|
|
108
|
+
class="font-weight-medium glass-ui border-opacity-10 px-4"
|
|
109
|
+
style="background: rgba(255, 255, 255, 0.05) !important"
|
|
102
110
|
@click:close="removeFile(index)"
|
|
103
111
|
>
|
|
104
|
-
<v-icon start size="
|
|
105
|
-
{{ file.name }}
|
|
112
|
+
<v-icon start size="18" color="primary">mdi-file-outline</v-icon>
|
|
113
|
+
<span class="text-white">{{ file.name }}</span>
|
|
114
|
+
<template #close>
|
|
115
|
+
<v-icon size="16" class="ml-2 opacity-60 hover-opacity-100"
|
|
116
|
+
>mdi-close-circle</v-icon
|
|
117
|
+
>
|
|
118
|
+
</template>
|
|
106
119
|
</v-chip>
|
|
107
120
|
</v-sheet>
|
|
108
121
|
</v-card-text>
|
|
109
122
|
|
|
110
|
-
<v-card-actions
|
|
123
|
+
<v-card-actions
|
|
124
|
+
v-if="!auto_upload && internal_files.length"
|
|
125
|
+
class="mt-6 pa-0"
|
|
126
|
+
>
|
|
111
127
|
<v-btn
|
|
112
128
|
color="primary"
|
|
113
|
-
variant="
|
|
129
|
+
variant="flat"
|
|
114
130
|
size="large"
|
|
115
|
-
rounded="
|
|
131
|
+
rounded="xl"
|
|
116
132
|
:loading="loading"
|
|
117
|
-
class="text-none px-
|
|
133
|
+
class="text-none px-6 font-weight-bold custom-upload-btn"
|
|
134
|
+
block
|
|
118
135
|
@click="upload_files"
|
|
119
136
|
>
|
|
120
|
-
<v-icon start size="
|
|
137
|
+
<v-icon start size="22">mdi-cloud-upload</v-icon>
|
|
121
138
|
Upload {{ internal_files.length }} file<span
|
|
122
139
|
v-if="internal_files.length > 1"
|
|
123
140
|
>s</span
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
defineProps({
|
|
3
|
+
variant: {
|
|
4
|
+
type: String,
|
|
5
|
+
default: "panel",
|
|
6
|
+
validator: (v) => ["panel", "ui"].includes(v),
|
|
7
|
+
},
|
|
8
|
+
rounded: { type: String, default: "xl" },
|
|
9
|
+
padding: { type: String, default: "pa-6" },
|
|
10
|
+
theme: { type: String, default: null },
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
const attrs = useAttrs()
|
|
14
|
+
const isInteractive = computed(() => !!attrs.onClick)
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<template>
|
|
18
|
+
<v-card
|
|
19
|
+
v-bind="$attrs"
|
|
20
|
+
@mousedown.stop
|
|
21
|
+
@click.stop
|
|
22
|
+
@dblclick.stop
|
|
23
|
+
@wheel.stop
|
|
24
|
+
@contextmenu.stop
|
|
25
|
+
flat
|
|
26
|
+
:ripple="isInteractive"
|
|
27
|
+
:theme="theme || (variant === 'panel' ? 'dark' : undefined)"
|
|
28
|
+
:class="[
|
|
29
|
+
variant === 'panel' ? 'glass-panel' : 'glass-ui',
|
|
30
|
+
'border-thin',
|
|
31
|
+
`rounded-${rounded}`,
|
|
32
|
+
padding,
|
|
33
|
+
{ 'cursor-default': !isInteractive },
|
|
34
|
+
]"
|
|
35
|
+
>
|
|
36
|
+
<template v-for="(_, name) in $slots" #[name]="slotProps">
|
|
37
|
+
<slot :name="name" v-bind="slotProps || {}" />
|
|
38
|
+
</template>
|
|
39
|
+
</v-card>
|
|
40
|
+
</template>
|
|
41
|
+
|
|
42
|
+
<style scoped>
|
|
43
|
+
.border-thin {
|
|
44
|
+
border-style: solid !important;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.cursor-default {
|
|
48
|
+
cursor: default !important;
|
|
49
|
+
}
|
|
50
|
+
</style>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import VeaseViewToolbar from "@ogw_front/components/VeaseViewToolbar"
|
|
3
|
-
|
|
4
3
|
import { useHybridViewerStore } from "@ogw_front/stores/hybrid_viewer"
|
|
5
4
|
import { useViewerStore } from "@ogw_front/stores/viewer"
|
|
6
5
|
|
|
@@ -52,7 +51,7 @@
|
|
|
52
51
|
|
|
53
52
|
<template>
|
|
54
53
|
<ClientOnly>
|
|
55
|
-
<div class="fill-height" style="position: relative">
|
|
54
|
+
<div class="fill-height" style="position: relative; height: 100%">
|
|
56
55
|
<VeaseViewToolbar />
|
|
57
56
|
<slot name="ui"></slot>
|
|
58
57
|
<v-col
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import fileDownload from "js-file-download"
|
|
3
|
+
import GlassCard from "@ogw_front/components/GlassCard"
|
|
3
4
|
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json"
|
|
4
5
|
|
|
5
6
|
import { useViewerStore } from "@ogw_front/stores/viewer"
|
|
@@ -46,49 +47,59 @@
|
|
|
46
47
|
})
|
|
47
48
|
</script>
|
|
48
49
|
<template>
|
|
49
|
-
<
|
|
50
|
+
<GlassCard
|
|
50
51
|
v-if="show_dialog"
|
|
52
|
+
@click.stop
|
|
51
53
|
title="Take a screenshot"
|
|
52
54
|
:width="width"
|
|
53
|
-
|
|
55
|
+
:ripple="false"
|
|
56
|
+
variant="panel"
|
|
57
|
+
padding="pa-0"
|
|
58
|
+
class="position-absolute elevation-24"
|
|
54
59
|
style="z-index: 2; top: 90px; right: 55px"
|
|
55
60
|
>
|
|
56
|
-
<v-
|
|
57
|
-
<v-
|
|
58
|
-
<v-
|
|
59
|
-
<v-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<v-
|
|
63
|
-
v-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
<v-card-text class="pa-5">
|
|
62
|
+
<v-container>
|
|
63
|
+
<v-row>
|
|
64
|
+
<v-col cols="8" class="py-0">
|
|
65
|
+
<v-text-field v-model="filename" label="File name"></v-text-field>
|
|
66
|
+
</v-col>
|
|
67
|
+
<v-col cols="4" class="py-0">
|
|
68
|
+
<v-select
|
|
69
|
+
v-model="output_extension"
|
|
70
|
+
:items="output_extensions"
|
|
71
|
+
label="Extension"
|
|
72
|
+
required
|
|
73
|
+
/>
|
|
74
|
+
</v-col>
|
|
75
|
+
</v-row>
|
|
70
76
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
<v-row>
|
|
78
|
+
<v-col cols="12" class="py-0">
|
|
79
|
+
<v-switch
|
|
80
|
+
v-model="include_background"
|
|
81
|
+
:disabled="output_extension !== 'png'"
|
|
82
|
+
label="Include background"
|
|
83
|
+
inset
|
|
84
|
+
></v-switch>
|
|
85
|
+
</v-col>
|
|
86
|
+
</v-row>
|
|
87
|
+
</v-container>
|
|
88
|
+
</v-card-text>
|
|
82
89
|
|
|
83
90
|
<template #actions>
|
|
84
|
-
<v-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
<v-card-actions class="justify-center pb-4">
|
|
92
|
+
<v-btn variant="text" color="primary" @click="emit('close')"
|
|
93
|
+
>Close</v-btn
|
|
94
|
+
>
|
|
95
|
+
<v-btn
|
|
96
|
+
variant="outlined"
|
|
97
|
+
:disabled="!filename || !output_extension"
|
|
98
|
+
color="primary"
|
|
99
|
+
@click="takeScreenshot()"
|
|
100
|
+
>Screenshot</v-btn
|
|
101
|
+
>
|
|
102
|
+
</v-card-actions>
|
|
92
103
|
</template>
|
|
93
|
-
</
|
|
104
|
+
</GlassCard>
|
|
94
105
|
</template>
|
|
@@ -8,16 +8,19 @@
|
|
|
8
8
|
|
|
9
9
|
<template>
|
|
10
10
|
<v-card-item class="flex-shrink-0 pa-0">
|
|
11
|
-
<
|
|
12
|
-
class="
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
<div class="px-8 pt-8 pb-4">
|
|
12
|
+
<div class="d-flex align-center mb-2">
|
|
13
|
+
<v-icon
|
|
14
|
+
icon="mdi-file-upload-outline"
|
|
15
|
+
class="mr-3 title-text"
|
|
16
|
+
size="32"
|
|
17
|
+
/>
|
|
18
|
+
<h2 class="title-text">Import Data</h2>
|
|
19
|
+
</div>
|
|
20
|
+
<p class="text-white text-body-1">
|
|
21
|
+
Select and configure your files for a seamless import.
|
|
22
|
+
</p>
|
|
23
|
+
</div>
|
|
21
24
|
</v-card-item>
|
|
22
25
|
|
|
23
26
|
<v-stepper-vertical
|
|
@@ -25,7 +28,7 @@
|
|
|
25
28
|
@update:model-value="current_step_index = $event - 1"
|
|
26
29
|
flat
|
|
27
30
|
non-linear
|
|
28
|
-
class="pa-0 ma-0 bg-
|
|
31
|
+
class="pa-0 ma-0 bg-transparent rounded-xl overflow-hidden custom-stepper"
|
|
29
32
|
>
|
|
30
33
|
<Step
|
|
31
34
|
v-for="(step, index) in steps"
|
|
@@ -35,3 +38,33 @@
|
|
|
35
38
|
/>
|
|
36
39
|
</v-stepper-vertical>
|
|
37
40
|
</template>
|
|
41
|
+
|
|
42
|
+
<style scoped>
|
|
43
|
+
.custom-stepper :deep(.v-stepper-vertical-item) {
|
|
44
|
+
background: transparent !important;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.custom-stepper :deep(.v-stepper-vertical-item__content) {
|
|
48
|
+
background: rgba(255, 255, 255, 0.03) !important;
|
|
49
|
+
border-radius: 12px;
|
|
50
|
+
margin: 8px 16px 16px 40px !important;
|
|
51
|
+
padding: 16px !important;
|
|
52
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.custom-stepper :deep(.v-avatar) {
|
|
56
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
57
|
+
background: rgba(255, 255, 255, 0.1) !important;
|
|
58
|
+
color: white !important;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.custom-stepper :deep(.v-stepper-vertical-item--active .v-avatar) {
|
|
62
|
+
background: #3c9983 !important;
|
|
63
|
+
border-color: #3c9983;
|
|
64
|
+
color: #0a0f0e !important;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.custom-stepper :deep(.v-stepper-vertical-item__connector) {
|
|
68
|
+
border-color: rgba(255, 255, 255, 0.1) !important;
|
|
69
|
+
}
|
|
70
|
+
</style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import
|
|
3
|
-
import { useMenuStore } from "@ogw_front/stores/menu"
|
|
2
|
+
import GlassCard from "@ogw_front/components/GlassCard"
|
|
4
3
|
import { useTheme } from "vuetify"
|
|
4
|
+
import { useMenuStore } from "@ogw_front/stores/menu"
|
|
5
5
|
|
|
6
6
|
const CARD_WIDTH = 320
|
|
7
7
|
const CARD_HEIGHT = 500
|
|
@@ -99,9 +99,20 @@
|
|
|
99
99
|
color="transparent"
|
|
100
100
|
@click.stop
|
|
101
101
|
>
|
|
102
|
-
<
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
<GlassCard
|
|
103
|
+
@click.stop
|
|
104
|
+
:title="tooltip"
|
|
105
|
+
width="320"
|
|
106
|
+
:max-height="maxCardHeight"
|
|
107
|
+
:ripple="false"
|
|
108
|
+
variant="panel"
|
|
109
|
+
padding="pa-0"
|
|
110
|
+
class="elevation-24"
|
|
111
|
+
>
|
|
112
|
+
<v-card-text class="pa-5">
|
|
113
|
+
<slot name="options" />
|
|
114
|
+
</v-card-text>
|
|
115
|
+
</GlassCard>
|
|
105
116
|
</v-sheet>
|
|
106
117
|
</v-sheet>
|
|
107
118
|
</template>
|
|
@@ -113,15 +113,7 @@
|
|
|
113
113
|
<v-icon size="30" icon="mdi-ruler" v-tooltip:left="'Width'" />
|
|
114
114
|
</v-col>
|
|
115
115
|
<v-col justify="center">
|
|
116
|
-
<v-slider
|
|
117
|
-
v-model="size"
|
|
118
|
-
hide-details
|
|
119
|
-
min="0"
|
|
120
|
-
max="20"
|
|
121
|
-
step="2"
|
|
122
|
-
thumb-color="black"
|
|
123
|
-
ticks
|
|
124
|
-
/>
|
|
116
|
+
<v-slider v-model="size" hide-details min="0" max="20" step="2" />
|
|
125
117
|
</v-col>
|
|
126
118
|
</v-row>
|
|
127
119
|
<v-row>
|
|
@@ -114,15 +114,7 @@
|
|
|
114
114
|
<v-icon size="30" icon="mdi-ruler" v-tooltip:left="'Width'" />
|
|
115
115
|
</v-col>
|
|
116
116
|
<v-col justify="center">
|
|
117
|
-
<v-slider
|
|
118
|
-
v-model="size"
|
|
119
|
-
hide-details
|
|
120
|
-
min="0"
|
|
121
|
-
max="20"
|
|
122
|
-
step="2"
|
|
123
|
-
thumb-color="black"
|
|
124
|
-
ticks
|
|
125
|
-
/>
|
|
117
|
+
<v-slider v-model="size" hide-details min="0" max="20" step="2" />
|
|
126
118
|
</v-col>
|
|
127
119
|
</v-row>
|
|
128
120
|
<v-row>
|
|
@@ -89,15 +89,7 @@
|
|
|
89
89
|
<v-icon size="30" icon="mdi-ruler" v-tooltip:left="'Size'" />
|
|
90
90
|
</v-col>
|
|
91
91
|
<v-col justify="center">
|
|
92
|
-
<v-slider
|
|
93
|
-
v-model="size"
|
|
94
|
-
hide-details
|
|
95
|
-
min="0"
|
|
96
|
-
max="20"
|
|
97
|
-
step="2"
|
|
98
|
-
thumb-color="black"
|
|
99
|
-
ticks
|
|
100
|
-
/>
|
|
92
|
+
<v-slider v-model="size" hide-details min="0" max="20" step="2" />
|
|
101
93
|
</v-col>
|
|
102
94
|
</v-row>
|
|
103
95
|
<v-row>
|
|
@@ -88,15 +88,7 @@
|
|
|
88
88
|
<v-icon size="30" icon="mdi-ruler" v-tooltip:left="'Size'" />
|
|
89
89
|
</v-col>
|
|
90
90
|
<v-col justify="center">
|
|
91
|
-
<v-slider
|
|
92
|
-
v-model="size"
|
|
93
|
-
hide-details
|
|
94
|
-
min="0"
|
|
95
|
-
max="20"
|
|
96
|
-
step="2"
|
|
97
|
-
thumb-color="black"
|
|
98
|
-
ticks
|
|
99
|
-
/>
|
|
91
|
+
<v-slider v-model="size" hide-details min="0" max="20" step="2" />
|
|
100
92
|
</v-col>
|
|
101
93
|
</v-row>
|
|
102
94
|
<v-row>
|
|
@@ -1,54 +1,64 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import GlassCard from "@ogw_front/components/GlassCard"
|
|
3
|
+
|
|
2
4
|
const zScale = defineModel({ type: Number, default: 1 })
|
|
3
5
|
const { width } = defineProps({
|
|
4
6
|
width: { type: Number, default: 400 },
|
|
5
7
|
})
|
|
6
8
|
</script>
|
|
7
9
|
<template>
|
|
8
|
-
<
|
|
10
|
+
<GlassCard
|
|
11
|
+
@click.stop
|
|
9
12
|
title="Z Scaling Control"
|
|
10
13
|
:width="width"
|
|
11
|
-
|
|
14
|
+
:ripple="false"
|
|
15
|
+
variant="panel"
|
|
16
|
+
padding="pa-0"
|
|
17
|
+
class="position-absolute rounded-xl elevation-24"
|
|
12
18
|
style="z-index: 2; top: 90px; right: 55px"
|
|
13
19
|
>
|
|
14
|
-
<v-
|
|
15
|
-
<v-
|
|
16
|
-
<v-
|
|
17
|
-
<v-
|
|
18
|
-
v-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
</v-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
</v-
|
|
42
|
-
</v-
|
|
43
|
-
</v-
|
|
20
|
+
<v-card-text class="pa-5">
|
|
21
|
+
<v-container>
|
|
22
|
+
<v-row>
|
|
23
|
+
<v-col cols="12" class="py-2">
|
|
24
|
+
<v-slider
|
|
25
|
+
v-model="zScale"
|
|
26
|
+
:min="1"
|
|
27
|
+
:max="10"
|
|
28
|
+
:step="0.2"
|
|
29
|
+
label="Z Scale"
|
|
30
|
+
thumb-label
|
|
31
|
+
/>
|
|
32
|
+
</v-col>
|
|
33
|
+
</v-row>
|
|
34
|
+
<v-row>
|
|
35
|
+
<v-col cols="12" class="py-2">
|
|
36
|
+
<v-text-field
|
|
37
|
+
v-model.number="zScale"
|
|
38
|
+
type="number"
|
|
39
|
+
label="Z Scale Value"
|
|
40
|
+
outlined
|
|
41
|
+
dense
|
|
42
|
+
hide-details
|
|
43
|
+
step="0.1"
|
|
44
|
+
:min="1"
|
|
45
|
+
/>
|
|
46
|
+
</v-col>
|
|
47
|
+
</v-row>
|
|
48
|
+
</v-container>
|
|
49
|
+
</v-card-text>
|
|
44
50
|
|
|
45
51
|
<template #actions>
|
|
46
|
-
<v-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
<v-card-actions class="justify-center pb-4">
|
|
53
|
+
<v-btn variant="text" color="white" @click="$emit('close')"
|
|
54
|
+
>Close</v-btn
|
|
55
|
+
>
|
|
56
|
+
<v-btn variant="outlined" color="white" @click="$emit('close')"
|
|
57
|
+
>Apply</v-btn
|
|
58
|
+
>
|
|
59
|
+
</v-card-actions>
|
|
50
60
|
</template>
|
|
51
|
-
</
|
|
61
|
+
</GlassCard>
|
|
52
62
|
</template>
|
|
53
63
|
|
|
54
64
|
<style scoped>
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@geode/opengeodeweb-front",
|
|
3
3
|
"description": "OpenSource Vue/Nuxt/Pinia/Vuetify framework for web applications",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "10.3.2
|
|
5
|
+
"version": "10.3.2",
|
|
6
6
|
"main": "./nuxt.config.js",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"lint": "eslint --fix --ext .js,.vue --ignore-path .gitignore .",
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"build": ""
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@geode/opengeodeweb-back": "
|
|
18
|
-
"@geode/opengeodeweb-viewer": "
|
|
17
|
+
"@geode/opengeodeweb-back": "latest",
|
|
18
|
+
"@geode/opengeodeweb-viewer": "latest",
|
|
19
19
|
"@kitware/vtk.js": "33.3.0",
|
|
20
20
|
"@mdi/font": "7.4.47",
|
|
21
21
|
"@pinia/nuxt": "0.11.3",
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
import { useTheme } from "vuetify"
|
|
3
|
-
|
|
4
|
-
const theme = useTheme()
|
|
5
|
-
const primaryColor = computed(() => theme.current.value.colors.primary)
|
|
6
|
-
|
|
7
|
-
const { title, width, maxHeight } = defineProps({
|
|
8
|
-
title: { type: String, default: "" },
|
|
9
|
-
width: { type: [Number, String], default: 320 },
|
|
10
|
-
maxHeight: { type: [Number, String], default: 500 },
|
|
11
|
-
})
|
|
12
|
-
</script>
|
|
13
|
-
<template>
|
|
14
|
-
<v-card
|
|
15
|
-
@click.stop
|
|
16
|
-
:title="title"
|
|
17
|
-
class="option-card rounded-xl border-thin elevation-24"
|
|
18
|
-
:width="width"
|
|
19
|
-
:max-height="maxHeight"
|
|
20
|
-
:ripple="false"
|
|
21
|
-
theme="dark"
|
|
22
|
-
>
|
|
23
|
-
<v-card-text class="pa-5">
|
|
24
|
-
<slot />
|
|
25
|
-
</v-card-text>
|
|
26
|
-
<v-card-actions v-if="$slots.actions" class="justify-center pb-4">
|
|
27
|
-
<slot name="actions" />
|
|
28
|
-
</v-card-actions>
|
|
29
|
-
</v-card>
|
|
30
|
-
</template>
|
|
31
|
-
|
|
32
|
-
<style scoped>
|
|
33
|
-
.option-card {
|
|
34
|
-
background-color: rgba(30, 30, 30, 0.85) !important;
|
|
35
|
-
backdrop-filter: blur(20px);
|
|
36
|
-
-webkit-backdrop-filter: blur(20px);
|
|
37
|
-
border-color: rgba(255, 255, 255, 0.15) !important;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
::v-deep(.v-list-item:hover) {
|
|
41
|
-
background-color: rgba(255, 255, 255, 0.1);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
::v-deep(.v-slider-track__fill),
|
|
45
|
-
::v-deep(.v-selection-control--dirty .v-switch__track) {
|
|
46
|
-
background-color: v-bind(primaryColor) !important;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
::v-deep(.v-btn) {
|
|
50
|
-
border-radius: 8px;
|
|
51
|
-
text-transform: none;
|
|
52
|
-
font-weight: 500;
|
|
53
|
-
letter-spacing: normal;
|
|
54
|
-
}
|
|
55
|
-
</style>
|