import { Template } from 'meteor/templating'; import { ReactiveVar } from 'meteor/reactive-var'; import { _ } from 'meteor/underscore'; import { OHIF } from 'meteor/ohif:core'; Template.measurementTable.onCreated(() => { const instance = Template.instance(); instance.data.measurementTableLayout = new ReactiveVar('comparison'); instance.data.timepoints = new ReactiveVar([]); // Run this computation every time table layout changes instance.autorun(() => { // Get the current table layout const tableLayout = instance.data.measurementTableLayout.get(); const timepointApi = instance.data.timepointApi; let timepoints; if (!timepointApi) { timepoints = []; } else if (tableLayout === 'key') { timepoints = timepointApi.key(); } else { timepoints = timepointApi.comparison(); } // Return key timepoints instance.data.timepoints.set(timepoints); }); }); Template.measurementTable.onRendered(() => { const instance = Template.instance(); instance.autorun(() => { // Run this computation every time the lesion table layout is changed instance.data.measurementTableLayout.dep.depend(); if (instance.data.state.get('rightSidebar') !== 'measurements') { // Remove the amount attribute from sidebar element tag instance.$('#measurementTableContainer').closest('.sidebarMenu').removeAttr('data-timepoints'); return; } // Get the amount of timepoints being shown const timepointAmount = instance.data.timepoints.get().length; // Set the amount in an attribute on sidebar element tag instance.$('#measurementTableContainer').closest('.sidebarMenu').attr('data-timepoints', timepointAmount); }); }); Template.measurementTable.helpers({ hasWarnings() { return Template.instance().data.conformanceCriteria.nonconformities.get(); }, buttonGroupData() { const instance = Template.instance(); return { value: instance.data.measurementTableLayout, options: [{ value: 'comparison', text: 'Comparison' }, { value: 'key', text: 'Key Timepoints' }] }; } }); Template.measurementTable.events({ 'click .warning-status'(event, instance) { const nonconformities = instance.data.conformanceCriteria.nonconformities.get(); const messages = []; _.each(nonconformities, nonconformity => messages.push(nonconformity.message)); OHIF.ui.showDialog('measurementTableWarningsDialog', { messages, position: { x: event.clientX, y: event.clientY } }); } });