ohif-viewer/Packages/ohif-measurements/client/components/measurementTable/measurementTableRow/measurementTableRow.js
2017-03-21 10:16:46 -03:00

94 lines
3.5 KiB
JavaScript

import { Template } from 'meteor/templating';
import { OHIF } from 'meteor/ohif:core';
import { _ } from 'meteor/underscore';
Template.measurementTableRow.onCreated(() => {
const instance = Template.instance();
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 _.uniq(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', {
messages: instance.getWarningMessages(),
position: {
x: event.clientX,
y: event.clientY
}
});
},
'click .measurementRowSidebar'(event, instance) {
const $row = instance.$('.measurementTableRow');
const rowItem = instance.data.rowItem;
const timepoints = instance.data.timepoints.get();
$row.closest('.measurementTableView').find('.measurementTableRow').not($row).removeClass('active');
$row.toggleClass('active');
OHIF.measurements.jumpToRowItem(rowItem, timepoints);
},
'click .js-rename'(event, instance) {
const rowItem = instance.data.rowItem;
const entry = rowItem.entries[0];
// Show the measure flow for targets
OHIF.measurements.toggleLabelButton({
measurement: entry,
element: document.body,
measurementApi: instance.data.measurementApi,
position: {
x: event.clientX,
y: event.clientY
},
autoClick: true
});
},
'click .js-delete'(event, instance) {
const dialogSettings = {
title: 'Delete measurements',
message: 'Are you sure you want to delete the measurement across all timepoints?',
position: {
x: event.clientX,
y: event.clientY
}
};
OHIF.ui.showDialog('dialogConfirm', dialogSettings).then(formData => {
const measurementTypeId = instance.data.rowItem.measurementTypeId;
const measurement = instance.data.rowItem.entries[0];
const measurementNumber = measurement.measurementNumber;
const { timepointApi, measurementApi } = instance.data;
// Remove all the measurements with the given type and number
measurementApi.deleteMeasurements(measurementTypeId, { measurementNumber });
// Sync the new measurement data with cornerstone tools
const baseline = timepointApi.baseline();
measurementApi.sortMeasurements(baseline.timepointId);
// Repaint the images on all viewports without the removed measurements
_.each($('.imageViewerViewport'), element => cornerstone.updateImage(element));
});
}
});