LT-73 Move export tool and progress dialog component to OHIFViewer

This commit is contained in:
Evren Ozkan committed 2016-03-01 11:55:58 -05:00
1 parent c5651e7e04
commit 9970b8795b
15 files changed
+73 -50

No files matched your search

@@ -45,6 +45,6 @@
</a>
</div>
{{>timeoutCountdownDialog}}
{{>lesionTrackerProgressDialog}}
{{>progressDialog}}
{{>yield }}
</template>
@@ -1,14 +0,0 @@
<template name="lesionTrackerProgressDialog">
<div id="lesionTrackerProgressDialog" tabindex="0">
<div class="dialogHeader">
<h5>{{progressDialogTitle}}</h5>
</div>
<div class="dialogContent">
<div class="progress">
<div class="progress-bar progress-bar-striped active" role="progressbar" style="width:{{progressStatus}}">
{{progressStatus}}
</div>
</div>
</div>
</div>
</template>
@@ -1,44 +0,0 @@
progressDialog = {
'show': function(title, numberOfTotal) {
Session.set("progressDialogSettings", { title: title, numberOfCompleted: 0, numberOfTotal: numberOfTotal });
$('#lesionTrackerProgressDialog').css('display', 'block');
},
'update': function(numberOfCompleted) {
var progressDialogSettings = Session.get("progressDialogSettings");
progressDialogSettings.numberOfCompleted = numberOfCompleted;
Session.set("progressDialogSettings", progressDialogSettings);
if (progressDialogSettings.numberOfCompleted === progressDialogSettings.numberOfTotal) {
progressDialog.close();
}
},
'close': function() {
Session.set("progressDialogSettings", { title: "", numberOfCompleted: 0, numberOfTotal: 1 });
$('#lesionTrackerProgressDialog').css('display', 'none');
},
};
Template.lesionTrackerProgressDialog.helpers({
'progressDialogTitle': function () {
if (Session.get("progressDialogSettings") && Session.get("progressDialogSettings").title) {
return Session.get("progressDialogSettings").title;
}
return "";
},
'progressStatus': function() {
var numberOfCompleted = 0;
if (Session.get("progressDialogSettings") && Session.get("progressDialogSettings").numberOfCompleted) {
numberOfCompleted = Session.get("progressDialogSettings").numberOfCompleted;
}
var numberofTotal = 1;
if (Session.get("progressDialogSettings") && Session.get("progressDialogSettings").numberOfTotal) {
numberofTotal = Session.get("progressDialogSettings").numberOfTotal;
}
return parseInt((numberOfCompleted / numberofTotal) * 100) + "%";
}
});
@@ -1,18 +0,0 @@
#lesionTrackerProgressDialog
display: none
position: absolute
top: 0
bottom: 0
left: 0
right: 0
margin: auto
width: 20%
height: 15%
z-index: 100
border-radius: 5px
padding: 10px 20px 10px 20px
background-color: rgba(255,255,255,1)
outline: none
.dialogContent
margin-bottom: 20px
@@ -85,26 +85,5 @@ function exportSelectedStudies() {
}
}).fetch() || [];
if (selectedStudies.length < 1) {
return;
}
var studiesToExport = [];
var numberOfStudiesToQuery = selectedStudies.length;
progressDialog.show("Querying Studies...", numberOfStudiesToQuery);
selectedStudies.forEach(function(selectedStudy) {
getStudyMetadata(selectedStudy.studyInstanceUid, function(study) {
studiesToExport.push(study);
var numberOfStudiesQueried = studiesToExport.length;
progressDialog.update(numberOfStudiesQueried);
if (numberOfStudiesQueried === numberOfStudiesToQuery) {
exportStudies(studiesToExport);
}
});
});
exportStudies(selectedStudies);
}
@@ -1,97 +0,0 @@
/**
* Exports requested studies
* @param studiesToExport Studies to export
*/
exportStudies = function(studiesToExport) {
var numberOfFilesToExport = getNumberOfFilesToExport(studiesToExport);
progressDialog.show("Exporting Studies...", numberOfFilesToExport);
try {
exportStudiesInternal(studiesToExport, numberOfFilesToExport);
} catch (err) {
progressDialog.close();
console.error("Failed to export studies: " + err.message);
}
};
function exportStudiesInternal(studiesToExport, numberOfFilesToExport) {
var zip = new JSZip();
var exportFailed = false;
var numberOfFilesExported = 0;
studiesToExport.forEach(function(study) {
sortStudy(study);
var studyFolder = zip.folder(study.studyInstanceUid);
study.seriesList.forEach(function(series) {
var seriesFolder = studyFolder.folder(series.seriesInstanceUid);
series.instances.forEach(function(instance) {
if (!instance.wadouri) {
return;
}
// If failed to download a dicom file, skip others
if (exportFailed) {
return;
}
// Download and Zip the dicom file
var xhr = new XMLHttpRequest();
xhr.open("GET", instance.wadouri, true);
xhr.responseType = "arraybuffer";
// Downloaded the dicom file completely
xhr.onload = function() {
// If failed to download a dicom file, skip others
if (exportFailed) {
return;
}
var responseArrayBuffer = xhr.response;
if (responseArrayBuffer) {
seriesFolder.file(instance.sopInstanceUid + ".dcm", responseArrayBuffer, { binary: true });
}
numberOfFilesExported++;
if (numberOfFilesExported === numberOfFilesToExport) {
var zipContent = zip.generate({ type: "blob" });
saveAs(zipContent, "studies.zip");
}
progressDialog.update(numberOfFilesExported);
};
// Failed to download the dicom file
xhr.onerror = function() {
exportFailed = true;
progressDialog.close();
console.error("Failed to export studies!");
};
xhr.send(null);
});
});
});
}
function getNumberOfFilesToExport(studiesToExport) {
var numberOFFilesToExport = 0;
studiesToExport.forEach(function(study) {
study.seriesList.forEach(function(series) {
series.instances.forEach(function(instance) {
if (instance.wadouri) {
numberOFFilesToExport++;
}
});
});
});
return numberOFFilesToExport;
}
-7
View File
@@ -129,10 +129,6 @@ Package.onUse(function(api) {
api.addFiles('client/components/lesionTrackerViewportOverlay/lesionTrackerViewportOverlay.styl', 'client');
api.addFiles('client/components/lesionTrackerViewportOverlay/lesionTrackerViewportOverlay.js', 'client');
api.addFiles('client/components/lesionTrackerProgressDialog/lesionTrackerProgressDialog.html', 'client');
api.addFiles('client/components/lesionTrackerProgressDialog/lesionTrackerProgressDialog.styl', 'client');
api.addFiles('client/components/lesionTrackerProgressDialog/lesionTrackerProgressDialog.js', 'client');
// Server functions
api.addFiles('server/collections.js', 'server');
api.addFiles('server/removeCollections.js', [ 'server' ]);
@@ -171,8 +167,6 @@ Package.onUse(function(api) {
api.addFiles('lib/handleMeasurementModified.js', 'client');
api.addFiles('lib/handleMeasurementRemoved.js', 'client');
api.addFiles('lib/exportStudies.js', 'client');
// Export global functions
api.export('pixelSpacingAutorunCheck', 'client');
@@ -195,7 +189,6 @@ Package.onUse(function(api) {
api.export('getTrialCriteriaConstraints', 'client');
api.export('calculateTotalLesionBurden', 'client');
api.export('convertToNonTarget', 'client');
api.export('exportStudies', 'client');
api.export('setTimepointActiveTool', 'client');