diff --git a/src/routes/StandaloneRouting.js b/src/routes/StandaloneRouting.js index f1d584c00..195d6feab 100644 --- a/src/routes/StandaloneRouting.js +++ b/src/routes/StandaloneRouting.js @@ -1,104 +1,114 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import qs from 'query-string' -import Viewer from "../connectedComponents/Viewer"; +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import qs from 'querystring'; +import Viewer from '../connectedComponents/Viewer'; import OHIF from 'ohif-core'; const { createDisplaySets } = OHIF.utils; class StandaloneRouting extends Component { - state = { - studies: null, - error: null - } + state = { + studies: null, + error: null + }; - static propTypes = { - location: PropTypes.object, - store: PropTypes.object - }; + static propTypes = { + location: PropTypes.object, + store: PropTypes.object + }; - static parseQueryAndFetchStudies(query) { - return new Promise((resolve, reject) => { - const url = query.url; + static parseQueryAndFetchStudies(query) { + return new Promise((resolve, reject) => { + const url = query.url; - if (!url) { - reject(new Error('No URL was specified. Use ?url=$yourURL')); - } + if (!url) { + reject(new Error('No URL was specified. Use ?url=$yourURL')); + } - // Define a request to the server to retrieve the study data - // as JSON, given a URL that was in the Route - const oReq = new XMLHttpRequest(); + // Define a request to the server to retrieve the study data + // as JSON, given a URL that was in the Route + const oReq = new XMLHttpRequest(); - // Add event listeners for request failure - oReq.addEventListener('error', (error) => { - OHIF.log.warn('An error occurred while retrieving the JSON data'); - reject(error) - }); + // Add event listeners for request failure + oReq.addEventListener('error', error => { + OHIF.log.warn('An error occurred while retrieving the JSON data'); + reject(error); + }); - // When the JSON has been returned, parse it into a JavaScript Object - // and render the OHIF Viewer with this data - oReq.addEventListener('load', () => { - // Parse the response content - // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText - if (!oReq.responseText) { - OHIF.log.warn('Response was undefined'); - reject(new Error('Response was undefined')); - } - - OHIF.log.info(JSON.stringify(oReq.responseText, null, 2)); - - const data = JSON.parse(oReq.responseText); - if (data.servers && query.studyInstanceUids) { - const server = data.servers.dicomWeb[0]; - server.type = 'dicomWeb'; - - const studyInstanceUids = query.studyInstanceUids.split(';'); - const seriesInstanceUids = []; - - OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids).then(studies => { - resolve(studies); - }, error => { - reject(error); - }); - } else { - resolve(data.studies); - } - }); - - // Open the Request to the server for the JSON data - // In this case we have a server-side route called /api/ - // which responds to GET requests with the study data - OHIF.log.info(`Sending Request to: ${url}`); - oReq.open('GET', url); - oReq.setRequestHeader('Accept', 'application/json') - - // Fire the request to the server - oReq.send(); - }); - } - - componentDidMount() { - const query = qs.parse(this.props.location.search); - StandaloneRouting.parseQueryAndFetchStudies(query).then(studies => { - const updatedStudies = createDisplaySets(studies); - - this.setState({ studies: updatedStudies }); - }, error => { - this.setState({ error }); - }); - } - - render() { - if (this.state.error) { - return (
Error: {JSON.stringify(this.state.error)}
); - } else if (!this.state.studies) { - return (
Loading...
); + // When the JSON has been returned, parse it into a JavaScript Object + // and render the OHIF Viewer with this data + oReq.addEventListener('load', () => { + // Parse the response content + // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText + if (!oReq.responseText) { + OHIF.log.warn('Response was undefined'); + reject(new Error('Response was undefined')); } - return ( - - ); + OHIF.log.info(JSON.stringify(oReq.responseText, null, 2)); + + const data = JSON.parse(oReq.responseText); + if (data.servers && query.studyInstanceUids) { + const server = data.servers.dicomWeb[0]; + server.type = 'dicomWeb'; + + const studyInstanceUids = query.studyInstanceUids.split(';'); + const seriesInstanceUids = []; + + OHIF.studies + .retrieveStudiesMetadata( + server, + studyInstanceUids, + seriesInstanceUids + ) + .then( + studies => { + resolve(studies); + }, + error => { + reject(error); + } + ); + } else { + resolve(data.studies); + } + }); + + // Open the Request to the server for the JSON data + // In this case we have a server-side route called /api/ + // which responds to GET requests with the study data + OHIF.log.info(`Sending Request to: ${url}`); + oReq.open('GET', url); + oReq.setRequestHeader('Accept', 'application/json'); + + // Fire the request to the server + oReq.send(); + }); + } + + componentDidMount() { + const query = qs.parse(this.props.location.search); + StandaloneRouting.parseQueryAndFetchStudies(query).then( + studies => { + const updatedStudies = createDisplaySets(studies); + + this.setState({ studies: updatedStudies }); + }, + error => { + this.setState({ error }); + } + ); + } + + render() { + if (this.state.error) { + return
Error: {JSON.stringify(this.state.error)}
; + } else if (!this.state.studies) { + return
Loading...
; } + + return ; + } } export default StandaloneRouting;