Skip to content

Commit

Permalink
fix bug for display thumbnail and number of frames
Browse files Browse the repository at this point in the history
  • Loading branch information
birdeggb2777 committed Feb 12, 2025
1 parent 6207ba7 commit d152ca4
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 26 deletions.
6 changes: 4 additions & 2 deletions bluelight/scripts/dicomloader.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

function loadImageFromDataSet(dataSet, type, loadimage = true, url) {
function loadImageFromDataSet(dataSet, type, loadimage = true, url, fromLocal = false) {
var imageObj = getDefaultImageObj(dataSet, type, url, loadimage);
if (type == 'pdf') setPDF(imageObj);
if (type == 'ecg' && openECG) setECG(imageObj);
Expand All @@ -13,11 +13,13 @@ function loadImageFromDataSet(dataSet, type, loadimage = true, url) {
leftLayout.setImg2Left(new QRLv(dataSet), dataSet.string(Tag.PatientID));
leftLayout.appendCanvasBySeries(dataSet.string(Tag.SeriesInstanceUID), imageObj, imageObj.getPixelData());
leftLayout.refleshMarkWithSeries(dataSet.string(Tag.SeriesInstanceUID));
} else {
} else if (fromLocal == true) {
ImageManager.preLoadSops.push({
dataSet: dataSet, image: imageObj, Sop: Sop, SeriesInstanceUID: imageObj.SeriesInstanceUID,
Index: imageObj.NumberOfFrames | imageObj.InstanceNumber
});
} else if (fromLocal == false) {
leftLayout.refreshNumberOfFramesOrSops(imageObj);
}

if (loadimage) {
Expand Down
13 changes: 9 additions & 4 deletions bluelight/scripts/gui.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,12 @@ class LeftLayout {
series_div.series_label = label;
ImgDiv.appendChild(label);
}
this.refreshNumberOfFramesOrSops(image);
}

refreshNumberOfFramesOrSops(image) {
var series_div = this.findSeries(image.SeriesInstanceUID);
if (!series_div) return;
if (image.NumberOfFrames > 1) series_div.series_label.innerText = htmlEntities("" + image.NumberOfFrames);
else if (image.haveSameInstanceNumber) series_div.series_label.innerText = "";
else series_div.series_label.innerText = "" + htmlEntities(ImageManager.findSeries(image.SeriesInstanceUID).Sop.length);
Expand Down Expand Up @@ -269,10 +274,10 @@ class LeftLayout {
}
}

if(getByid("LeftPicture"))
if (hasScroll(getByid("LeftPicture")))
document.documentElement.style.setProperty('--ishaveLeftScroll', `1`);
else document.documentElement.style.setProperty('--ishaveLeftScroll', `0`);
if (getByid("LeftPicture"))
if (hasScroll(getByid("LeftPicture")))
document.documentElement.style.setProperty('--ishaveLeftScroll', `1`);
else document.documentElement.style.setProperty('--ishaveLeftScroll', `0`);
}

reflesh() {
Expand Down
4 changes: 2 additions & 2 deletions bluelight/scripts/html.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ function html_onload() {
ImageManager.NumOfPreLoadSops += 1;
reader.onloadend = function () {
//resetViewport();
loadDicomDataSet(reader.result, false, url);
loadDicomDataSet(reader.result, false, url, true);
ImageManager.NumOfPreLoadSops -= 1;
if (ImageManager.NumOfPreLoadSops == 0) ImageManager.loadPreLoadSops();
}
Expand Down Expand Up @@ -790,7 +790,7 @@ function html_onload() {
ImageManager.NumOfPreLoadSops += 1;
reader.onloadend = function () {
//resetViewport();
loadDicomDataSet(reader.result, false, this.url);
loadDicomDataSet(reader.result, false, this.url, true);
ImageManager.NumOfPreLoadSops -= 1;
if (ImageManager.NumOfPreLoadSops == 0) ImageManager.loadPreLoadSops();
}
Expand Down
14 changes: 9 additions & 5 deletions bluelight/scripts/patient.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,20 +163,24 @@ class BlueLightImageManager {

for (var series in preLoadSeries) {
var preLoadSops = preLoadSeries[series];
var preLoadSops = SortArrayByElem(preLoadSops, "Index").reverse();
var preLoadSops = SortArrayByElem(preLoadSops, "Index");

var LoadImgSop = null;
for (var sop of preLoadSops) {
if (!leftLayout.findSeries(sop.dataSet.string(Tag.SeriesInstanceUID))) {
leftLayout.setImg2Left(new QRLv(sop.dataSet), sop.dataSet.string(Tag.PatientID));
if (sop.image.imageDataLoaded == false && sop.image.loadImageData) sop.image.loadImageData();
leftLayout.appendCanvasBySeries(sop.dataSet.string(Tag.SeriesInstanceUID), sop.image, sop.image.getPixelData());
requestAnimationFrame(() => {
resetViewport();
GetViewport().loadImgBySop(sop.Sop);
});
LoadImgSop = sop.Sop;
}
leftLayout.refleshMarkWithSeries(sop.dataSet.string(Tag.SeriesInstanceUID));
}
if (LoadImgSop) {
requestAnimationFrame(() => {
resetViewport();
GetViewport().loadImgBySop(LoadImgSop);
});
}
}
}

Expand Down
26 changes: 13 additions & 13 deletions bluelight/scripts/viewer.js
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ function loadPicture(url) {
img.src = url;
}

function loadDicomDataSet(fileData, loadimage = true, url) {
function loadDicomDataSet(fileData, loadimage = true, url, fromLocal = false) {
var byteArray = new Uint8Array(fileData);
try {
var dataSet = dicomParser.parseDicom(byteArray);
Expand All @@ -316,7 +316,7 @@ function loadDicomDataSet(fileData, loadimage = true, url) {

//PDF
if (dataSet.string(Tag.MediaStorageSOPClassUID) == SOPClassUID.EncapsulatedPDFStorage)
loadImageFromDataSet(dataSet, 'pdf', loadimage, url);
loadImageFromDataSet(dataSet, 'pdf', loadimage, url, fromLocal);

//Mark
else if (dataSet.string(Tag.MediaStorageSOPClassUID) == SOPClassUID.RTStructureSetStorage)//RTSS
Expand All @@ -328,30 +328,30 @@ function loadDicomDataSet(fileData, loadimage = true, url) {

//ECG
else if (dataSet.string(Tag.MediaStorageSOPClassUID) == SOPClassUID._12_leadECGWaveformStorage) {
if (openECG) loadImageFromDataSet(dataSet, 'ecg', loadimage, url);
if (openECG) loadImageFromDataSet(dataSet, 'ecg', loadimage, url, fromLocal);
throw "not support ECG";
}

//DiCOM Image
else if (dataSet.string(Tag.MediaStorageSOPClassUID) == SOPClassUID.MRImageStorage)//MR
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url);
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url, fromLocal);
else if (dataSet.string(Tag.MediaStorageSOPClassUID) == SOPClassUID.CTImageStorage)//CT
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url);
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url, fromLocal);
else if (dataSet.string(Tag.MediaStorageSOPClassUID) == SOPClassUID.ComputedRadiographyImageStorage)//X-Ray
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url);
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url, fromLocal);

//DiCOM Image(Multi-Frame)
else if (dataSet.string(Tag.MediaStorageSOPClassUID) == SOPClassUID.Multi_frameSingleBitSecondaryCaptureImageStorage)
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url);
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url, fromLocal);
else if (dataSet.string(Tag.MediaStorageSOPClassUID) == SOPClassUID.Multi_frameGrayscaleByteSecondaryCaptureImageStorage)
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url);
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url, fromLocal);
else if (dataSet.string(Tag.MediaStorageSOPClassUID) == SOPClassUID.Multi_frameGrayscaleWordSecondaryCaptureImageStorage)
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url);
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url, fromLocal);
else if (dataSet.string(Tag.MediaStorageSOPClassUID) == SOPClassUID.Multi_frameTrueColorSecondaryCaptureImageStorage)
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url);
loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url, fromLocal);

//try parse
else loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url);
else loadImageFromDataSet(dataSet, dataSet.intString(Tag.NumberOfFrames) > 1 ? 'frame' : 'sop', loadimage, url, fromLocal);
//else if (dataSet.intString(Tag.NumberOfFrames) > 1) loadImageFromDataSet(dataSet, 'frame', loadimage, url);
//else loadImageFromDataSet(dataSet, 'sop', loadimage, url);

Expand All @@ -369,12 +369,12 @@ function loadDICOMFromUrl(url, loadimage = true) {
if (loadimage) {
oReq.onreadystatechange = function (oEvent) {
if (oReq.readyState == 4 && oReq.status == 200)
loadDicomDataSet(oReq.response, true, url);
loadDicomDataSet(oReq.response, true, url, false);
}
} else {
oReq.onreadystatechange = function (oEvent) {
if (oReq.readyState == 4 && oReq.status == 200)
loadDicomDataSet(oReq.response, false, url);
loadDicomDataSet(oReq.response, false, url, false);
}
}
oReq.send();
Expand Down

0 comments on commit d152ca4

Please sign in to comment.