@3cr/viewer-browser 0.0.124 → 0.0.125
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/dist/Viewer3CR.js +12 -12
- package/dist/Viewer3CR.mjs +6219 -5801
- package/dist/Viewer3CR.umd.js +12 -12
- package/package.json +1 -1
- package/src/components/modal/MftpWebGL3DRModal.vue +3 -0
- package/src/demo/options.ts +2 -2
- package/src/demo/patient/DemoPatientSendToPartyModal.vue +174 -0
- package/src/demo/patient/DemoPatientShareToMobileModal.vue +8 -4
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
<DemoLicenceInfoModal v-model:modal="m_demo" :is-modal-open="value" />
|
|
5
5
|
<DemoPatientInfoModal v-model:modal="m_demoPatient" :is-modal-open="value" />
|
|
6
6
|
<DemoPatientShareToMobileModal v-model:modal="m_demoPatientShareToMobile" />
|
|
7
|
+
<DemoPatientSendToPartyModal v-model:modal="m_demoPatientSendToParty" />
|
|
7
8
|
<v-dialog
|
|
8
9
|
data-vuetify
|
|
9
10
|
id="cr-viewer"
|
|
@@ -772,6 +773,7 @@ import {
|
|
|
772
773
|
isDemo,
|
|
773
774
|
m_demo,
|
|
774
775
|
m_demoPatient,
|
|
776
|
+
m_demoPatientSendToParty,
|
|
775
777
|
m_demoPatientShareToMobile,
|
|
776
778
|
} from "@/demo/options";
|
|
777
779
|
import { handleNotification } from "@/notifications/notification";
|
|
@@ -807,6 +809,7 @@ import { ViewerAsyncCallback, ViewerCallback } from "@/models/Callbacks";
|
|
|
807
809
|
import DemoPatientInfoModal from "@/demo/patient/DemoPatientInfoModal.vue";
|
|
808
810
|
import DemoLicenceInfoModal from "@/demo/licence/DemoLicenceInfoModal.vue";
|
|
809
811
|
import DemoPatientShareToMobileModal from "@/demo/patient/DemoPatientShareToMobileModal.vue";
|
|
812
|
+
import DemoPatientSendToPartyModal from "@/demo/patient/DemoPatientSendToPartyModal.vue";
|
|
810
813
|
|
|
811
814
|
export interface Props {
|
|
812
815
|
payload?: LoadViewerPayload;
|
package/src/demo/options.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const isDemo = ref<boolean>(false);
|
|
|
13
13
|
export const m_demo = ref<boolean>(false);
|
|
14
14
|
export const m_demoPatient = ref<boolean>(false);
|
|
15
15
|
export const m_demoPatientShareToMobile = ref<boolean>(false);
|
|
16
|
+
export const m_demoPatientSendToParty = ref<boolean>(false);
|
|
16
17
|
export const demoPatientTitle = ref<string>("");
|
|
17
18
|
export const demoPatientSubtitles = ref<Array<string>>([]);
|
|
18
19
|
export const demoLicenceTitle = ref<string>("");
|
|
@@ -115,8 +116,7 @@ export const demoPatientOptions: LoadViewerOptions = {
|
|
|
115
116
|
m_demoPatient.value = true;
|
|
116
117
|
},
|
|
117
118
|
OnSendTo3rdParty: () => {
|
|
118
|
-
|
|
119
|
-
// m_demoPatient.value = true;
|
|
119
|
+
m_demoPatientSendToParty.value = true;
|
|
120
120
|
},
|
|
121
121
|
OnShareToMobile: () => {
|
|
122
122
|
m_demoPatientShareToMobile.value = true;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed, ref } from "vue";
|
|
3
|
+
import { openUrl } from "@/demo/options";
|
|
4
|
+
|
|
5
|
+
export interface Props {
|
|
6
|
+
modal: boolean;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const emit = defineEmits<{
|
|
10
|
+
"update:modal": [value: boolean];
|
|
11
|
+
}>();
|
|
12
|
+
|
|
13
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
14
|
+
modal: false,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const step2 = ref<boolean>(false);
|
|
18
|
+
const user = ref<string>("");
|
|
19
|
+
const users = ref<Array<string>>([]);
|
|
20
|
+
const modalState = computed({
|
|
21
|
+
get() {
|
|
22
|
+
return props.modal;
|
|
23
|
+
},
|
|
24
|
+
set(value) {
|
|
25
|
+
emit("update:modal", value);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
function add() {
|
|
30
|
+
if (user.value && !users.value.includes(user.value) && isValid()) {
|
|
31
|
+
users.value.push(user.value);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function isValid() {
|
|
36
|
+
return /^(([^<>()[\]\\.,;:\s@']+(\.[^<>()\\[\]\\.,;:\s@']+)*)|('.+'))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
|
|
37
|
+
user.value
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<template>
|
|
43
|
+
<v-dialog v-model:model-value="modalState">
|
|
44
|
+
<v-card
|
|
45
|
+
class="pa-1 ma-auto position-relative motif-background card-bg-border"
|
|
46
|
+
theme="dark"
|
|
47
|
+
max-width="680"
|
|
48
|
+
min-width="450"
|
|
49
|
+
>
|
|
50
|
+
<v-card-title class="text-center mb-4 mt-2">
|
|
51
|
+
Download 3Dicom Mobile
|
|
52
|
+
</v-card-title>
|
|
53
|
+
<v-card-text>
|
|
54
|
+
<v-text-field
|
|
55
|
+
class="text-justify"
|
|
56
|
+
id="share-email-field-item"
|
|
57
|
+
ref="shareEmail"
|
|
58
|
+
v-model="user"
|
|
59
|
+
label="Send to Email"
|
|
60
|
+
variant="outlined"
|
|
61
|
+
density="compact"
|
|
62
|
+
:rules="[
|
|
63
|
+
(v) =>
|
|
64
|
+
/^(([^<>()[\]\\.,;:\s@']+(\.[^<>()\\[\]\\.,;:\s@']+)*)|('.+'))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
|
|
65
|
+
v
|
|
66
|
+
) || `Email must be valid`,
|
|
67
|
+
]"
|
|
68
|
+
clearable
|
|
69
|
+
@keyup.enter="add"
|
|
70
|
+
>
|
|
71
|
+
<template #append-inner>
|
|
72
|
+
<v-btn
|
|
73
|
+
v-show="isValid()"
|
|
74
|
+
id="check-mark"
|
|
75
|
+
icon
|
|
76
|
+
class="check-background mt-n01 bg-transparent"
|
|
77
|
+
size="sm"
|
|
78
|
+
small
|
|
79
|
+
elevation="0"
|
|
80
|
+
:ripple="false"
|
|
81
|
+
><v-icon color="success">check</v-icon></v-btn
|
|
82
|
+
>
|
|
83
|
+
</template>
|
|
84
|
+
<template #append>
|
|
85
|
+
<v-tooltip top>
|
|
86
|
+
<template #activator="{ props }">
|
|
87
|
+
<v-btn
|
|
88
|
+
v-bind="props"
|
|
89
|
+
icon
|
|
90
|
+
class="mt-n1 bg-transparent"
|
|
91
|
+
elevation="0"
|
|
92
|
+
@click="add"
|
|
93
|
+
><v-icon color="success">add</v-icon></v-btn
|
|
94
|
+
>
|
|
95
|
+
</template>
|
|
96
|
+
Include as Pending below
|
|
97
|
+
</v-tooltip>
|
|
98
|
+
</template>
|
|
99
|
+
</v-text-field>
|
|
100
|
+
</v-card-text>
|
|
101
|
+
<v-card-text v-if="users.length > 0">
|
|
102
|
+
Pending 3rd Parties
|
|
103
|
+
<v-alert
|
|
104
|
+
v-for="userItem in users"
|
|
105
|
+
class="my-1"
|
|
106
|
+
style="font-size: 60%"
|
|
107
|
+
close-label="Close Alert"
|
|
108
|
+
color="orange-accent-4"
|
|
109
|
+
density="compact"
|
|
110
|
+
:title="userItem"
|
|
111
|
+
variant="tonal"
|
|
112
|
+
@click:close="users.splice(users.indexOf(userItem), 1)"
|
|
113
|
+
closable
|
|
114
|
+
>
|
|
115
|
+
New User
|
|
116
|
+
</v-alert>
|
|
117
|
+
</v-card-text>
|
|
118
|
+
<v-card-actions>
|
|
119
|
+
<v-btn color="error" @click="modalState = false">
|
|
120
|
+
Continue with Demo
|
|
121
|
+
</v-btn>
|
|
122
|
+
<v-spacer />
|
|
123
|
+
<v-btn
|
|
124
|
+
variant="flat"
|
|
125
|
+
color="success"
|
|
126
|
+
@click="
|
|
127
|
+
step2 = true;
|
|
128
|
+
modalState = false;
|
|
129
|
+
"
|
|
130
|
+
:disabled="users.length === 0"
|
|
131
|
+
>
|
|
132
|
+
Send to 3rd Parties
|
|
133
|
+
</v-btn>
|
|
134
|
+
</v-card-actions>
|
|
135
|
+
</v-card>
|
|
136
|
+
</v-dialog>
|
|
137
|
+
<v-dialog v-model:model-value="step2">
|
|
138
|
+
<v-card
|
|
139
|
+
class="pa-1 ma-auto position-relative motif-background card-bg-border"
|
|
140
|
+
theme="dark"
|
|
141
|
+
max-width="680"
|
|
142
|
+
>
|
|
143
|
+
<v-card-title class="text-center mb-4 mt-2"> Scan shared </v-card-title>
|
|
144
|
+
<v-card-text class="text-justify">
|
|
145
|
+
Congratulations, you have sent your scan to a 3rd party.
|
|
146
|
+
</v-card-text>
|
|
147
|
+
<v-card-text class="text-justify">
|
|
148
|
+
Note: This is just a demonstration of how you can in the online viewer,
|
|
149
|
+
so we have not sent it to the users specified.
|
|
150
|
+
</v-card-text>
|
|
151
|
+
<v-card-text class="text-justify">
|
|
152
|
+
If you would like to view your own scan and/or send it to another party,
|
|
153
|
+
please select below
|
|
154
|
+
</v-card-text>
|
|
155
|
+
<v-card-actions>
|
|
156
|
+
<v-btn color="error" @click="step2 = false"> Continue with Demo </v-btn>
|
|
157
|
+
<v-spacer />
|
|
158
|
+
<v-btn
|
|
159
|
+
variant="flat"
|
|
160
|
+
color="success"
|
|
161
|
+
@click="openUrl('https://3dicomviewer.com/pricing')"
|
|
162
|
+
>
|
|
163
|
+
I want to view my own scan
|
|
164
|
+
</v-btn>
|
|
165
|
+
</v-card-actions>
|
|
166
|
+
</v-card>
|
|
167
|
+
</v-dialog>
|
|
168
|
+
</template>
|
|
169
|
+
|
|
170
|
+
<style scoped>
|
|
171
|
+
.v-alert-title {
|
|
172
|
+
font-size: 80%;
|
|
173
|
+
}
|
|
174
|
+
</style>
|
|
@@ -32,8 +32,10 @@ const modalState = computed({
|
|
|
32
32
|
theme="dark"
|
|
33
33
|
max-width="680"
|
|
34
34
|
>
|
|
35
|
-
<v-card-title
|
|
36
|
-
|
|
35
|
+
<v-card-title class="text-center mb-4 mt-2">
|
|
36
|
+
Download 3Dicom Mobile
|
|
37
|
+
</v-card-title>
|
|
38
|
+
<v-card-text class="text-justify">
|
|
37
39
|
<img
|
|
38
40
|
src="../../assets/images/apple-qr.svg"
|
|
39
41
|
alt="logo-home"
|
|
@@ -71,8 +73,10 @@ const modalState = computed({
|
|
|
71
73
|
theme="dark"
|
|
72
74
|
max-width="680"
|
|
73
75
|
>
|
|
74
|
-
<v-card-title
|
|
75
|
-
|
|
76
|
+
<v-card-title class="text-center mb-4 mt-2">
|
|
77
|
+
Load your scan
|
|
78
|
+
</v-card-title>
|
|
79
|
+
<v-card-text class="text-justify">
|
|
76
80
|
Once you have logged in and can see your dashboard, select your scan and
|
|
77
81
|
open it to visualise your X-Ray (XR), Ultrasound (US), Computed
|
|
78
82
|
Tomography (CT), Magnetic Resonance Imaging (MRI), and Positron Emitting
|