Move towards NPM for Cornerstone dependencies

This commit is contained in:
Erik Ziegler 2017-06-08 15:16:48 +02:00
parent 6c98c6a589
commit ddef3c4710
59 changed files with 2435 additions and 29162 deletions

View File

@ -14,3 +14,5 @@ notices-for-facebook-graph-api-2
1.3.5-remove-old-dev-bundle-link
1.4.0-remove-old-dev-bundle-link
1.4.1-add-shell-server-package
1.4.3-split-account-service-packages
1.5-add-dynamic-import-package

View File

@ -6,16 +6,25 @@
npm-bcrypt@0.9.2
meteor-base@1.0.4 # Packages every Meteor app needs to have
meteor-base@1.1.0 # Packages every Meteor app needs to have
mobile-experience@1.0.4 # Packages for a great mobile UX
mongo@1.1.14 # The database Meteor supports right now
mongo@1.1.18 # The database Meteor supports right now
blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views
session@1.1.7 # Client-side reactive dictionary for your app
jquery@1.11.10 # Helpful client-side library
tracker@1.1.1 # Meteor's client-side reactive programming library
tracker@1.1.3 # Meteor's client-side reactive programming library
standard-minifier-css
standard-minifier-js
http@1.2.12
promise@0.8.9
stylus@2.513.9
random@1.0.10
reactive-var@1.0.11
reactive-dict@1.1.9
check@1.2.5
email@1.2.1
es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers.
ecmascript@0.6.1 # Enable ECMAScript2015+ syntax in app code
ecmascript@0.8.0 # Enable ECMAScript2015+ syntax in app code
clinical:active-entry
clinical:theming
@ -23,50 +32,44 @@ clinical:fonts
clinical:hipaa-audit-log
clinical:hipaa-logger
aldeed:simple-schema # Third party package to deal with schemas
# OHIF Packages
ohif:polyfill
ohif:design
ohif:core
ohif:user
ohif:header
ohif:select-tree
ohif:cornerstone
ohif:viewerbase
ohif:study-list
ohif:dicom-services
ohif:hanging-protocols
ohif:user-management
ohif:lesiontracker
ohif:metadata
accounts-base@1.2.14
accounts-password@1.3.3
ian:accounts-ui-bootstrap-3
twbs:bootstrap
http@1.2.10
arsnebula:reactive-promise
promise@0.8.8
stylus@2.513.8
fortawesome:fontawesome
random@1.0.10
reactive-var@1.0.11
reactive-dict@1.1.8
practicalmeteor:loglevel
momentjs:moment@2.15.1
# Necessary for Lesion Trakcer
ohif:lesiontracker
ohif:user
ohif:user-management
ohif:select-tree
anti:gagarin@=0.4.11
check@1.2.4
accounts-base@1.3.0
accounts-password@1.3.6
twbs:bootstrap
fortawesome:fontawesome
momentjs:moment@2.15.1
aldeed:simple-schema # Third party package to deal with schemas
aldeed:template-extension@4.0.0
aldeed:collection2
zuuk:stale-session
<<<<<<< 3d081fe297551d37cd9691a7c60be1f743b9e600
email@1.1.18
peppelg:bootstrap-3-modal
simple:reactive-method
fastclick@1.0.13
standard-minifier-css@1.3.2
standard-minifier-js@1.2.1
=======
gilbertwat:bootstrap3-daterangepicker
>>>>>>> Move towards NPM for Cornerstone dependencies
johdirr:meteor-git-rev
u2622:persistent-session@0.4.4
shell-server@0.2.1
aldeed:collection2
shell-server@0.2.3

View File

@ -1 +1 @@
METEOR@1.4.2.3
METEOR@1.5

View File

@ -1,5 +1,5 @@
accounts-base@1.2.14
accounts-password@1.3.3
accounts-base@1.3.0
accounts-password@1.3.6
aldeed:collection2@2.10.0
aldeed:collection2-core@1.2.0
aldeed:schema-deny@1.1.0
@ -8,41 +8,44 @@ aldeed:simple-schema@1.5.3
aldeed:template-extension@4.0.0
allow-deny@1.0.5
amplify@1.0.0
anti:gagarin@0.4.11
anti:i18n@0.4.3
arsnebula:reactive-promise@0.9.1
autoupdate@1.3.12
babel-compiler@6.13.0
babel-compiler@6.19.1
babel-runtime@1.0.1
base64@1.0.10
binary-heap@1.0.10
blaze@2.2.0
blaze@2.3.2
blaze-html-templates@1.0.5
blaze-tools@1.0.10
boilerplate-generator@1.0.11
boilerplate-generator@1.1.0
caching-compiler@1.1.9
caching-html-compiler@1.0.7
callback-hook@1.0.10
check@1.2.4
check@1.2.5
clinical:active-entry@1.5.16
clinical:auto-resizing@0.2.0
clinical:fonts@1.1.4
clinical:hipaa-audit-log@2.4.2
clinical:hipaa-logger@1.0.1
clinical:theming@0.4.10
<<<<<<< 3d081fe297551d37cd9691a7c60be1f743b9e600
coffeescript@1.11.1_4
dangrossman:bootstrap-daterangepicker@2.1.13
=======
>>>>>>> Move towards NPM for Cornerstone dependencies
ddp@1.2.5
ddp-client@1.3.2
ddp-client@1.3.4
ddp-common@1.2.8
ddp-rate-limiter@1.0.6
ddp-server@1.3.12
ddp-rate-limiter@1.0.7
ddp-server@1.3.14
deps@1.0.12
diff-sequence@1.0.7
ecmascript@0.6.1
ecmascript-runtime@0.3.15
dynamic-import@0.1.0
ecmascript@0.8.0
ecmascript-runtime@0.4.1
ecmascript-runtime-client@0.4.1
ecmascript-runtime-server@0.4.1
ejson@1.0.13
email@1.1.18
email@1.2.1
es5-shim@4.6.15
fastclick@1.0.13
fortawesome:fontawesome@4.7.0
@ -51,8 +54,7 @@ grove:less@0.2.0
hot-code-push@1.0.4
html-tools@1.0.11
htmljs@1.0.11
http@1.2.10
ian:accounts-ui-bootstrap-3@1.2.89
http@1.2.12
id-map@1.0.9
iron:controller@1.0.12
iron:core@1.0.11
@ -64,30 +66,35 @@ iron:router@1.0.13
iron:url@1.0.11
johdirr:meteor-git-rev@0.0.4
jquery@1.11.10
launch-screen@1.1.0
launch-screen@1.1.1
livedata@1.0.18
localstorage@1.0.12
logging@1.1.16
localstorage@1.1.0
logging@1.1.17
mdg:validation-error@0.5.1
meteor@1.6.0
meteor-base@1.0.4
meteor@1.6.1
meteor-base@1.1.0
meteor-platform@1.2.6
minifier-css@1.2.15
minifier-js@1.2.15
minimongo@1.0.19
minifier-css@1.2.16
minifier-js@2.1.0
minimongo@1.2.0
mobile-experience@1.0.4
mobile-status-bar@1.0.13
modules@0.7.7
modules-runtime@0.7.7
mobile-status-bar@1.0.14
modules@0.9.0
modules-runtime@0.8.0
momentjs:moment@2.16.0
mongo@1.1.14
mongo@1.1.18
mongo-id@1.0.6
mrt:moment@2.8.1
natestrauser:select2@4.0.3
npm-bcrypt@0.9.2
<<<<<<< 3d081fe297551d37cd9691a7c60be1f743b9e600
npm-mongo@2.2.11_2
observe-sequence@1.0.14
ohif:commands@0.0.1
=======
npm-mongo@2.2.24
observe-sequence@1.0.16
>>>>>>> Move towards NPM for Cornerstone dependencies
ohif:core@0.0.1
ohif:cornerstone@0.0.1
ohif:design@0.0.1
@ -109,14 +116,11 @@ ohif:user-management@0.0.1
ohif:viewerbase@0.0.1
ohif:wadoproxy@0.0.1
ordered-dict@1.0.9
peppelg:bootstrap-3-modal@1.0.4
practicalmeteor:chai@2.1.0_1
practicalmeteor:loglevel@1.2.0_2
promise@0.8.8
promise@0.8.9
raix:eventemitter@0.1.3
random@1.0.10
rate-limit@1.0.6
reactive-dict@1.1.8
rate-limit@1.0.8
reactive-dict@1.1.9
reactive-var@1.0.11
reload@1.1.11
retry@1.0.9
@ -124,29 +128,28 @@ routepolicy@1.0.12
service-configuration@1.0.11
session@1.1.7
sha@1.0.9
shell-server@0.2.1
shell-server@0.2.3
silentcicero:jszip@0.0.4
simple:reactive-method@1.0.2
spacebars@1.0.13
spacebars-compiler@1.0.13
spacebars@1.0.15
spacebars-compiler@1.1.2
srp@1.0.10
standard-app-packages@1.0.9
standard-minifier-css@1.3.2
standard-minifier-js@1.2.1
stylus@2.513.8
standard-minifier-css@1.3.4
standard-minifier-js@2.1.0
stylus@2.513.9
templating@1.2.15
templating-compiler@1.2.15
templating-runtime@1.2.15
templating-tools@1.0.5
tracker@1.1.1
templating-tools@1.1.1
tracker@1.1.3
twbs:bootstrap@3.3.6
typ:accounts-ldap@1.0.1
typ:ldapjs@0.7.3
u2622:persistent-session@0.4.4
ui@1.0.12
ui@1.0.13
underscore@1.0.10
url@1.0.11
url@1.1.0
validatejs@0.0.1
webapp@1.3.12
webapp@1.3.16
webapp-hashing@1.0.9
zuuk:stale-session@1.0.8

