Added Standalone Client-only Viewer with build instructions
This commit is contained in:
1 parent
18de1deff3
commit
a5a6e3a6bd
52 files changed
+2793
-2
No files matched your search
@@ -0,0 +1,106 @@
|
||||
if (Meteor.isClient) {
|
||||
// Disconnect from the Meteor Server since we don't need it
|
||||
console.log('Disconnecting from the Meteor server');
|
||||
Meteor.disconnect();
|
||||
|
||||
Router.configure({
|
||||
loadingTemplate: 'loading'
|
||||
});
|
||||
|
||||
Router.onBeforeAction('loading');
|
||||
|
||||
Router.route('/:id', {
|
||||
action: function() {
|
||||
// Retrieve the ID from the URL the user has entered
|
||||
let id = this.params.id;
|
||||
|
||||
if (!id) {
|
||||
id = 'testId';
|
||||
}
|
||||
|
||||
// Define a request to the server to retrieve the study data
|
||||
// as JSON, given an ID that was in the Route
|
||||
var oReq = new XMLHttpRequest();
|
||||
|
||||
// Add event listeners for request failure
|
||||
oReq.addEventListener("error", () => {
|
||||
console.warn("An error occurred while retrieving the JSON data");
|
||||
});
|
||||
|
||||
const self = this;
|
||||
|
||||
// When the JSON has been returned, parse it into a JavaScript Object
|
||||
// and render the OHIF Viewer with this data
|
||||
oReq.addEventListener("load", function() {
|
||||
// Parse the response content
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText
|
||||
if (!this.responseText) {
|
||||
console.warn('Response was undefined');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(JSON.stringify(this.responseText, null, 2));
|
||||
|
||||
const parsed = JSON.parse(this.responseText);
|
||||
|
||||
// Create some data to pass to the OHIF Viewer
|
||||
const data = {
|
||||
studies: parsed.studies,
|
||||
contentId: 'standalone' // TODO: Remove all dependence on this
|
||||
};
|
||||
|
||||
// Render the Viewer with this data
|
||||
self.render('standaloneViewer', {
|
||||
data: function() {
|
||||
return data;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 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
|
||||
console.log('Sending Request to: ' + "/api/" + id);
|
||||
oReq.open("GET", "/api/" + id);
|
||||
|
||||
// Fire the request the server
|
||||
oReq.send();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// This is ONLY for demo purposes.
|
||||
if (Meteor.isServer) {
|
||||
// You can test this with:
|
||||
// curl -v -H "Content-Type: application/json" -X GET 'http://localhost:3000/getData/testId'
|
||||
//
|
||||
// Or by going to:
|
||||
// http://localhost:3000/api/testId
|
||||
|
||||
Router.route('/api/:id', {where: 'server'}).get(function () {
|
||||
// "this" is the RouteController instance.
|
||||
// "this.response" is the Connect response object
|
||||
// "this.request" is the Connect request object
|
||||
const id = this.params.id;
|
||||
|
||||
// Find the relevant study data from the Collection given the ID
|
||||
var data = RequestStudies.findOne({transactionId: id});
|
||||
|
||||
// Set the response headers to return JSON to any server
|
||||
this.response.setHeader("Content-Type", "application/json");
|
||||
this.response.setHeader("Access-Control-Allow-Origin", "*");
|
||||
this.response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
|
||||
|
||||
// Change the response text depending on the available study data
|
||||
if (!data) {
|
||||
this.response.write('No Data Found');
|
||||
} else {
|
||||
// Stringify the JavaScript object to JSON for the response
|
||||
this.response.write(JSON.stringify(data));
|
||||
}
|
||||
|
||||
// Finalize the response
|
||||
this.response.end();
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user