Set lesion table row data in correct columns

Populate Measurements collection according to lesion table columns
This commit is contained in:
Aysel Afsar 2015-10-29 15:40:20 -04:00
parent 074f043a65
commit 78faa2a8f9
8 changed files with 87 additions and 44 deletions

View File

@ -87,53 +87,71 @@ var measurementManagerDAL = (function () {
return Session.get("activeContentId");
}
function getTimepointsOfTab (){
var contentId = getContentId();
var tabData = TabsTimepoints.find({contentId: contentId}).fetch();
return tabData[0].timepoints;
}
// Adds new timepoint item to tiemepoints array
function addLesionData (lesionData) {
// TODO: if find lesionNumber, add
// TODO: Unless create new object
var contentId = getContentId();
var timepointID = lesionData.timepointID;
var tabMeasurements = Measurements.find({contentId: contentId}).fetch();
var existingMeasurement;
if(tabMeasurements != undefined && tabMeasurements.length > 0) {
var tabLesionData = tabMeasurements.filter(function(item){return (item.lesionData.lesionNumber == lesionData.lesionNumber);} )[0];
if(tabLesionData != undefined) {
existingMeasurement = tabLesionData.lesionData;
var tabMeasurements = Measurements.find({contentId: contentId, "lesionData.lesionNumber": lesionData.lesionNumber}).fetch();
var tabMeasurementsData = tabMeasurements[0];
if (tabMeasurements != undefined && tabMeasurements.length > 0) {
// Update timepoint
var timepointArr = tabMeasurementsData.lesionData.timepoints;
for(var i=0; i< timepointArr.length; i++) {
var timepoint = timepointArr[i];
if(timepoint[timepointID] != undefined) {
timepoint[timepointID].longestDiameter = lesionData.measurementText;
}
}
}
if (existingMeasurement != undefined) {
var existingTimepoint = existingMeasurement.timepoints;
existingTimepoint[timepointID] = {longestDiameter: lesionData.measurementText};
Measurements.update(
{ contentId: contentId, "lesionData.lesionNumber": lesionData.lesionNumber},
{
$set: {
"lesionData.timepoints": existingTimepoint
"lesionData.timepoints": timepointArr
}
}, {multi: true}
);
console.log(Measurements.find())
} else {
var timepointArr = {};
timepointArr[timepointID] = {longestDiameter: lesionData.measurementText};
// Add new measurement data
var timepointsOfTab = getTimepointsOfTab();
var timepointsArr = [];
for(var i=0; i< timepointsOfTab.length; i++) {
var timepointId = timepointsOfTab[i].timepointID;
var lesionTimepointId = lesionData.timepointID;
if (timepointId === lesionTimepointId) {
// Add real mesurement
var timepointObject = {};
timepointObject[timepointId] = {longestDiameter: lesionData.measurementText};
timepointsArr.push(timepointObject);
} else {
// Add null measurement
var timepointObject = {};
timepointObject[timepointId] = {longestDiameter: ""};
timepointsArr.push(timepointObject);
}
}
var lesionDataCollectionObject = {
lesionNumber: lesionData.lesionNumber,
isTarget: true,
location: getLocationName(lesionData.locationUID),
timepoints: timepointArr
timepoints: timepointsArr
};
Measurements.insert({contentId: contentId, lesionData: lesionDataCollectionObject});
console.log(Measurements.find());
}
// Populate timepoints array
var roi = {
uid: lesionData.uid,

View File

@ -7,8 +7,10 @@
<th id="thTarget">Target</th>
<th id="thLocation">Location</th>
<!--Each time point name as a column-->
{{ #each timepointNames }}
{{ >lesionTableTimepointHeader }}
{{ #each tabTimepoints }}
{{ #each timepoints }}
{{ >lesionTableTimepointHeader }}
{{ /each }}
{{ /each }}
</tr>
</thead>

View File

@ -1,15 +1,14 @@
Measurements = new Meteor.Collection(null);
TimepointNames = new Meteor.Collection(null);
TabsTimepoints = new Meteor.Collection(null);
Template.lesionTable.helpers({
'measurement': function() {
var contentId = Session.get("activeContentId");
console.log(Measurements.find({contentId: contentId}));
return Measurements.find({contentId: contentId});
},
'timepointNames': function() {
'tabTimepoints': function() {
var contentId = Session.get("activeContentId");
return Template.instance().timepointNamesDictionary.get(contentId);
return TabsTimepoints.find({contentId: contentId});
},
'lesionData': function() {
var array = [];
@ -23,26 +22,41 @@ Template.lesionTable.helpers({
Template.lesionTable.onRendered(function() {
// TODO: Create seperate method
var cols = Template.instance().data.viewportColumns.curValue;
var rows = Template.instance().data.viewportRows.curValue;
var totalViewports = cols * rows;
var contentId = Session.get('activeContentId');
var timepointsArray = [];
for(var i=0; i< totalViewports; i++) {
var timepointNamesArray = [];
if(Template.instance().timepointNamesDictionary.get(contentId) != undefined) {
timepointNamesArray = Template.instance().timepointNamesDictionary.get(contentId);
}
var timepointID = contentId.toString()+ i.toString();
var timepointName = "Baseline";
if(i > 0) {
timepointName = "Follow Up "+i;
}
var timepointObject = {id: timepointID, name: timepointName};
timepointNamesArray.push(timepointObject);
Template.instance().timepointNamesDictionary.set(contentId, timepointNamesArray);
var timepointObject = {timepointID: timepointID, timepointName: timepointName};
timepointsArray.push(timepointObject);
}
// Prevent duplicate data when onRendered is called
var tabTimepoint = TabsTimepoints.find({contentId: contentId}).fetch();
if (tabTimepoint != undefined && tabTimepoint.length > 0) {
// Update timepoints
TabsTimepoints.update(
{ contentId: contentId},
{
$set: {
timepoints: timepointsArray
}
}, {multi: true}
);
} else {
// Insert new timepoints array
TabsTimepoints.insert({contentId: contentId, timepoints: timepointsArray});
}
});

View File

@ -1,10 +1,5 @@
Template.lesionTableRow.helpers({
'timepoints': function() {
var array = [];
var timepoints = this.lesionData.timepoints;
Object.keys(timepoints).forEach(function(key) {
array.push(timepoints[key]);
});
return array;
return this.lesionData.timepoints;
}
});

View File

@ -0,0 +1,6 @@
Template.lesionTableTimepointCell.helpers({
'longestDiameter': function() {
var longestDiameter = this[Object.keys(this)[0]].longestDiameter;
return longestDiameter;
}
});

View File

@ -1,3 +1,3 @@
<template name="lesionTableTimepointHeader">
<th>{{name}}</th>
<th>{{timepointName}}</th>
</template>

View File

@ -0,0 +1,5 @@
Template.lesionTableTimepointHeader.helpers({
'timepoints': function (){
return this.timepoints;
}
});

View File

@ -31,8 +31,11 @@ Package.onUse(function (api) {
api.addFiles('components/lesionTableRow/lesionTableRow.js', 'client');
api.addFiles('components/lesionTableTimepointCell/lesionTableTimepointCell.html', 'client');
api.addFiles('components/lesionTableTimepointCell/lesionTableTimepointCell.js', 'client');
api.addFiles('components/lesionTableTimepointHeader/lesionTableTimepointHeader.html', 'client');
api.addFiles('components/lesionTableTimepointHeader/lesionTableTimepointHeader.js', 'client');
// Library functions
api.addFiles('lib/getActiveTimepointID.js', 'client');