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
@@ -188,7 +188,8 @@ function DataSourceWrapper(props) {
|
||||
!isSamePage || (!isLoading && (newOffset !== previousOffset || isLocationUpdated));
|
||||
|
||||
if (isDataInvalid) {
|
||||
getData().catch(() => {
|
||||
getData().catch(e => {
|
||||
console.error(e);
|
||||
// If there is a data source configuration API, then the Worklist will popup the dialog to attempt to configure it
|
||||
// and attempt to resolve this issue.
|
||||
if (dataSource.getConfig().configurationAPI) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -153,3 +153,14 @@ directly from
|
||||
Your public folder should look like this:
|
||||
|
||||

|
||||
|
||||
|
||||
:::note
|
||||
When hosting the DICOM JSON files, it is important to be aware that certain providers
|
||||
do not automatically handle the 404 error and fallback to index.html. For example, Netlify
|
||||
handles this, but Azure does not. Consequently, when you attempt to access a link with a
|
||||
specific URL, a 404 error will be displayed.
|
||||
|
||||
This issue also occurs locally, where the http-server does not handle it. However,
|
||||
if you utilize the `serve` package (npx serve ./dist -l 8080 -s), it effectively addresses this problem.
|
||||
:::
|
||||
@@ -18,13 +18,15 @@ It can be compiled with Java and Gradle, and then run against a set of dicom, in
|
||||
the example located in /dicom/study1 outputting to /dicomweb, and then a server
|
||||
run against that data, like this:
|
||||
|
||||
```
|
||||
```bash
|
||||
git clone https://github.com/OHIF/static-wado
|
||||
cd static-wado
|
||||
./gradlew installDist
|
||||
StaticWado/build/install/StaticWado/bin/StaticWado -d /dicomweb /dicom/study1
|
||||
cd /dicomweb
|
||||
npx http-server -p 5000 --cors -g
|
||||
|
||||
# you can use npx serve ./dist -l 8080 -s as an alternative to http-server
|
||||
```
|
||||
|
||||
There is then a dev environment in the platform/app directory which can be
|
||||
|
||||
@@ -106,6 +106,8 @@ yarn global add http-server
|
||||
# Serve the files in our current directory
|
||||
# Accessible at: `http://localhost:8080`
|
||||
npx http-server ./dist
|
||||
|
||||
# you can use npx serve ./dist -l 8080 -s as an alternative to http-server
|
||||
```
|
||||
|
||||
:::caution
|
||||
|
||||
@@ -44,8 +44,10 @@ Download the index.html and the build (against the /ohif/ path) from [here](http
|
||||
|
||||
Then run the
|
||||
|
||||
```
|
||||
```bash
|
||||
npx http-server unzipped-folder
|
||||
|
||||
# you can use npx serve ./dist -l 8080 -s as an alternative to http-server
|
||||
```
|
||||
|
||||
You should be able to see
|
||||
|
||||
Reference in new issue
Block a user