fix(measurement-table): Set measurementId in table data

This commit is contained in:
Evren Ozkan 2019-02-26 13:22:56 -05:00
parent 6f8b9ae593
commit 5fb95cc8a3

View File

@ -5,23 +5,23 @@ import moment from 'moment';
function groupBy(list, props) {
return list.reduce((a, b) => {
(a[b[props]] = a[b[props]] || []).push(b);
return a;
(a[b[props]] = a[b[props]] || []).push(b);
return a;
}, {});
}
function getAllTools() {
const config = OHIF.measurements.MeasurementApi.getConfiguration();
let tools = [];
config.measurementTools.forEach( toolGroup =>
tools = tools.concat(toolGroup.childTools)
config.measurementTools.forEach(
toolGroup => (tools = tools.concat(toolGroup.childTools))
);
return tools;
}
function getMeasurementText(measurementData) {
const { location, description} = measurementData;
const { location, description } = measurementData;
let text = '...';
if (location) {
text = location;
@ -32,14 +32,18 @@ function getMeasurementText(measurementData) {
return text;
}
function getDataForEachMeasurementNumber(measurementNumberList, timepoints, displayFunction) {
function getDataForEachMeasurementNumber(
measurementNumberList,
timepoints,
displayFunction
) {
const data = [];
// on each measurement number we should get each measurement data by available timepoint
measurementNumberList.forEach( measurement => {
timepoints.forEach( timepoint => {
measurementNumberList.forEach(measurement => {
timepoints.forEach(timepoint => {
const eachData = {
displayText: '...'
}
};
if (measurement.timepointId === timepoint.timepointId) {
eachData.displayText = displayFunction(measurement);
}
@ -55,12 +59,12 @@ function convertMeasurementsToTableData(toolCollections, timepoints) {
const toolGroups = config.measurementTools;
const tools = getAllTools();
const tableMeasurements = toolGroups.map( toolGroup => {
const tableMeasurements = toolGroups.map(toolGroup => {
return {
groupName: toolGroup.name,
groupId: toolGroup.id,
measurements: []
}
};
});
Object.keys(toolCollections).forEach(toolId => {
@ -71,20 +75,26 @@ function convertMeasurementsToTableData(toolCollections, timepoints) {
// Group by measurementNumber so we can display then all in the same line
const groupedMeasurements = groupBy(toolMeasurements, 'measurementNumber');
Object.keys(groupedMeasurements).forEach( groupedMeasurementsIndex => {
const measurementNumberList = groupedMeasurements[groupedMeasurementsIndex];
Object.keys(groupedMeasurements).forEach(groupedMeasurementsIndex => {
const measurementNumberList =
groupedMeasurements[groupedMeasurementsIndex];
//check if all measurements with same measurementNumber will have same LABEL
const tableMeasurement = {
label: getMeasurementText(measurementNumberList[0]),
measurementId: measurementNumberList[0]._id,
label: getMeasurementText(measurementNumberList[0]),
hasWarnings: false, //TODO
warningTitle: '', //TODO
isSplitLesion: false, //TODO
warningList: [], //TODO
data: getDataForEachMeasurementNumber(measurementNumberList, timepoints, displayFunction)
data: getDataForEachMeasurementNumber(
measurementNumberList,
timepoints,
displayFunction
)
};
// find the group object for the tool
const toolGroupMeasurements = tableMeasurements.find( group => {
const toolGroupMeasurements = tableMeasurements.find(group => {
return group.groupId === tool.toolGroup;
});
// inject the new measurement for this measurementNumer
@ -112,7 +122,10 @@ const mapStateToProps = state => {
const { timepoints, measurements } = state.timepointManager;
return {
timepoints: convertTimepointsToTableData(timepoints),
measurementCollection: convertMeasurementsToTableData(measurements, timepoints)
measurementCollection: convertMeasurementsToTableData(
measurements,
timepoints
)
};
};