diff --git a/LesionTracker/client/components/app/app.html b/LesionTracker/client/components/app/app.html index ec011ed1c..9a3c18afb 100644 --- a/LesionTracker/client/components/app/app.html +++ b/LesionTracker/client/components/app/app.html @@ -28,7 +28,6 @@
- {{>optionsModal}} {{>serverInformationModal}} {{>lastLoginModal}} {{>progressDialog}} diff --git a/LesionTracker/client/components/toolbarSection/toolbarSection.html b/LesionTracker/client/components/toolbarSection/toolbarSection.html index 34c4dc95a..0654390c6 100644 --- a/LesionTracker/client/components/toolbarSection/toolbarSection.html +++ b/LesionTracker/client/components/toolbarSection/toolbarSection.html @@ -5,7 +5,7 @@ {{>roundedButtonGroup leftSidebarToggleButtonData}} - {{>toolbarSectionTools toolbarButtons=toolbarButtons extraToolbarButtons=extraToolbarButtons}} + {{>toolbarSectionTools toolbarButtons=toolbarButtons}} {{#if splitView}} {{>studySeriesQuickSwitch (clone this side="right" viewportIndex=1)}} diff --git a/LesionTracker/client/components/toolbarSection/toolbarSection.js b/LesionTracker/client/components/toolbarSection/toolbarSection.js index 1822d76df..56fe253fd 100644 --- a/LesionTracker/client/components/toolbarSection/toolbarSection.js +++ b/LesionTracker/client/components/toolbarSection/toolbarSection.js @@ -1,5 +1,6 @@ import { Template } from 'meteor/templating'; import { Session } from 'meteor/session'; +import { OHIF } from 'meteor/ohif:core'; import { Viewerbase } from 'meteor/ohif:viewerbase'; Template.toolbarSection.helpers({ @@ -233,14 +234,9 @@ Template.toolbarSection.events({ }, 'click #toggleTrial'(event) { - const $this = $(event.currentTarget); - - // Stop here if the tool is disabled - if ($this.hasClass('disabled')) { - return; + if (!$(event.currentTarget).hasClass('disabled')) { + OHIF.ui.showDialog('trialOptionsModal'); } - - $('#optionsModal').modal(); } }); diff --git a/LesionTracker/client/routes.js b/LesionTracker/client/routes.js index 9c8bd2afe..c505cff73 100644 --- a/LesionTracker/client/routes.js +++ b/LesionTracker/client/routes.js @@ -15,7 +15,6 @@ Router.onBeforeAction('loading'); var data = { additionalTemplates: [ - 'optionsModal', 'serverInformationModal', 'lastLoginModal', 'viewSeriesDetailsModal' diff --git a/OHIFViewer/client/components/toolbarSection/toolbarSection.html b/OHIFViewer/client/components/toolbarSection/toolbarSection.html index fe062ac84..b652328eb 100644 --- a/OHIFViewer/client/components/toolbarSection/toolbarSection.html +++ b/OHIFViewer/client/components/toolbarSection/toolbarSection.html @@ -4,9 +4,7 @@
{{>roundedButtonGroup leftSidebarToggleButtonData}}
- {{>toolbarSectionTools - toolbarButtons=toolbarButtons - extraToolbarButtons=extraToolbarButtons}} + {{>toolbarSectionTools toolbarButtons=toolbarButtons}}
{{>roundedButtonGroup rightSidebarToggleButtonData}}
diff --git a/Packages/ohif-lesiontracker/both/configuration/tools/bidirectional.js b/Packages/ohif-lesiontracker/both/configuration/tools/bidirectional.js index c23f3294d..fc22d939c 100644 --- a/Packages/ohif-lesiontracker/both/configuration/tools/bidirectional.js +++ b/Packages/ohif-lesiontracker/both/configuration/tools/bidirectional.js @@ -1,5 +1,6 @@ import { SimpleSchema } from 'meteor/aldeed:simple-schema'; import { MeasurementSchemaTypes } from 'meteor/ohif:measurements/both/schema/measurements'; +// import { OHIF } from 'meteor/ohif:core'; const CornerstoneHandleSchema = MeasurementSchemaTypes.CornerstoneHandleSchema; @@ -68,7 +69,7 @@ const displayFunction = data => { // const nodalType = data.isNodal ? 'nodal' : 'extraNodal'; // Get criteria types - // const criteriaTypes = TrialCriteriaTypes.find({ + // const criteriaTypes = OHIF.lesiontracker.TrialCriteriaTypes.find({ // selected: true // }).map(criteria => { // return criteria.id; diff --git a/Packages/ohif-lesiontracker/client/components/index.js b/Packages/ohif-lesiontracker/client/components/index.js index 4b9bd4f05..4eda24336 100644 --- a/Packages/ohif-lesiontracker/client/components/index.js +++ b/Packages/ohif-lesiontracker/client/components/index.js @@ -1,9 +1,9 @@ import './dialog/nonTargetMeasurement.html'; import './dialog/nonTargetMeasurement.js'; -import './optionsModal/optionsModal.html'; -import './optionsModal/optionsModal.styl'; -import './optionsModal/optionsModal.js'; +import './trialOptionsModal/irRCDescription.html'; +import './trialOptionsModal/recistDescription.html'; -import './optionsModal/recistDescription/recistDescription.html'; -import './optionsModal/irRCDescription/irRCDescription.html'; +import './trialOptionsModal/trialOptionsModal.html'; +import './trialOptionsModal/trialOptionsModal.styl'; +import './trialOptionsModal/trialOptionsModal.js'; diff --git a/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.html b/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.html deleted file mode 100644 index 81c6f3b42..000000000 --- a/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.html +++ /dev/null @@ -1,39 +0,0 @@ - \ No newline at end of file diff --git a/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.js b/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.js deleted file mode 100644 index 7c70bad8e..000000000 --- a/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.js +++ /dev/null @@ -1,53 +0,0 @@ -import { OHIF } from 'meteor/ohif:core'; - -TrialCriteriaTypes = new Meteor.Collection(null); -TrialCriteriaTypes._debugName = 'TrialCriteriaTypes'; - -TrialCriteriaTypes.insert({ - id: 'RECIST', - name: 'RECIST 1.1', - descriptionTemplate: 'recistDescription', - selected: true -}); - -TrialCriteriaTypes.insert({ - id: 'irRC', - name: 'irRC', - descriptionTemplate: 'irRCDescription', - selected: false -}); - -Template.optionsModal.helpers({ - trialCriteriaTypes: function() { - return TrialCriteriaTypes.find(); - } -}); - -Template.optionsModal.events({ - /** - * When the trial criteria radio buttons are changed, change the - * trial assessment criteria for the Lesion Tracker - * - * @param e The 'change' event on the selected radio button - */ - 'change input.trialCriteria': function(e) { - var isChecked = e.currentTarget.checked; - - // Set "Selected" to false for the entire collection - // TODO: Remove this when we allow multiple criteria - TrialCriteriaTypes.update({}, { - $set: { - selected: false - } - }, { - multi: true - }); - - // Set the current Criteria in the collection to selected - TrialCriteriaTypes.update(this._id, { - $set: { - selected: isChecked - } - }); - } -}); diff --git a/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.styl b/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.styl deleted file mode 100644 index c957dd295..000000000 --- a/Packages/ohif-lesiontracker/client/components/optionsModal/optionsModal.styl +++ /dev/null @@ -1,7 +0,0 @@ -.trialCriteriaLabel - margin: 0 5px - -#optionsModal - .panel - background-color: transparent - \ No newline at end of file diff --git a/Packages/ohif-lesiontracker/client/components/optionsModal/irRCDescription/irRCDescription.html b/Packages/ohif-lesiontracker/client/components/trialOptionsModal/irRCDescription.html similarity index 100% rename from Packages/ohif-lesiontracker/client/components/optionsModal/irRCDescription/irRCDescription.html rename to Packages/ohif-lesiontracker/client/components/trialOptionsModal/irRCDescription.html diff --git a/Packages/ohif-lesiontracker/client/components/optionsModal/recistDescription/recistDescription.html b/Packages/ohif-lesiontracker/client/components/trialOptionsModal/recistDescription.html similarity index 100% rename from Packages/ohif-lesiontracker/client/components/optionsModal/recistDescription/recistDescription.html rename to Packages/ohif-lesiontracker/client/components/trialOptionsModal/recistDescription.html diff --git a/Packages/ohif-lesiontracker/client/components/trialOptionsModal/trialOptionsModal.html b/Packages/ohif-lesiontracker/client/components/trialOptionsModal/trialOptionsModal.html new file mode 100644 index 000000000..2759b17e4 --- /dev/null +++ b/Packages/ohif-lesiontracker/client/components/trialOptionsModal/trialOptionsModal.html @@ -0,0 +1,17 @@ + diff --git a/Packages/ohif-lesiontracker/client/components/trialOptionsModal/trialOptionsModal.js b/Packages/ohif-lesiontracker/client/components/trialOptionsModal/trialOptionsModal.js new file mode 100644 index 000000000..ee91c7b4b --- /dev/null +++ b/Packages/ohif-lesiontracker/client/components/trialOptionsModal/trialOptionsModal.js @@ -0,0 +1,72 @@ +import { Meteor } from 'meteor/meteor'; +import { Template } from 'meteor/templating'; +import { ReactiveVar } from 'meteor/reactive-var'; +import { _ } from 'meteor/underscore'; +import { OHIF } from 'meteor/ohif:core'; +import { SimpleSchema } from 'meteor/aldeed:simple-schema'; + +Meteor.startup(() => { + const TrialCriteriaTypes = new Meteor.Collection(null); + TrialCriteriaTypes._debugName = 'TrialCriteriaTypes'; + + TrialCriteriaTypes.insert({ + id: 'RECIST', + name: 'RECIST 1.1', + descriptionTemplate: 'recistDescription', + selected: true + }); + + TrialCriteriaTypes.insert({ + id: 'irRC', + name: 'irRC', + descriptionTemplate: 'irRCDescription', + selected: false + }); + + OHIF.lesiontracker.TrialCriteriaTypes = TrialCriteriaTypes; +}); + +Template.trialOptionsModal.onCreated(() => { + const instance = Template.instance(); + const { TrialCriteriaTypes } = OHIF.lesiontracker; + const types = TrialCriteriaTypes.find().fetch(); + const defaultValue = _.findWhere(types, { selected: true })._id; + instance.selectedTrial = new ReactiveVar(defaultValue); + + instance.schema = new SimpleSchema({ + trialCriteria: { + type: String, + allowedValues: _.pluck(types, '_id'), + valuesLabels: _.pluck(types, 'name'), + defaultValue + } + }); + + instance.data.promise.then(formData => { + // Set "selected" to false for the entire collection + TrialCriteriaTypes.update({}, { + $set: { selected: false } + }, { + multi: true + }); + + // TODO: Use filter with "_id: $in" when allowing multiple criteria + // Set "selected" to true for the current criteria + TrialCriteriaTypes.update(formData.trialCriteria, { + $set: { selected: true } + }); + }); +}); + +Template.trialOptionsModal.helpers({ + getDescriptionTemplate(_id) { + return OHIF.lesiontracker.TrialCriteriaTypes.findOne(_id).descriptionTemplate; + } +}); + +Template.trialOptionsModal.events({ + 'change .js-trial'(event, instance) { + const form = instance.$('form').first().data('component'); + instance.selectedTrial.set(form.value().trialCriteria); + } +}); diff --git a/Packages/ohif-lesiontracker/client/components/trialOptionsModal/trialOptionsModal.styl b/Packages/ohif-lesiontracker/client/components/trialOptionsModal/trialOptionsModal.styl new file mode 100644 index 000000000..39d3bbede --- /dev/null +++ b/Packages/ohif-lesiontracker/client/components/trialOptionsModal/trialOptionsModal.styl @@ -0,0 +1,3 @@ +#trialOptionsModal + .panel + background-color: transparent diff --git a/Packages/ohif-lesiontracker/client/lib/MeasurementValidation.js b/Packages/ohif-lesiontracker/client/lib/MeasurementValidation.js index 63928e864..437bf043c 100644 --- a/Packages/ohif-lesiontracker/client/lib/MeasurementValidation.js +++ b/Packages/ohif-lesiontracker/client/lib/MeasurementValidation.js @@ -218,7 +218,7 @@ function assessSingleMeasurement(constraints, measurementData) { function validateSingleMeasurement(measurementData) { // Obtain the name of the current TrialResponseAssessmentCriteria that // we are using. - var criteriaTypes = TrialCriteriaTypes.find({ + var criteriaTypes = OHIF.lesiontracker.TrialCriteriaTypes.find({ selected: true }).map(function(criteria) { return criteria.id; @@ -268,7 +268,7 @@ function validateGroups() { // Obtain the names of the current TrialResponseAssessmentCriteria that // we are using. - var criteriaTypes = TrialCriteriaTypes.find({ + var criteriaTypes = OHIF.lesiontracker.TrialCriteriaTypes.find({ selected: true }).map(function(criteria) { return criteria.id; @@ -305,7 +305,7 @@ function validateGroups() { function validateAll() { // Obtain the names of the current TrialResponseAssessmentCriteria that // we are using. - var criteriaTypes = TrialCriteriaTypes.find({ + var criteriaTypes = OHIF.lesiontracker.TrialCriteriaTypes.find({ selected: true }).map(function(criteria) { return criteria.id; diff --git a/Packages/ohif-lesiontracker/package.js b/Packages/ohif-lesiontracker/package.js index 0ae134e04..9e17bda6c 100644 --- a/Packages/ohif-lesiontracker/package.js +++ b/Packages/ohif-lesiontracker/package.js @@ -38,7 +38,6 @@ Package.onUse(function(api) { api.export('ValidationErrors', 'client'); api.export('LesionLocations', 'client'); api.export('LocationResponses', 'client'); - api.export('TrialCriteriaTypes', 'client'); // Export collections spanning both client and server api.export('Configuration', ['client', 'server']); diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.js index cf4d8a7be..501322209 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.js @@ -39,7 +39,7 @@ Template.measurementTableView.helpers({ getNewToolGroup(tool) { const configuration = OHIF.measurements.MeasurementApi.getConfiguration(); - const trialCriteriaType = TrialCriteriaTypes.findOne({ selected: true }); + const trialCriteriaType = OHIF.lesiontracker.TrialCriteriaTypes.findOne({ selected: true }); const trialCriteriaTypeId = trialCriteriaType.id.toLowerCase(); const trialToolGroupMap = { recist: 'nonTargets', diff --git a/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js b/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js index 56a2f0abc..7628d9863 100644 --- a/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js +++ b/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js @@ -22,9 +22,9 @@ class ConformanceCriteria { }, 300); Tracker.autorun(() => { - const trialCriteriaType = TrialCriteriaTypes.findOne({ selected: true }); + const selectedType = OHIF.lesiontracker.TrialCriteriaTypes.findOne({ selected: true }); this.measurementApi.changeObserver.depend(); - validate(trialCriteriaType); + validate(selectedType); }); }