View File

@ -1,3 +1,3 @@
// Create application logger using loglevel
// https://atmospherejs.com/spacejamio/loglevel
log = loglevel.createAppLogger('LesionTracker', defaultLevel = 'info');
import loglevel from 'loglevel';
log = loglevel.getLogger('OHIFViewer');
log.setLevel('info');

View File

@ -30,15 +30,21 @@ Router.route('/', function() {
Router.go('studylist', {}, { replaceState: true });
}, { name: 'home' });
Router.route('/studylist', function() {
// Retrieve the timepoints data to display in studylist
const promise = OHIF.studylist.timepointApi.retrieveTimepoints({}).then(() => {
this.render('app', { data: { template: 'studylist' } });
});
Router.route('/studylist', {
name: 'studylist',
onBeforeAction: function() {
const next = this.next;
// Show loading state while preparing the studylist data
OHIF.ui.showDialog('dialogLoading', { promise });
}, { name: 'studylist' });
// Retrieve the timepoints data to display in studylist
const promise = OHIF.studylist.timepointApi.retrieveTimepoints({});
promise.then(() => {
next()
});
},
render: function() {
this.render('app', { data: { template: 'studylist' } });
}
});
Router.route('/viewer/timepoints/:timepointId', function() {
const timepointId = this.params.timepointId;

View File

@ -11,6 +11,7 @@
"dependencies": {
"babel-runtime": "^6.20.0",
"bcrypt": "^0.8.7",
"loglevel": "^1.4.1",
"meteor-node-stubs": "^0.2.3"
},
"devDependencies": {

View File

@ -1,16 +0,0 @@
// Temporary fix to drop all Collections on server restart
// http://stackoverflow.com/questions/23891631/meteor-how-can-i-drop-all-mongo-collections-and-clear-all-data-on-startup
Meteor.startup(() => {
if (Meteor.settings.dropCollections === true) {
console.warn('Dropping all global Collections!');
Object.keys(global).forEach((key) => {
const object = global[key];
if (object instanceof Meteor.Collection) {
if (!(/^server|currentServer$/).test(object._name)) {
console.warn(`Dropping: ${object._debugName || object._name}`);
object.remove({});
}
}
});
}
});

View File

@ -14,3 +14,5 @@ notices-for-facebook-graph-api-2
1.3.5-remove-old-dev-bundle-link
1.4.0-remove-old-dev-bundle-link
1.4.1-add-shell-server-package
1.4.3-split-account-service-packages
1.5-add-dynamic-import-package

View File

@ -4,6 +4,30 @@
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
http@1.2.12
promise@0.8.9
stylus@2.513.9
meteor-base@1.1.0
mobile-experience@1.0.4
mongo@1.1.18
blaze-html-templates@1.0.4
session@1.1.7
jquery@1.11.10
tracker@1.1.3
logging@1.1.17
reload@1.1.11
random@1.0.10
ejson@1.0.13
spacebars@1.0.12
check@1.2.5
ecmascript@0.8.0
es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers.
reactive-var@1.0.11
reactive-dict@1.1.9
standard-minifier-css@1.3.4
standard-minifier-js@2.1.0
# OHIF Packages
ohif:polyfill
ohif:design
@ -16,39 +40,14 @@ ohif:viewerbase
ohif:study-list
ohif:dicom-services
ohif:hanging-protocols
# ohif:user-management
ohif:metadata
twbs:bootstrap
http@1.2.10
arsnebula:reactive-promise
promise@0.8.8
stylus@2.513.8
fortawesome:fontawesome
meteor-base@1.0.4
mobile-experience@1.0.4
mongo@1.1.14
blaze-html-templates@1.0.4
session@1.1.7
jquery@1.11.10
tracker@1.1.1
logging@1.1.16
reload@1.1.11
random@1.0.10
ejson@1.0.13
spacebars@1.0.12
check@1.2.4
momentjs:moment@2.15.1
aldeed:simple-schema # Third party package to deal with schemas
ecmascript@0.6.1
reactive-var@1.0.11
practicalmeteor:loglevel
reactive-dict@1.1.8
fastclick@1.0.13
standard-minifier-css@1.3.2
standard-minifier-js@1.2.1
aldeed:template-extension
gilbertwat:bootstrap3-daterangepicker
johdirr:meteor-git-rev
u2622:persistent-session@0.4.4
aldeed:template-extension
peppelg:bootstrap-3-modal
shell-server@0.2.1
shell-server@0.2.3

View File

@ -1 +1 @@
METEOR@1.4.2.3
METEOR@1.5

View File

@ -1,45 +1,52 @@
accounts-base@1.2.14
accounts-base@1.3.0
aldeed:collection2@2.10.0
aldeed:collection2-core@1.2.0
aldeed:schema-deny@1.1.0
aldeed:schema-index@1.1.1
aldeed:simple-schema@1.5.3
aldeed:template-extension@4.0.0
aldeed:template-extension@4.1.0
allow-deny@1.0.5
amplify@1.0.0
arsnebula:reactive-promise@0.9.1
autoupdate@1.3.12
babel-compiler@6.13.0
babel-compiler@6.19.2
babel-runtime@1.0.1
base64@1.0.10
binary-heap@1.0.10
blaze@2.2.0
blaze-html-templates@1.0.5
blaze@2.3.2
blaze-html-templates@1.1.2
blaze-tools@1.0.10
boilerplate-generator@1.0.11
boilerplate-generator@1.1.0
caching-compiler@1.1.9
caching-html-compiler@1.0.7
caching-html-compiler@1.1.2
callback-hook@1.0.10
<<<<<<< 3d081fe297551d37cd9691a7c60be1f743b9e600
check@1.2.4
coffeescript@1.11.1_4
dangrossman:bootstrap-daterangepicker@2.1.13
=======
check@1.2.5
>>>>>>> Move towards NPM for Cornerstone dependencies
ddp@1.2.5
ddp-client@1.3.2
ddp-client@1.3.4
ddp-common@1.2.8
ddp-rate-limiter@1.0.6
ddp-server@1.3.12
ddp-rate-limiter@1.0.7
ddp-server@1.3.14
deps@1.0.12
diff-sequence@1.0.7
ecmascript@0.6.1
ecmascript-runtime@0.3.15
dynamic-import@0.1.1
ecmascript@0.8.0
ecmascript-runtime@0.4.1
ecmascript-runtime-client@0.4.2
ecmascript-runtime-server@0.4.1
ejson@1.0.13
es5-shim@4.6.15
fastclick@1.0.13
fortawesome:fontawesome@4.7.0
geojson-utils@1.0.10
hot-code-push@1.0.4
html-tools@1.0.11
htmljs@1.0.11
http@1.2.10
http@1.2.12
id-map@1.0.9
iron:controller@1.0.12
iron:core@1.0.11
@ -51,28 +58,33 @@ iron:router@1.0.13
iron:url@1.0.11
johdirr:meteor-git-rev@0.0.4
jquery@1.11.10
launch-screen@1.1.0
launch-screen@1.1.1
livedata@1.0.18
localstorage@1.0.12
logging@1.1.16
localstorage@1.1.0
logging@1.1.17
mdg:validation-error@0.5.1
meteor@1.6.0
meteor-base@1.0.4
meteor@1.6.1
meteor-base@1.1.0
meteor-platform@1.2.6
minifier-css@1.2.15
minifier-js@1.2.15
minimongo@1.0.19
minifier-css@1.2.16
minifier-js@2.1.0
minimongo@1.2.1
mobile-experience@1.0.4
mobile-status-bar@1.0.13
modules@0.7.7
modules-runtime@0.7.7
mobile-status-bar@1.0.14
modules@0.9.1
modules-runtime@0.8.0
momentjs:moment@2.16.0
mongo@1.1.14
mongo@1.1.18
mongo-id@1.0.6
natestrauser:select2@4.0.3
<<<<<<< 3d081fe297551d37cd9691a7c60be1f743b9e600
npm-mongo@2.2.11_2
observe-sequence@1.0.14
ohif:commands@0.0.1
=======
npm-mongo@2.2.24
observe-sequence@1.0.16
>>>>>>> Move towards NPM for Cornerstone dependencies
ohif:core@0.0.1
ohif:cornerstone@0.0.1
ohif:design@0.0.1
@ -89,38 +101,35 @@ ohif:themes-common@0.0.1
ohif:viewerbase@0.0.1
ohif:wadoproxy@0.0.1
ordered-dict@1.0.9
peppelg:bootstrap-3-modal@1.0.4
practicalmeteor:chai@2.1.0_1
practicalmeteor:loglevel@1.2.0_2
promise@0.8.8
promise@0.8.9
raix:eventemitter@0.1.3
random@1.0.10
rate-limit@1.0.6
reactive-dict@1.1.8
rate-limit@1.0.8
reactive-dict@1.1.9
reactive-var@1.0.11
reload@1.1.11
retry@1.0.9
routepolicy@1.0.12
service-configuration@1.0.11
session@1.1.7
shell-server@0.2.1
shell-server@0.2.3
silentcicero:jszip@0.0.4
spacebars@1.0.13
spacebars-compiler@1.0.13
spacebars@1.0.15
spacebars-compiler@1.1.2
standard-app-packages@1.0.9
standard-minifier-css@1.3.2
standard-minifier-js@1.2.1
stylus@2.513.8
templating@1.2.15
templating-compiler@1.2.15
templating-runtime@1.2.15
templating-tools@1.0.5
tracker@1.1.1
standard-minifier-css@1.3.4
standard-minifier-js@2.1.0
stylus@2.513.9
templating@1.3.2
templating-compiler@1.3.2
templating-runtime@1.3.2
templating-tools@1.1.2
tracker@1.1.3
twbs:bootstrap@3.3.6
u2622:persistent-session@0.4.4
ui@1.0.12
ui@1.0.13
underscore@1.0.10
url@1.0.11
url@1.1.0
validatejs@0.0.1
webapp@1.3.12
webapp@1.3.16
webapp-hashing@1.0.9

View File

@ -1,3 +1,3 @@
// Create application logger using loglevel
// https://atmospherejs.com/spacejamio/loglevel
log = loglevel.createAppLogger('OHIFViewer', defaultLevel = 'info');
import loglevel from 'loglevel';
log = loglevel.getLogger('OHIFViewer');
log.setLevel('info');

View File

@ -4,7 +4,8 @@
"description": "",
"main": "index.js",
"dependencies": {
"babel-runtime": "^6.22.0"
"babel-runtime": "^6.22.0",
"loglevel": "^1.4.1"
},
"devDependencies": {},
"scripts": {

View File

@ -9,6 +9,6 @@ Template.dialogLoading.onRendered(() => {
$modal.modal({
backdrop: 'static',
keyboard: false,
modal: true
show: true
});
});

View File

@ -8,7 +8,7 @@ Template.dialogSimple.onCreated(() => {
instance.close = () => {
const $modal = instance.$('.modal');
$modal.on('hidden.bs.modal', () => instance.data.promiseResolve()).modal('hide');
$modal.one('hidden.bs.modal', () => instance.data.promiseResolve()).modal('hide');
};
// Automatically close the modal if a timeout value was given

View File

@ -12,7 +12,7 @@ Template.unsavedChangesDialog.onRendered(function() {
const instance = Template.instance();
const $modal = instance.$('.modal.unsavedChangesDialog');
// Routine which effectivelly displays the BS modal...
// Routine which effectively displays the BS modal...
instance.displayModal = () => {
// Make modal options extensible...
@ -22,7 +22,7 @@ Template.unsavedChangesDialog.onRendered(function() {
}, instance.data.modalOptions);
// Set handler for "hidden" event... Simply remove the view!
$modal.on('hidden.bs.modal', () => {
$modal.one('hidden.bs.modal', () => {
Blaze.remove(instance.view);
});

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
import { Cornerstone } from '../namespace';
import { OHIF } from '../namespace';
import { MetadataProvider } from './lib/classes/MetadataProvider';
Cornerstone.metadataProvider = new MetadataProvider();
OHIF.cornerstone.metadataProvider = new MetadataProvider();

View File

@ -1,33 +0,0 @@
(function(factory) {
if (typeof define === 'function' && define.amd) {
define(['jquery', 'hammerjs'], factory);
} else if (typeof exports === 'object') {
factory(require('jquery'), require('hammerjs'));
} else {
factory(jQuery, Hammer);
}
}(function($, Hammer) {
function hammerify(el, options) {
var $el = $(el);
if(!$el.data("hammer")) {
$el.data("hammer", new Hammer($el[0], options));
}
}
$.fn.hammer = function(options) {
return this.each(function() {
hammerify(this, options);
});
};
// extend the emit method to also trigger jQuery events
Hammer.Manager.prototype.emit = (function(originalEmit) {
return function(type, data) {
originalEmit.call(this, type, data);
$(this.element).trigger({
type: type,
gesture: data
});
};
})(Hammer.Manager.prototype.emit);
}));

View File

@ -1,3 +1,4 @@
import * as cornerstoneMath from 'cornerstone-math';
import { parsingUtils } from '../parsingUtils';
const FUNCTION = 'function';
@ -245,21 +246,16 @@ export class MetadataProvider {
}
return {
frameOfReferenceUID:
instance.frameOfReferenceUID,
rows:
instance.rows,
columns:
instance.columns,
frameOfReferenceUID: instance.frameOfReferenceUID,
rows: instance.rows,
columns: instance.columns,
rowCosines:
new cornerstoneMath.Vector3(parseFloat(imageOrientation[0]), parseFloat(imageOrientation[1]), parseFloat(imageOrientation[2])),
columnCosines:
new cornerstoneMath.Vector3(parseFloat(imageOrientation[3]), parseFloat(imageOrientation[4]), parseFloat(imageOrientation[5])),
imagePositionPatient:
new cornerstoneMath.Vector3(parseFloat(imagePosition[0]), parseFloat(imagePosition[1]), parseFloat(imagePosition[2])),
rowPixelSpacing:
rowPixelSpacing,
columnPixelSpacing:
columnPixelSpacing,
};
}
@ -318,7 +314,7 @@ export class MetadataProvider {
}
/**
* Get a bound reference to the privider function.
* Get a bound reference to the provider function.
*/
getProvider() {
let provider = this._provider;

View File

@ -1,6 +1,4 @@
/**
* Globals: dicomParser
*/
import * as dicomParser from 'dicom-parser';
/**
* A small set of utilities to help parsing DICOM element values.

View File

@ -2,7 +2,7 @@
* Import namespace...
*/
import { OHIF, Cornerstone } from './namespace.js';
import { OHIF } from './namespace.js';
/**
* Import scripts that will populate the Cornerstone namespace as a side effect only import. This is effectively the public API...
@ -10,4 +10,20 @@ import { OHIF, Cornerstone } from './namespace.js';
import './client/'; // which is actually: import './client/index.js';
export { OHIF, Cornerstone };
import * as cornerstone from 'cornerstone-core';
import * as cornerstoneTools from 'cornerstone-tools';
import * as cornerstoneMath from 'cornerstone-math';
import * as cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';
import * as dicomParser from 'dicom-parser';
debugger;
export {
cornerstone,
cornerstoneTools,
cornerstoneMath,
cornerstoneWADOImageLoader,
dicomParser
};
export { OHIF };

View File

@ -22,4 +22,4 @@ OHIF.cornerstone = Cornerstone;
* Export relevant objects
*/
export { OHIF, Cornerstone };
export { OHIF };

View File

@ -4,45 +4,31 @@ Package.describe({
version: '0.0.1'
});
Npm.depends({
'hammerjs': '2.0.8',
'jquery-hammerjs': '2.0.0',
'cornerstone-core': '0.11.0',
'cornerstone-tools': '0.8.9',
'cornerstone-math': '0.1.6',
'dicom-parser': '1.7.5',
'cornerstone-wado-image-loader': '0.14.6'
});
Package.onUse(function(api) {
api.versionsFrom('1.4');
api.versionsFrom('1.5');
api.use('ecmascript');
api.use('jquery');
api.use('ohif:core');
api.addFiles('client/cornerstone.js', 'client', {
bare: true
});
api.addFiles('client/cornerstoneMath.js', 'client', {
bare: true
});
api.addFiles('client/cornerstoneTools.js', 'client', {
bare: true
});
api.addFiles('client/cornerstoneWADOImageLoader.js', 'client', {
bare: true
});
api.addFiles('client/dicomParser.js', 'client', {
bare: true
});
api.addFiles('client/hammer.js', 'client', {
bare: true
});
api.addFiles('client/jquery.hammer.js', 'client', {
bare: true
});
api.addAssets('public/js/cornerstoneWADOImageLoaderCodecs.es5.js', 'client');
api.addAssets('public/js/cornerstoneWADOImageLoaderWebWorker.es5.js', 'client');
api.mainModule('main.js', 'client');
api.export('cornerstone', 'client');
api.export('cornerstoneMath', 'client');
api.export('cornerstoneTools', 'client');
api.export('cornerstoneWADOImageLoader', 'client');
api.export('dicomParser', 'client');
api.mainModule('main.js', 'client');
});

View File

@ -5,8 +5,6 @@ import { retrieveMeasurements, storeMeasurements, retrieveTimepoints, storeTimep
import { validateMeasurements } from './dataValidation';
import { FieldLesionLocation, FieldLesionLocationResponse } from 'meteor/ohif:lesiontracker/both/schema/fields';
console.log('OHIF-LesionTracker: Defining Configuration for Measurements');
const newMeasurementTool = {
id: 'newLesions',
name: 'New Lesions'

View File

@ -1,42 +1,40 @@
import { OHIF } from 'meteor/ohif:core';
import { Viewerbase } from 'meteor/ohif:viewerbase';
(function($, cornerstone, cornerstoneMath, cornerstoneTools) {
import { cornerstone, cornerstoneMath, cornerstoneTools } from 'meteor/ohif:cornerstone';
'use strict';
var toolType = 'bidirectional';
var toolType = 'bidirectional';
const toolDefaultStates = Viewerbase.toolManager.getToolDefaultStates();
const shadowConfig = toolDefaultStates.shadowConfig;
const textBoxConfig = toolDefaultStates.textBoxConfig;
const toolDefaultStates = Viewerbase.toolManager.getToolDefaultStates();
const shadowConfig = toolDefaultStates.shadowConfig;
const textBoxConfig = toolDefaultStates.textBoxConfig;
var configuration = {
var configuration = {
getMeasurementLocationCallback: getMeasurementLocationCallback,
changeMeasurementLocationCallback: changeMeasurementLocationCallback,
...shadowConfig,
textBox: textBoxConfig
};
};
// Used to cancel tool placement
var keys = {
// Used to cancel tool placement
var keys = {
ESC: 27
};
};
// The distance between the mouse and the tool to make it active
var distanceThreshold = 7;
// The distance between the mouse and the tool to make it active
var distanceThreshold = 7;
// Define a callback to get your text annotation
// This could be used, e.g. to open a modal
function getMeasurementLocationCallback(measurementData, eventData, doneCallback) {
// Define a callback to get your text annotation
// This could be used, e.g. to open a modal
function getMeasurementLocationCallback(measurementData, eventData, doneCallback) {
//doneCallback(prompt('Enter your lesion location:'));
}
}
function changeMeasurementLocationCallback(measurementData, eventData, doneCallback) {
function changeMeasurementLocationCallback(measurementData, eventData, doneCallback) {
//doneCallback(prompt('Change your lesion location:'));
}
}
function createNewMeasurement(mouseEventData) {
function createNewMeasurement(mouseEventData) {
// Create the measurement data for this tool with the end handle activated
const measurementData = {
isCreating: true,
@ -96,9 +94,9 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
};
return measurementData;
}
}
function addNewMeasurement(mouseEventData) {
function addNewMeasurement(mouseEventData) {
var element = mouseEventData.element;
// LT-29 Disable Target Measurements when pixel spacing is not available
@ -170,9 +168,9 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
$(element).on('CornerstoneToolsMouseDoubleClick', eventData, doubleClickCallback);
cornerstone.updateImage(element);
});
}
}
function addNewMeasurementTouch(touchEventData) {
function addNewMeasurementTouch(touchEventData) {
var element = touchEventData.element;
// LT-29 Disable Target Measurements when pixel spacing is not available
@ -216,9 +214,9 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
$(element).on('CornerstoneToolsDragStartActive', cornerstoneTools.bidirectional.touchDownActivateCallback);
cornerstone.updateImage(element);
});
}
}
function pointNearTool(element, data, coords) {
function pointNearTool(element, data, coords) {
var lineSegment = {
start: cornerstone.pixelToCanvas(element, data.handles.start),
end: cornerstone.pixelToCanvas(element, data.handles.end)
@ -234,19 +232,19 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
}
return (distanceToPoint < distanceThreshold);
}
}
function pointNearPerpendicular(element, handles, coords) {
function pointNearPerpendicular(element, handles, coords) {
var lineSegment = {
start: cornerstone.pixelToCanvas(element, handles.perpendicularStart),
end: cornerstone.pixelToCanvas(element, handles.perpendicularEnd)
};
var distanceToPoint = cornerstoneMath.lineSegment.distanceToPoint(lineSegment, coords);
return (distanceToPoint < distanceThreshold);
}
}
// Move long-axis start point
function perpendicularBothFixedLeft(eventData, data) {
// Move long-axis start point
function perpendicularBothFixedLeft(eventData, data) {
var longLine = {
start: {
x: data.handles.start.x,
@ -299,10 +297,10 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
return true;
}
}
// Move long-axis end point
function perpendicularBothFixedRight(eventData, data) {
// Move long-axis end point
function perpendicularBothFixedRight(eventData, data) {
var longLine = {
start: {
x: data.handles.start.x,
@ -355,10 +353,10 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
return true;
}
}
// Move perpendicular line start point
function perpendicularLeftFixedPoint(eventData, data) {
// Move perpendicular line start point
function perpendicularLeftFixedPoint(eventData, data) {
var fudgeFactor = 1;
var fixedPoint = data.handles.perpendicularEnd;
@ -376,6 +374,10 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
}
var length = cornerstoneMath.point.distance(data.handles.start, data.handles.end);
if (length === 0) {
return false;
}
var dx = (data.handles.start.x - data.handles.end.x) / length;
var dy = (data.handles.start.y - data.handles.end.y) / length;
@ -422,25 +424,19 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
data.handles.perpendicularStart.y = adjustedLineP2.y - distanceFromMoved * dx;
data.handles.perpendicularEnd.x = data.handles.perpendicularStart.x - total * dy;
data.handles.perpendicularEnd.y = data.handles.perpendicularStart.y + total * dx;
return true;
} else {
data.handles.perpendicularStart.x = adjustedLineP1.x + distanceFromMoved * dy;
data.handles.perpendicularStart.y = adjustedLineP1.y - distanceFromMoved * dx;
data.handles.perpendicularEnd.x = data.handles.perpendicularStart.x - total * dy;
data.handles.perpendicularEnd.y = data.handles.perpendicularStart.y + total * dx;
return true;
}
}
return true;
}
}
// Move perpendicular line end point
function perpendicularRightFixedPoint(eventData, data) {
// Move perpendicular line end point
function perpendicularRightFixedPoint(eventData, data) {
var fudgeFactor = 1;
var fixedPoint = data.handles.perpendicularStart;
@ -521,10 +517,10 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
}
return true;
}
}
// Sets position of handles(start, end, perpendicularStart, perpendicularEnd)
function setHandlesPosition(handle, eventData, data) {
// Sets position of handles(start, end, perpendicularStart, perpendicularEnd)
function setHandlesPosition(handle, eventData, data) {
let movedPoint,
outOfBounds,
@ -657,23 +653,23 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
}
}
}
}
}
// Sets drawnIndependently property of control points(handles)
function setControlPoints(handles, value) {
// Sets drawnIndependently property of control points(handles)
function setControlPoints(handles, value) {
Object.keys(handles).forEach(function(name) {
if (name !== 'textBox') {
var handle = handles[name];
handle.drawnIndependently = value;
}
});
}
}
//****************************************/
// Cornerstone Methods
//****************************************/
//****************************************/
// Cornerstone Methods
//****************************************/
function moveHandle(mouseEventData, toolType, data, handle, doneMovingCallback, preventHandleOutsideImage) {
function moveHandle(mouseEventData, toolType, data, handle, doneMovingCallback, preventHandleOutsideImage) {
var element = mouseEventData.element;
var distanceFromTool = {
x: handle.x - mouseEventData.currentPoints.image.x,
@ -725,10 +721,10 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
$(element).on('CornerstoneToolsMouseUp', mouseUpCallback);
$(element).on('CornerstoneToolsMouseClick', mouseUpCallback);
}
}
// mouseMoveCallback is used to hide handles when mouse is away
function mouseMoveCallback(e, eventData) {
// mouseMoveCallback is used to hide handles when mouse is away
function mouseMoveCallback(e, eventData) {
cornerstoneTools.toolCoordinates.setCoords(eventData);
// if a mouse button is down, do nothing
if (eventData.which !== 0) {
@ -766,10 +762,10 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
if (imageNeedsUpdate === true) {
cornerstone.updateImage(eventData.element);
}
}
}
// mouseDowCallback is used to restrict behaviour of perpendicular-line
function mouseDownCallback(e, eventData) {
// mouseDowCallback is used to restrict behaviour of perpendicular-line
function mouseDownCallback(e, eventData) {
var data;
var element = eventData.element;
@ -829,15 +825,26 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
}
}
}
}
}
//****************************************/
// Cornerstone Methods end
//****************************************/
//****************************************/
// Cornerstone Methods end
//****************************************/
// draw perpendicular line
function drawPerpendicularLine(context, eventData, element, data, color, lineWidth) {
// draw perpendicular line
function drawPerpendicularLine(context, eventData, element, data, color, lineWidth) {
var startX;
var startY;
var endX;
var endY;
if (data.handles.start.x === data.handles.end.x &&
data.handles.start.y === data.handles.end.y) {
startX = data.handles.start.x;
startY = data.handles.start.y;
endX = data.handles.end.x;
endY = data.handles.end.y;
} else {
// mid point of long-axis line
var mid = {
x: (data.handles.start.x + data.handles.end.x) / 2,
@ -854,10 +861,11 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
var perpendicularLineLength = length / 2;
var startX = mid.x + (perpendicularLineLength / 2) * vectorY;
var startY = mid.y - (perpendicularLineLength / 2) * vectorX;
var endX = mid.x - (perpendicularLineLength / 2) * vectorY;
var endY = mid.y + (perpendicularLineLength / 2) * vectorX;
startX = mid.x + (perpendicularLineLength / 2) * vectorY;
startY = mid.y - (perpendicularLineLength / 2) * vectorX;
endX = mid.x - (perpendicularLineLength / 2) * vectorY;
endY = mid.y + (perpendicularLineLength / 2) * vectorX;
}
if (data.handles.perpendicularStart.locked) {
data.handles.perpendicularStart.x = startX;
@ -877,9 +885,9 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
context.lineTo(perpendicularEndCanvas.x, perpendicularEndCanvas.y);
context.stroke();
}
}
function findDottedLinePosition(data) {
function findDottedLinePosition(data) {
var distancesArr = [];
var minDistance;
@ -926,10 +934,10 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
return obj.point;
}
}
}
}
///////// BEGIN IMAGE RENDERING ///////
function onImageRendered(e, eventData) {
///////// BEGIN IMAGE RENDERING ///////
function onImageRendered(e, eventData) {
// if we have no toolData for this element, return immediately as there is nothing to do
var toolData = cornerstoneTools.getToolState(e.currentTarget, toolType);
if (!toolData) {
@ -1081,9 +1089,9 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
context.restore();
}
}
}
function doubleClickCallback(e, eventData) {
function doubleClickCallback(e, eventData) {
// Prevent other double click handlers from firing after this one
//e.stopImmediatePropagation();
@ -1123,10 +1131,10 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
return false;
}
}
}
}
// module exports
cornerstoneTools.bidirectional = cornerstoneTools.mouseButtonTool({
// module exports
cornerstoneTools.bidirectional = cornerstoneTools.mouseButtonTool({
createNewMeasurement: createNewMeasurement,
addNewMeasurement: addNewMeasurement,
onImageRendered: onImageRendered,
@ -1135,16 +1143,14 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
mouseDownCallback: mouseDownCallback,
mouseMoveCallback: mouseMoveCallback,
toolType: toolType
});
});
cornerstoneTools.bidirectionalTouch = cornerstoneTools.touchTool({
cornerstoneTools.bidirectionalTouch = cornerstoneTools.touchTool({
createNewMeasurement: createNewMeasurement,
addNewMeasurement: addNewMeasurementTouch,
onImageRendered: onImageRendered,
pointNearTool: pointNearTool,
toolType: toolType
});
});
cornerstoneTools.bidirectional.setConfiguration(configuration);
})($, cornerstone, cornerstoneMath, cornerstoneTools);
cornerstoneTools.bidirectional.setConfiguration(configuration);

View File

@ -1,43 +1,40 @@
import { OHIF } from 'meteor/ohif:core';
import { Viewerbase } from 'meteor/ohif:viewerbase';
(function($, cornerstone, cornerstoneMath, cornerstoneTools) {
import { cornerstone, cornerstoneMath, cornerstoneTools } from 'meteor/ohif:cornerstone';
'use strict';
const toolType = 'nonTarget';
const toolType = 'nonTarget';
const toolDefaultStates = Viewerbase.toolManager.getToolDefaultStates();
const shadowConfig = toolDefaultStates.shadowConfig;
const textBoxConfig = toolDefaultStates.textBoxConfig;
const toolDefaultStates = Viewerbase.toolManager.getToolDefaultStates();
const shadowConfig = toolDefaultStates.shadowConfig;
const textBoxConfig = toolDefaultStates.textBoxConfig;
const configuration = {
getMeasurementLocationCallback: getMeasurementLocationCallback,
changeMeasurementLocationCallback: changeMeasurementLocationCallback,
const configuration = {
getMeasurementLocationCallback,
changeMeasurementLocationCallback,
drawHandles: false,
drawHandlesOnHover: true,
arrowFirst: true,
textBox: textBoxConfig,
...shadowConfig,
};
};
// Used to cancel tool placement
const keys = {
// Used to cancel tool placement
const keys = {
ESC: 27
};
};
const getPosition = eventData => {
const getPosition = eventData => {
const event = eventData.event;
return {
x: event.clientX,
y: event.clientY
};
};
};
// Define a callback to get your text annotation
// This could be used, e.g. to open a modal
function getMeasurementLocationCallback(measurementData, eventData) {
// Define a callback to get your text annotation
// This could be used, e.g. to open a modal
function getMeasurementLocationCallback(measurementData, eventData) {
if (OHIF.lesiontracker.removeMeasurementIfInvalid(measurementData, eventData)) {
return;
}
@ -50,9 +47,9 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
element: eventData.element,
measurementData
});
}
}
function changeMeasurementLocationCallback(measurementData, eventData) {
function changeMeasurementLocationCallback(measurementData, eventData) {
if (OHIF.lesiontracker.removeMeasurementIfInvalid(measurementData, eventData)) {
return;
}
@ -64,11 +61,11 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
measurementData,
edit: true
});
}
}
/// --- Mouse Tool --- ///
///////// BEGIN ACTIVE TOOL ///////
function addNewMeasurement(mouseEventData) {
/// --- Mouse Tool --- ///
///////// BEGIN ACTIVE TOOL ///////
function addNewMeasurement(mouseEventData) {
const element = mouseEventData.element;
function doneCallback() {
@ -132,9 +129,9 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
cornerstone.updateImage(mouseEventData.element);
});
}
}
function createNewMeasurement(mouseEventData) {
function createNewMeasurement(mouseEventData) {
var imageId = mouseEventData.image.imageId;
// Get studyInstanceUid
@ -186,10 +183,10 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
};
return measurementData;
}
///////// END ACTIVE TOOL ///////
}
///////// END ACTIVE TOOL ///////
function pointNearTool(element, data, coords) {
function pointNearTool(element, data, coords) {
var lineSegment = {
start: cornerstone.pixelToCanvas(element, data.handles.start),
end: cornerstone.pixelToCanvas(element, data.handles.end)
@ -201,10 +198,10 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
}
return distanceToPoint < 25;
}
}
///////// BEGIN IMAGE RENDERING ///////
function onImageRendered(e, eventData) {
///////// BEGIN IMAGE RENDERING ///////
function onImageRendered(e, eventData) {
var element = eventData.element;
// if we have no toolData for this element, return immediately as there is nothing to do
@ -313,12 +310,12 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
context.restore();
}
}
}
// ---- Touch tool ----
// ---- Touch tool ----
///////// BEGIN ACTIVE TOOL ///////
function addNewMeasurementTouch(touchEventData) {
///////// BEGIN ACTIVE TOOL ///////
function addNewMeasurementTouch(touchEventData) {
var element = touchEventData.element;
function doneCallback() {
@ -349,9 +346,9 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
$(element).on('CornerstoneToolsDragStartActive', cornerstoneTools.nonTargetTouch.touchDownActivateCallback);
$(element).on('CornerstoneToolsTap', cornerstoneTools.nonTargetTouch.tapCallback);
});
}
}
function doubleClickCallback(e, eventData) {
function doubleClickCallback(e, eventData) {
var element = eventData.element;
var data;
@ -392,26 +389,24 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
return false;
}
}
}
}
cornerstoneTools.nonTarget = cornerstoneTools.mouseButtonTool({
addNewMeasurement: addNewMeasurement,
createNewMeasurement: createNewMeasurement,
onImageRendered: onImageRendered,
pointNearTool: pointNearTool,
toolType: toolType,
cornerstoneTools.nonTarget = cornerstoneTools.mouseButtonTool({
addNewMeasurement,
createNewMeasurement,
onImageRendered,
pointNearTool,
toolType,
mouseDoubleClickCallback: doubleClickCallback
});
});
cornerstoneTools.nonTarget.setConfiguration(configuration);
cornerstoneTools.nonTarget.setConfiguration(configuration);
cornerstoneTools.nonTargetTouch = cornerstoneTools.touchTool({
cornerstoneTools.nonTargetTouch = cornerstoneTools.touchTool({
addNewMeasurement: addNewMeasurementTouch,
createNewMeasurement: createNewMeasurement,
onImageRendered: onImageRendered,
pointNearTool: pointNearTool,
toolType: toolType
createNewMeasurement,
onImageRendered,
pointNearTool,
toolType
// pressCallback: doubleClickCallback
});
})($, cornerstone, cornerstoneMath, cornerstoneTools);
});

