2016-11-10 18:33:42 +01:00
|
|
|
import { Template } from 'meteor/templating';
|
2016-11-11 13:32:40 +01:00
|
|
|
import { _ } from 'meteor/underscore';
|
2017-12-11 20:32:38 +01:00
|
|
|
import { $ } from 'meteor/jquery';
|
|
|
|
|
import { OHIF } from 'meteor/ohif:core';
|
|
|
|
|
import { cornerstone } from 'meteor/ohif:cornerstone';
|
2016-09-20 22:47:44 +02:00
|
|
|
|
2017-01-17 17:41:05 +01:00
|
|
|
Template.measurementTableRow.onCreated(() => {
|
|
|
|
|
const instance = Template.instance();
|
2015-12-19 04:24:00 +01:00
|
|
|
|
2017-01-17 17:41:05 +01:00
|
|
|
instance.getWarningMessages = () => {
|
|
|
|
|
const measurementTypeId = instance.data.rowItem.measurementTypeId;
|
|
|
|
|
const measurementNumber = instance.data.rowItem.measurementNumber;
|
|
|
|
|
const groupedNonConformities = instance.data.conformanceCriteria.groupedNonConformities.get() || {};
|
2017-01-17 19:40:51 +01:00
|
|
|
const nonconformitiesByMeasurementTypeId = groupedNonConformities[measurementTypeId] || {};
|
|
|
|
|
const nonconformitiesByMeasurementNumbers = nonconformitiesByMeasurementTypeId.measurementNumbers || {};
|
|
|
|
|
const nonconformitiesByMeasurementNumber = nonconformitiesByMeasurementNumbers[measurementNumber] || {};
|
2017-01-17 00:20:24 +01:00
|
|
|
|
2017-02-09 08:16:39 +01:00
|
|
|
return _.uniq(nonconformitiesByMeasurementNumber.messages || []);
|
2017-01-17 17:41:05 +01:00
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Template.measurementTableRow.helpers({
|
|
|
|
|
hasWarnings() {
|
|
|
|
|
return !!Template.instance().getWarningMessages().length;
|
2017-01-17 00:20:24 +01:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2016-08-15 15:34:36 +02:00
|
|
|
Template.measurementTableRow.events({
|
2017-01-17 17:41:05 +01:00
|
|
|
'click .measurementRowSidebar .warning-icon'(event, instance) {
|
|
|
|
|
event.stopPropagation();
|
|
|
|
|
OHIF.ui.showDialog('measurementTableWarningsDialog', {
|
|
|
|
|
messages: instance.getWarningMessages(),
|
|
|
|
|
position: {
|
|
|
|
|
x: event.clientX,
|
|
|
|
|
y: event.clientY
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
2016-11-06 16:17:35 +01:00
|
|
|
'click .measurementRowSidebar'(event, instance) {
|
2016-08-15 15:34:36 +02:00
|
|
|
const $row = instance.$('.measurementTableRow');
|
2017-01-17 21:16:07 +01:00
|
|
|
const rowItem = instance.data.rowItem;
|
|
|
|
|
const timepoints = instance.data.timepoints.get();
|
|
|
|
|
|
2016-08-15 15:34:36 +02:00
|
|
|
$row.closest('.measurementTableView').find('.measurementTableRow').not($row).removeClass('active');
|
2016-07-04 20:17:27 +02:00
|
|
|
$row.toggleClass('active');
|
2017-01-17 21:16:07 +01:00
|
|
|
|
2017-12-11 20:32:38 +01:00
|
|
|
const childToolKey = $(event.target).attr('data-child');
|
|
|
|
|
OHIF.measurements.jumpToRowItem(rowItem, timepoints, childToolKey);
|
2016-07-04 20:17:27 +02:00
|
|
|
},
|
2016-08-08 18:37:32 +02:00
|
|
|
|
2016-11-10 18:33:42 +01:00
|
|
|
'click .js-rename'(event, instance) {
|
2016-11-15 13:43:17 +01:00
|
|
|
const rowItem = instance.data.rowItem;
|
2017-01-02 19:29:40 +01:00
|
|
|
const entry = rowItem.entries[0];
|
2016-11-15 13:43:17 +01:00
|
|
|
|
|
|
|
|
// Show the measure flow for targets
|
2016-11-10 18:33:42 +01:00
|
|
|
OHIF.measurements.toggleLabelButton({
|
2017-02-20 14:52:10 +01:00
|
|
|
measurement: entry,
|
2016-11-10 18:33:42 +01:00
|
|
|
element: document.body,
|
|
|
|
|
measurementApi: instance.data.measurementApi,
|
|
|
|
|
position: {
|
|
|
|
|
x: event.clientX,
|
|
|
|
|
y: event.clientY
|
|
|
|
|
},
|
|
|
|
|
autoClick: true
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
2016-11-11 13:32:40 +01:00
|
|
|
'click .js-delete'(event, instance) {
|
|
|
|
|
const dialogSettings = {
|
2017-10-26 18:40:00 +02:00
|
|
|
class: 'themed',
|
2016-11-11 13:32:40 +01:00
|
|
|
title: 'Delete measurements',
|
2017-01-17 17:41:05 +01:00
|
|
|
message: 'Are you sure you want to delete the measurement across all timepoints?',
|
|
|
|
|
position: {
|
|
|
|
|
x: event.clientX,
|
|
|
|
|
y: event.clientY
|
|
|
|
|
}
|
2016-11-11 13:32:40 +01:00
|
|
|
};
|
|
|
|
|
|
2017-01-17 17:41:05 +01:00
|
|
|
OHIF.ui.showDialog('dialogConfirm', dialogSettings).then(formData => {
|
2016-11-11 15:30:18 +01:00
|
|
|
const measurementTypeId = instance.data.rowItem.measurementTypeId;
|
|
|
|
|
const measurement = instance.data.rowItem.entries[0];
|
|
|
|
|
const measurementNumber = measurement.measurementNumber;
|
2017-03-03 00:59:55 +01:00
|
|
|
const { timepointApi, measurementApi } = instance.data;
|
2016-11-11 13:32:40 +01:00
|
|
|
|
2016-11-11 15:30:18 +01:00
|
|
|
// Remove all the measurements with the given type and number
|
2017-01-02 19:29:40 +01:00
|
|
|
measurementApi.deleteMeasurements(measurementTypeId, { measurementNumber });
|
2016-11-11 13:32:40 +01:00
|
|
|
|
2017-01-05 13:46:36 +01:00
|
|
|
// Sync the new measurement data with cornerstone tools
|
2017-09-15 13:21:47 +02:00
|
|
|
const baseline = timepointApi.baseline();
|
|
|
|
|
measurementApi.sortMeasurements(baseline.timepointId);
|
2016-11-15 15:02:38 +01:00
|
|
|
|
2016-11-11 15:30:18 +01:00
|
|
|
// Repaint the images on all viewports without the removed measurements
|
|
|
|
|
_.each($('.imageViewerViewport'), element => cornerstone.updateImage(element));
|
2017-06-16 23:40:29 +02:00
|
|
|
|
|
|
|
|
// Notify that viewer suffered changes
|
2018-01-25 20:20:07 +01:00
|
|
|
OHIF.measurements.triggerTimepointUnsavedChanges('deleted');
|
2016-11-11 13:32:40 +01:00
|
|
|
});
|
2015-12-19 04:24:00 +01:00
|
|
|
}
|
|
|
|
|
});
|