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({ instance, 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 measurementApi = instance.data.measurementApi; const timepointApi = instance.data.timepointApi; // 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)); }); } });