LT-92: Displaying the criteria nonconformities when clicking the warning icon

This commit is contained in:
Bruno Alves de Faria committed 2017-01-18 11:01:52 -02:00
1 parent 65b867d1b0
commit db4792b3de
21 files changed
+137 -54

No files matched your search

@@ -67,7 +67,7 @@ Template.longitudinalStudyListContextMenu.helpers({
Template.longitudinalStudyListContextMenu.replaces(defaultTemplate);
Template[defaultTemplate].inheritsHelpersFrom('longitudinalStudyListContextMenu');
StudyList.functions.launchStudyAssociation = () => OHIF.ui.showFormDialog('dialogStudyAssociation');
StudyList.functions.launchStudyAssociation = () => OHIF.ui.showDialog('dialogStudyAssociation');
StudyList.functions.removeTimepointAssociations = removeTimepointAssociations;
StudyList.functions.exportSelectedStudies = exportSelectedStudies;
StudyList.functions.viewStudies = viewStudies;
@@ -86,7 +86,7 @@ function removeTimepointAssociations($study, event) {
}
};
OHIF.ui.showFormDialog('dialogConfirm', dialogSettings).then(() => {
OHIF.ui.showDialog('dialogConfirm', dialogSettings).then(() => {
// Get a Cursor pointing to the selected Studies from the StudyList
const selectedStudies = OHIF.studylist.getSelectedStudies();
@@ -26,3 +26,5 @@ import './measurementTableTimepointCell/measurementTableTimepointCell.js';
import './measurementTableTimepointHeader/measurementTableTimepointHeader.html';
import './measurementTableTimepointHeader/measurementTableTimepointHeader.styl';
import './measurementTableTimepointHeader/measurementTableTimepointHeader.js';
import './measurementTableWarnings/measurementTableWarningsDialog.html';
@@ -1,42 +1,41 @@
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating';
import { OHIF } from 'meteor/ohif:core';
import { _ } from 'meteor/underscore';
function doneCallback(measurementData, deleteTool) {
// If a Lesion or Non-Target is removed via a dialog
// opened by the Lesion Table, we should clear the data for
// the specified Timepoint Cell
if (deleteTool === true) {
Meteor.call('removeMeasurement', measurementData.id, function(error, response) {
if (error) {
OHIF.log.warn(error);
}
});
}
}
Template.measurementTableRow.onCreated(() => {
const instance = Template.instance();
// Delete a lesion if Ctrl+D or DELETE is pressed while a lesion is selected
const keys = {
D: 68,
DELETE: 46
};
Template.measurementTableRow.helpers({
hasWarnings() {
const toolsGroupsMap = this.measurementApi.toolsGroupsMap;
const measurementTypeId = this.rowItem.measurementTypeId;
const measurementNumber = this.rowItem.measurementNumber;
const groupedNonConformities = this.conformanceCriteria.groupedNonConformities.get() || {};
instance.getWarningMessages = () => {
const measurementTypeId = instance.data.rowItem.measurementTypeId;
const measurementNumber = instance.data.rowItem.measurementNumber;
const groupedNonConformities = instance.data.conformanceCriteria.groupedNonConformities.get() || {};
const nonConformitiesByMeasurementTypeId = groupedNonConformities[measurementTypeId] || {};
const nonConformitiesByMeasurementNumbers = nonConformitiesByMeasurementTypeId.measurementNumbers || {};
const nonConformitiesByMeasurementNumber = nonConformitiesByMeasurementNumbers[measurementNumber] || {};
return nonConformitiesByMeasurementNumber.messages && nonConformitiesByMeasurementNumber.messages.length;
return nonConformitiesByMeasurementNumber.messages || [];
};
});
Template.measurementTableRow.helpers({
hasWarnings() {
return !!Template.instance().getWarningMessages().length;
}
});
Template.measurementTableRow.events({
'click .measurementRowSidebar .warning-icon'(event, instance) {
event.stopPropagation();
OHIF.ui.showDialog('measurementTableWarningsDialog', {
title: 'Criteria Nonconformities',
messages: instance.getWarningMessages(),
position: {
x: event.clientX,
y: event.clientY
}
});
},
'click .measurementRowSidebar'(event, instance) {
const $row = instance.$('.measurementTableRow');
const rowItem = instance.data.rowItem;
@@ -70,10 +69,14 @@ Template.measurementTableRow.events({
'click .js-delete'(event, instance) {
const dialogSettings = {
title: 'Delete measurements',
message: 'Are you sure you want to delete the measurement across all timepoints?'
message: 'Are you sure you want to delete the measurement across all timepoints?',
position: {
x: event.clientX,
y: event.clientY
}
};
OHIF.ui.showFormDialog('dialogConfirm', dialogSettings).then(formData => {
OHIF.ui.showDialog('dialogConfirm', dialogSettings).then(formData => {
const measurementTypeId = instance.data.rowItem.measurementTypeId;
const measurement = instance.data.rowItem.entries[0];
const measurementNumber = measurement.measurementNumber;
@@ -84,7 +84,7 @@ Template.measurementTableTimepointCell.events({
message: 'Are you sure you want to delete this measurement?'
};
OHIF.ui.showFormDialog('dialogConfirm', dialogSettings).then(() => {
OHIF.ui.showDialog('dialogConfirm', dialogSettings).then(() => {
const measurementTypeId = instance.data.rowItem.measurementTypeId;
const measurement = instance.data.rowItem.entries[0];
const measurementNumber = measurement.measurementNumber;
@@ -0,0 +1,9 @@
<template name="measurementTableWarningsDialog">
{{#dialogSimple (extend this dialogClass='modal-sm')}}
<ol>
{{#each message in this.messages}}
<li>{{message}}</li>
{{/each}}
</ol>
{{/dialogSimple}}
</template>
@@ -1,5 +1,7 @@
import { OHIF } from 'meteor/ohif:core';
import { ReactiveVar } from 'meteor/reactive-var';
import { Tracker } from 'meteor/tracker';
import { _ } from 'meteor/underscore';
import { OHIF } from 'meteor/ohif:core';
import { CriteriaEvaluator } from './CriteriaEvaluator';
import * as evaluations from './evaluations';
@@ -49,7 +51,7 @@ class ConformanceCriteria {
const toolsGroupsMap = this.measurementApi.toolsGroupsMap;
nonConformities.forEach(nonConformity => {
if(nonConformity.isGlobal) {
if (nonConformity.isGlobal) {
groups.globals = groups.globals || { messages: [] };
groups.globals.messages.push(nonConformity.message);
@@ -64,11 +66,11 @@ class ConformanceCriteria {
const measureNumber = measurement.measurementNumber;
let measurementNumbers = group.measurementNumbers[measureNumber];
if(!measurementNumbers) {
if (!measurementNumbers) {
measurementNumbers = group.measurementNumbers[measureNumber] = {
messages: [],
measurements: []
}
};
}
measurementNumbers.messages.push(nonConformity.message);
@@ -76,8 +78,6 @@ class ConformanceCriteria {
});
});
console.log('>>>>> groups: ', groups);
return groups;
}
@@ -96,12 +96,12 @@ class ConformanceCriteria {
getEvaluators(timepointId, trialCriteriaType) {
const evaluators = [];
const trialCriteriaTypeId = trialCriteriaType.id.toLowerCase();
const evaluation = evaluations[trialCriteriaTypeId]
if(evaluation) {
const evaluation = evaluations[trialCriteriaTypeId];
if (evaluation) {
const evaluationTimepoint = evaluation[timepointId];
if(evaluationTimepoint) {
if (evaluationTimepoint) {
evaluators.push(new CriteriaEvaluator(evaluationTimepoint));
}
}
@@ -127,7 +127,7 @@ class ConformanceCriteria {
const timepointId = measurement.timepointId;
const timepoint = this.timepointApi.timepoints.findOne({ timepointId });
if((timepointType !== 'both') && (timepoint.timepointType !== timepointType)) {
if ((timepointType !== 'both') && (timepoint.timepointType !== timepointType)) {
return;
}