@3cr/viewer-browser 0.0.86 → 0.0.92

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.
Files changed (46) hide show
  1. package/coverage/3cr-viewer-browser/index.html +1 -1
  2. package/coverage/3cr-viewer-browser/index.ts.html +1 -1
  3. package/coverage/3cr-viewer-browser/src/App.vue.html +1 -1
  4. package/coverage/3cr-viewer-browser/src/components/WebGL3DR.vue.html +1 -1
  5. package/coverage/3cr-viewer-browser/src/components/icons/index.html +1 -1
  6. package/coverage/3cr-viewer-browser/src/components/icons/liver.vue.html +1 -1
  7. package/coverage/3cr-viewer-browser/src/components/index.html +1 -1
  8. package/coverage/3cr-viewer-browser/src/components/loading/LoadingSpinner.vue.html +1 -1
  9. package/coverage/3cr-viewer-browser/src/components/loading/index.html +1 -1
  10. package/coverage/3cr-viewer-browser/src/components/modal/MftpWebGL3DRModal.vue.html +77 -200
  11. package/coverage/3cr-viewer-browser/src/components/modal/index.html +17 -17
  12. package/coverage/3cr-viewer-browser/src/components/selectors/ValueSelector.vue.html +1 -1
  13. package/coverage/3cr-viewer-browser/src/components/selectors/index.html +1 -1
  14. package/coverage/3cr-viewer-browser/src/components/sliders/DoubleSliderSelector.vue.html +1 -1
  15. package/coverage/3cr-viewer-browser/src/components/sliders/VerticalSliderSelector.vue.html +1 -1
  16. package/coverage/3cr-viewer-browser/src/components/sliders/index.html +1 -1
  17. package/coverage/3cr-viewer-browser/src/dataLayer/iconData.ts.html +1 -1
  18. package/coverage/3cr-viewer-browser/src/dataLayer/index.html +27 -27
  19. package/coverage/3cr-viewer-browser/src/dataLayer/payloadHandler.ts.html +185 -74
  20. package/coverage/3cr-viewer-browser/src/dataLayer/scanState.ts.html +11 -41
  21. package/coverage/3cr-viewer-browser/src/helpers/index.html +1 -1
  22. package/coverage/3cr-viewer-browser/src/helpers/layoutOverlayStyle.ts.html +1 -1
  23. package/coverage/3cr-viewer-browser/src/helpers/modelHelper.ts.html +1 -1
  24. package/coverage/3cr-viewer-browser/src/helpers/utils.ts.html +3 -3
  25. package/coverage/3cr-viewer-browser/src/index.html +1 -1
  26. package/coverage/3cr-viewer-browser/src/main.ts.html +1 -1
  27. package/coverage/3cr-viewer-browser/src/models/LoadViewerOptions.ts.html +10 -10
  28. package/coverage/3cr-viewer-browser/src/models/index.html +7 -7
  29. package/coverage/3cr-viewer-browser/src/notifications/index.html +17 -17
  30. package/coverage/3cr-viewer-browser/src/notifications/notification.ts.html +79 -70
  31. package/coverage/3cr-viewer-browser/src/plugins/index.html +1 -1
  32. package/coverage/3cr-viewer-browser/src/plugins/index.ts.html +1 -1
  33. package/coverage/3cr-viewer-browser/src/plugins/vuetify.ts.html +1 -1
  34. package/coverage/index.html +41 -41
  35. package/dist/Viewer3CR.js +11 -11
  36. package/dist/Viewer3CR.mjs +5371 -5375
  37. package/dist/Viewer3CR.umd.js +11 -11
  38. package/package.json +1 -1
  39. package/src/components/modal/MftpWebGL3DRModal.vue +33 -74
  40. package/src/components/modal/__tests__/mftp-webgl-3dr-modal.spec.ts +100 -148
  41. package/src/dataLayer/__tests__/payload-handler.spec.ts +119 -3
  42. package/src/dataLayer/payloadHandler.ts +39 -2
  43. package/src/dataLayer/scanState.ts +3 -13
  44. package/src/models/__tests__/load-viewer-options.spec.ts +22 -0
  45. package/src/notifications/__tests__/notification.spec.ts +120 -0
  46. package/src/notifications/notification.ts +4 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3cr/viewer-browser",
