@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
|
|
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 (!
|
|
51
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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": "
|
|
78
|
+
"gitHead": "8575aed359ecd7ca55caaa9b104deef54e44c7fb"
|
|
79
79
|
}
|