View File

@ -1,48 +1,46 @@
import { Viewerbase } from 'meteor/ohif:viewerbase';
import { cornerstone, cornerstoneMath, cornerstoneTools } from 'meteor/ohif:cornerstone';
(function($, cornerstone, cornerstoneMath, cornerstoneTools) {
'use strict';
var responseByToolType = [{
var responseByToolType = [{
"toolType": "targetCR",
"toolResponse": "CR"
}, {
}, {
"toolType": "targetUN",
"toolResponse": "UN"
}, {
}, {
"toolType": "targetEX",
"toolResponse": "EX"
}];
}];
const toolDefaultStates = Viewerbase.toolManager.getToolDefaultStates();
const textBoxConfig = toolDefaultStates.textBoxConfig;
const toolDefaultStates = Viewerbase.toolManager.getToolDefaultStates();
const textBoxConfig = toolDefaultStates.textBoxConfig;
var configuration = {
getMeasurementLocationCallback: getMeasurementLocationCallback,
changeMeasurementLocationCallback: changeMeasurementLocationCallback,
var configuration = {
getMeasurementLocationCallback,
changeMeasurementLocationCallback,
drawHandles: false,
drawHandlesOnHover: false,
arrowFirst: true,
textBox: textBoxConfig
};
};
// Used to cancel tool placement
var keys = {
// Used to cancel tool placement
var keys = {
ESC: 27
};
};
// Define a callback to get your text annotation
// This could be used, e.g. to open a modal
function getMeasurementLocationCallback(measurementData, eventData, doneCallback) {
// Define a callback to get your text annotation
// This could be used, e.g. to open a modal
function getMeasurementLocationCallback(measurementData, eventData, doneCallback) {
doneCallback(prompt('Enter your lesion location:'));
}
}
function changeMeasurementLocationCallback(measurementData, eventData, doneCallback) {
function changeMeasurementLocationCallback(measurementData, eventData, doneCallback) {
doneCallback(prompt('Change your lesion location:'));
}
}
function createQualitativeTargetTool(toolType) {
function createQualitativeTargetTool(toolType) {
var toolInterface = {
toolType: toolType
};
@ -404,21 +402,19 @@ import { Viewerbase } from 'meteor/ohif:viewerbase';
});
return toolInterface;
}
}
var targetCRInterface = createQualitativeTargetTool('targetCR');
cornerstoneTools.targetCR = targetCRInterface.mouse;
cornerstoneTools.targetCR.setConfiguration(configuration);
cornerstoneTools.targetCRTouch = targetCRInterface.touch;
var targetCRInterface = createQualitativeTargetTool('targetCR');
cornerstoneTools.targetCR = targetCRInterface.mouse;
cornerstoneTools.targetCR.setConfiguration(configuration);
cornerstoneTools.targetCRTouch = targetCRInterface.touch;
var targetUNInterface = createQualitativeTargetTool('targetUN');
cornerstoneTools.targetUN = targetUNInterface.mouse;
cornerstoneTools.targetUN.setConfiguration(configuration);
cornerstoneTools.targetUNTouch = targetUNInterface.touch;
var targetUNInterface = createQualitativeTargetTool('targetUN');
cornerstoneTools.targetUN = targetUNInterface.mouse;
cornerstoneTools.targetUN.setConfiguration(configuration);
cornerstoneTools.targetUNTouch = targetUNInterface.touch;
var targetEXInterface = createQualitativeTargetTool('targetEX');
cornerstoneTools.targetEX = targetEXInterface.mouse;
cornerstoneTools.targetEX.setConfiguration(configuration);
cornerstoneTools.targetEXTouch = targetEXInterface.touch;
})($, cornerstone, cornerstoneMath, cornerstoneTools);
var targetEXInterface = createQualitativeTargetTool('targetEX');
cornerstoneTools.targetEX = targetEXInterface.mouse;
cornerstoneTools.targetEX.setConfiguration(configuration);
cornerstoneTools.targetEXTouch = targetEXInterface.touch;

