fix(bugs): fixing lots of bugs regarding release candidate (#3700)
This commit is contained in:
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;
|
||||
|
||||
Reference in new issue
Block a user