74 lines
2.2 KiB
JavaScript
74 lines
2.2 KiB
JavaScript
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');
|
|
if (!form) return;
|
|
instance.selectedTrial.set(form.value().trialCriteria);
|
|
}
|
|
});
|