larvitar 1.2.3 → 1.2.4

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/README.md CHANGED
@@ -6,11 +6,11 @@
6
6
 
7
7
  ## Dicom Image Toolkit for CornestoneJS
8
8
 
9
- ### Current version: 1.2.3
9
+ ### Current version: 1.2.4
10
10
 
11
- ### Latest Stable version: 1.2.3
11
+ ### Latest Stable version: 1.2.4
12
12
 
13
- ### Latest Published Release: 1.2.3
13
+ ### Latest Published Release: 1.2.4
14
14
 
15
15
  This library provides common DICOM functionalities to be used in web-applications: it's wrapper that simplifies the use of cornestone-js environment.
16
16
  Orthogonal multiplanar reformat is included as well as custom loader/exporter for nrrd files and [Vuex](https://vuex.vuejs.org/) custom integration.
@@ -328,20 +328,7 @@ export const renderImage = function (seriesStack, elementId, defaultProps) {
328
328
  }
329
329
 
330
330
  let storedViewport = cornerstone.getViewport(element);
331
- storeViewportData(
332
- image,
333
- elementId,
334
- data.imageIndex,
335
- data.numberOfSlices,
336
- data.rows,
337
- data.cols,
338
- data.spacing_x,
339
- data.spacing_y,
340
- data.thickness,
341
- storedViewport,
342
- data.defaultWW,
343
- data.defaultWC
344
- );
331
+ storeViewportData(image, elementId, storedViewport, data);
345
332
  larvitar_store.set("renderingStatus", [elementId, true]);
346
333
  let t1 = performance.now();
347
334
  console.log(`Call to renderImage took ${t1 - t0} milliseconds.`);
@@ -534,47 +521,26 @@ export const updateViewportData = function (
534
521
  * @function storeViewportData
535
522
  * @param {Object} image - The cornerstone image frame
536
523
  * @param {String} elementId - The html div id used for rendering
537
- * @param {Number} imageIndex - The index of the image
538
- * @param {Number} numberOfSlices - The number of slices of the series
539
- * @param {Number} rows - The number of rows of the image
540
- * @param {Number} cols - The number of columns of the image
541
- * @param {Number} spacing_x - The spacing value for x axis
542
- * @param {Number} spacing_y - The spacing value for y direction
543
- * @param {Number} thickness - The thickness value between slices
544
524
  * @param {String} viewport - The viewport tag name
545
- * @param {Number} defaultWW - The default WW value
546
- * @param {Number} defaultWC - The default WC value
525
+ * @param {Object} data - The viewport data object
547
526
  */
548
- export const storeViewportData = function (
549
- image,
550
- elementId,
551
- imageIndex,
552
- numberOfSlices,
553
- rows,
554
- cols,
555
- spacing_x,
556
- spacing_y,
557
- thickness,
558
- viewport,
559
- defaultWW,
560
- defaultWC
561
- ) {
562
- larvitar_store.set("dimensions", [elementId, rows, cols]);
563
- larvitar_store.set("spacing", [elementId, spacing_x, spacing_y]);
564
- larvitar_store.set("thickness", [elementId, thickness]);
527
+ export const storeViewportData = function (image, elementId, viewport, data) {
528
+ larvitar_store.set("dimensions", [elementId, data.rows, data.cols]);
529
+ larvitar_store.set("spacing", [elementId, data.spacing_x, data.spacing_y]);
530
+ larvitar_store.set("thickness", [elementId, data.thickness]);
565
531
  larvitar_store.set("minPixelValue", [elementId, image.minPixelValue]);
566
532
  larvitar_store.set("maxPixelValue", [elementId, image.maxPixelValue]);
567
533
  larvitar_store.set("minSliceId", [elementId, 1]);
568
- larvitar_store.set("sliceId", [elementId, imageIndex]);
569
- larvitar_store.set("maxSliceId", [elementId, numberOfSlices]);
534
+ larvitar_store.set("sliceId", [elementId, data.imageIndex]);
535
+ larvitar_store.set("maxSliceId", [elementId, data.numberOfSlices]);
570
536
  larvitar_store.set("defaultViewport", [
571
537
  elementId,
572
538
  viewport.scale,
573
539
  viewport.rotation,
574
540
  viewport.translation.x,
575
541
  viewport.translation.y,
576
- defaultWW,
577
- defaultWC
542
+ data.defaultWW,
543
+ data.defaultWC
578
544
  ]);
579
545
  larvitar_store.set("scale", [elementId, viewport.scale]);
580
546
  larvitar_store.set("rotation", [elementId, viewport.rotation]);
@@ -588,6 +554,9 @@ export const storeViewportData = function (
588
554
  viewport.voi.windowWidth,
589
555
  viewport.voi.windowCenter
590
556
  ]);
557
+ larvitar_store.set("isColor", [elementId, data.isColor]);
558
+ larvitar_store.set("isMultiframe", [elementId, data.isMultiframe]);
559
+ larvitar_store.set("isTimeserie", [elementId, data.isTimeserie]);
591
560
  };
592
561
 
593
562
  /**
@@ -699,10 +668,12 @@ let getSeriesData = function (series, defaultProps) {
699
668
  let data = {};
700
669
  // image index
701
670
  if (series.isMultiframe) {
671
+ data.isMultiframe = true;
702
672
  data.numberOfSlices = series.imageIds.length;
703
673
  data.imageIndex = 1;
704
674
  data.imageId = series.imageIds[0];
705
675
  } else {
676
+ data.isMultiframe = false;
706
677
  data.numberOfSlices =
707
678
  defaultProps && has(defaultProps, "numberOfSlices")
708
679
  ? defaultProps["numberOfSlices"]
@@ -720,6 +691,8 @@ let getSeriesData = function (series, defaultProps) {
720
691
  ? series.imageIds[data.imageIndex - 1]
721
692
  : series.imageIds[0];
722
693
  }
694
+ data.isColor = series.color;
695
+ data.isTimeserie = false; // TODO 4D
723
696
 
724
697
  // rows, cols and x y z spacing
725
698
  data.rows = series.instances[series.imageIds[0]].metadata["x00280010"];
@@ -22,6 +22,9 @@ const DEFAULT_VIEWPORT = {
22
22
  thickness: 0.0,
23
23
  minPixelValue: 0,
24
24
  maxPixelValue: 0,
25
+ isColor: false,
26
+ isMultiframe: false,
27
+ isTimeserie: false,
25
28
  viewport: {
26
29
  scale: 0.0,
27
30
  rotation: 0.0,
@@ -66,7 +69,6 @@ class Larvitar_Store {
66
69
  this.vuex_store = vuex_store;
67
70
  this.vuex_module = vuex_module;
68
71
  this.state = {
69
- manager: null,
70
72
  series: {}, // seriesUID: {imageIds:[], progress:value}
71
73
  leftActiveTool: "Wwwc",
72
74
  rightActiveTool: "Zoom",
@@ -230,6 +232,12 @@ class Larvitar_Store {
230
232
  this.state["viewports"][data[0]]["maxSliceId"] = data[1];
231
233
  } else if (field == "sliceId") {
232
234
  this.state["viewports"][data[0]]["sliceId"] = data[1];
235
+ } else if (field == "isColor") {
236
+ this.state["viewports"][data[0]]["isColor"] = data[1];
237
+ } else if (field == "isMultiframe") {
238
+ this.state["viewports"][data[0]]["isMultiframe"] = data[1];
239
+ } else if (field == "isTimeserie") {
240
+ this.state["viewports"][data[0]]["isTimeserie"] = data[1];
233
241
  } else if (field == "defaultViewport") {
234
242
  this.state["viewports"][data[0]]["default"]["scale"] = data[1];
235
243
  this.state["viewports"][data[0]]["default"]["rotation"] = data[2];
@@ -243,8 +251,6 @@ class Larvitar_Store {
243
251
  data[6];
244
252
  } else if (field == "progress") {
245
253
  this.state.series[data[0]]["progress"] = data[1];
246
- } else if (field == "manager") {
247
- this.state.manager = data;
248
254
  } else {
249
255
  if (Array.isArray(data)) {
250
256
  this.state[field][data[0]] = data[1];
@@ -15,6 +15,9 @@ const DEFAULT_VIEWPORT = {
15
15
  thickness: 0.0,
16
16
  minPixelValue: 0,
17
17
  maxPixelValue: 0,
18
+ isColor: false,
19
+ isMultiframe: false,
20
+ isTimeserie: false,
18
21
  viewport: {
19
22
  scale: 0.0,
20
23
  rotation: 0.0,
@@ -46,7 +49,6 @@ export default {
46
49
  colormapId: "gray",
47
50
  leftActiveTool: "Wwwc",
48
51
  rightActiveTool: "Wwwc",
49
- manager: null,
50
52
  series: {}, // seriesUID: {imageIds:[], progress:value}
51
53
  viewports: {}
52
54
  },
@@ -90,7 +92,6 @@ export default {
90
92
  },
91
93
  deleteViewport: ({ state }, viewportId) =>
92
94
  Vue.delete(state.viewports, viewportId),
93
- setManager: ({ state }, value) => (state.manager = value),
94
95
  setLeftActiveTool: ({ commit }, value) => {
95
96
  commit("leftActiveTool", { d: { value } });
96
97
  },
@@ -127,6 +128,12 @@ export default {
127
128
  commit("viewport", { id, d: { maxSliceId } }),
128
129
  setSliceId: ({ commit }, [id, sliceId]) =>
129
130
  commit("viewport", { id, d: { sliceId } }),
131
+ setIsColor: ({ commit }, [id, isColor]) =>
132
+ commit("viewport", { id, d: { isColor } }),
133
+ setIsMultiframe: ({ commit }, [id, isMultiframe]) =>
134
+ commit("viewport", { id, d: { isMultiframe } }),
135
+ setIsTimeserie: ({ commit }, [id, isTimeserie]) =>
136
+ commit("viewport", { id, d: { isTimeserie } }),
130
137
  setDefaultViewport: (
131
138
  { commit },
132
139
  [id, scale, rotation, x, y, windowWidth, windowCenter]
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "medical",
7
7
  "cornerstone"
8
8
  ],
9
- "version": "1.2.3",
9
+ "version": "1.2.4",
10
10
  "description": "javascript library for parsing, loading, rendering and interacting with DICOM images",
11
11
  "repository": {
12
12
  "url": "https://github.com/dvisionlab/Larvitar.git",
@@ -29,11 +29,11 @@
29
29
  "cornerstone-core": "^2.6.1",
30
30
  "cornerstone-file-image-loader": "^0.3.0",
31
31
  "cornerstone-tools": "^6.0.6",
32
- "cornerstone-wado-image-loader": "^4.0.1",
32
+ "cornerstone-wado-image-loader": "^4.1.2",
33
33
  "cornerstone-web-image-loader": "^2.1.1",
34
34
  "crypto-js": "^4.1.1",
35
35
  "dicom-character-set": "^1.0.3",
36
- "dicom-parser": "^1.8.11",
36
+ "dicom-parser": "^1.8.13",
37
37
  "docdash": "^1.2.0",
38
38
  "hammerjs": "^2.0.8",
39
39
  "keycode-js": "^3.1.0",