fix(bugs): fixing lots of bugs regarding release candidate (#3700)

This commit is contained in:
Alireza authored and GitHub committed 2023-10-05 23:39:56 -04:00
1 parent 29aeb070e0
commit 8bc12a37d0
16 files changed
+119 -76

No files matched your search

@@ -74,7 +74,7 @@ function _getInstance(StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID) {
return;
}
return series.instances.find(instance => instance.SOPInstanceUID === SOPInstanceUID);
return series.getInstance(SOPInstanceUID);
}
function _getInstanceByImageId(imageId) {
@@ -1,9 +1,26 @@
function createSeriesMetadata(instances) {
const { SeriesInstanceUID } = instances[0];
function createSeriesMetadata(SeriesInstanceUID) {
const instances = [];
const instancesMap = new Map();
return {
SeriesInstanceUID,
instances,
addInstance: function (newInstance) {
this.addInstances([newInstance]);
},
addInstances: function (newInstances) {
for (let i = 0, len = newInstances.length; i < len; i++) {
const instance = newInstances[i];
if (!instancesMap.has(instance.SOPInstanceUID)) {
instancesMap.set(instance.SOPInstanceUID, instance);
instances.push(instance);
}
}
},
getInstance: function (SOPInstanceUID) {
return instancesMap.get(SOPInstanceUID);
},
};
}
@@ -8,54 +8,29 @@ function createStudyMetadata(StudyInstanceUID) {
isLoaded: false,
series: [],
/**
*
* @param {object} instance
* @returns {bool} true if series were added; false if series already exist
*/
addInstanceToSeries: function (instance) {
const { SeriesInstanceUID } = instance;
if (!this.StudyDescription) {
this.StudyDescription = instance.StudyDescription;
}
const existingSeries = this.series.find(s => s.SeriesInstanceUID === SeriesInstanceUID);
if (existingSeries) {
existingSeries.instances.push(instance);
} else {
const series = createSeriesMetadata([instance]);
this.series.push(series);
const { Modality } = series;
if (this.ModalitiesInStudy.indexOf(Modality) === -1) {
this.ModalitiesInStudy.push(Modality);
}
}
this.addInstancesToSeries([instance]);
},
/**
*
* @param {object[]} instances
* @param {string} instances[].SeriesInstanceUID
* @param {string} instances[].StudyDescription
* @returns {bool} true if series were added; false if series already exist
*/
addInstancesToSeries: function (instances) {
const { SeriesInstanceUID } = instances[0];
if (!this.StudyDescription) {
this.StudyDescription = instances[0].StudyDescription;
}
const existingSeries = this.series.find(s => s.SeriesInstanceUID === SeriesInstanceUID);
let series = this.series.find(s => s.SeriesInstanceUID === SeriesInstanceUID);
if (existingSeries) {
// Only add instances not already present, so generate a map
// of existing instances and filter the to add by things
// already present.
const sopMap = {};
existingSeries.instances.forEach(it => (sopMap[it.SOPInstanceUID] = it));
const newInstances = instances.filter(it => !sopMap[it.SOPInstanceUID]);
existingSeries.instances.push(...newInstances);
} else {
const series = createSeriesMetadata(instances);
if (!series) {
const series = createSeriesMetadata(SeriesInstanceUID);
this.series.push(series);
}
series.addInstances(instances);
},
setSeriesMetadata: function (SeriesInstanceUID, seriesMetadata) {
@@ -64,7 +39,8 @@ function createStudyMetadata(StudyInstanceUID) {
if (existingSeries) {
existingSeries = Object.assign(existingSeries, seriesMetadata);
} else {
this.series.push(Object.assign({ instances: [] }, seriesMetadata));
const series = createSeriesMetadata(SeriesInstanceUID);
this.series.push(Object.assign(series, seriesMetadata));
}
},
};
@@ -115,7 +115,13 @@ export default class ToolbarService extends PubSubService {
return;
}
const commandsManager = this._commandsManager;
const { groupId, itemId, interactionType, commands } = interaction;
const { groupId, itemId, commands, type } = interaction;
let { interactionType } = interaction;
// if not interaction type, assume the type can be used
if (!interactionType) {
interactionType = type;
}
switch (interactionType) {
case 'action': {
@@ -228,6 +234,10 @@ export default class ToolbarService extends PubSubService {
return activeTools;
}
getActivePrimaryTool() {
return this.state.primaryToolId;
}
/** Sets the toggle state of a button to the isToggled state */
public setToggled(id: string, isToggled: boolean): void {
if (isToggled) {
@@ -259,7 +269,9 @@ export default class ToolbarService extends PubSubService {
}
for (const buttonId of Object.keys(this.buttons)) {
const { primary, items } = this.buttons[buttonId].props || {};
if (primary?.id === id) { return primary; }
if (primary?.id === id) {
return primary;
}
const found = items?.find(childButton => childButton.id === id);
if (found) {
return found;