{{#if this.study.modalities}}
diff --git a/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.js b/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.js
index 3de9606a1..225000523 100644
--- a/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.js
+++ b/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.js
@@ -6,6 +6,14 @@ Template.studyTimepointStudy.onRendered(() => {
$study.addClass('active');
$thumbnails.css('max-height', $thumbnails.height());
$study.removeClass('active');
+
+ // Here we add, remove, and add the active class again because this way
+ // the max-height animation appears smooth to the user.
+ if (instance.data.active) {
+ Meteor.setTimeout(() => {
+ $study.addClass('active');
+ }, 1);
+ }
});
Template.studyTimepointStudy.events({
@@ -20,7 +28,32 @@ Template.studyTimepointStudy.events({
const $study = $(event.currentTarget).closest('.studyTimepointStudy');
const $timepoint = $study.closest('.studyTimepoint');
const study = $study[0];
- $timepoint.trigger('selectionChanged', [study]);
+
+ const studyInstanceUid = this.study.studyInstanceUid;
+ const selectionChanged = {
+ selection: [study],
+ studyInstanceUid: studyInstanceUid
+ };
+
+ // Check if the study already has series data,
+ // and if not, retrieve it.
+ if (!this.study.seriesList) {
+ var alreadyLoaded = ViewerStudies.findOne({
+ studyInstanceUid: studyInstanceUid
+ });
+
+ if (!alreadyLoaded) {
+ study.classList.add('loading');
+ getStudyMetadata(studyInstanceUid, (studyData) => {
+ ViewerStudies.insert(studyData);
+ $timepoint.trigger('selectionChanged', selectionChanged);
+ });
+ } else {
+ this.study.seriesList = alreadyLoaded.seriesList;
+ }
+ } else {
+ $timepoint.trigger('selectionChanged', selectionChanged);
+ }
}
});
diff --git a/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.styl b/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.styl
index 2ca02b899..50abf83da 100644
--- a/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.styl
+++ b/Packages/lesiontracker/client/components/studyTimepointBrowser/studyTimepointStudy.styl
@@ -14,6 +14,26 @@ $spacerX = 7px
$spacerY = 12px
.studyTimepointStudy
+ position: relative
+
+ .loadingTextDiv
+ padding: 25px
+ border-radius: 12px
+ position: absolute
+ opacity: 0
+ z-index: 100
+ background-color: $boxHoverBackgroundColor
+ pointer-events: none
+ margin: 0
+
+ &.loading
+ .loadingTextDiv
+ width: 100%
+ height: 100%
+ opacity: 0.75
+
+ .studyModality
+ opacity: 0.2
&.active
.studyModality
diff --git a/Packages/lesiontracker/package.js b/Packages/lesiontracker/package.js
index d8302a30f..8c8efddce 100644
--- a/Packages/lesiontracker/package.js
+++ b/Packages/lesiontracker/package.js
@@ -151,16 +151,14 @@ Package.onUse(function(api) {
api.addFiles('client/components/nonTargetLesionDialog/nonTargetLesionDialog.styl', 'client');
api.addFiles('client/components/nonTargetLesionDialog/nonTargetLesionDialog.js', 'client');
- api.addFiles('client/components/studyDateList/studyDateList.html', 'client');
- api.addFiles('client/components/studyDateList/studyDateList.styl', 'client');
- api.addFiles('client/components/studyDateList/studyDateList.js', 'client');
-
api.addFiles('client/components/studyTimepointBrowser/studyTimepoint.html', 'client');
api.addFiles('client/components/studyTimepointBrowser/studyTimepoint.styl', 'client');
api.addFiles('client/components/studyTimepointBrowser/studyTimepoint.js', 'client');
+
api.addFiles('client/components/studyTimepointBrowser/studyTimepointBrowser.html', 'client');
api.addFiles('client/components/studyTimepointBrowser/studyTimepointBrowser.styl', 'client');
api.addFiles('client/components/studyTimepointBrowser/studyTimepointBrowser.js', 'client');
+
api.addFiles('client/components/studyTimepointBrowser/studyTimepointStudy.html', 'client');
api.addFiles('client/components/studyTimepointBrowser/studyTimepointStudy.styl', 'client');
api.addFiles('client/components/studyTimepointBrowser/studyTimepointStudy.js', 'client');
diff --git a/Packages/worklist/client/components/worklistResult/worklistResult.styl b/Packages/worklist/client/components/worklistResult/worklistResult.styl
index 01c0e9f53..14b29fa18 100644
--- a/Packages/worklist/client/components/worklistResult/worklistResult.styl
+++ b/Packages/worklist/client/components/worklistResult/worklistResult.styl
@@ -9,7 +9,7 @@ $inputPlaceholderColor = lightgray
$studyListToolbarHeight = 75px
$theadBackgroundColor = #151a1f
-$tablePadding = 60px
+$tablePadding = 8%
$bodyCellHeight = 40px
.studyListToolbar
@@ -47,6 +47,7 @@ $bodyCellHeight = 40px
z-index: 1
#studyListContainer
+ width: 100%
padding: 0 $tablePadding
position: absolute
z-index: 2
diff --git a/Packages/worklist/client/lib/getStudyMetadata.js b/Packages/worklist/client/lib/getStudyMetadata.js
index fc772763a..10f8e1154 100644
--- a/Packages/worklist/client/lib/getStudyMetadata.js
+++ b/Packages/worklist/client/lib/getStudyMetadata.js
@@ -49,6 +49,17 @@ getStudyMetadata = function(studyInstanceUid, doneCallback, failCallback) {
// and instance number in ascending order
sortStudy(study);
+ // Add additional metadata to our study from the worklist
+ var worklistStudy = WorklistStudies.findOne({
+ studyInstanceUid: study.studyInstanceUid
+ });
+
+ if (!worklistStudy) {
+ return;
+ }
+
+ $.extend(study, worklistStudy);
+
// Then we store this data in the cache variable
StudyMetaData[studyInstanceUid] = study;