From 78faa2a8f9a3746a04f6fa3fd0390e48165220ef Mon Sep 17 00:00:00 2001 From: Aysel Afsar Date: Thu, 29 Oct 2015 15:40:20 -0400 Subject: [PATCH] Set lesion table row data in correct columns Populate Measurements collection according to lesion table columns --- .../compatibility/measurementManagerDAL.js | 64 ++++++++++++------- .../components/lesionTable/lesionTable.html | 6 +- .../components/lesionTable/lesionTable.js | 38 +++++++---- .../lesionTableRow/lesionTableRow.js | 7 +- .../lesionTableTimepointCell.js | 6 ++ .../lesionTableTimepointHeader.html | 2 +- .../lesionTableTimepointHeader.js | 5 ++ Packages/lesiontracker/package.js | 3 + 8 files changed, 87 insertions(+), 44 deletions(-) create mode 100644 Packages/lesiontracker/components/lesionTableTimepointCell/lesionTableTimepointCell.js create mode 100644 Packages/lesiontracker/components/lesionTableTimepointHeader/lesionTableTimepointHeader.js diff --git a/Packages/lesiontracker/compatibility/measurementManagerDAL.js b/Packages/lesiontracker/compatibility/measurementManagerDAL.js index 4564acfea..05ec765b1 100644 --- a/Packages/lesiontracker/compatibility/measurementManagerDAL.js +++ b/Packages/lesiontracker/compatibility/measurementManagerDAL.js @@ -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, diff --git a/Packages/lesiontracker/components/lesionTable/lesionTable.html b/Packages/lesiontracker/components/lesionTable/lesionTable.html index f3619ecec..68cca4b56 100644 --- a/Packages/lesiontracker/components/lesionTable/lesionTable.html +++ b/Packages/lesiontracker/components/lesionTable/lesionTable.html @@ -7,8 +7,10 @@ Target Location - {{ #each timepointNames }} - {{ >lesionTableTimepointHeader }} + {{ #each tabTimepoints }} + {{ #each timepoints }} + {{ >lesionTableTimepointHeader }} + {{ /each }} {{ /each }} diff --git a/Packages/lesiontracker/components/lesionTable/lesionTable.js b/Packages/lesiontracker/components/lesionTable/lesionTable.js index 165db1cac..a219fdcb4 100644 --- a/Packages/lesiontracker/components/lesionTable/lesionTable.js +++ b/Packages/lesiontracker/components/lesionTable/lesionTable.js @@ -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}); } }); diff --git a/Packages/lesiontracker/components/lesionTableRow/lesionTableRow.js b/Packages/lesiontracker/components/lesionTableRow/lesionTableRow.js index d7f0c9d37..8d4f412b9 100644 --- a/Packages/lesiontracker/components/lesionTableRow/lesionTableRow.js +++ b/Packages/lesiontracker/components/lesionTableRow/lesionTableRow.js @@ -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; } }); diff --git a/Packages/lesiontracker/components/lesionTableTimepointCell/lesionTableTimepointCell.js b/Packages/lesiontracker/components/lesionTableTimepointCell/lesionTableTimepointCell.js new file mode 100644 index 000000000..c19772d12 --- /dev/null +++ b/Packages/lesiontracker/components/lesionTableTimepointCell/lesionTableTimepointCell.js @@ -0,0 +1,6 @@ +Template.lesionTableTimepointCell.helpers({ + 'longestDiameter': function() { + var longestDiameter = this[Object.keys(this)[0]].longestDiameter; + return longestDiameter; + } +}); \ No newline at end of file diff --git a/Packages/lesiontracker/components/lesionTableTimepointHeader/lesionTableTimepointHeader.html b/Packages/lesiontracker/components/lesionTableTimepointHeader/lesionTableTimepointHeader.html index 6800cd376..2bd4a7756 100644 --- a/Packages/lesiontracker/components/lesionTableTimepointHeader/lesionTableTimepointHeader.html +++ b/Packages/lesiontracker/components/lesionTableTimepointHeader/lesionTableTimepointHeader.html @@ -1,3 +1,3 @@ \ No newline at end of file diff --git a/Packages/lesiontracker/components/lesionTableTimepointHeader/lesionTableTimepointHeader.js b/Packages/lesiontracker/components/lesionTableTimepointHeader/lesionTableTimepointHeader.js new file mode 100644 index 000000000..fe1d49009 --- /dev/null +++ b/Packages/lesiontracker/components/lesionTableTimepointHeader/lesionTableTimepointHeader.js @@ -0,0 +1,5 @@ +Template.lesionTableTimepointHeader.helpers({ + 'timepoints': function (){ + return this.timepoints; + } +}); \ No newline at end of file diff --git a/Packages/lesiontracker/package.js b/Packages/lesiontracker/package.js index 420ee6338..7f1eabfa8 100644 --- a/Packages/lesiontracker/package.js +++ b/Packages/lesiontracker/package.js @@ -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');