diff --git a/Packages/lesiontracker/client/api/timepoint.js b/Packages/lesiontracker/client/api/timepoint.js index 5499da0ee..11537c7db 100644 --- a/Packages/lesiontracker/client/api/timepoint.js +++ b/Packages/lesiontracker/client/api/timepoint.js @@ -26,8 +26,14 @@ class TimepointApi { }); } + // Return the prior timepoint prior() { - const latestDate = this.current().latestDate; + const current = this.current(); + if (!current) { + return; + } + + const latestDate = current.latestDate; return this.timepoints.findOne({ latestDate: { $lt: latestDate @@ -41,9 +47,15 @@ class TimepointApi { // Return only the current and prior Timepoints currentAndPrior() { - let timepoints = [this.current()]; + const timepoints = []; + + const current = this.current(); + if (current) { + timepoints.push(current); + } + const prior = this.prior(); - if (prior) { + if (current && prior._id !== current._id) { timepoints.push(prior); } diff --git a/Packages/lesiontracker/client/components/caseProgress/caseProgress.js b/Packages/lesiontracker/client/components/caseProgress/caseProgress.js index 0f7303aa8..9ca6c6aef 100644 --- a/Packages/lesiontracker/client/components/caseProgress/caseProgress.js +++ b/Packages/lesiontracker/client/components/caseProgress/caseProgress.js @@ -7,7 +7,14 @@ Template.caseProgress.onCreated(() => { instance.progressText = new ReactiveVar(); instance.isLocked = new ReactiveVar(); + // Get the current timepoint const current = instance.data.timepointApi.current(); + + // Stop here if no timepoint was found + if (!current) { + return; + } + if (!current.timepointId) { console.warn('Case has no timepointId'); return; diff --git a/Packages/lesiontracker/client/components/lesionTable/lesionTable.html b/Packages/lesiontracker/client/components/lesionTable/lesionTable.html index 2034895b9..39bcb5f32 100644 --- a/Packages/lesiontracker/client/components/lesionTable/lesionTable.html +++ b/Packages/lesiontracker/client/components/lesionTable/lesionTable.html @@ -1,13 +1,17 @@ diff --git a/Packages/lesiontracker/client/components/lesionTableHeaderRow/lesionTableHeaderRow.js b/Packages/lesiontracker/client/components/lesionTableHeaderRow/lesionTableHeaderRow.js index 441045710..2db4de0b6 100644 --- a/Packages/lesiontracker/client/components/lesionTableHeaderRow/lesionTableHeaderRow.js +++ b/Packages/lesiontracker/client/components/lesionTableHeaderRow/lesionTableHeaderRow.js @@ -16,7 +16,14 @@ Template.lesionTableHeaderRow.onCreated(() => { const instance = Template.instance(); instance.maxNumLesions = new ReactiveVar(); + // Get the current timepoint const current = instance.data.timepointApi.current(); + + // Stop here if no timepoint was found + if (!current) { + return; + } + const timepointType = current.timepointType; if (!instance.data.currentTimepointId) { diff --git a/Packages/lesiontracker/client/components/toolbarSection/toolbarSection.js b/Packages/lesiontracker/client/components/toolbarSection/toolbarSection.js index 8fc3b88f3..c90de53af 100644 --- a/Packages/lesiontracker/client/components/toolbarSection/toolbarSection.js +++ b/Packages/lesiontracker/client/components/toolbarSection/toolbarSection.js @@ -53,7 +53,10 @@ Template.toolbarSection.helpers({ }, toolbarButtons() { - var buttonData = []; + // Check if the measure tools shall be disabled + const isMesureDisabled = !Template.instance().data.timepointApi.currentTimepointId; + const buttonData = []; + buttonData.push({ id: 'zoom', title: 'Zoom', @@ -86,14 +89,16 @@ Template.toolbarSection.helpers({ id: 'bidirectional', title: 'Target', classes: 'imageViewerTool rm-l-3', - svgLink: '/packages/viewerbase/assets/icons.svg#icon-tools-measure-target' + svgLink: '/packages/viewerbase/assets/icons.svg#icon-tools-measure-target', + disabled: isMesureDisabled }); buttonData.push({ id: 'nonTarget', title: 'Non-Target', classes: 'imageViewerTool toolbarSectionButton', - svgLink: '/packages/viewerbase/assets/icons.svg#icon-tools-measure-non-target' + svgLink: '/packages/viewerbase/assets/icons.svg#icon-tools-measure-non-target', + disabled: isMesureDisabled }); buttonData.push({ @@ -107,28 +112,33 @@ Template.toolbarSection.helpers({ }, extraToolbarButtons() { - let buttonData = []; + // Check if the measure tools shall be disabled + const isMesureDisabled = !Template.instance().data.timepointApi.currentTimepointId; + const buttonData = []; // TODO: Get real icons for CR / UN / EX buttonData.push({ id: 'crTool', title: 'CR Tool', classes: 'imageViewerTool toolbarSectionButton', - svgLink: '/packages/viewerbase/assets/icons.svg#icon-tools-measure-temp' + svgLink: '/packages/viewerbase/assets/icons.svg#icon-tools-measure-temp', + disabled: isMesureDisabled }); buttonData.push({ id: 'unTool', title: 'UN Tool', classes: 'imageViewerTool toolbarSectionButton', - svgLink: '/packages/viewerbase/assets/icons.svg#icon-tools-measure-temp' + svgLink: '/packages/viewerbase/assets/icons.svg#icon-tools-measure-temp', + disabled: isMesureDisabled }); buttonData.push({ id: 'exTool', title: 'EX Tool', classes: 'imageViewerTool toolbarSectionButton', - svgLink: '/packages/viewerbase/assets/icons.svg#icon-tools-measure-temp' + svgLink: '/packages/viewerbase/assets/icons.svg#icon-tools-measure-temp', + disabled: isMesureDisabled }); return buttonData; diff --git a/Packages/viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.html b/Packages/viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.html index d8b165cb4..066d3a2ac 100644 --- a/Packages/viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.html +++ b/Packages/viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.html @@ -1,22 +1,22 @@ diff --git a/Packages/viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.js b/Packages/viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.js index 8cc3447ec..3a2759b64 100644 --- a/Packages/viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.js +++ b/Packages/viewerbase/client/components/viewer/toolbarSectionButton/toolbarSectionButton.js @@ -15,6 +15,11 @@ Template.toolbarSectionButton.helpers({ Template.toolbarSectionButton.events({ 'click .imageViewerTool'(event, instance) { + // Stop here if the tool is disabled + if ($(event.currentTarget).hasClass('disabled')) { + return; + } + const tool = event.currentTarget.id; const elements = instance.$('.imageViewerViewport'); @@ -29,6 +34,11 @@ Template.toolbarSectionButton.events({ } }, 'click .imageViewerCommand'(event, instance) { + // Stop here if the tool is disabled + if ($(event.currentTarget).hasClass('disabled')) { + return; + } + const command = event.currentTarget.id; if (!OHIF.viewer.functionList || !OHIF.viewer.functionList.hasOwnProperty(command)) { return;