From bde625a961bff240c7c8325bed85cf2e4a726ca6 Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Tue, 24 Oct 2017 14:20:57 -0200 Subject: [PATCH] Allowing lazy-loading on viewer --- .../client/components/viewer/viewer.js | 2 +- .../timepointBrowser/quickSwitch.html | 2 +- .../timepointBrowser/quickSwitch.js | 12 ++++- .../client/components/browser/index.js | 1 + .../client/components/browser/item.html | 20 +++++---- .../imports/client/components/browser/item.js | 44 ++++++++++++++++--- .../client/components/browser/list.html | 2 +- .../imports/client/components/browser/list.js | 11 +++++ .../client/components/browser/list.styl | 5 ++- .../client/components/browser/series.html | 2 +- .../client/components/browser/series.js | 33 ++++++++++++-- .../imports/client/lib/loadStudy.js | 17 +++++++ .../imageViewerViewport.js | 24 ++++++++-- .../seriesQuickSwitch/seriesQuickSwitch.html | 4 +- .../seriesQuickSwitch/seriesQuickSwitch.js | 24 ++++++++-- 15 files changed, 167 insertions(+), 36 deletions(-) create mode 100644 Packages/ohif-studies/imports/client/components/browser/list.js diff --git a/LesionTracker/client/components/viewer/viewer.js b/LesionTracker/client/components/viewer/viewer.js index 2aa93c919..ed93d67e8 100644 --- a/LesionTracker/client/components/viewer/viewer.js +++ b/LesionTracker/client/components/viewer/viewer.js @@ -111,7 +111,7 @@ Template.viewer.onCreated(() => { const studyMetadata = new OHIF.metadata.StudyMetadata(study, study.studyInstanceUid); let displaySets = study.displaySets; - if(!study.displaySets) { + if (!study.displaySets) { displaySets = OHIF.viewerbase.sortingManager.getDisplaySets(studyMetadata); study.displaySets = displaySets; } diff --git a/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.html b/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.html index 99e11f257..4432f66e0 100644 --- a/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.html +++ b/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.html @@ -1,6 +1,6 @@ diff --git a/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js b/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js index 52949ed90..1a67c39ec 100644 --- a/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js +++ b/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js @@ -27,7 +27,17 @@ Template.timepointBrowserQuickSwitch.onCreated(() => { instance.autorun(() => { OHIF.viewerbase.layoutManager.observer.depend(); const viewportData = OHIF.viewerbase.layoutManager.viewportData[viewportIndex]; - instance.updateSelectedTimepoint(viewportData.studyInstanceUid); + let { studyInstanceUid } = viewportData; + if (!studyInstanceUid) { + Tracker.nonreactive(() => { + const currentStudy = instance.data.currentStudy.get(); + if (currentStudy) { + studyInstanceUid = currentStudy.studyInstanceUid; + } + }); + } + + instance.updateSelectedTimepoint(studyInstanceUid); }); instance.autorun(() => { diff --git a/Packages/ohif-studies/imports/client/components/browser/index.js b/Packages/ohif-studies/imports/client/components/browser/index.js index 5474d5ef4..2a30567a8 100644 --- a/Packages/ohif-studies/imports/client/components/browser/index.js +++ b/Packages/ohif-studies/imports/client/components/browser/index.js @@ -1,6 +1,7 @@ import './item.html'; import './item.js'; import './list.html'; +import './list.js'; import './list.styl'; import './quickSwitch.html'; import './quickSwitch.js'; diff --git a/Packages/ohif-studies/imports/client/components/browser/item.html b/Packages/ohif-studies/imports/client/components/browser/item.html index 8eff95a84..03bb520c6 100644 --- a/Packages/ohif-studies/imports/client/components/browser/item.html +++ b/Packages/ohif-studies/imports/client/components/browser/item.html @@ -4,18 +4,20 @@ {{#if isLoading}} {{>loadingText}} {{/if}} -
-
-
{{instance.modalities}}
+ {{#let studyData=instance.studyData.get}} +
+
+
{{studyData.modalities}}
+
+
+
{{formatDA studyData.studyDate 'D-MMM-YYYY'}}
+
{{studyData.studyDescription}}
+
-
-
{{formatDA this.studyInformation.studyDate 'D-MMM-YYYY'}}
-
{{this.studyInformation.studyDescription}}
-
-
+ {{/let}}
{{#if this.studyChildTemplate}} - {{#if and (not isLoading) instance.loaded}} + {{#if and (not isLoading) instance.studyData.get instance.loaded}} {{>Template.dynamic template=this.studyChildTemplate data=(clone this)}} {{/if}} {{/if}} diff --git a/Packages/ohif-studies/imports/client/components/browser/item.js b/Packages/ohif-studies/imports/client/components/browser/item.js index 6d8cc0d46..275777809 100644 --- a/Packages/ohif-studies/imports/client/components/browser/item.js +++ b/Packages/ohif-studies/imports/client/components/browser/item.js @@ -7,12 +7,42 @@ import { OHIF } from 'meteor/ohif:core'; Template.studyBrowserItem.onCreated(() => { const instance = Template.instance(); + const { studyInformation } = instance.data; + const { studyInstanceUid } = studyInformation; instance.loaded = false; instance.loading = new ReactiveVar(false); - const modalities = instance.data.studyInformation.modalities || 'UN'; - instance.modalities = _.uniq(modalities.split(/[^A-Za-z]+/g)).join(' '); + instance.studyData = new ReactiveVar(studyInformation); + + instance.studyMetadata = null; + instance.getStudyMetadata = () => { + instance.loading.dep.depend(); + + if (!instance.studyMetadata) { + instance.studyMetadata = OHIF.viewer.Studies.findBy({ studyInstanceUid }) || null; + } + + return instance.studyMetadata; + }; + + instance.autorun(() => { + const instance = Template.instance(); + + OHIF.studies.loadedDict.get(studyInstanceUid); + const studyMetadata = instance.getStudyMetadata(); + if (studyMetadata) { + const firstInstance = studyMetadata.getFirstInstance(); + instance.studyData.set({ + studyDate: firstInstance.getRawValue('x00080020') || '', + studyDescription: firstInstance.getRawValue('x00081030') || '', + modalities: firstInstance.getRawValue('x00080060') || '', + }); + + instance.loaded = true; + instance.loading.set(false); + } + }); }); Template.studyBrowserItem.events({ @@ -49,10 +79,14 @@ Template.studyBrowserItem.helpers({ return Template.instance().loading.get(); }, - modalityStyle() { + modalitiesText(modalities) { + const text = modalities || 'UN'; + return _.uniq(text.split(/[^A-Za-z]+/g)).join(' '); + }, + + modalityStyle(modalities) { // Responsively styles the Modality Acronyms for studies with more than one modality - const instance = Template.instance(); - const numModalities = instance.modalities.split(/\s/g).length; + const numModalities = modalities.split(/\s/g).length; if (numModalities === 1) { // If we have only one modality, it should take up the whole div diff --git a/Packages/ohif-studies/imports/client/components/browser/list.html b/Packages/ohif-studies/imports/client/components/browser/list.html index 0afac4dda..d17bfaa44 100644 --- a/Packages/ohif-studies/imports/client/components/browser/list.html +++ b/Packages/ohif-studies/imports/client/components/browser/list.html @@ -1,6 +1,6 @@