3
- "version": "0.0.86",
3
+ "version": "0.0.92",
4
4
  "main": "./dist/Viewer3CR.umd.js",
5
5
  "module": "dist/Viewer3CR.umd.js",
6
6
  "homepage": "https://docs.3cr.singular.health",
@@ -172,7 +172,7 @@
172
172
  height="36"
173
173
  style="min-width: 36px !important"
174
174
  :color="isLayout2x2 ? 'secondary' : 'primary'"
175
- @click="layouts('lo_02')"
175
+ @click="payloadHandler.layouts(LayoutActions.lo02)"
176
176
  ><v-icon>grid_view</v-icon></v-btn
177
177
  >
178
178
  <v-btn
@@ -180,7 +180,7 @@
180
180
  height="36"
181
181
  style="min-width: 36px !important"
182
182
  :color="isLayout1x3 ? 'secondary' : 'primary'"
183
- @click="layouts('lo_03')"
183
+ @click="payloadHandler.layouts(LayoutActions.lo03)"
184
184
  ><v-icon style="rotate: -90deg">view_comfy</v-icon></v-btn
185
185
  >
186
186
  <v-btn class="" variant="flat" color="red" @click="alterValue(false)"
@@ -202,7 +202,6 @@
202
202
  <div
203
203
  class="d-flex align-center pb-1"
204
204
  :class="drawerCollapsed ? 'py-2' : 'pa-2'"
205
- @click="snap"
206
205
  >
207
206
  <img
208
207
  v-if="!drawerCollapsed"
@@ -224,7 +223,6 @@
224
223
  <div
225
224
  class="text-center mx-auto pa-0 text-white sub-type"
226
225
  :style="drawerCollapsed ? 'font-size: 100%' : 'font-size: 140%'"
227
- @click="snap"
228
226
  >
229
227
  Online Viewer
230
228
  </div>
@@ -343,7 +341,9 @@
343
341
  closeOnContentClick: true,
344
342
  }"
345
343
  placeholder="Select a Density Preset"
346
- @change="setPreset(PresetsActions.pr01, $event)"
344
+ @change="
345
+ payloadHandler.setPreset(PresetsActions.pr01, $event)
346
+ "
347
347
  >
348
348
  <template #item="{ props, item }">
349
349
  <v-list-item
@@ -352,7 +352,9 @@
352
352
  :title="item.raw.Name"
353
353
  lines="three"
354
354
  @mousedown.prevent
355
- @click="setPreset(PresetsActions.pr01, item.raw)"
355
+ @click="
356
+ payloadHandler.setPreset(PresetsActions.pr01, item.raw)
357
+ "
356
358
  >
357
359
  <template v-slot:prepend>
358
360
  <v-icon
@@ -390,7 +392,9 @@
390
392
  }"
391
393
  placeholder="Select a Colour Preset"
392
394
  return-object
393
- @update:modelValue="setPreset(PresetsActions.pr02, $event)"
395
+ @update:modelValue="
396
+ payloadHandler.setPreset(PresetsActions.pr02, $event)
397
+ "
394
398
  ></v-select>
395
399
  </v-card-actions>
396
400
  </v-expansion-panel-text>
@@ -431,7 +435,7 @@
431
435
  id="webgl-container"
432
436
  @on_payload="handleOnPayload"
433
437
  @instance_loaded="load"
434
- @hover="hoverOverCanvas"
438
+ @hover="payloadHandler.hoverOverCanvas($event)"
435
439
  >
436
440
  <div
437
441
  class="bordered-event-window"
@@ -471,7 +475,7 @@
471
475
  <div v-if="scanState.Layout.PositionData.length === 1">
