@cornerstonejs/nifti-volume-loader 2.2.8 → 2.2.10

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.
@@ -2,8 +2,7 @@ import { Enums, eventTarget, metaData, triggerEvent, utilities, } from '@corners
2
2
  import * as NiftiReader from 'nifti-reader-js';
3
3
  import { Events } from './enums';
4
4
  import { modalityScaleNifti } from './helpers';
5
- const fetchStarted = new Map();
6
- let niftiScalarData = null;
5
+ const dataFetchStateMap = new Map();
7
6
  function fetchArrayBuffer({ url, signal, onload, }) {
8
7
  return new Promise((resolve, reject) => {
9
8
  const xhr = new XMLHttpRequest();
@@ -47,14 +46,14 @@ export default function cornerstoneNiftiImageLoader(imageId) {
47
46
  const imagePixelModule = metaData.get(Enums.MetadataModules.IMAGE_PIXEL, imageId);
48
47
  const imagePlaneModule = metaData.get(Enums.MetadataModules.IMAGE_PLANE, imageId);
49
48
  const promise = new Promise((resolve, reject) => {
50
- if (!fetchStarted.get(url)) {
51
- fetchStarted.set(url, true);
49
+ if (!dataFetchStateMap.get(url)) {
50
+ dataFetchStateMap.set(url, { status: 'fetching' });
52
51
  fetchAndProcessNiftiData(imageId, url, sliceIndex, imagePixelModule, imagePlaneModule)
53
52
  .then(resolve)
54
53
  .catch(reject);
55
54
  }
56
55
  else {
57
- waitForNiftiData(imageId, sliceIndex, imagePixelModule, imagePlaneModule)
56
+ waitForNiftiData(imageId, url, sliceIndex, imagePixelModule, imagePlaneModule)
58
57
  .then(resolve)
59
58
  .catch(reject);
60
59
  }
@@ -81,20 +80,21 @@ async function fetchAndProcessNiftiData(imageId, url, sliceIndex, imagePixelModu
81
80
  throw new Error(errorMessage);
82
81
  }
83
82
  const { scalarData } = modalityScaleNifti(niftiHeader, niftiImage);
84
- niftiScalarData = scalarData;
85
- return createImage(imageId, sliceIndex, imagePixelModule, imagePlaneModule);
83
+ dataFetchStateMap.set(url, { status: 'fetched', scalarData });
84
+ return createImage(imageId, sliceIndex, imagePixelModule, imagePlaneModule, scalarData);
86
85
  }
87
- function waitForNiftiData(imageId, sliceIndex, imagePixelModule, imagePlaneModule) {
86
+ function waitForNiftiData(imageId, url, sliceIndex, imagePixelModule, imagePlaneModule) {
88
87
  return new Promise((resolve) => {
89
88
  const intervalId = setInterval(() => {
90
- if (niftiScalarData) {
89
+ const dataFetchState = dataFetchStateMap.get(url);
90
+ if (dataFetchState.status === 'fetched') {
91
91
  clearInterval(intervalId);
92
- resolve(createImage(imageId, sliceIndex, imagePixelModule, imagePlaneModule));
92
+ resolve(createImage(imageId, sliceIndex, imagePixelModule, imagePlaneModule, dataFetchState.scalarData));
93
93
  }
94
94
  }, 10);
95
95
  });
96
96
  }
97
- function createImage(imageId, sliceIndex, imagePixelModule, imagePlaneModule) {
97
+ function createImage(imageId, sliceIndex, imagePixelModule, imagePlaneModule, niftiScalarData) {
98
98
  const { rows, columns } = imagePlaneModule;
99
99
  const numVoxels = rows * columns;
100
100
  const sliceOffset = numVoxels * sliceIndex;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/nifti-volume-loader",
3
- "version": "2.2.8",
3
+ "version": "2.2.10",
4
4
  "description": "Nifti Image Loader for Cornerstone3D",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/esm/index.d.ts",
@@ -62,7 +62,7 @@
62
62
  "nifti-reader-js": "^0.6.8"
63
63
  },
64
64
  "peerDependencies": {
65
- "@cornerstonejs/core": "^2.2.8"
65
+ "@cornerstonejs/core": "^2.2.10"
66
66
  },
67
67
  "contributors": [
68
68
  {
@@ -75,5 +75,5 @@
75
75
  "type": "individual",
76
76
  "url": "https://ohif.org/donate"
77
77
  },
78
- "gitHead": "9d190e98431221e60c802e308621404455d3eb5a"
78
+ "gitHead": "8575aed359ecd7ca55caaa9b104deef54e44c7fb"
79
79
  }