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,51 +87,69 @@ var measurementManagerDAL = (function () {
return Session.get("activeContentId"); 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 // Adds new timepoint item to tiemepoints array
function addLesionData (lesionData) { function addLesionData (lesionData) {
// TODO: if find lesionNumber, add
// TODO: Unless create new object
var contentId = getContentId(); var contentId = getContentId();
var timepointID = lesionData.timepointID; var timepointID = lesionData.timepointID;
var tabMeasurements = Measurements.find({contentId: contentId}).fetch(); var tabMeasurements = Measurements.find({contentId: contentId, "lesionData.lesionNumber": lesionData.lesionNumber}).fetch();
var existingMeasurement; var tabMeasurementsData = tabMeasurements[0];
if(tabMeasurements != undefined && tabMeasurements.length > 0) { if (tabMeasurements != undefined && tabMeasurements.length > 0) {
var tabLesionData = tabMeasurements.filter(function(item){return (item.lesionData.lesionNumber == lesionData.lesionNumber);} )[0];
if(tabLesionData != undefined) { // Update timepoint
existingMeasurement = tabLesionData.lesionData; 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( Measurements.update(
{ contentId: contentId, "lesionData.lesionNumber": lesionData.lesionNumber}, { contentId: contentId, "lesionData.lesionNumber": lesionData.lesionNumber},
{ {
$set: { $set: {
"lesionData.timepoints": existingTimepoint "lesionData.timepoints": timepointArr
} }
}, {multi: true} }, {multi: true}
); );
console.log(Measurements.find())
} else { } else {
var timepointArr = {}; // Add new measurement data
timepointArr[timepointID] = {longestDiameter: lesionData.measurementText}; 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 = { var lesionDataCollectionObject = {
lesionNumber: lesionData.lesionNumber, lesionNumber: lesionData.lesionNumber,
isTarget: true, isTarget: true,
location: getLocationName(lesionData.locationUID), location: getLocationName(lesionData.locationUID),
timepoints: timepointArr timepoints: timepointsArr
}; };
Measurements.insert({contentId: contentId, lesionData: lesionDataCollectionObject}); Measurements.insert({contentId: contentId, lesionData: lesionDataCollectionObject});
console.log(Measurements.find());
} }
// Populate timepoints array // Populate timepoints array

View File

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

View File

@ -1,15 +1,14 @@
Measurements = new Meteor.Collection(null); Measurements = new Meteor.Collection(null);
TimepointNames = new Meteor.Collection(null); TabsTimepoints = new Meteor.Collection(null);
Template.lesionTable.helpers({ Template.lesionTable.helpers({
'measurement': function() { 'measurement': function() {
var contentId = Session.get("activeContentId"); var contentId = Session.get("activeContentId");
console.log(Measurements.find({contentId: contentId}));
return Measurements.find({contentId: contentId}); return Measurements.find({contentId: contentId});
}, },
'timepointNames': function() { 'tabTimepoints': function() {
var contentId = Session.get("activeContentId"); var contentId = Session.get("activeContentId");
return Template.instance().timepointNamesDictionary.get(contentId); return TabsTimepoints.find({contentId: contentId});
}, },
'lesionData': function() { 'lesionData': function() {
var array = []; var array = [];
@ -23,26 +22,41 @@ Template.lesionTable.helpers({
Template.lesionTable.onRendered(function() { Template.lesionTable.onRendered(function() {
// TODO: Create seperate method
var cols = Template.instance().data.viewportColumns.curValue; var cols = Template.instance().data.viewportColumns.curValue;
var rows = Template.instance().data.viewportRows.curValue; var rows = Template.instance().data.viewportRows.curValue;
var totalViewports = cols * rows; var totalViewports = cols * rows;
var contentId = Session.get('activeContentId'); var contentId = Session.get('activeContentId');
var timepointsArray = [];
for(var i=0; i< totalViewports; i++) { 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 timepointID = contentId.toString()+ i.toString();
var timepointName = "Baseline"; var timepointName = "Baseline";
if(i > 0) { if(i > 0) {
timepointName = "Follow Up "+i; timepointName = "Follow Up "+i;
} }
var timepointObject = {id: timepointID, name: timepointName}; var timepointObject = {timepointID: timepointID, timepointName: timepointName};
timepointNamesArray.push(timepointObject); timepointsArray.push(timepointObject);
Template.instance().timepointNamesDictionary.set(contentId, timepointNamesArray);
}
// 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({ Template.lesionTableRow.helpers({
'timepoints': function() { 'timepoints': function() {
var array = []; return this.lesionData.timepoints;
var timepoints = this.lesionData.timepoints;
Object.keys(timepoints).forEach(function(key) {
array.push(timepoints[key]);
});
return array;
} }
}); });

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"> <template name="lesionTableTimepointHeader">
<th>{{name}}</th> <th>{{timepointName}}</th>
</template> </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/lesionTableRow/lesionTableRow.js', 'client');
api.addFiles('components/lesionTableTimepointCell/lesionTableTimepointCell.html', '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.html', 'client');
api.addFiles('components/lesionTableTimepointHeader/lesionTableTimepointHeader.js', 'client');
// Library functions // Library functions
api.addFiles('lib/getActiveTimepointID.js', 'client'); api.addFiles('lib/getActiveTimepointID.js', 'client');