472
476
  <v-btn
473
477
  color="transparent"
474
- @click="layouts(previousLayout)"
478
+ @click="payloadHandler.layouts(previousLayout)"
475
479
  :icon="true"
476
480
  >
477
481
  <v-icon color="white">fullscreen_exit</v-icon>
@@ -673,6 +677,8 @@ import { generateDivStyleForLayout } from "@/helpers/layoutOverlayStyle";
673
677
  import {
674
678
  FileManagementActions,
675
679
  FrontEndInterfaces,
680
+ LayoutActions,
681
+ NotificationsActions,
676
682
  PositionData,
677
683
  PresetsActions,
678
684
  ScanMovementActions,
@@ -708,6 +714,7 @@ import {
708
714
  initialScanState,
709
715
  isLayout1x3,
710
716
  isLayout2x2,
717
+ previousLayout,
711
718
  scanState,
712
719
  setInitialScanStateFromPayload,
713
720
  setScanStateFromPayload,
@@ -721,16 +728,14 @@ import {
721
728
  } from "@/dataLayer/scanState";
722
729
  import { getIconForPreset } from "@/dataLayer/iconData";
723
730
 
724
- const emit = defineEmits<{
725
- instanceLoaded: [void];
726
- snap: [void];
727
- }>();
728
-
729
731
  export interface Props {
730
732
  payload?: LoadViewerPayload;
731
733
  options?: LoadViewerOptions;
732
734
  }
733
735
 
736
+ const emit = defineEmits<{
737
+ instanceLoaded: [void];
738
+ }>();
734
739
  const props = withDefaults(defineProps<Props>(), {
735
740
  payload: () => ({
736
741
  Url: "https://webgl-3dr.singular.health/test_scans/8bdddee1-e581-485d-827d-6aa12eef2fc8/Head+Axial+Axial.3vxl",
@@ -744,27 +749,12 @@ const props = withDefaults(defineProps<Props>(), {
744
749
 
745
750
  const web_gl = ref<typeof WebGL3DR | null>(null);
746
751
  const payloadHandler = new PayloadHandler(web_gl);
747
-
748
- function executeOption(key: keyof LoadViewerOptions) {
749
- if (unref(isDemo)) {
750
- executeDemoOption(key);
751
- } else {
752
- const functionToExecute = unref(props.options)[key];
753
- if (functionToExecute !== undefined) {
754
- functionToExecute();
755
- }
756
- }
757
- }
758
-
759
- const emptyPayload = { Version: "1.1.0" };
760
-
761
752
  const value = ref<boolean>(false);
762
753
  const drawer = ref<boolean>(true);
763
754
  const drawerCollapsed = ref<boolean>(true);
764
755
  const scanLoading = ref<boolean>(true);
765
756
  const instanceLoaded = ref<boolean>(true);
766
757
  const openPanels = ref<number>(0);
767
- const previousLayout = ref<string>("lo_02");
768
758
  const footerItems = ref([
769
759
  {
770
760
  text: "Reset Scan",
@@ -794,7 +784,6 @@ const footerItems = ref([
794
784
  click: async () => executeOption("OnScreenshot"),
795
785
  },
796
786
  ]);
797
-
798
787
  const miniMenu = ref([
799
788
  {
800
789
  icon: "display_settings",
@@ -803,11 +792,21 @@ const miniMenu = ref([
803
792
  "Tissue Density - Change the view of density within the scan, allowing you to see through a certain density of particles",
804
793
  },
805
794
  ]);
806
-
807
795
  const rotationDeg = ref<number>(0);
808
796
  const stateOverlay = ref<boolean>(false);
809
797
  const m_closeDialog = ref<boolean>(false);
810
798
 
799
+ function executeOption(key: keyof LoadViewerOptions) {
800
+ if (unref(isDemo)) {
801
+ executeDemoOption(key);
802
+ } else {
803
+ const functionToExecute = unref(props.options)[key];
804
+ if (functionToExecute !== undefined) {
805
+ functionToExecute();
806
+ }
807
+ }
808
+ }
809
+
811
810
  type WatchSlidersType = { [key in SlidersActions]: WatchSource<number> };
812
811
  const watchSliders: WatchSlidersType = {
813
812
  [SlidersActions.sl01]: () => scanState.value.Display.Brightness,
@@ -879,17 +878,9 @@ function getViewName(index: number) {
879
878
  })[index];
880
879
  }
881
880
  async function fullscreenLayout(view: ScanView) {
882
- await layouts("lo_01");
881
+ await payloadHandler.layouts(LayoutActions.lo01);
883
882
  await payloadHandler.viewSelection(`vs_0${view + 1}` as ViewSelectionActions);
884
883
  }
885
- // async function scanMovementHandler(action: string, value: number) {
886
- // if (unref(transactionStarted)) return;
887
- // await scanMovement(action, value);
888
- // }
889
- // async function sliderHandler(action: string, value: number) {
890
- // if (unref(transactionStarted)) return;
891
- // await slider(action, value);
892
- // }
893
884
 
894
885
  function closeModal() {
895
886
  m_closeDialog.value = false;
@@ -912,31 +903,6 @@ async function load() {
912
903
  await sendPayload(web_gl, "file_management", "fm_01", props.payload);
913
904
  }
914
905
 
915
- async function layouts(action: string) {
916
- if (action !== "lo_01") previousLayout.value = action;
917
- await sendPayload(web_gl, FrontEndInterfaces.layout, action, emptyPayload);
918
- }
919
- async function snap() {
920
- emit("snap");
921
- }
922
-
923
- async function setPreset(action: PresetsActions, preset: any) {
924
- await sendPayload(web_gl, "presets", action, preset);
925
- if (action === PresetsActions.pr02) {
926
- currentColourPreset.value = preset;
927
- }
928
- }
929
-
930
- async function hoverOverCanvas(isHovering: boolean) {
931
- await sendPayload(web_gl, "interactivity", "in_01", {
932
- Version: "0.0.1",
933
- Value: isHovering,
934
- });
935
- await sendPayload(web_gl, "interactivity", "in_02", {
936
- Version: "0.0.1",
937
- Value: isHovering,
938
- });
939
- }
940
906
  async function i_fileManagement(action: string, message: string) {
941
907
  if (action === FileManagementActions.fm02) {
942
908
  await setInitialScanStateFromPayload(action, message);
@@ -945,7 +911,7 @@ async function i_fileManagement(action: string, message: string) {
945
911
  transactionStarted.value = false;
946
912
  scanLoading.value = false;
947
913
  drawerCollapsed.value = false;
948
- await hoverOverCanvas(false);
914
+ await payloadHandler.hoverOverCanvas(false);
949
915
  }
950
916
  }
951
917
 
@@ -961,7 +927,7 @@ function handleOnPayload(
961
927
  i_fileManagement(actionSet, message);
962
928
  }
963
929
  if (interfaceSet === FrontEndInterfaces.notifications) {
964
- handleNotification(actionSet, message);
930
+ handleNotification(actionSet as NotificationsActions, message);
965
931
  }
966
932
  }
967
933
 
@@ -971,23 +937,16 @@ defineExpose({
971
937
  handleOnPayload,
972
938
  sendPayload,
973
939
  getIconForPreset,
974
- cSlider,
975
- sSlider,
976
- tSlider,
977
940
  thresholdSlider,
978
941
  windowSlider,
979
942
  m_closeDialog,
980
943
  closeModal,
981
- snap,
982
944
  scanState,
983
945
  initialScanState,
984
946
  footerItems,
985
- // rotateByDeg,
986
947
  getCurrentActiveView,
987
948
  getViewName,
988
949
  fullscreenLayout,
989
- layouts,
990
- setPreset,
991
950
  value,
992
951
  transactionStarted,
993
952
  });