LT-253: Creating select2 component

This commit is contained in:
Bruno Alves de Faria authored and Erik Ziegler committed 2016-07-22 11:12:04 +02:00
1 parent 9d31b49997
commit 8564c52981
31 files changed
+123 -492

No files matched your search

@@ -1,19 +1,23 @@
<template name="additionalFindings">
<div class="additionalFindings">
<div class="scrollArea">
{{#form schema=currentSchema}}
{{#form schema=instance.currentSchema}}
<div class="row">
<div class="header">Additional Findings: Baseline</div>
{{>groupRadio labelClass='form-group' key='measurableDisease'}}
</div>
<div class="row">
<div class="header">Supplementary Measurements</div>
{{>selectInput (stateDataWithKey "numberOfBoneLesions")}}
{{>select2Input
key="regionsOfMetastaticDisease"
select2Options=regionsOfMetastaticDiseaseSelect2Options
state=state
currentSchema=currentSchema
{{>inputSelect class="bone-lesions" labelClass='form-group' key='numberOfBoneLesions' hideSearch=true}}
{{>inputSelect
class="disease-regions"
labelClass='form-group'
key='regionsOfMetastaticDisease'
multiple=true
options=(clone
placeholder='Search Regions'
allowClear=true
)
}}
{{>groupRadio labelClass='form-group' key='tracerRelatedToMetastaticDisease'}}
</div>
@@ -2,79 +2,58 @@ import { Template } from 'meteor/templating';
import { ReactiveDict } from 'meteor/reactive-dict';
import { schema as AdditionalFindingsSchema } from 'meteor/lesiontracker/both/schema/additionalFindings';
Template.additionalFindings.onCreated(function additionalFindingsOnCreated() {
console.log('additionalFindingsOnCreated');
Template.additionalFindings.onCreated(() => {
const instance = Template.instance();
instance.currentSchema = AdditionalFindingsSchema;
instance.state = new ReactiveDict();
});
if (!instance.data.currentTimepointId) {
Template.additionalFindings.onRendered(() => {
const instance = Template.instance();
// Get the form component
const form = instance.$('form:first').data('component');
const currentTimepointId = instance.data.currentTimepointId;
if (!currentTimepointId) {
console.warn('Case has no timepointId');
return;
}
const currentTimepointId = instance.data.currentTimepointId;
if (!currentTimepointId) {
console.warn('No currentTimepointId');
}
console.log(AdditionalFindings.find().fetch());
const additionalFindings = AdditionalFindings.findOne({
timepointId: currentTimepointId
});
if (additionalFindings) {
instance.id = additionalFindings._id;
// Don't store the MongoDB Id in the ReactiveDict
delete additionalFindings._id;
instance.state.set(additionalFindings);
form.value(additionalFindings);
} else {
const defaultData = instance.currentSchema.clean({});
instance.state.set(defaultData);
form.value(defaultData);
// Include patientId and timepointId
defaultData.patientId = Session.get('patientId');
defaultData.timepointId = currentTimepointId;
// TODO: Turn this into a Meteor Call to insert it on the server
// TODO: [design] Turn this into a Meteor Call to insert it on the server
instance.id = AdditionalFindings.insert(defaultData);
}
});
Template.additionalFindings.onRendered(function additionalFindingsOnRendered() {
const instance = Template.instance();
instance.autorun(computation => {
// Run this computation everytime the form data is changed
form.depend();
instance.autorun(() => {
console.log('Updating AdditionalFindings Collection');
console.log(instance.state.all());
// Stop here if it's the computation's first run
if (computation.firstRun) {
return;
}
// TODO: Turn this into a Meteor Call to update it on the server
let update = instance.state.all();
// Get the form data for AdditionalFindings
let formData = form.value();
// TODO: [design] Turn this into a Meteor Call to update it on the server
AdditionalFindings.update(instance.id, {
$set: update
$set: formData
});
});
});
Template.additionalFindings.helpers({
// We need these helper methods
// since we assign them into instance object instead of instance.data
currentSchema() {
return Template.instance().currentSchema;
},
state() {
return Template.instance().state;
},
regionsOfMetastaticDiseaseSelect2Options() {
return {
placeholder: 'Search Regions',
allowClear: true,
multiple: true
};
}
});
@@ -32,8 +32,9 @@
background-color: $uiGray
.form-group
padding: 7px 11px
color: $textPrimaryColor
padding: 7px 11px
width: 100%
&:not(:last-child)
border-bottom: $uiBorderThickness solid $uiBorderColorDark
@@ -44,19 +45,13 @@
line-height: 15px
margin: 10px 0 8px
// TODO: remove
h5
font-weight: bold
margin-bottom: 8px
.control-label
font-size: 14px
font-weight: 100
display: inline-block
padding: 5px
// TODO: remove radio-group
.radio-group, .group-radio
.group-radio
height: 30px
label
@@ -68,13 +63,11 @@
line-height: 30px
width: 50%
#regionsOfMetastaticDisease
width: 285px
height: 30px
border-radius: 2px
background-color: #b6b6b6
color: #3e3e3e
font-size: 14px
.disease-regions + .select2
width: 100% !important
.bone-lesions + .select2
width: auto !important
.buttonSection
cursor: pointer