@3cr/viewer-browser 0.0.123 → 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3cr/viewer-browser",
3
- "version": "0.0.123",
3
+ "version": "0.0.125",
4
4
  "main": "./dist/Viewer3CR.umd.js",
5
5
  "module": "dist/Viewer3CR.umd.js",
6
6
  "homepage": "https://docs.3cr.singular.health",
package/src/App.vue CHANGED
@@ -84,4 +84,8 @@ async function loadInstance(
84
84
  .v-dialog.v-overlay--active {
85
85
  backdrop-filter: blur(4px);
86
86
  }
87
+ .card-bg-border {
88
+ border-radius: 12px !important;
89
+ border: 2px #ffffffaa solid;
90
+ }
87
91
  </style>
@@ -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;
@@ -33,7 +33,7 @@ const modalState = computed({
33
33
  <template>
34
34
  <v-dialog v-model:model-value="modalState">
35
35
  <v-card
36
- class="pa-1 ma-auto position-relative motif-background"
36
+ class="pa-1 ma-auto position-relative motif-background card-bg-border"
37
37
  theme="dark"
38
38
  max-width="680"
39
39
  >
@@ -56,7 +56,7 @@ const modalState = computed({
56
56
  </v-btn>
57
57
  <v-spacer />
58
58
  <v-btn
59
- variant="tonal"
59
+ variant="flat"
60
60
  color="success"
61
61
  @click="openUrl('mailto:ecooper@singular.health')"
62
62
  >
@@ -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
- //TODO:
119
- // m_demoPatient.value = true;
119
+ m_demoPatientSendToParty.value = true;
120
120
  },
121
121
  OnShareToMobile: () => {
122
122
  m_demoPatientShareToMobile.value = true;
@@ -33,7 +33,7 @@ const modalState = computed({
33
33
  <template>
34
34
  <v-dialog v-model:model-value="modalState">
35
35
  <v-card
36
- class="pa-1 ma-auto position-relative motif-background"
36
+ class="pa-1 ma-auto position-relative motif-background card-bg-border"
37
37
  theme="dark"
38
38
  max-width="680"
39
39
  >
@@ -56,7 +56,7 @@ const modalState = computed({
56
56
  </v-btn>
57
57
  <v-spacer />
58
58
  <v-btn
59
- variant="tonal"
59
+ variant="flat"
60
60
  color="success"
61
61
  @click="openUrl('https://3dicomviewer.com/pricing')"
62
62
  >
@@ -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>
@@ -28,12 +28,14 @@ const modalState = computed({
28
28
  <template>
29
29
  <v-dialog v-model:model-value="modalState">
30
30
  <v-card
31
- class="pa-1 ma-auto position-relative motif-background"
31
+ class="pa-1 ma-auto position-relative motif-background card-bg-border"
32
32
  theme="dark"
33
33
  max-width="680"
34
34
  >
35
- <v-card-title> Download 3Dicom Mobile </v-card-title>
36
- <v-card-text>
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"
@@ -53,7 +55,7 @@ const modalState = computed({
53
55
  </v-btn>
54
56
  <v-spacer />
55
57
  <v-btn
56
- variant="tonal"
58
+ variant="flat"
57
59
  color="success"
58
60
  @click="
59
61
  step2 = true;
@@ -67,12 +69,14 @@ const modalState = computed({
67
69
  </v-dialog>
68
70
  <v-dialog v-model:model-value="step2">
69
71
  <v-card
70
- class="pa-1 ma-auto position-relative motif-background"
72
+ class="pa-1 ma-auto position-relative motif-background card-bg-border"
71
73
  theme="dark"
72
74
  max-width="680"
73
75
  >
74
- <v-card-title> Load your scan </v-card-title>
75
- <v-card-text>
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
@@ -82,7 +86,7 @@ const modalState = computed({
82
86
  <v-btn color="error" @click="step2 = false"> Continue with Demo </v-btn>
83
87
  <v-spacer />
84
88
  <v-btn
85
- variant="tonal"
89
+ variant="flat"
86
90
  color="success"
87
91
  @click="openUrl('https://3dicomviewer.com/pricing')"
88
92
  >