View File

@ -7,7 +7,6 @@ Meteor.startup(function() {
OHIF.studylist.callbacks.middleClickOnStudy = dblClickOnStudy;
OHIF.studylist.timepointApi = new OHIF.measurements.TimepointApi();
OHIF.studylist.timepointApi.retrieveTimepoints({});
});
/**

View File

@ -13,8 +13,13 @@ const Timepoints = new Mongo.Collection('timepoints');
Timepoints._debugName = 'Timepoints';
Timepoints.find().observe({
remove() {
console.warn('REMOVED');
added(document) {
console.warn('TIMEPOINT ADDED')
console.warn(document);
},
remove(docId) {
console.warn('TIMEPOINT REMOVED');
console.warn(docId);
}
});

View File

@ -1,7 +1,8 @@
import { OHIF } from 'meteor/ohif:core';
import { loglevel } from 'meteor/practicalmeteor:loglevel';
import loglevel from 'loglevel';
const defaultLevel = Meteor.isProduction ? 'error' : 'trace';
const defaultLevel = Meteor.isProduction ? 'ERROR' : 'TRACE';
// Create package logger using loglevel
OHIF.log = loglevel.createLogger('', defaultLevel);
OHIF.log = loglevel.getLogger('OHIF');
OHIF.log.setLevel(defaultLevel);

View File

@ -4,15 +4,16 @@ Package.describe({
version: '0.0.1'
});
Npm.depends({
loglevel: '1.4.1'
});
Package.onUse(function(api) {
api.versionsFrom('1.4');
api.use('ecmascript');
api.use('standard-app-packages');
// Control over logging
api.use('practicalmeteor:loglevel');
// Our custom packages
api.use('ohif:core');

View File

@ -5,7 +5,7 @@ import { OHIF } from 'meteor/ohif:core';
import { schema as TimepointSchema } from 'meteor/ohif:measurements/both/schema/timepoints';
let configuration = {};
const configuration = {};
class TimepointApi {
static setConfiguration(config) {
@ -29,19 +29,30 @@ class TimepointApi {
retrieveTimepoints(filter) {
const retrievalFn = configuration.dataExchange.retrieve;
if (!_.isFunction(retrievalFn)) {
OHIF.log.error('Timepoint retrieval function has not been configured.')
return;
}
return new Promise((resolve, reject) => {
retrievalFn(filter).then(timepointData => {
OHIF.log.info('Timepoint data retrieval');
OHIF.log.info(timepointData);
_.each(timepointData, timepoint => {
delete timepoint._id;
this.timepoints.insert(timepoint);
const query = {
timepointId: timepoint.timepointId
};
this.timepoints.update(query, {
$set: timepoint
}, {
upsert: true
});
});
resolve();
}).catch(reason => {
OHIF.log.error(`Timepoint retrieval function failed: ${reason}`);
});
});
}

View File

@ -65,6 +65,7 @@ $bodyCellHeight = 30px
&.timepointOptions
label
font-weight: 200
cursor: pointer
input
margin: 0 3px

View File

@ -27,7 +27,7 @@ Template.caseProgress.onCreated(() => {
promise.then(successHandler).catch(errorHandler);
OHIF.ui.showDialog('dialogLoading', {
promise,
text: 'Saving measurements data'
text: 'Saving measurement data'
});
return promise;

View File

@ -107,6 +107,7 @@ class MeasurementHandlers {
Collection._c2._simpleSchema.clean(measurement);
// Insert the new measurement into the collection
console.log(measurement);
Collection.update(measurementId, {
$set: measurement
});

View File

@ -1,6 +1,6 @@
Npm.depends({
ajv: '4.10.4',
jspdf: '1.3.2'
jspdf: '1.3.3'
});
Package.describe({

View File

@ -138,8 +138,8 @@ function search() {
patientId: getFilter($('input#patientId').val()),
accessionNumber: getFilter($('input#accessionNumber').val()),
studyDescription: getFilter($('input#studyDescription').val()),
studyDateFrom: studyDateFrom,
studyDateTo: studyDateTo,
studyDateFrom,
studyDateTo,
modalitiesInStudy: $('input#modality').val() ? $('input#modality').val() : ''
};
@ -161,6 +161,7 @@ function search() {
Session.set('showLoadingText', false);
if (!studies) {
OHIF.log.warn('No studies found');
return;
}

View File

@ -1,6 +1,6 @@
import { Template } from 'meteor/templating';
import { Blaze } from 'meteor/blaze';
import * as Hammer from 'hammerjs';
import Hammer from 'hammerjs';
import { OHIF } from 'meteor/ohif:core';
// Clear all selected studies

View File

@ -33,6 +33,17 @@ OHIF.studylist.retrieveStudyMetadata = studyInstanceUid => {
Meteor.call('GetStudyMetadata', studyInstanceUid, function(error, study) {
console.timeEnd('retrieveStudyMetadata');
if (error) {
OHIF.log.error(error);
reject(error);
return;
}
if (!study) {
reject(`GetStudyMetadata: No study data returned from server: ${studyInstanceUid}`);
return;
}
if (window.HipaaLogger && Meteor.user && Meteor.user()) {
window.HipaaLogger.logEvent({
eventType: 'viewed',
@ -45,16 +56,6 @@ OHIF.studylist.retrieveStudyMetadata = studyInstanceUid => {
});
}
if (error) {
OHIF.log.warn(error);
reject(error);
return;
}
if (!study) {
throw new Meteor.Error('GetStudyMetadata', 'No study data returned from server');
}
// Once the data was retrieved, the series are sorted by series and instance number
OHIF.viewerbase.sortStudy(study);

View File

@ -5,7 +5,7 @@ Package.describe({
});
Npm.depends({
hammerjs: '2.0.6'
hammerjs: '2.0.8'
});
Package.onUse(function(api) {

View File

@ -0,0 +1,5 @@
<template name="errorText">
<div class="errorTextDiv">
Error: {{ error }}
</div>
</template>

View File

@ -0,0 +1,4 @@
.errorTextDiv
font-weight: 300
padding: 30px
text-align: center

View File

@ -35,6 +35,7 @@ Template.imageThumbnail.onRendered(() => {
const element = $element.get(0);
instance.refreshImage = () => {
console.log('imageThumbnail refreshImage');
if (!element) {
return;
}
@ -84,16 +85,14 @@ Template.imageThumbnail.onRendered(() => {
});
Template.imageThumbnail.onDestroyed(() => {
console.log('imagethumbnail onDestroyed');
const instance = Template.instance();
// Declare DOM and jQuery objects
const $parent = instance.$('.imageThumbnail');
const $element = $parent.find('.imageThumbnailCanvas');
const element = $element.get(0);
if (element) {
cornerstone.disable(element);
}
});
Template.imageThumbnail.helpers({

View File

@ -26,8 +26,8 @@ function createAndAddStack(stackMap, study, displaySet) {
const metaData = {
instance: image, // in this context, instance will be the data of the InstanceMetadata object...
series: displaySet, // TODO: Check this
study: study,
numImages: numImages,
study,
numImages,
imageIndex: imageIndex + 1
};
@ -40,8 +40,7 @@ function createAndAddStack(stackMap, study, displaySet) {
imageIds.push(imageId);
metadataProvider.addMetadata(imageId, metaData);
}
}
else {
} else {
imageId = getImageId(image);
imageIds.push(imageId);
metadataProvider.addMetadata(imageId, metaData);
@ -50,7 +49,7 @@ function createAndAddStack(stackMap, study, displaySet) {
const stack = {
displaySetInstanceUid: displaySet.displaySetInstanceUid,
imageIds: imageIds,
imageIds,
frameRate: displaySet.frameRate,
isClip: displaySet.isClip
};
@ -61,7 +60,7 @@ function createAndAddStack(stackMap, study, displaySet) {
}
configuration = {
createAndAddStack: createAndAddStack
createAndAddStack
};
/**

View File

@ -7,7 +7,6 @@ import { getInstanceClassDefaultViewport } from '../instanceClassSpecificViewpor
export class ResizeViewportManager {
constructor() {
this._resizeHandler = null;
OHIF.log.info('ResizeViewportManager');
}
// Reposition Study Series Quick Switch based whether side bars are opened or not

View File

@ -118,12 +118,12 @@ class DICOMFileLoadingListener extends BaseLoadingListener {
this.stopListening();
$(cornerstone).on(imageLoadProgressEventName, imageLoadProgressEventHandle);
$(cornerstone.events).on(imageLoadProgressEventName, imageLoadProgressEventHandle);
}
stopListening() {
const imageLoadProgressEventName = this._getImageLoadProgressEventName();
$(cornerstone).off(imageLoadProgressEventName);
$(cornerstone.events).off(imageLoadProgressEventName);
}
_imageLoadProgressEventHandle(e, eventData) {
@ -241,16 +241,16 @@ class StackLoadingListener extends BaseLoadingListener {
this.stopListening();
$(cornerstone).on(imageLoadedEventName, imageLoadedEventHandle);
$(cornerstone).on(imageCachePromiseRemovedEventName, imageCachePromiseRemovedEventHandle);
$(cornerstone.events).on(imageLoadedEventName, imageLoadedEventHandle);
$(cornerstone.events).on(imageCachePromiseRemovedEventName, imageCachePromiseRemovedEventHandle);
}
stopListening() {
const imageLoadedEventName = this._getImageLoadedEventName();
const imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();
$(cornerstone).off(imageLoadedEventName);
$(cornerstone).off(imageCachePromiseRemovedEventName);
$(cornerstone.events).off(imageLoadedEventName);
$(cornerstone.events).off(imageCachePromiseRemovedEventName);
}
_updateFrameStatus(imageId, loaded) {

View File

@ -13,12 +13,12 @@ export class StudyPrefetcher {
this.prefetchDisplaySetsTimeout = 300;
this.lastActiveViewportElement = null;
$(cornerstone).on('CornerstoneImageCacheFull.StudyPrefetcher', _.bind(this.cacheFullHandler, this));
$(cornerstone.events).on('CornerstoneImageCacheFull.StudyPrefetcher', _.bind(this.cacheFullHandler, this));
}
destroy() {
this.stopPrefetching();
$(cornerstone).off('CornerstoneImageCacheFull.StudyPrefetcher');
$(cornerstone.events).off('CornerstoneImageCacheFull.StudyPrefetcher');
}
static getInstance() {
@ -162,7 +162,7 @@ export class StudyPrefetcher {
getStudy(image) {
const studyMetadata = cornerstoneTools.metaData.get('study', image.imageId);
return _.find(this.studies, study => study.studyInstanceUid === studyMetadata.studyInstanceUid);
return OHIF.viewer.Studies.find(study => study.studyInstanceUid === studyMetadata.studyInstanceUid);
}
getSeries(study, image) {
@ -191,6 +191,10 @@ export class StudyPrefetcher {
}
const study = this.getStudy(image);
if (!study.seriesList || !study.seriesList.length) {
console.error(study);
}
const series = this.getSeries(study, image);
const instance = this.getInstance(series, image);
const displaySets = study.displaySets;

View File

@ -22,5 +22,12 @@ export const renderViewer = (context, params, layoutTemplate='app') => {
studies
}
});
}).catch(error => {
context.render(layoutTemplate, {
data: {
template: 'errorText',
error
}
});
});
};

View File

@ -235,8 +235,8 @@ export const toolManager = {
// Whenever the CornerstoneImageLoadProgress is fired, identify which viewports
// the "in-progress" image is to be displayed in. Then pass the percent complete
// via the Meteor Session to the other templates to be displayed in the relevant viewports.
$(cornerstone).on('CornerstoneImageLoadProgress', (e, eventData) => {
const viewportIndices = this.getKeysByValue(window.ViewportLoading, eventData.imageId);
$(cornerstone.events).on('CornerstoneImageLoadProgress', (e, eventData) => {
viewportIndices = this.getKeysByValue(window.ViewportLoading, eventData.imageId);
viewportIndices.forEach(viewportIndex => {
Session.set('CornerstoneLoadProgress' + viewportIndex, eventData.percentComplete);
});

View File

@ -95,6 +95,8 @@ Package.onUse(function(api) {
api.addFiles('client/components/basic/layout/layout.styl', 'client');
api.addFiles('client/components/basic/loadingText/loadingText.html', 'client');
api.addFiles('client/components/basic/loadingText/loadingText.styl', 'client');
api.addFiles('client/components/basic/errorText/errorText.html', 'client');
api.addFiles('client/components/basic/errorText/errorText.styl', 'client');
api.addFiles('client/components/basic/removableBackdrop/removableBackdrop.html', 'client');
api.addFiles('client/components/basic/removableBackdrop/removableBackdrop.styl', 'client');

View File

@ -90,8 +90,6 @@ ohif:viewerbase@0.0.1
ohif:wadoproxy@0.0.1
ordered-dict@1.0.9
peppelg:bootstrap-3-modal@1.0.4
practicalmeteor:chai@2.1.0_1
practicalmeteor:loglevel@1.2.0_2
promise@0.8.8
raix:eventemitter@0.1.3
random@1.0.10

View File

@ -1,96 +1,207 @@
/*! cornerstoneWebImageLoader - v0.6.0 - 2016-02-09 | (c) 2015 Chris Hafey | https://github.com/chafey/cornerstoneWebImageLoader */
cornerstoneWebImageLoader = {};
//
// This is a cornerstone image loader for web images such as PNG and JPEG
//
/*! cornerstone-web-image-loader - 0.8.1 - 2017-06-08 | (c) 2016 Chris Hafey | https://github.com/chafey/cornerstoneWebImageLoader */
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("cornerstone-core"));
else if(typeof define === 'function' && define.amd)
define("cornerstoneWebImageLoader", ["cornerstone-core"], factory);
else if(typeof exports === 'object')
exports["cornerstoneWebImageLoader"] = factory(require("cornerstone-core"));
else
root["cornerstoneWebImageLoader"] = factory(root["cornerstone"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 4);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
(function ($, cornerstone, cornerstoneWebImageLoader) {
module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
"use strict";
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
var canvas = document.createElement('canvas');
var lastImageIdDrawn = "";
"use strict";
var options = {
// callback allowing customization of the xhr (e.g. adding custom auth headers, cors, etc)
beforeSend : function(xhr) {}
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (arrayBuffer) {
var deferred = $.Deferred();
var image = new Image();
var arrayBufferView = new Uint8Array(arrayBuffer);
var blob = new Blob([arrayBufferView]);
var urlCreator = window.URL || window.webkitURL;
var imageUrl = urlCreator.createObjectURL(blob);
image.src = imageUrl;
image.onload = function () {
deferred.resolve(image);
urlCreator.revokeObjectURL(imageUrl);
};
image.onerror = function (err) {
urlCreator.revokeObjectURL(imageUrl);
deferred.reject(err);
};
function createImageObject(image, imageId)
{
return deferred.promise();
};
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (image, imageId) {
// extract the attributes we need
var rows = image.naturalHeight;
var columns = image.naturalWidth;
function getPixelData()
{
function getPixelData() {
var imageData = getImageData();
var imageDataData = imageData.data;
var numPixels = image.naturalHeight * image.naturalWidth;
var storedPixelData = new Uint8Array(numPixels * 4);
var imageDataIndex = 0;
var storedPixelDataIndex = 0;
for(var i=0; i < numPixels; i++) {
for (var i = 0; i < numPixels; i++) {
storedPixelData[storedPixelDataIndex++] = imageDataData[imageDataIndex++];
storedPixelData[storedPixelDataIndex++] = imageDataData[imageDataIndex++];
storedPixelData[storedPixelDataIndex++] = imageDataData[imageDataIndex++];
storedPixelData[storedPixelDataIndex++] = 255; // alpha
imageDataIndex++;
}
return storedPixelData;
}
function getImageData()
{
var context;
if(lastImageIdDrawn !== imageId) {
function getImageData() {
var context = void 0;
if (lastImageIdDrawn === imageId) {
context = canvas.getContext('2d');
} else {
canvas.height = image.naturalHeight;
canvas.width = image.naturalWidth;
context = canvas.getContext('2d');
context.drawImage(image, 0, 0);
lastImageIdDrawn = imageId;
}
else {
context = canvas.getContext('2d');
}
return context.getImageData(0, 0, image.naturalWidth, image.naturalHeight);
}
function getCanvas()
{
if(lastImageIdDrawn === imageId) {
function getCanvas() {
if (lastImageIdDrawn === imageId) {
return canvas;
}
canvas.height = image.naturalHeight;
canvas.width = image.naturalWidth;
var context = canvas.getContext('2d');
context.drawImage(image, 0, 0);
lastImageIdDrawn = imageId;
return canvas;
}
function getImage()
{
function getImage() {
return image;
}
// Extract the various attributes we need
return {
imageId : imageId,
minPixelValue : 0, // calculated below
maxPixelValue : 255, // calculated below
imageId: imageId,
minPixelValue: 0, // calculated below
maxPixelValue: 255, // calculated below
slope: 1.0,
intercept: 0,
windowCenter : 128,
windowWidth : 255,
render: cornerstone.renderColorImage,
windowCenter: 128,
windowWidth: 255,
render: cornerstone.renderWebImage,
getPixelData: getPixelData,
getImageData: getImageData,
getCanvas: getCanvas,
getImage: getImage,
//storedPixelData: extractStoredPixels(image),
// storedPixelData: extractStoredPixels(image),
rows: rows,
columns: columns,
height: rows,
@ -99,48 +210,96 @@ cornerstoneWebImageLoader = {};
columnPixelSpacing: undefined,
rowPixelSpacing: undefined,
invert: false,
sizeInBytes : rows * columns * 4 // we don't know for sure so we over estimate to be safe
sizeInBytes: rows * columns * 4 // we don't know for sure so we over estimate to be safe
};
}
};
// Loads an image given a url to an image
function loadImage(imageId) {
var _cornerstoneCore = __webpack_require__(0);
// create a deferred object
var cornerstone = _interopRequireWildcard(_cornerstoneCore);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var canvas = document.createElement('canvas');
var lastImageIdDrawn = '';
/**
* creates a cornerstone Image object for the specified Image and imageId
*
* @param image - An Image
* @param imageId - the imageId for this image
* @returns Cornerstone Image Object
*/
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.loadImage = loadImage;
exports.configure = configure;
var _cornerstoneCore = __webpack_require__(0);
var cornerstone = _interopRequireWildcard(_cornerstoneCore);
var _arrayBufferToImage = __webpack_require__(1);
var _arrayBufferToImage2 = _interopRequireDefault(_arrayBufferToImage);
var _createImage = __webpack_require__(2);
var _createImage2 = _interopRequireDefault(_createImage);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
//
// This is a cornerstone image loader for web images such as PNG and JPEG
//
var options = {
// callback allowing customization of the xhr (e.g. adding custom auth headers, cors, etc)
beforeSend: function beforeSend() /* xhr */{}
};
// Loads an image given a url to an image
function loadImage(imageId) {
var deferred = $.Deferred();
var image = new Image();
var xhr = new XMLHttpRequest();
xhr.open("GET", imageId, true);
xhr.responseType = "arraybuffer";
options.beforeSend(xhr);
xhr.onload = function() {
var arrayBufferView = new Uint8Array(this.response);
var blob = new Blob([arrayBufferView], {type: "image/jpeg"});
var urlCreator = window.URL || window.webkitURL;
var imageUrl = urlCreator.createObjectURL(blob);
image.src = imageUrl;
image.onload = function() {
var imageObject = createImageObject(image, imageId);
deferred.resolve(imageObject);
urlCreator.revokeObjectURL(imageUrl);
};
image.onerror = function() {
urlCreator.revokeObjectURL(imageUrl);
deferred.reject();
};
};
xhr.onprogress = function(oProgress) {
if (oProgress.lengthComputable) { //evt.loaded the bytes browser receive
//evt.total the total bytes seted by the header
xhr.open('GET', imageId, true);
xhr.responseType = 'arraybuffer';
options.beforeSend(xhr);
xhr.onload = function () {
var imagePromise = (0, _arrayBufferToImage2.default)(this.response);
imagePromise.then(function (image) {
var imageObject = (0, _createImage2.default)(image, imageId);
deferred.resolve(imageObject);
}, function (error) {
deferred.reject(error);
});
};
xhr.onprogress = function (oProgress) {
if (oProgress.lengthComputable) {
// evt.loaded the bytes browser receive
// evt.total the total bytes seted by the header
//
var loaded = oProgress.loaded;
var total = oProgress.total;
var percentComplete = Math.round((loaded / total)*100);
var percentComplete = Math.round(loaded / total * 100);
$(cornerstone).trigger('CornerstoneImageLoadProgress', {
$(cornerstone.events).trigger('CornerstoneImageLoadProgress', {
imageId: imageId,
loaded: loaded,
total: total,
@ -149,16 +308,55 @@ cornerstoneWebImageLoader = {};
}
};
xhr.send();
return deferred.promise();
}
}
function configure(opts) {
function configure(opts) {
options = opts;
}
}
// steam the http and https prefixes so we can use standard web urls directly
cornerstone.registerImageLoader('http', loadImage);
cornerstone.registerImageLoader('https', loadImage);
cornerstoneWebImageLoader.configure = configure;
return cornerstone;
}($, cornerstone, cornerstoneWebImageLoader));
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.configure = exports.loadImage = exports.createImage = exports.arrayBufferToImage = undefined;
var _arrayBufferToImage = __webpack_require__(1);
var _arrayBufferToImage2 = _interopRequireDefault(_arrayBufferToImage);
var _createImage = __webpack_require__(2);
var _createImage2 = _interopRequireDefault(_createImage);
var _loadImage = __webpack_require__(3);
var _cornerstoneCore = __webpack_require__(0);
var cornerstone = _interopRequireWildcard(_cornerstoneCore);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.arrayBufferToImage = _arrayBufferToImage2.default;
exports.createImage = _createImage2.default;
exports.loadImage = _loadImage.loadImage;
exports.configure = _loadImage.configure;
// Register the http and https prefixes so we can use standard web urls directly
cornerstone.registerImageLoader('http', _loadImage.loadImage);
cornerstone.registerImageLoader('https', _loadImage.loadImage);
/***/ })
/******/ ]);
});
//# sourceMappingURL=cornerstoneWebImageLoader.js.map