81 lines
2.8 KiB
JavaScript
81 lines
2.8 KiB
JavaScript
// Local imports
|
|
import { removeFromArray } from '../lib/removeFromArray';
|
|
|
|
/**
|
|
* This Class defines a Viewport in the Hanging Protocol Stage. A Viewport contains
|
|
* arrays of Rules that are matched in the ProtocolEngine in order to determine which
|
|
* images should be hung.
|
|
*
|
|
* @type {Viewport}
|
|
*/
|
|
HP.Viewport = class Viewport {
|
|
constructor() {
|
|
this.viewportSettings = {};
|
|
this.imageMatchingRules = [];
|
|
this.seriesMatchingRules = [];
|
|
this.studyMatchingRules = [];
|
|
}
|
|
|
|
/**
|
|
* Occasionally the Viewport class needs to be instantiated from a JavaScript Object.
|
|
* This function fills in a Viewport with the Object data.
|
|
*
|
|
* @param input The Viewport as a JavaScript Object, e.g. retrieved from MongoDB or JSON
|
|
*/
|
|
fromObject(input) {
|
|
// If ImageMatchingRules exist, create them from the Object data
|
|
// and add them to the Viewport's imageMatchingRules array
|
|
if (input.imageMatchingRules) {
|
|
input.imageMatchingRules.forEach(ruleObject => {
|
|
var rule = new HP.ImageMatchingRule();
|
|
rule.fromObject(ruleObject);
|
|
this.imageMatchingRules.push(rule);
|
|
});
|
|
}
|
|
|
|
// If SeriesMatchingRules exist, create them from the Object data
|
|
// and add them to the Viewport's seriesMatchingRules array
|
|
if (input.seriesMatchingRules) {
|
|
input.seriesMatchingRules.forEach(ruleObject => {
|
|
var rule = new HP.SeriesMatchingRule();
|
|
rule.fromObject(ruleObject);
|
|
this.seriesMatchingRules.push(rule);
|
|
});
|
|
}
|
|
|
|
// If StudyMatchingRules exist, create them from the Object data
|
|
// and add them to the Viewport's studyMatchingRules array
|
|
if (input.studyMatchingRules) {
|
|
input.studyMatchingRules.forEach(ruleObject => {
|
|
var rule = new HP.StudyMatchingRule();
|
|
rule.fromObject(ruleObject);
|
|
this.studyMatchingRules.push(rule);
|
|
});
|
|
}
|
|
|
|
// If ViewportSettings exist, add them to the current protocol
|
|
if (input.viewportSettings) {
|
|
this.viewportSettings = input.viewportSettings;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Finds and removes a rule from whichever array it exists in.
|
|
* It is not required to specify if it exists in studyMatchingRules,
|
|
* seriesMatchingRules, or imageMatchingRules
|
|
*
|
|
* @param rule
|
|
*/
|
|
removeRule(rule) {
|
|
var array;
|
|
if (rule instanceof HP.StudyMatchingRule) {
|
|
array = this.studyMatchingRules;
|
|
} else if (rule instanceof HP.SeriesMatchingRule) {
|
|
array = this.seriesMatchingRules;
|
|
} else if (rule instanceof HP.ImageMatchingRule) {
|
|
array = this.imageMatchingRules;
|
|
}
|
|
|
|
removeFromArray(array, rule);
|
|
}
|
|
}; |