ohif-viewer/Packages/cornerstone/client/measurementManager.js

77 lines
2.5 KiB
JavaScript

(function($, cornerstoneTools) {
'use strict';
// This object manages a collection of measurements
function MeasurementManager() {
// Define some basic validator functions (everything is always valid)
this.singleMeasurementValidator = function() {
return {isValid: true};
};
this.measurementSetValidator = function() {
return {isValid: true};
};
var that = this;
that.measurements = [];
// adds an element as both a source and a target
this.add = function(measurement, validateSingle, validateSet) {
var index = that.measurements.push(measurement);
if (validateSingle === true) {
measurementValid = singleMeasurementValidator(measurement);
}
if (validateSet === true) {
measurementSetValid = measurementSetValidator(measurement);
}
// fire event
var eventDetail = {
index: index,
measurement: measurement,
measurementValid: measurementValid,
measurementSetValid: measurementSetValid
};
$(that).trigger('CornerstoneMeasurementAdded', eventDetail);
};
this.remove = function(index) {
var measurement = that.measurements[index];
that.measurements.splice(index, 1);
// fire event
var eventDetail = {
index: index,
measurement: measurement
};
$(that).trigger('CornerstoneMeasurementRemoved', eventDetail);
};
// Add set/get measurementValidator to run on each single measurement
// (e.g. length > 10 mm, location must be 30 mm from lymph node)
this.setSingleMeasurementValidator = function(validator) {
this.singleMeasurementValidator = validator;
};
this.getSingleMeasurementValidator = function(validator) {
return singleMeasurementValidator;
};
// Add set/get groupValidator to run on all of the measurements together
// (e.g. the number of measurments must be <= 2)
this.setMeasurementSetValidator = function(validator) {
this.measurementSetValidator = validator;
};
this.getMeasurementSetValidator = function(validator) {
return measurementSetValidator;
};
}
// module/private exports
cornerstoneTools.MeasurementManager = new MeasurementManager();
})($, cornerstoneTools);