Compare commits

...
Author SHA1 Message Date
ohif-bot e9f8941abd chore(release): publish [skip ci]
- @ohif/extension-cornerstone@0.50.3
 - @ohif/extension-dicom-html@0.50.3
 - @ohif/extension-dicom-microscopy@0.50.4
 - @ohif/extension-dicom-pdf@0.50.3
 - @ohif/extension-vtk@0.50.6
 - @ohif/core@0.50.5
 - @ohif/i18n@0.50.3
 - @ohif/ui@0.50.3
 - @ohif/viewer@0.50.16
2019-09-04 19:15:38 +00:00
Danny Brown 8e96d66859 ci: timeout and publish issues (#861)
* ci: test docs-publish

* Specify to use prod

* Babel should transpile with env set by webpack

* in-progress

* in-progress

* Polyfill for ie11 and edge features

* Ditch polyfills w/ babel - we'll use a service for now

* Bump tools version; shift vtk.js up a layer

* Specify we shouldn't target older than IE 11

* ditch babel plugins that should be covered by preset-env

* Add a top level build demo command

* Let our babel config determine settings

* Same babel fixes as PWA

* Rebuild deps that don't satisfy our target

* Mini helper script for excluding all node_modules, except...

* Shift vtk.js dep up a layer

* Kill core-js

* Export in a node happy way

* Updated yarn lock

* Set NODE_ENV when launching anything w/ WebPack

* docs: updated FAQ

* docs: on browser support

* Add support for redux browser extension

* misc. small clean-up

* docs: Remove roadmap page; add browser-support to sidebar

* Formatting

* Remove roadmap links

* Formatting

* ci: Remove config syntax error

* Simplified bug report template

* update community request template

* Update question's template

* simplify build scripts

* specify new script names

* fix: for measurement api being pruned by minimizer in prod builds

* Use named exports

* Simplify config

* Let's not do so much heavy lifting for a dev-server build

* fix dev build

* Add hotkeys to demo

* fix: jest babel config and env specific configs

* Remove call to non-existant command

* Shift experimental proposal plugin up a layer

* Use `https`

* Try with reduced number of package exceptions

* Try to resolve cypress issue

* Try to fix cypress issue in CI

* Skip https

* Set node_env before building with WebPack

* Watch command output

* ci: no output timeout increase
2019-09-04 15:00:45 -04:00
ohif-bot 3691297054 chore(release): publish [skip ci]
- @ohif/extension-cornerstone@0.50.2
 - @ohif/extension-dicom-html@0.50.2
 - @ohif/extension-dicom-microscopy@0.50.3
 - @ohif/extension-dicom-pdf@0.50.2
 - @ohif/extension-vtk@0.50.5
 - @ohif/core@0.50.4
 - @ohif/i18n@0.50.2
 - @ohif/ui@0.50.2
 - @ohif/viewer@0.50.15
2019-09-04 18:07:38 +00:00
Danny Brown 49d343941e fix: measurementsAPI issue caused by production build (#842)
* ci: test docs-publish

* Specify to use prod

* Babel should transpile with env set by webpack

* in-progress

* in-progress

* Polyfill for ie11 and edge features

* Ditch polyfills w/ babel - we'll use a service for now

* Bump tools version; shift vtk.js up a layer

* Specify we shouldn't target older than IE 11

* ditch babel plugins that should be covered by preset-env

* Add a top level build demo command

* Let our babel config determine settings

* Same babel fixes as PWA

* Rebuild deps that don't satisfy our target

* Mini helper script for excluding all node_modules, except...

* Shift vtk.js dep up a layer

* Kill core-js

* Export in a node happy way

* Updated yarn lock

* Set NODE_ENV when launching anything w/ WebPack

* docs: updated FAQ

* docs: on browser support

* Add support for redux browser extension

* misc. small clean-up

* docs: Remove roadmap page; add browser-support to sidebar

* Formatting

* Remove roadmap links

* Formatting

* ci: Remove config syntax error

* Simplified bug report template

* update community request template

* Update question's template

* simplify build scripts

* specify new script names

* fix: for measurement api being pruned by minimizer in prod builds

* Use named exports

* Simplify config

* Let's not do so much heavy lifting for a dev-server build

* fix dev build

* Add hotkeys to demo

* fix: jest babel config and env specific configs

* Remove call to non-existant command

* Shift experimental proposal plugin up a layer

* Use `https`

* Try with reduced number of package exceptions

* Try to resolve cypress issue

* Try to fix cypress issue in CI

* Skip https
2019-09-04 13:53:13 -04:00
Danny Brown 25e7232660 docs: Update ohif-viewer package links 2019-09-04 10:55:54 -04:00
ohif-bot 8c3b7c8573 chore(release): publish [skip ci]
- @ohif/extension-dicom-microscopy@0.50.2
 - @ohif/viewer@0.50.14
2019-09-03 12:18:48 +00:00
Erik Ziegler dbaf5c5611 fix(dicom-microscopy): Update dicom-microscopy-viewer to 0.6.1 to fix Google Cloud usage with WSI images (#843) 2019-09-03 14:07:46 +02:00
ohif-bot 1b68c307fc chore(release): publish [skip ci]
- @ohif/viewer@0.50.13
2019-09-03 00:49:13 +00:00
Gustavo André Lelis 7a9b477609 fix: 🐛 Activating Pan and Zoom on right and middle click by def (#841) 2019-09-02 20:38:48 -04:00
ohif-bot 8f758186c1 chore(release): publish [skip ci]
- @ohif/viewer@0.50.12
2019-08-29 14:38:57 +00:00
Danny Brown d48b617e1c fix: asset resolution when at non-root route (#828)
* ci: test docs-publish

* Specify to use prod

* Babel should transpile with env set by webpack

* chore: production defaults to true; set in --env.production by cli

* Remove lingering merge issue

* Add minimification plugins

* Need relative URLs to find root assets

* Default public url to forward slash in define plugin

* Don't wrap w/ react-hot-loader if we're building for production

* No need to log extensions

* Minimize using terser; and minimize css

* Import redux from es; this bypasses commonjs as import and fixes our "production build" warning

* Split commone webpack build for now to test hotfix

* postfix slash

* undefined safe env access

* Try to fix node_env prod issue w/ redux

* Set NODE_ENV production for all prod builds

* Syntax error

* nix tests

* Increase max amount of available memory

* Don't run bundle analyzer by default

* fix: asset resolution when at non-root route
2019-08-29 10:29:38 -04:00
ohif-bot 7c2b444cf9 chore(release): publish [skip ci]
- @ohif/viewer@0.50.11
2019-08-29 13:03:45 +00:00
Danny Brown d86f758125 ci: set NODE_ENV, fix out of memory issue, fix hot reload bundling
* ci: test docs-publish

* Specify to use prod

* Babel should transpile with env set by webpack

* chore: production defaults to true; set in --env.production by cli

* Remove lingering merge issue

* Add minimification plugins

* Need relative URLs to find root assets

* Default public url to forward slash in define plugin

* Don't wrap w/ react-hot-loader if we're building for production

* No need to log extensions

* Minimize using terser; and minimize css

* Import redux from es; this bypasses commonjs as import and fixes our "production build" warning

* Split commone webpack build for now to test hotfix

* postfix slash

* undefined safe env access

* Try to fix node_env prod issue w/ redux

* Set NODE_ENV production for all prod builds

* Syntax error

* nix tests

* Increase max amount of available memory

* Don't run bundle analyzer by default
2019-08-29 08:53:33 -04:00
ohif-bot d26035fa55 chore(release): publish [skip ci]
- @ohif/viewer@0.50.10
2019-08-27 19:28:23 +00:00
Danny Brown ec4e2ef1a6 ci: fix dev-server script (#811)
* ci: test docs-publish

* Require unit tests for dry run

* ci: Make sure our docs publish is executable

* Try to correct path issue

* Try repo prefix

* Try as yarn command

* Need a workspace to attach to from previous step

* Add before we call our bash script

* See if we can enforce commands being available -- or just install locally?

* Try again

* Try SSH

* Include username in gh https url

* Note regarding failure on PR branches

* Remove docs publish from PR workflow

* chore: ability to specify an alternative html-template at build time

* chore: add command to build demo PWA website output

* chore: remove unused CI code

* Testing GCP capabilities

* syntax

* Naming

* naming

* chore: WebPack output progress that we care about

* chore: Only publish the app config we care about

* PWA should publish source map

* Unused index.html file

* chore: Remove unused copy-webpack-plugin ignore

* Don't generate source map until we resolve memory issue

* ci: attempt to publish with GCP bucket deploy

* Update dev config to use new template loccations and env vars
2019-08-27 15:19:23 -04:00
Danny Brown 619d363243 ci: GCP deploy (#810)
* ci: test docs-publish

* Require unit tests for dry run

* ci: Make sure our docs publish is executable

* Try to correct path issue

* Try repo prefix

* Try as yarn command

* Need a workspace to attach to from previous step

* Add before we call our bash script

* See if we can enforce commands being available -- or just install locally?

* Try again

* Try SSH

* Include username in gh https url

* Note regarding failure on PR branches

* Remove docs publish from PR workflow

* chore: ability to specify an alternative html-template at build time

* chore: add command to build demo PWA website output

* chore: remove unused CI code

* Testing GCP capabilities

* syntax

* Naming

* naming

* chore: WebPack output progress that we care about

* chore: Only publish the app config we care about

* PWA should publish source map

* Unused index.html file

* chore: Remove unused copy-webpack-plugin ignore

* Don't generate source map until we resolve memory issue

* ci: attempt to publish with GCP bucket deploy
2019-08-27 14:43:44 -04:00
Danny Brown 073c0af7f7 GitHub labels appear to prefer short-hand syntax over literal emojis 2019-08-27 12:59:11 -04:00
Danny Brown 4aa49f4e26 Add awaiting review label to stale bot ignore 2019-08-27 10:59:58 -04:00
ohif-bot a6dbe952d8 chore(release): publish [skip ci]
- @ohif/viewer@0.50.9
2019-08-27 03:03:03 +00:00
Danny Brown 196694f5a6 ci: test gcp demo site build (#805)
* ci: test docs-publish

* Require unit tests for dry run

* ci: Make sure our docs publish is executable

* Try to correct path issue

* Try repo prefix

* Try as yarn command

* Need a workspace to attach to from previous step

* Add before we call our bash script

* See if we can enforce commands being available -- or just install locally?

* Try again

* Try SSH

* Include username in gh https url

* Note regarding failure on PR branches

* Remove docs publish from PR workflow

* chore: ability to specify an alternative html-template at build time

* chore: add command to build demo PWA website output

* chore: remove unused CI code

* Testing GCP capabilities

* syntax

* Naming

* naming
2019-08-26 22:54:18 -04:00
Danny Brown 552df4c9a8 ci: test docs-publish (#803)
* ci: test docs-publish

* Require unit tests for dry run

* ci: Make sure our docs publish is executable

* Try to correct path issue

* Try repo prefix

* Try as yarn command

* Need a workspace to attach to from previous step

* Add before we call our bash script

* See if we can enforce commands being available -- or just install locally?

* Try again

* Try SSH

* Include username in gh https url

* Note regarding failure on PR branches

* Remove docs publish from PR workflow
2019-08-26 22:19:05 -04:00
Danny Brown 467712f8cd chore: Add Stale Bot config (#802) 2019-08-26 14:47:18 -04:00
ohif-bot 681c160f08 chore(release): publish [skip ci]
- @ohif/extension-vtk@0.50.4
 - @ohif/core@0.50.3
 - @ohif/viewer@0.50.8
2019-08-26 13:57:47 +00:00
Omar Toutounji a88d865a9b fix(Studies): Qidosupportsincludefield should be true by default (#801)
* fix(Studies): qidoSupportsIncludeField should be true by default
* avoided creating new var
2019-08-26 09:46:25 -04:00
Danny Brown d76fab0bc9 Merge pull request #792 from dannyrb/docs/testing-guidelines
docs: testing
2019-08-22 12:43:46 -04:00
ohif-bot e74f8fb536 chore(release): publish [skip ci]
- @ohif/viewer@0.50.7
2019-08-22 15:28:03 +00:00
Danny Brown ba20093b81 Merge pull request #794 from trustsitka/fix-ExpandableToolMenu-props
fix: 🐛 Update for changes in ExpandableToolMenu props
2019-08-22 11:17:05 -04:00
Danny Brown ee68b7bcd3 Merge branch 'master' into fix-ExpandableToolMenu-props 2019-08-22 10:33:23 -04:00
ohif-bot 9138b554e3 chore(release): publish [skip ci]
- @ohif/extension-vtk@0.50.3
 - @ohif/core@0.50.2
 - @ohif/viewer@0.50.6
2019-08-22 13:56:22 +00:00
Danny Brown 89079e9d37 Merge pull request #770 from OHIF/chore/core-cleanup
chore: Cleanup legacy code in core
2019-08-22 09:46:35 -04:00
David Wire e09670ada2 fix: 🐛 Update for changes in ExpandableToolMenu props
The props for ExpandableToolMenu were changed from expecting `text` to
expecting `label` for the menu's label. These changes make sure we're
providing it that way.
2019-08-22 07:46:16 -06:00
Danny Brown 84cd2237c5 Merge branch 'master' into chore/core-cleanup 2019-08-22 09:32:07 -04:00
Danny Brown 0a2acdf2a0 Merge branch 'master' into docs/testing-guidelines 2019-08-21 23:28:58 -04:00
dannyrb be6e53db0d Shift to bottom 2019-08-21 23:25:31 -04:00
dannyrb aa48749959 Testing dorito 2019-08-21 23:24:03 -04:00
dannyrb df6fbb416d docs: better pre-amble for testing doc 2019-08-21 23:06:30 -04:00
dannyrb 95cff27b95 docs: expanding on testing 2019-08-21 22:54:00 -04:00
dannyrb 4c322067a0 Kent quote 2019-08-21 22:26:02 -04:00
dannyrb 312e5826e6 e2e test guidance 2019-08-21 20:42:41 -04:00
dannyrb 4d219bdaca Small updates 2019-08-21 17:42:33 -04:00
dannyrb f56bed2aa4 docs: in-progress 2019-08-21 16:20:47 -04:00
ohif-bot 496b0a8343 chore(release): publish [skip ci]
- @ohif/viewer@0.50.5
2019-08-21 14:32:47 +00:00
Ramesh R d09fb4e71c fix(StandaloneRouting): Promise rejection - added return (#791) 2019-08-21 16:23:14 +02:00
dannyrb 2cf355856b docs: duplicate PR-784 2019-08-20 16:39:25 -04:00
ohif-bot e7e2dcc4b6 chore(release): publish [skip ci]
- @ohif/viewer@0.50.4
2019-08-20 00:58:09 +00:00
Danny Brown 3f7d29dd76 Merge pull request #787 from omartoutounji/omartoutounji/react-app-config-updates
fix: 🐛 replaced REACT_APP_CONFIG with APP_CONFIG
2019-08-19 20:51:28 -04:00
Omar Toutounji d46cccc652 replaced REACT_APP_CONFIG with APP_CONFIG 2019-08-19 20:30:44 -04:00
Danny Brown d0c0690e0c Merge branch 'master' into chore/core-cleanup 2019-08-16 14:04:12 -04:00
ohif-bot 38ea92d2a3 chore(release): publish [skip ci]
- @ohif/extension-vtk@0.50.2
 - @ohif/viewer@0.50.3
2019-08-15 11:02:24 +00:00
Erik Ziegler 98c40bc607 fix: Update vtk and viewport dependencies 2019-08-15 12:53:50 +02:00
Erik Ziegler 51472b2276 chore: Remove react-scripts from package.json 2019-08-15 12:26:43 +02:00
ohif-bot 63a9b3464d chore(release): publish [skip ci]
- @ohif/viewer@0.50.2
2019-08-15 08:04:33 +00:00
Erik Ziegler 20d8f0f5db chore: Add hot-reloading for the React app 2019-08-15 09:47:49 +02:00
ohif-bot 7982cf4fb4 chore(release): publish [skip ci]
- @ohif/extension-cornerstone@0.50.1
 - @ohif/extension-dicom-html@0.50.1
 - @ohif/extension-dicom-microscopy@0.50.1
 - @ohif/extension-dicom-pdf@0.50.1
 - @ohif/extension-vtk@0.50.1
 - @ohif/core@0.50.1
 - @ohif/i18n@0.50.1
 - @ohif/ui@0.50.1
 - @ohif/viewer@0.50.1
2019-08-14 19:13:44 +00:00
Danny Brown df6410b9d0 Merge pull request #773 from dannyrb/master-fresh
chore: clean up configs
2019-08-14 15:03:41 -04:00
dannyrb a034bdd478 Updage engine config 2019-08-14 14:29:57 -04:00
dannyrb cd4282129b Drop -alpha flags 2019-08-14 14:27:04 -04:00
ohif-bot a54d023c7f chore(release): publish [skip ci]
- @ohif/viewer@0.50.0-alpha.13
2019-08-14 18:00:15 +00:00
Danny Brown 6d035c1679 Merge pull request #771 from OHIF/chore/hot-loading
chore: Add hot loading option to dev server
2019-08-14 13:51:39 -04:00
Erik Ziegler 1ff9beefcc chore: Add hot loading option to dev server 2019-08-14 18:10:01 +02:00
Erik Ziegler be8ab62ab4 refactor: Cleanup legacy code in core 2019-08-14 17:48:29 +02:00
ohif-bot 52dcce875e chore(release): publish [skip ci]
- @ohif/i18n@0.50.0-alpha.11
 - @ohif/viewer@0.50.0-alpha.12
2019-08-14 15:04:19 +00:00
Erik Ziegler da725a8923 fix: Update i18n locales to include Japanese 2019-08-14 16:54:40 +02:00
ohif-bot 4cae576a90 chore(release): publish [skip ci]
- @ohif/extension-cornerstone@0.50.0-alpha.10
 - @ohif/extension-dicom-html@0.50.0-alpha.10
 - @ohif/extension-dicom-microscopy@0.50.0-alpha.10
 - @ohif/extension-dicom-pdf@0.50.0-alpha.10
 - @ohif/extension-vtk@0.50.0-alpha.10
 - @ohif/core@0.50.0-alpha.10
 - @ohif/i18n@0.50.0-alpha.10
 - @ohif/ui@0.50.0-alpha.10
 - @ohif/viewer@0.50.0-alpha.11
2019-08-14 14:20:19 +00:00
Danny Brown b59c8c277a Merge pull request #766 from dannyrb/monorepo
Monorepo
2019-08-14 10:08:58 -04:00
dannyrb 2c5ae43341 Small template changes 2019-08-14 09:40:53 -04:00
dannyrb 3ba0e8f919 Only run merge on master branch 2019-08-14 08:49:46 -04:00
dannyrb 58fa26b5ac Simplify lerna commands in CI 2019-08-14 08:49:19 -04:00
dannyrb dabc948f4c bump versions to same starting point (still pre-v1) 2019-08-14 08:27:23 -04:00
ohif-bot e7ff3a3ac8 chore(release): publish [skip ci]
- @ohif/extension-cornerstone@0.0.39-alpha.9
 - @ohif/extension-dicom-html@0.0.4-alpha.9
 - @ohif/extension-dicom-microscopy@0.0.9-alpha.9
 - @ohif/extension-dicom-pdf@0.0.8-alpha.9
 - @ohif/extension-vtk@0.1.4-alpha.9
 - @ohif/core@0.11.1-alpha.9
 - @ohif/i18n@0.2.3-alpha.9
 - @ohif/ui@0.2.18-alpha.9
 - @ohif/viewer@0.0.22-alpha.10
2019-08-14 01:14:19 +00:00
dannyrb 764b7a1054 Merge branch 'monorepo' of github.com:OHIF/Viewers into monorepo 2019-08-13 21:06:12 -04:00
dannyrb 2f13453bea Manually authenticate with NPM 2019-08-13 21:06:07 -04:00
ohif-bot 26da6b0013 chore(release): publish [skip ci]
- @ohif/extension-cornerstone@0.0.39-alpha.8
 - @ohif/extension-dicom-html@0.0.4-alpha.8
 - @ohif/extension-dicom-microscopy@0.0.9-alpha.8
 - @ohif/extension-dicom-pdf@0.0.8-alpha.8
 - @ohif/extension-vtk@0.1.4-alpha.8
 - @ohif/core@0.11.1-alpha.8
 - @ohif/i18n@0.2.3-alpha.8
 - @ohif/ui@0.2.18-alpha.8
 - @ohif/viewer@0.0.22-alpha.9
2019-08-14 00:55:13 +00:00
Danny Brown 156b093965 Merge pull request #765 from dannyrb/monorepo
Remove unnecessary checkout
2019-08-13 20:34:30 -04:00
dannyrb 54dacbb91b Remove unnecessary checkout 2019-08-13 20:33:31 -04:00
dannyrb 6d18e7f1fe Tell GitHub who we are 2019-08-13 15:53:36 -04:00
Danny Brown 08ff214ea6 Chore/kill yalc with fire (#629)
* init

* more shifting

* Move @babel dependencies up to workspace root

* Begin updating dependent libraries to use sync'd webpack builds w/ watches

* Commit changes before a long weekend

* Split packages into platform and extensions

* Consolidate how/where we specify file/module type entrypoints

* Make it possible to pass in extensions as App props

* Resolve viewer's modules

* Target for UMD bundle

* Add Webpack Stylus loader

* Provide WebPack build options for microscopy, vtk, and ui

* Better entrypoint for extensions

* Push changes up to switch PCs

* Fix ESM symlink build for Viewers

* Shift docs to root

* Specify additional lerna config props

* Begin providing basic readme info

* Rename example extension folder

* Shift links to bottom of doc

* First attempt at a netlify deploy preview

* Attempt to fix deploy preview build

* push workspace enabled to initial command; remove second yarn install; use npx to call gitbook cli commands

* Try to use global gitbook-cli

* Export node_modules path

* More agressive with modifying PATH

* Follow deploy log output advice

* try again to set bin path

* Try swapping bash with a new shell

* Try bash -l instead of exec bash

* Annd let's try again

* and again

* We may have figured it out johnny, boy

* We need to pull cornerstone-wado-image-loader files from hoisted node_modules

* Attempt to fix ticks/escapes

* Change copy syntax; try running tests on viewers from root for circleci

* Lower version to match circleci image

* Try alternative jest-canvas-mock location and version file syntax

* Run version command instead of calling node directly

* Try alternative jest transform

* Set path and enable workspaces

* Add codecov flags

* Use cpx so our copying finishes?

* Get all platform unit tests to run

* Run and report individually and in parallel

* Try once relying on codecov yaml to split w/ flags

* Add projects to split by flags

* Generate separate reports

* Trigger codecov after everything has finished running; these may not support flags

* Use recommended flags from issue comments for codecov

* Fix typo

* Remove clear flag

* Shift back to calling codecov from root

* Generate example for codecov issue

* Try fixing paths

* Simplify

* Try using codecov orb

* Bump circleci version

* Upload core and viewer

* Use full string paths

* Remove individual codecov calls

* Fix dir

* Combine files before upload

* Escape anchors

* tryfix syntax

* Escape string literal

* Combine lines to reduce path

* long paths

* Use home alias

* Fix filename

* Try to see the contents of our cat'd file

* Also upload `core`

* Try running with aliased folder

* Fix path; split PR and Merge unit tests into separate jobs

* Set default threshold

* Fix typo

* Changing to scoped package names

* Adding note

* Catch more updates

* chore(release): publish %s [skip ci]

 - @ohif/extension-cornerstone@0.0.39-alpha.0
 - @ohif/extension-dicom-html@0.0.4-alpha.0
 - @ohif/extension-dicom-microscopy@0.0.9-alpha.0
 - @ohif/extension-dicom-pdf@0.0.8-alpha.0
 - @ohif/extension-vtk@0.1.4-alpha.0
 - @ohif/core@0.11.1-alpha.0
 - @ohif/i18n@0.2.3-alpha.0
 - @ohif/ui@0.2.18-alpha.0
 - @ohif/viewer@0.0.22-alpha.0

* Clean up primary readme

* Support for dev and dev:* commands

* Shift build command; satisfy default PWA build

* Remove old scripts

* Clean up UI to set webpack scripts

* Tidy up project links

* Clean duplicate code in UI project

* Update UI project's docs

* Clean up ui and i18n config

* Reduce duplicate code in `@ohif/core`

* Fix @ohif/ui versions

* bump @ohif/core versions

* Redux testkit dep

* Remove unused/duplicate config files for projects/packages

* ohif-core --> @ohif/core

* Safer publish command

* chore(release): publish %s [skip ci]

 - @ohif/extension-cornerstone@0.0.39-alpha.1
 - @ohif/extension-dicom-html@0.0.4-alpha.1
 - @ohif/extension-dicom-microscopy@0.0.9-alpha.1
 - @ohif/extension-dicom-pdf@0.0.8-alpha.1
 - @ohif/extension-vtk@0.1.4-alpha.1
 - @ohif/core@0.11.1-alpha.1
 - @ohif/i18n@0.2.3-alpha.1
 - @ohif/ui@0.2.18-alpha.1
 - @ohif/viewer@0.0.22-alpha.1

* test version bump

* Add global prettier config

* chore(release): publish %s [skip ci]

 - @ohif/viewer@0.0.22-alpha.2

* test lerna publish

* Update package.jsons

* Fix build scripts

* catch changes

* chore(release): publish %s [skip ci]

 - @ohif/extension-cornerstone@0.0.39-alpha.2
 - @ohif/extension-dicom-html@0.0.4-alpha.2
 - @ohif/extension-dicom-microscopy@0.0.9-alpha.2
 - @ohif/extension-dicom-pdf@0.0.8-alpha.2
 - @ohif/extension-vtk@0.1.4-alpha.2
 - @ohif/core@0.11.1-alpha.2
 - @ohif/i18n@0.2.3-alpha.2
 - @ohif/ui@0.2.18-alpha.2
 - @ohif/viewer@0.0.22-alpha.3

* fix eslint issues caused by eslint 6 and our react-app config

* Publish with canary tag

* chore(release): publish %s [skip ci]

 - @ohif/extension-cornerstone@0.0.39-alpha.3
 - @ohif/extension-dicom-html@0.0.4-alpha.3
 - @ohif/extension-dicom-microscopy@0.0.9-alpha.3
 - @ohif/extension-dicom-pdf@0.0.8-alpha.3
 - @ohif/extension-vtk@0.1.4-alpha.3
 - @ohif/core@0.11.1-alpha.3
 - @ohif/i18n@0.2.3-alpha.3
 - @ohif/ui@0.2.18-alpha.3
 - @ohif/viewer@0.0.22-alpha.4

* chore(release): publish %s [skip ci]

 - @ohif/extension-cornerstone@0.0.39-alpha.4
 - @ohif/extension-dicom-html@0.0.4-alpha.4
 - @ohif/extension-dicom-microscopy@0.0.9-alpha.4
 - @ohif/extension-dicom-pdf@0.0.8-alpha.4
 - @ohif/extension-vtk@0.1.4-alpha.4
 - @ohif/core@0.11.1-alpha.4
 - @ohif/i18n@0.2.3-alpha.4
 - @ohif/ui@0.2.18-alpha.4
 - @ohif/viewer@0.0.22-alpha.5

* Simplify build

* chore(release): publish %s [skip ci]

 - @ohif/extension-cornerstone@0.0.39-alpha.5
 - @ohif/extension-dicom-html@0.0.4-alpha.5
 - @ohif/extension-dicom-microscopy@0.0.9-alpha.5
 - @ohif/extension-dicom-pdf@0.0.8-alpha.5
 - @ohif/extension-vtk@0.1.4-alpha.5
 - @ohif/core@0.11.1-alpha.5
 - @ohif/i18n@0.2.3-alpha.5
 - @ohif/ui@0.2.18-alpha.5
 - @ohif/viewer@0.0.22-alpha.6

* chore(release): publish %s [skip ci]

 - @ohif/extension-cornerstone@0.0.39-alpha.6
 - @ohif/extension-dicom-html@0.0.4-alpha.6
 - @ohif/extension-dicom-microscopy@0.0.9-alpha.6
 - @ohif/extension-dicom-pdf@0.0.8-alpha.6
 - @ohif/extension-vtk@0.1.4-alpha.6
 - @ohif/core@0.11.1-alpha.6
 - @ohif/i18n@0.2.3-alpha.6
 - @ohif/ui@0.2.18-alpha.6
 - @ohif/viewer@0.0.22-alpha.7

* Split version and publish

* chore(release): publish %s [skip ci]

 - @ohif/extension-cornerstone@0.0.39-alpha.7
 - @ohif/extension-dicom-html@0.0.4-alpha.7
 - @ohif/extension-dicom-microscopy@0.0.9-alpha.7
 - @ohif/extension-dicom-pdf@0.0.8-alpha.7
 - @ohif/extension-vtk@0.1.4-alpha.7
 - @ohif/core@0.11.1-alpha.7
 - @ohif/i18n@0.2.3-alpha.7
 - @ohif/ui@0.2.18-alpha.7
 - @ohif/viewer@0.0.22-alpha.8

* Try simplify netlify build

* react-viewerbase --> @ohif/ui

* add test for stylus loader

* Try new way to specify publish path

* Use an output folder that won't be ignored

* Try move command

* fiddle with paths

* Dig for some information

* Make sure we're in root for our commands

* Remove discovery

* Setup script-tag example

* Fix typo

* Move config folder

* Update cornerstone extension to use shared/root webpack configs

* capture changes

* Update extension webpack configs

* Don't check in docz output

* Fix babel runtime resolution issue

* Simplify ui build steps

* Push in progress

* Shift directories

* Get viewer dev path to work

* Fix viewer commonjs build

* Fix build pwa config for viewers

* Make sure our package specific command can be called from root

* Update notes

* Fix imports and misc. merge notes

* Bump wado-image-loader version

* Switch up commands to remove webworkers copy

* Fix CI config

* Fix more broken package references

* Add react-dropzone

* Persist so e2e test can use

* Fix lockfile

* Use cypress orb to simplify CI

* Fix config

* Try again

* Install yarn latest for orb

* Install yarn a different way

* Wait on correct port

* Run tests in viewer project

* Fix cypress config

* Make Cypress happier - use default location

* Simplify e2e testing

* Capture UI changes since fork

* Catch core up

* Grab latest deps after merge

* Fix broken import

* Make sure cornerstone-wado-image-loader resolves to 3+

* Note regarding orbs

* Fix refresh on 404 routes

* Fix odd error for cornerstone-wado-image-loader

* Different target for UMD

* Simplify dev script

* Try to get fancy with netlify output

* Let's do it again

* Try to fix measurementTools issue

* See if we can get our lerna magic to work on merge to monorepo branch
2019-08-13 15:36:46 -04:00
João Felipe de Medeiros Moreira cac911f08e fix(LabellingFlow): Measurement's table "re-label" overflows screen and other issues (#627)
* fix(LabellingFlow): Fixes search items

Includes a function to add the items related to root element

fix #508

* fix(LabellingManager): Fixes z-index problem with header menu

Fixes z-index problem with header menu

fix #508

* fix(LabellingFlow): Includes overlay for select tree when open

fix #508

* fix(LabellingManager): Changes backgroud color to highlight the modal text

fix #508

* fix(LabellingFlow): Adjusts relabel position in the page

fix #508

* fix(LabellingFlow): Fixes select tree position and include calculation to put at the center of mouse

fix #508

* fix(LabellingFlow): Fixes autofocus and refresh page after hitting enter

fix #508
2019-08-06 09:24:40 -04:00
Erik Ziegler 36952c401a fix(package.json) - Bump @ohif/i18n to 0.2.5 to add further Chinese translations 2019-07-31 12:45:02 +02:00
Erik Ziegler b3781ac692 @ohif/i18n - Update Chinese translations (0.2.5) 2019-07-31 12:45:02 +02:00
Erik Ziegler 2174f4f2fd fix(package.json) - Bump @ohif/i18n to 0.2.4 to add Vietnamese and improve Chinese translations 2019-07-31 11:17:10 +02:00
Erik Ziegler d033bd5995 @ohif/i18n - Add Vietnamese translation (Thanks @lam0620!) - Improve Chinese translations (Thanks @MarlonLiu1991!) (0.2.4) 2019-07-31 11:17:10 +02:00
David Wire c455253c0e fix(ConnectedCornerstoneViewport): Fix definition of function map so it happens less frequently (#740)
`onMeasurementsChanged` currently defines a function map every time it is called. This function map includes a throttle on the `modified` function which is not being used because the function is called at most once per time it is instantiated. These changes elevate the map definition to the file level, since what it is defining does not change based on the other executed code.
2019-07-31 09:46:41 +03:00
Erik Ziegler ec1946e379 ci(e2e): Fix cypress test memory issues by splitting build step out (#738) 2019-07-30 14:51:28 +02:00
Erik Ziegler ad325fd83f ci(pull-requests): Run end-to-end tests on PRs 2019-07-30 11:33:21 +02:00
Erik Ziegler a4112c46a5 fix(package.json): Bump WADO Image Loader dependency, remove unnecessary worker and codec paths (#727)
Note: had to disable sourcemaps for commonjs modules. This seems to be the only way to prevent memory issues on CircleCI.
2019-07-30 11:00:08 +02:00
David Wire e73d009c21 fix(package.json): Resolve react/react-dom dependency conflict for embedded users (#734)
* fix(package.json): Resolve react/react-dom dependency conflict for embedded users

Some of the recent changes around the script-tag support for ohif/Viewers included moving react and
react-dom from peerDependencies to dependencies. This caused an error for embedded consumers of the
viewer because there could be multiple versions of react included. The error in the console points
to this link: https://reactjs.org/warnings/invalid-hook-call-warning.html. These changes are
necessary to resolve the issue for embedded users and don't seem to break the standalone version
either.

* fix(script-tag/index.html): Add `react` and `react-dom` as external scripts for cypress tests

The cyrpress tests won't pass unless we add the `react` and `react-dom` dependencies as external
scripts since they're no longer first order depdencies.
2019-07-30 08:30:23 +02:00
Erik Ziegler f826341631 fix(package.json): Bump VTK extension to fix jitter issues in MPR view 2019-07-29 21:20:11 +02:00
Erik Ziegler f8b52d0fee @ohif/extension-vtk: Update VTK to 9.0.1 2019-07-29 21:20:11 +02:00
Erik Ziegler 0e78836d55 fix(StandaloneRouter): Fix broken query string parsing in StandaloneRouter. Pass location object to
fix #731
2019-07-29 17:26:17 +02:00
Egor Lezhnin 40bf1a2efd feat(fuzzyMatching): fuzzymatching for query parameters if server config indicates support 2019-07-29 09:56:07 -04:00
Erik Ziegler 02c732aa15 fix(config): Stop crashes if window.config is not defined when script-tag viewer is loaded 2019-07-29 14:42:21 +02:00
Erik Ziegler c5f532159b ci(cypress): Remove duplicate React versions in end-to-end tests 2019-07-29 10:45:38 +02:00
Erik Ziegler b1df019c49 fix(package.json): Update @ohif/i18n to 0.2.3 2019-07-29 10:03:48 +02:00
Erik Ziegler 54b70e5fa4 @ohif/i18n: Update i18n locales from Locize source of truth (0.2.3) 2019-07-29 10:03:48 +02:00
Erik Ziegler 5802cf18eb fix(script-tag): Include React and ReactDOM as dependencies and add installViewer function to simplify script tag usage. (#721) 2019-07-29 08:20:07 +02:00
Danny Brown 210c2e8d2c fix: clear annotations toolbar button 2019-07-26 16:38:37 -04:00
Erik Ziegler da318c9c8c feat(DicomUploader): Make DICOM Uploader work with all DICOMWeb servers (#717)
* feat(DicomUploader): Make DICOM Uploader work with all DICOMWeb servers

* Bump viewerbase version
2019-07-26 15:04:28 +02:00
João Felipe de Medeiros Moreira 903c41d26f fix(Bootstrap): Remove bootstrap dependency (#708)
fix #636
2019-07-26 13:41:29 +02:00
Danny Brown ba261a0d54 fix: support for next/previous image hotkeys via cornerstone extension update
* Bump @ohif/extenions-cornerstone react-cornerstone-viewport dep and cut release

* fix: bump @ohif/extension-cornerstone version to latest

* Catching the yarn lock changes

* Cut new release for cornerstone extension and update Viewers to use it

* Add new commands to netlify dmeo

* Flip directions for next/previous image
2019-07-23 15:39:56 -04:00
David Wire 3398a894a3 feat(commandsModule): Add previousImage and nextImage actions and commands (#710)
* feat(commandsModule): Add `previousImage` and `nextImage` actions and commands

This change adds the keybindings for previousImage (down) and nextImage (up) to the default
configuration and adds the command and action necessary to support it. This pull request is
dependent upon https://github.com/cornerstonejs/cornerstoneTools/pull/1025 which exports the scroll
utility it uses.

* style(default.js): Switch tabs to spaces

* fix(commandsModule): import `scroll` through cornerstoneTools.import
2019-07-23 14:52:29 -04:00
Danny Brown 5a13194203 fix(react-cornerstone-viewport): Viewport resizes on stack scroll (#709)
* Bump @ohif/extenions-cornerstone react-cornerstone-viewport dep and cut release

* fix: bump @ohif/extension-cornerstone version to latest

* Catching the yarn lock changes
2019-07-23 13:00:02 -04:00
Erik Ziegler a2cc477a1a fix(package.json): Update @ohif/extension-microscopy to 0.0.12 2019-07-22 15:47:45 +02:00
Erik Ziegler 2e7a59f7f8 @ohif/extension-dicom-microscopy: Update dicom-microscopy-viewer dependency to 0.6.1 2019-07-22 15:47:45 +02:00
Erik Ziegler 83d7d59954 fix(package.json): Update ohif-core and dicomweb-client to fix Palette Color BulkData retrieval (#703) 2019-07-22 15:09:55 +02:00
Erik Ziegler 163fee8941 fix(Viewer): Set thumbnail to use altImageText for SEG images (#699) 2019-07-22 13:29:12 +02:00
Erik Ziegler f547fdf832 fix(OpenIDConnect): Stop storing tokens in sessionStorage. Prefix OIDC routes automatically. Add logout button (#698) 2019-07-21 16:43:42 +02:00
Erik Ziegler ac347849d0 fix(config/google.js): Add metadata endpoints and signingKeys to avoid CORS errors on Google's certificate endpoint (#696) 2019-07-21 10:46:11 +02:00
Erik Ziegler 54e0e32e22 fix(package.json): Bump ohif-core, extension-microscopy, and dicomweb-client (#697) 2019-07-21 10:04:07 +02:00
Erik Ziegler 690156d4b6 @ohif/extension-dicom-microscopy: Update dicom-microscopy-viewer dependency (#695) 2019-07-21 09:34:16 +02:00
Erik Ziegler 3b5fdb678a docs(googleCloud): Fix port in docs to correspond to defaults in config (Thanks @Stormert) 2019-07-21 09:13:23 +02:00
Erik Ziegler e7604c4418 fix(Viewer): Switch to middle of stack for image thumbnail 2019-07-20 16:41:27 +02:00
Erik Ziegler 71f11a4856 fix(package.json): Update microscopy, pdf, and html extensions to fix thumbnail labels 2019-07-19 18:24:43 +02:00
Erik Ziegler ae5d0587db @ohif/extension-dicom-pdf: Return modality from sopClassHandler (0.0.8) 2019-07-19 18:24:43 +02:00
Erik Ziegler fbc06329e2 @ohif/extension-dicom-html: Return modality from sopClassHandler (0.0.4) 2019-07-19 18:24:43 +02:00
Erik Ziegler 86732c8186 @ohif/extension-dicom-microscopy: Return modality from sopClassHandler (0.0.10) 2019-07-19 18:24:43 +02:00
Erik Ziegler a34d47c850 fix(package.json): Bump cornerstone-tools to 3.16.0 (#690) 2019-07-19 17:48:29 +02:00
Erik Ziegler f758741950 fix(package.json): Update @ohif/extension-cornerstone to fix loading issue (#689) 2019-07-19 17:07:35 +02:00
Erik Ziegler 29a470103a @ohif/extension-cornerstone: Bump react-cornerstone-viewport dependency (#688) 2019-07-19 16:50:07 +02:00
Erik Ziegler 104343aad5 fix(package.json): Bump @ohif/vtk-extension usage to fix performance issues, add Slab MIP (#686) 2019-07-18 13:52:06 +02:00
Erik Ziegler d8b4a4d4c0 @ohif/extension-vtk: Add basic MIP and Slab Thickness controls. UI to be updated later (#685) 2019-07-18 13:39:00 +02:00
Erik Ziegler 2fd60f3109 docs(google-cloud): Fix OAuth Callback URL (#683) 2019-07-18 11:18:56 +02:00
Erik Ziegler 08ce30e69c @ohif/extension-vtk: Update VTK extension (#679) 2019-07-18 07:54:53 +02:00
allcontributors[bot] 546f6bfe68 docs: add pavertomato as a contributor (#678)
* docs: update README.md

* docs: update .all-contributorsrc
2019-07-17 11:26:24 -04:00
Egor Lezhnin 8e1f15e031 fix(config): Fix hardcoded default Google Cloud OAuth redirect_uri (#585) (#675) 2019-07-17 17:04:15 +02:00
David Wire 0d5d804741 fix(availableTools): Add the Eraser to the available tools (#666)
* add the Eraser to the available tools

* review response - remove unnecessary config from eraser tool

* remove cargo culted mouseButtonMasks
2019-07-17 09:58:33 -04:00
David Wire ca735fa070 fix(availableTools): add ArrowAnnotate as an available tool (#667)
* add ArrowAnnotate as an available tool

* review response - remove the cargo culted mouseButtonMasks
2019-07-17 09:45:29 -04:00
David Wire 3d425f54cc fix(ToolbarRow): Update ToolbarRow so that an activeButton in a submenu is passed in as an activeCom (#668) 2019-07-17 10:13:59 +02:00
Romulo Bordezani 7bc9b45853 feat(svfCursorsSupport): enable CornerstoneTools SVG Icons on OHIF Viewer (#659) (#672)
- Fixes the issue 659.
2019-07-16 22:41:41 -04:00
João Felipe de Medeiros Moreira 5bd3af0cca fix(Viewer): Removes fixed modality and get the one returned from ohif-core (#664)
* fix(Viewer): Removes fixed modality insert and starting using the information returned from ohif-cor

* fix(Viewer): Includes condition when display set does not have modality information to use UN for un
2019-07-15 10:09:58 -04:00
Erik Ziegler d4aee36542 fix(GoogleCloud): Fix Cloud Healthcare file upload buttons (#658)
fix #654
2019-07-11 23:32:49 +02:00
dependabot[bot] 2a281da19f chore(deps): bump lodash.merge in /extensions/ohif-i18n (#647)
Bumps [lodash.merge](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-11 09:54:49 -07:00
dependabot[bot] 4631218dcb chore(deps): bump lodash.merge in /extensions/ohif-vtk-extension (#646)
Bumps [lodash.merge](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-11 09:45:47 -07:00
Erik Ziegler 8b3e5dffb1 fix(filesToStudies): Improve error handling for local file viewing (#652) 2019-07-11 14:34:29 +02:00
Erik Ziegler ef6819cf40 fix(docker-google-cloud): Update docker build process to allow Google Cloud CLIENT_ID to be passed in at runtime, update docs. (#651) 2019-07-11 14:08:00 +02:00
Erik Ziegler 2f104b5e91 feat(ViewerLocalFileData): Add drag/drop to load DICOM files in the Viewer at /local (#644) 2019-07-11 13:49:29 +02:00
Erik Ziegler f256ac5a7d fix(package.json): Fix issues with babel-core causes undefined _objectSpread2 (#650) 2019-07-11 12:59:33 +02:00
Erik Ziegler 3a4ee9e346 fix(DicomUploadService): Remove require usage (#649) 2019-07-11 12:18:25 +02:00
Biharck Araujo 1a9cfea365 fix(ToolbarRow): Add i18n string for Series switcher (#634) 2019-07-11 11:32:09 +02:00
Erik Ziegler 9055f19fb5 ci(Add e2e test for script tag usage to CI): (#648) 2019-07-11 11:06:32 +02:00
Erik Ziegler bcbc5e4bbf fix(yarn.lock): Blow away lockfile because it seems to be broken for some users (#643) 2019-07-11 10:18:21 +02:00
dependabot[bot] 408ba36f4f chore(deps): bump lodash.merge from 4.6.1 to 4.6.2 in /docs/latest (#645)
Bumps [lodash.merge](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-11 09:01:59 +02:00
Erik Ziegler 091cab49e0 refactor(GoogleCloud): Clean up some of the Healthcare API Adapter components (#641) 2019-07-10 14:54:27 +02:00
Egor Lezhnin 4a09f33446 feat(GoogleCloud): Initial commits to include the Healthcare API Adapter (#584)
* This is a React port of https://github.com/quantumsoftgroup/healthcare-api-adapter - It still needs some UI cleanup.
2019-07-10 09:26:19 +02:00
Erik Ziegler 4095629310 fix(package.json): Bump @ohif/extension-cornerstone to 0.0.40 (#638) 2019-07-09 18:38:31 +02:00
Erik Ziegler 91d2d31846 @ohif/extension-cornerstone: Prevent errors when display set is empty object (0.0.40) (#637) 2019-07-09 18:17:13 +02:00
João Felipe de Medeiros Moreira ff2c1cb2f1 test(E2E): End-to-end tests for script tag (#633)
fix #621
2019-07-09 18:08:18 +02:00
Gustavo André Lelis 727c0d8ba6 fix(labelling): Update naming of configuration to props as cornerstoneTools has also changed (#484) 2019-07-08 21:38:03 +02:00
João Felipe de Medeiros Moreira 4b3994e788 feat(StudyList): Disable study list link/route using 'showStudyList' config property (#597)
fix #574
2019-07-08 21:29:59 +02:00
Erik Ziegler 571dd5848f fix(ViewerRouting): Fix routing failures for /study/x/series/y (#617)
re #614
2019-07-08 18:27:08 +02:00
David Wire 2d48d0aa37 feat(StudyList): Add QIDO style query parameters to set initial filters (#543)
This pull request adds the ability to use query parameters to pass filters into the StudyList from
the url. These parameters are of the same form used by the QIDO requests to apply the filters. This
solution seemed to me to be the most obvious way to manage them. There's one open question however,
around what to do with the parameters after the initial load. For now, the URL parameters are
overridden the moment the user tries to add another filter. Depending on review feedback it seems
like it may make more sense for those query parameter filters to be "permanent" and so any further
filtering would augment those parameters rather than replace them.
2019-07-08 18:15:06 +02:00
Erik Ziegler 562d63fa74 fix(package.json): Update @ohif/extension-dicom-microscopy to fix resizing behaviour
fix #550
2019-07-08 14:31:23 +02:00
biharck 1a6246f99b @ohif/extension-dicom-microscopy: Add resize call when the container has resized (0.0.9) 2019-07-08 14:31:23 +02:00
Erik Ziegler ce1a62a961 chore(gitattributes): Fix gitattributes handling of .fig files 2019-07-08 13:49:56 +02:00
Evren Ozkan dd6acb2d03 feat(extension-cornerstone): Add additional tools: Magnify, ROI Window, Probe, Ellipse, Rectangle, Invert, Rotate Right, Flip H, Flip V, Clear 2019-07-08 13:49:56 +02:00
Danny Brown 5ac9048ef0 feat: extension panels
* Snapshot -- Switching branches
* fix classes and hooks for panel componet
* Restore button functionality
* feat: support for expandableToolMenu
* Shift cornerstoneTools config up a layer, and use globalToolSync
* Remaining initCornerstoneTools changes
* Pull in Segmentation Plugin
* Shift MeasurementsPanel to an extension
* Note regarding where data is coming from
* Make sure measurement callback is available
* Bump core version
* Shift MeasurementsTable to a local extensions directory
* Register appCommands as an extension
* Update package dependencies and yarn lock
* Support for panel width
* Ability to pass props to our panel component
* Add a safety check around calling our tacked on method for tool options
* Left sidebar plugins + fix activeIndex prop passed to sidebar.
* fix: viewer height
Now in a shared container w/ top bar, so we need to factor that in when calculating height
* lock file latest
* Update thumbnails if studies has changes
* bump cornerstone version to resolve globalToolSynch history issue
* Default panel to open; studies optional
* Bump minor version for ohif-cornestone-extension
* Simplify button logic
* Accommodate odd roundedButtonGroup value change emit
* Map viewers + selectedViewport instead of pulling off the window
2019-07-04 14:09:13 -04:00
Danny Brown 514609708d chore: set codecov commit status threshold (#623)
* chore: set codecov commit status threshold

* Test new code doesn't fail threshold

* Turn off patch status

* Undo test threshold code
2019-07-02 22:18:50 -04:00
Erik Ziegler c30b88d48a docs(translating.md): Add Locize logo for their open source sponsorship (#612) 2019-07-01 12:10:56 +02:00
João Felipe de Medeiros Moreira 4f1505de3c docs(README) Changes README related to cypress to use the new commands (#610) 2019-07-01 12:01:18 +02:00
Erik Ziegler 57d2ae23ae ci(package.json): Change settings for viewer.ohif.org to use Locize CDN 2019-06-30 23:40:03 +02:00
Erik Ziegler fd6ec04514 feat(package.json): Update i18n approach to optionally use Locize CDN depending on config. Bump @ohif/extension-vtk @ohif/i18n 2019-06-30 23:10:43 +02:00
Erik Ziegler 6a98550c43 @ohif/extension-vtk 0.1.3: Wait for i18n to be initialized before adding resources 2019-06-30 23:10:43 +02:00
Erik Ziegler e2ec11c83e @ohif-i18n 0.2.2: Expose the promise tracking i18next initialization 2019-06-30 23:10:43 +02:00
Erik Ziegler d2c773196f @ohif-i18n 0.2.1: Prevent crashing when window.config is undefined 2019-06-30 15:41:34 +02:00
Erik Ziegler 1b7625affd @ohif/i18n - Setup optional link to Locize translation, and script to pull and store translations 2019-06-30 14:37:07 +02:00
Erik Ziegler 8a4306d1b0 fix(package.json): Bump vtk extension and react-viewerbase 2019-06-29 11:35:20 +02:00
Erik Ziegler 3cb8f804ad @ohif/extension-vtk: Update to 0.1.2 after bumping react-viewerbase version 2019-06-29 11:35:20 +02:00
Rodrigo Antinarelli 16cea8681e @ohif/i18n: Fix issues with exports and update docs (#598)
* update i18n version -- already published

* update ohif/i18n version and add modules

* update ohif/i18n version

* update translating documentation

* replace addLocales method and exported modules

* lock files

* Update index.js

* fix(@ohif/i18n): export custom methods in the main i18n object

`initI18n`, `addLocales` and `T` are now being exported inside the main `i18n` object.

* remove unecessary dependencies

* update vtk-extension lock file
2019-06-29 09:33:38 +02:00
Erik Ziegler cb565427b3 fix(package.json): Bump ohif-core to fix broken multiframe usage with WADO-RS
fix #539
2019-06-28 17:56:13 +02:00
João Felipe de Medeiros Moreira 3a4715759f fix(polyfills): Adds core-js/stable and regenerator-runtime (#590) 2019-06-28 16:20:16 +02:00
biharck edb0db349b feat(OHIFStandaloneViewer.js): adding NProgress loading bar on top of the page 2019-06-27 15:28:37 +02:00
Erik Ziegler 5a3f3e3eff fix(package.json): Update react-viewerbase and extension-vtk to ensure old @ohif/i18n is not used 2019-06-27 15:12:42 +02:00
Erik Ziegler 5efa93ba61 @ohif/extension-vtk: Update dependencies which were pulling in old @ohif/i18n 2019-06-27 15:12:42 +02:00
Erik Ziegler 722d68c85a fix(package.json): Update vtk-extension to fix i18n issues 2019-06-27 14:09:20 +02:00
Erik Ziegler d14f3eafdd @ohif/extension-vtk: Republish 0.0.9 to avoid inadvertently broken 0.0.8 2019-06-27 14:09:20 +02:00
Rodrigo Antinarelli d04bb323f7 @ohif-i18n - Replace use of context to import locales (#575) 2019-06-27 12:01:11 +02:00
biharck 6548dffb42 feat(Header.js): Add About modal to header 2019-06-27 10:59:23 +02:00
Erik Ziegler 81cb9d3a75 ci(rollbar): Add Rollbar script during CI deploy 2019-06-27 09:41:21 +02:00
Erik Ziegler 5807a948b6 docs(netlify): Add Netlify badge to top of docs page 2019-06-26 11:49:46 +02:00
Erik Ziegler 2bdcb7c5f7 fix(extension-dicom-microscopy): Update to 0.0.8 to use retrieveRendered by default 2019-06-24 13:32:11 +02:00
Erik Ziegler c148cd9b85 @ohif/extension-dicom-microscopy: Use retrieveRendered for frame retrieval 2019-06-24 12:39:55 +02:00
allcontributors[bot] 51f40d49e5 docs: add swederik as a contributor (#582)
* docs: update README.md

* docs: update .all-contributorsrc
2019-06-22 10:47:55 -04:00
allcontributors[bot] ab3768bc18 docs: add dannyrb as a contributor (#581)
* docs: update README.md

* docs: update .all-contributorsrc
2019-06-22 10:47:16 -04:00
allcontributors[bot] 02cad4c851 docs: add jfmedeiros1820 as a contributor (#580)
* docs: update README.md

* docs: update .all-contributorsrc
2019-06-22 10:46:10 -04:00
João Felipe de Medeiros Moreira 612832069d ci: add e2e tests with cypress
* Creates E2E tests using Cypress and includes two tests

* Improves yarn.lock file

* Includes documentation

* Cypress project id

* test e2e w/ ci and video

* run unit command before e2e

* Also cache cypress

* Persist cypress to next build step

* Try a different path

* Try without working dir

* Persist less data, but restore yarn/cypress cache in next step

* Install cypress to invalidate cache

* Add e2e as a blocker for merged publishing
2019-06-22 10:02:07 -04:00
Danny Brown 30bcc07dda Merge pull request #578 from OHIF/all-contributors/add-dlwire
docs: add dlwire as a contributor
2019-06-21 11:56:15 -04:00
allcontributors[bot] 7ef16dad9d docs: update .all-contributorsrc 2019-06-21 15:55:50 +00:00
allcontributors[bot] a97cb087eb docs: update README.md 2019-06-21 15:55:49 +00:00
David Wire 9116d08959 fix(IHEInvokeImageDisplay): Fix the props to access query parameters per API spec
I encountered this bug trying to use the IHEInvokeImageDisplay API in order to render multiple DICOM
studies in the viewer. Unfortunately, the component was no longer working and required some changes
in order to access the query parameters used in the API. These changes update the component to use
react router to access the query parameters and pass them to ConnectedViewerRetrieveStudyData as
appropriate. The move from ViewerRetrieveStudyData to ConnectedViewerRetrieveStudyData was necessary
in order to access the active server from the redux store. I also made a change from a series of if
clauses to a switch statement as it seemed a little more appropriate given the nature of the code
paths. Happy to change that back if needed. The PATIENT and default paths were not fixed as a part
of this work because we'll need a way to pass the filter in to the StudyList component.
2019-06-21 17:52:46 +02:00
Danny Brown 1d5c1cb83f feat: extension system overhaul 2019-06-21 09:15:47 -04:00
Danny Brown f7ba7621ef Merge pull request #549 from dannyrb/feature/extensions-panels-and-docs
Feature/extensions panels and docs
2019-06-21 09:13:42 -04:00
Danny Brown 51d1679dfb Merge branch 'master' into feature/extensions-panels-and-docs 2019-06-21 00:00:33 -04:00
dannyrb 6288ff9c8f Fix broken test 2019-06-20 23:58:32 -04:00
dannyrb bc4a650283 Breaks UMD build 2019-06-20 23:55:02 -04:00
dannyrb f4e4cfdf39 lock file 2019-06-20 23:50:06 -04:00
dannyrb 23de20d7d3 Bump extension and ohif-core versions 2019-06-20 23:30:52 -04:00
dannyrb 13aedecd55 Bump two more package versions 2019-06-20 23:30:16 -04:00
dannyrb 566cb218e6 Bump deps 2019-06-20 23:23:54 -04:00
dannyrb 7d2e65c73a Stubbed readme 2019-06-20 23:23:10 -04:00
dannyrb 3cb5abf0c9 Prettier config and formatting 2019-06-20 23:22:52 -04:00
dannyrb ec9ea8b761 formatting 2019-06-20 23:17:07 -04:00
dannyrb aa250a9210 bump package version 2019-06-20 23:12:55 -04:00
dannyrb 235f56c071 bump ohif-core minimum version number 2019-06-20 23:10:58 -04:00
dannyrb ff602bf500 simple vtk extension readme 2019-06-20 23:10:17 -04:00
dannyrb 5785ab9f1f bump version 2019-06-20 23:01:39 -04:00
dannyrb 273e262420 Add badge 2019-06-20 23:01:03 -04:00
dannyrb c2b048795d bump minimum required ohif-core version number 2019-06-20 22:57:57 -04:00
dannyrb 75288d986d update readme 2019-06-20 22:57:38 -04:00
dannyrb a5b0e15369 Formatting 2019-06-20 22:57:14 -04:00
dannyrb 2326aa8ba1 Some sane prettier defaults 2019-06-20 22:56:26 -04:00
dannyrb 3a684e5963 rename 2019-06-20 22:50:56 -04:00
dannyrb 56bf65d95f name bump 2019-06-20 22:50:23 -04:00
dannyrb c193ba17e7 fix for broken CINE player 2019-06-20 20:30:12 -04:00
Danny Brown a9659a0f24 Merge pull request #572 from OHIF/all-contributors/add-diego0020
docs: add diego0020 as a contributor
2019-06-18 23:35:32 -04:00
allcontributors[bot] baa28bdf41 docs: update .all-contributorsrc 2019-06-19 03:35:18 +00:00
allcontributors[bot] d9dd127539 docs: update README.md 2019-06-19 03:35:17 +00:00
Danny Brown b3873f7673 Merge pull request #520 from diego0020/dev-react-proxy
WIP: Use react proxy instead of nginx with cors headers for local dev
2019-06-18 23:33:37 -04:00
dannyrb 03501eddb0 fix typo 2019-06-18 23:33:02 -04:00
dannyrb 2f4961c078 Note regarding docker toolbox and react-proxy 2019-06-18 23:26:27 -04:00
dannyrb 4f3f19de7c Beginnings of commandsModule docs 2019-06-18 21:09:08 -04:00
Danny Brown 39d844f106 Merge branch 'master' into dev-react-proxy 2019-06-18 21:05:13 -04:00
dannyrb 3859359a05 Note regarding how extensions are specified for app 2019-06-18 16:11:38 -04:00
dannyrb 9af3ad414a Clean up code snippet config 2019-06-18 15:29:43 -04:00
dannyrb 8112c569e8 Expanding extensions docs 2019-06-18 15:19:04 -04:00
dannyrb 32b420087b Don't set vtk on viewport's layout; rely on viewportSpecificData 2019-06-18 14:51:51 -04:00
dannyrb aa811dffe3 Use dicom-html extension 2019-06-18 14:49:45 -04:00
dannyrb 0bfd49d1eb Remove window. references 2019-06-18 14:33:39 -04:00
dannyrb f26dfe4801 Causes things to blow up when sopClassHandler should be used instead of cornerstone 2019-06-18 14:33:02 -04:00
dannyrb b542ce4437 port html extension 2019-06-17 16:23:31 -04:00
dannyrb d1f7431af6 Re-add dicom microspy extension 2019-06-17 15:42:11 -04:00
dannyrb a1bbc4e87a Pull in PDF extension 2019-06-17 15:05:51 -04:00
dannyrb b154c2612d Use new extension interface 2019-06-17 15:05:27 -04:00
dannyrb 01ea3f4179 scoped package 2019-06-17 15:05:10 -04:00
dannyrb 4d540170aa Use activeContexts getter/selector in commandsManager 2019-06-17 14:48:33 -04:00
dannyrb 8b636b53be Make sure plugin is set for cornerstone viewports before a layout change is triggered 2019-06-17 14:45:53 -04:00
dannyrb 6050721d33 Use reselect to compute our activeContexts 2019-06-17 14:20:32 -04:00
dannyrb 88568b1ddd extensions specify default toolbar button context 2019-06-17 14:03:04 -04:00
dannyrb 80047ff518 Thunk and logger for redux 2019-06-17 10:40:01 -04:00
dannyrb a75bae90aa Merge branch 'master' of github.com:OHIF/Viewers into feature/extensions-panels-and-docs
# Conflicts:
#	extensions/ohif-vtk-extension/package.json
#	extensions/ohif-vtk-extension/src/commandsModule.js
#	extensions/ohif-vtk-extension/yarn.lock
2019-06-17 09:02:24 -04:00
Erik Ziegler f47ce6e629 feat(@ohif/extension-vtk): Add visible crosshair lines to MPR mode
re #562
2019-06-17 14:48:11 +02:00
Erik Ziegler 9f67ecab55 @ohif/extension-vtk: Enable crosshairs display on viewports (0.0.6) 2019-06-17 14:30:50 +02:00
dannyrb 1367f96dcd Remove code that depends on global "buttons" in Vtk Viewport 2019-06-16 23:44:01 -04:00
dannyrb ba92111484 No need to pull commandsManager off the window 2019-06-16 23:43:30 -04:00
dannyrb e6c9152cd1 Technically available in _any_ context, not just VTK 2019-06-16 23:36:10 -04:00
dannyrb 46904ea39f Context specific commands 2019-06-16 23:31:17 -04:00
dannyrb cf65e3a690 lowercase toolbarModule 2019-06-16 23:12:20 -04:00
dannyrb 723c9c9c2e force rename toolbarModule 2019-06-16 23:12:03 -04:00
dannyrb d5b4cb7b07 Refactor vtk extension; re-add to app 2019-06-16 23:11:43 -04:00
dannyrb f90578f567 Add vtk dependencies 2019-06-16 23:10:39 -04:00
dannyrb 1af09f1fad Merge branch 'master' of github.com:OHIF/Viewers into feature/extensions-panels-and-docs
# Conflicts:
#	extensions/ohif-vtk-extension/src/ConnectedToolbarSection.js
#	src/App.js
2019-06-16 22:26:44 -04:00
dannyrb 7ed90a280f Escape hatch note 2019-06-16 22:15:44 -04:00
dannyrb fc6f7446d0 Remove dead code: ConnectedToolbarSection and setToolActive 2019-06-16 14:23:03 -04:00
dannyrb 3ed602a40a Append Module to sopClassHandler method 2019-06-16 14:17:22 -04:00
dannyrb 9b7d77e2d6 Example SOP Class Handler 2019-06-16 14:16:36 -04:00
dannyrb 0cea2a8bff Simplify basic viewport extensions 2019-06-16 14:15:34 -04:00
dannyrb ffae67dc99 Remove dead comments from commandsModule 2019-06-16 14:08:38 -04:00
dannyrb 6e4dba7a10 Fix active button 👍 2019-06-16 14:07:13 -04:00
dannyrb 94177eee24 Prefer direct ToolbarButtons usage over ToolbarSection 2019-06-16 13:58:25 -04:00
dannyrb 9d50d97d6f Remove unused getDefaultToolbarButtons now that they're pushed to extension 2019-06-16 13:57:11 -04:00
dannyrb 7971ac58a2 Generic setToolActive command 2019-06-16 13:56:49 -04:00
dannyrb 4de5fa2d0e Simplify toolbar module to be config only for now; use new modules in extension 2019-06-16 13:56:24 -04:00
Erik Ziegler bd0c7b75e7 feat(@ohif/extension-vtk): Add oblique rotate button to MPR mode
re #563
2019-06-15 16:03:12 +02:00
Erik Ziegler 357187ddee @ohif/extension-vtk: Enable rotate button (0.0.5) 2019-06-15 16:03:12 +02:00
Erik Ziegler 24a8d7bca2 feat(@ohif/extension-vtk): Update app to include basic MPR with VTK (#557) 2019-06-15 14:26:09 +02:00
Erik Ziegler d0d757d468 Merge pull request #556 from OHIF/vtk-extension-changes
refactor(@ohif/extension-vtk): Update VTK extension to add basic MPR …
2019-06-15 13:44:59 +02:00
Erik Ziegler 1bf199786c Merge branch 'master' into vtk-extension-changes 2019-06-15 13:41:41 +02:00
Erik Ziegler 5a0d37ff64 Merge pull request #555 from OHIF/cornerstone-extension-update
refactor(@ohif/extension-cornerstone): Error handling and removal of …
2019-06-15 13:40:23 +02:00
Erik Ziegler 9573f67132 refactor(@ohif/extension-vtk): Update VTK extension to add basic MPR functionality 2019-06-15 11:51:56 +02:00
Erik Ziegler 537057e4d6 refactor(@ohif/extension-cornerstone): Error handling and removal of viewportData clearing on compon 2019-06-15 11:47:07 +02:00
dannyrb 43a493283a Merge branch 'feature/extensions-panels-and-docs' of github.com:dannyrb/Viewers into feature/extensions-panels-and-docs 2019-06-14 20:45:36 -04:00
Danny Brown df2a984cd3 Merge branch 'master' into feature/extensions-panels-and-docs 2019-06-14 20:45:00 -04:00
dannyrb 902dc5e31d Correctly find toolbar extensions 2019-06-14 20:44:15 -04:00
dannyrb 29853429c7 createStacks --> studyMetadata.createDisplaySets(sopClassHandlerModules) 2019-06-14 20:28:41 -04:00
Erik Ziegler 04e00fad20 feat(i18n): Add ability to internationalize the application and its extensions (#526)
* i18n basic setup

* i18n - extension extraction

* Creating spanish translation

* i18n - extension extraction

* i18n - Multiple languages overrides

* i18n - Multiple languages overrides

* remove yalc react-viewerbase

* use t prop from withTranslation

* fix typo

* Exports provider and HOC to be used by any application without install I18Next libraries

* i18n - Documentation

* i18n - Adding Provider to non Admins

* i18n - Documentation for i18n

* i18n - Documentation for i18n

* Configures hif-vtk-extention to use ohif-i18n for translation and include load more locations

* update i18n documentation

* add language detector lib

* fix text

* WIP - using yalc for react-viewerbase

* remove unused switch language buttons

* Update yarn.lock

* Merge branch 'master' of https://github.com/OHIF/Viewers into feature/i18n-basics

# Conflicts:
#	extensions/ohif-vtk-extension/package.json
#	extensions/ohif-vtk-extension/rollup.config.js
#	extensions/ohif-vtk-extension/yarn.lock
#	package.json
#	src/App.js
#	src/components/Header/Header.js
#	yarn.lock

* Adding language detector as Peer Dependency, its not working inside the rollup bundle.

* Upgrading i18next version.

* Language Detection implementation, bug fixes related to i18n and debugger helper added.

* Updating i18next documentation.

* i18n implementation - Adding final packages

* small fix

* i18n implementation - Fixing up vtk-extension's  packages

* i18n implementation - Fixing up translations

* i18n implementation - Updating yarn.lock

* fix require.context bug

* udpate ohif/i18n version

* i18n implementation - Updating yarn.lock

* i18n implementation - Removing bad image from docs

* i18n implementation - Removing ROI from translations

* i18n implementation - Fixing CineDialog translations

* update i18n package

* fix conditional

* update i18n

* fix conditional

* update @ohif/i18n
2019-06-14 15:56:20 +02:00
Erik Ziegler db814f6248 Merge branch 'master' into feature/i18n-basics 2019-06-14 15:52:39 +02:00
Rodrigo Antinarelli 56e3982111 update @ohif/i18n 2019-06-13 16:20:36 -03:00
Rodrigo Antinarelli cb2871d377 fix conditional 2019-06-13 16:20:29 -03:00
Rodrigo Antinarelli 1cbbbd6989 update i18n 2019-06-13 15:31:33 -03:00
Rodrigo Antinarelli ea3142c1ea fix conditional 2019-06-13 15:30:13 -03:00
Rodrigo Antinarelli e90041ccd6 update i18n package 2019-06-13 15:30:05 -03:00
romulo bordezani 515768aff2 i18n implementation - Fixing CineDialog translations 2019-06-13 15:02:06 -03:00
romulo bordezani f448a7cdcc i18n implementation - Removing ROI from translations 2019-06-13 14:59:41 -03:00
romulo bordezani 3fa9bc54f8 i18n implementation - Removing bad image from docs 2019-06-13 14:59:16 -03:00
romulo bordezani 414ebd5d8b i18n implementation - Updating yarn.lock 2019-06-13 14:31:04 -03:00
romulo bordezani 59489ae3c6 Merge branch 'feature/i18n-basics' of github.com:romulobordezani/Viewers into feature/i18n-basics 2019-06-13 14:25:19 -03:00
Rodrigo Antinarelli 9321c31235 udpate ohif/i18n version 2019-06-13 14:22:23 -03:00
Rodrigo Antinarelli 66fc1dd739 fix require.context bug 2019-06-13 14:22:10 -03:00
romulo bordezani 082656182b i18n implementation - Updating yarn.lock 2019-06-13 14:17:04 -03:00
romulo bordezani 94a7caa2c4 i18n implementation - Fixing up translations 2019-06-13 14:16:43 -03:00
romulo bordezani b89fada19e i18n implementation - Fixing up vtk-extension's packages 2019-06-13 14:16:30 -03:00
dannyrb 89b1ce4a4e Pull out cornerstone command registration 2019-06-13 10:17:53 -04:00
dannyrb 361be79174 Toolbar row to use new types 2019-06-13 09:51:19 -04:00
dannyrb 31c987d700 Shift to new syntax; try to get only cornerstone extension working with new syntax 2019-06-13 09:50:53 -04:00
dannyrb 0318203770 Shift commands to appropriate extension 2019-06-13 09:50:07 -04:00
dannyrb 59c6c4dc34 Comment out unused code 2019-06-13 09:49:30 -04:00
dannyrb 05e8c803c9 Update example for commandsModule 2019-06-13 09:49:09 -04:00
dannyrb 209d575092 Merge branch 'feature/extensions-panels-and-docs' of github.com:dannyrb/Viewers into feature/extensions-panels-and-docs 2019-06-12 16:38:28 -04:00
Danny Brown d0cbf577a3 Merge branch 'master' into feature/extensions-panels-and-docs 2019-06-12 16:38:28 -04:00
dannyrb b052930123 fix connected layout manager to use extensionManager 2019-06-12 16:37:45 -04:00
dannyrb 4f6cee8960 New up and expose an extensionManager for the app 2019-06-12 16:10:57 -04:00
dannyrb 9c797233bb PLUGIN_TYPES --> MODULE_TYPES 2019-06-12 16:09:35 -04:00
dannyrb 29f86d41e6 Begin stubbing an example plugin with all options as basic docs/recipe 2019-06-12 16:09:06 -04:00
João Felipe de Medeiros Moreira 071f92e45c fix(StudyBrowser): Remove transform to fix drag/drop positioning for thumbnails (#548) 2019-06-12 20:15:51 +02:00
Rodrigo Antinarelli 45993e423d small fix 2019-06-12 13:30:08 -03:00
Rodrigo Antinarelli 8c608dc05b update branch 2019-06-12 13:22:46 -03:00
Erik Ziegler 45808dc0f1 ci(Circle): Add deploy tracking and source map upload to Rollbar (#545) 2019-06-12 15:06:24 +02:00
Erik Ziegler 9f82ef1682 chore(package.json): Update ohif-core (0.5.8) and react-viewerbase (0.7.1) (#546) 2019-06-12 14:58:30 +02:00
Erik Ziegler 0d3dcf5035 docs(netlify.toml): Fix Netlify URL path issues for deploy previews (#544) 2019-06-12 09:10:21 +02:00
romulo bordezani ab0e2fe9e2 i18n implementation - Adding final packages 2019-06-12 03:43:02 -03:00
romulo bordezani 4a4d7a2171 Updating i18next documentation. 2019-06-12 03:35:17 -03:00
romulo bordezani 0c8cd3fbe9 Language Detection implementation, bug fixes related to i18n and debugger helper added. 2019-06-11 20:05:14 -03:00
romulo bordezani fde6088cb1 Upgrading i18next version. 2019-06-11 14:11:28 -03:00
romulo bordezani b4af4bed17 Adding language detector as Peer Dependency, its not working inside the rollup bundle. 2019-06-11 14:07:23 -03:00
romulo bordezani fe4db3b2c5 VTK extension - i18n implementation. 2019-06-10 19:33:15 -03:00
romulo bordezani d5909f8d74 Merge branch 'master' of https://github.com/OHIF/Viewers into feature/i18n-basics
# Conflicts:
#	extensions/ohif-vtk-extension/package.json
#	extensions/ohif-vtk-extension/rollup.config.js
#	extensions/ohif-vtk-extension/yarn.lock
#	package.json
#	src/App.js
#	src/components/Header/Header.js
#	yarn.lock
2019-06-10 14:54:18 -03:00
Danny Brown ce9d956d00 Merge pull request #538 from dannyrb/master
fix: demo
2019-06-09 22:12:00 -04:00
dannyrb 55e326dde8 force bump 2019-06-09 22:11:25 -04:00
dannyrb 64a9e38de4 chore: build warnings preventing demo deploy 2019-06-09 22:09:37 -04:00
Danny Brown 7efdb40607 Merge pull request #514 from dannyrb/fix/hotkeys
Fix/hotkeys
2019-06-08 21:42:59 -04:00
dannyrb fddcc746d9 No ESM in vanilla modules 2019-06-08 21:23:00 -04:00
dannyrb 9d9b3a7749 Make sure our app doesn't blow up if hotkeys aren't provided 2019-06-08 15:26:11 -04:00
dannyrb 78068bed4b push default hotkeys to a shared location 2019-06-08 15:25:39 -04:00
dannyrb 7f95c1284a fix: command direction for previousViewportDisplaySet 2019-06-08 15:12:19 -04:00
dannyrb 5325d2d2fe bump versions 2019-06-08 15:08:09 -04:00
Rodrigo Antinarelli ff382b0212 Update yarn.lock 2019-06-07 19:54:49 -03:00
Rodrigo Antinarelli 5bbd6f1463 remove unused switch language buttons 2019-06-07 19:54:35 -03:00
Rodrigo Antinarelli ebb2e83925 WIP - using yalc for react-viewerbase 2019-06-07 19:54:22 -03:00
Rodrigo Antinarelli ee42257736 fix text 2019-06-07 19:53:56 -03:00
Rodrigo Antinarelli fe827b5b2a add language detector lib 2019-06-07 19:53:49 -03:00
Rodrigo Antinarelli 401eab5062 update i18n documentation 2019-06-07 19:53:30 -03:00
romulo bordezani 0753e9ec3c Merge branch 'master' of https://github.com/OHIF/Viewers into feature/i18n-basics
# Conflicts:
#	extensions/ohif-vtk-extension/package.json
#	extensions/ohif-vtk-extension/rollup.config.js
#	extensions/ohif-vtk-extension/yarn.lock
#	package.json
#	src/App.js
#	src/components/Header/Header.js
#	yarn.lock
2019-06-07 17:55:53 -03:00
João Felipe Medeiros Moreira f19cd8dd81 Merge branch 'feature/i18n-basics' of github.com:romulobordezani/Viewers into feature/i18n-basics 2019-06-07 15:36:13 -03:00
João Felipe Medeiros Moreira 42cb8e32c7 Configures hif-vtk-extention to use ohif-i18n for translation and include load more locations 2019-06-07 15:35:54 -03:00
romulo bordezani 065204a87e i18n - Documentation for i18n 2019-06-06 19:26:08 -03:00
romulo bordezani 6e295ba7c6 i18n - Documentation for i18n 2019-06-06 19:13:16 -03:00
romulo bordezani dd1a5455d9 Merge branch 'feature/i18n-basics' of github.com:romulobordezani/Viewers into feature/i18n-basics 2019-06-06 18:59:17 -03:00
romulo bordezani eca7d9be6a i18n - Adding Provider to non Admins 2019-06-06 18:57:45 -03:00
romulo bordezani ebcd9b3838 i18n - Documentation 2019-06-06 18:57:19 -03:00
dannyrb a119ca33f0 Hide our user preferences modal for now 2019-06-06 15:01:32 -04:00
Danny Brown bee9985877 Merge branch 'master' into fix/hotkeys 2019-06-06 14:46:57 -04:00
dannyrb e0cbc8ef4d No need for connected user preferences when header can contain info 2019-06-06 14:41:31 -04:00
João Felipe Medeiros Moreira 56b595980e Fixes conflict after pull 2019-06-06 15:12:30 -03:00
João Felipe Medeiros Moreira 9fd39dbf84 Exports provider and HOC to be used by any application without install I18Next libraries 2019-06-06 15:11:34 -03:00
Danny Brown cbf144ff90 Merge pull request #531 from OHIF/dependabot/npm_and_yarn/extensions/ohif-cornerstone-extension/js-yaml-3.13.1
build(deps): bump js-yaml from 3.12.0 to 3.13.1 in /extensions/ohif-cornerstone-extension
2019-06-06 10:29:04 -04:00
dannyrb 2d6f9c1a05 A way to tell CircleCI not to run for this change 2019-06-06 09:15:12 -04:00
Danny Brown 713a11a584 Merge branch 'master' into dependabot/npm_and_yarn/extensions/ohif-cornerstone-extension/js-yaml-3.13.1 2019-06-06 09:05:30 -04:00
Danny Brown 338ecb43ae Merge pull request #532 from OHIF/dependabot/npm_and_yarn/extensions/ohif-vtk-extension/js-yaml-3.13.1
build(deps): bump js-yaml from 3.12.1 to 3.13.1 in /extensions/ohif-vtk-extension
2019-06-06 09:05:17 -04:00
dependabot[bot] bf2dd92deb build(deps): bump js-yaml in /extensions/ohif-cornerstone-extension
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.12.0 to 3.13.1.
- [Release notes](https://github.com/nodeca/js-yaml/releases)
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.12.0...3.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2019-06-06 13:02:50 +00:00
Danny Brown f1b7f42ef7 Merge branch 'master' into dependabot/npm_and_yarn/extensions/ohif-vtk-extension/js-yaml-3.13.1 2019-06-06 09:01:51 -04:00
Danny Brown ff98a9dc4f Merge pull request #534 from OHIF/dependabot/npm_and_yarn/extensions/ohif-dicom-pdf-extension/handlebars-4.1.2
build(deps): bump handlebars from 4.0.12 to 4.1.2 in /extensions/ohif-dicom-pdf-extension
2019-06-06 09:01:29 -04:00
dependabot[bot] bd870a46c7 build(deps): bump js-yaml in /extensions/ohif-vtk-extension
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.12.1 to 3.13.1.
- [Release notes](https://github.com/nodeca/js-yaml/releases)
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.12.1...3.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2019-06-06 12:58:04 +00:00
Danny Brown a9636410ec Merge branch 'master' into dependabot/npm_and_yarn/extensions/ohif-dicom-pdf-extension/handlebars-4.1.2 2019-06-06 08:57:00 -04:00
Danny Brown 4aa591aaaf Merge pull request #533 from OHIF/dependabot/npm_and_yarn/extensions/ohif-dicom-html-extension/handlebars-4.1.2
build(deps): bump handlebars from 4.0.12 to 4.1.2 in /extensions/ohif-dicom-html-extension
2019-06-06 08:56:41 -04:00
dependabot[bot] 04f03f10de build(deps): bump handlebars in /extensions/ohif-dicom-pdf-extension
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.0.12 to 4.1.2.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.0.12...v4.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-06-06 11:05:33 +00:00
dependabot[bot] dfbabb8c93 build(deps): bump handlebars in /extensions/ohif-dicom-html-extension
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.0.12 to 4.1.2.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.0.12...v4.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-06-06 11:05:26 +00:00
dannyrb f16812c81f Remove FA external dep include 2019-06-05 21:30:18 -04:00
dannyrb 49fe195089 Change HotkeyDefinition to include label 2019-06-05 21:29:50 -04:00
Erik Ziegler bbc598323e fix(initWebWorkers): Fix duplicate slashes for web worker paths (#527) 2019-06-05 22:44:14 +02:00
Rodrigo Antinarelli a747590ab8 fix typo 2019-06-05 17:36:38 -03:00
Rodrigo Antinarelli a11fae01dc use t prop from withTranslation 2019-06-05 17:09:54 -03:00
Rodrigo Antinarelli 520f07ec23 remove yalc react-viewerbase 2019-06-05 17:09:35 -03:00
Erik Ziegler d20492ac62 docs(circleci): Set up automatic deploys to GCP for hosting viewer.ohif.org (#491) 2019-06-05 22:08:28 +02:00
dannyrb 347680fdf5 Setting an active tool 2019-06-05 15:57:00 -04:00
Danny Brown a111327ff6 Merge pull request #524 from dannyrb/fix/quick-toolbar-edits-and-version-bumps
Fix/quick toolbar edits and version bumps
2019-06-05 13:01:00 -04:00
dannyrb fa525bcb43 fix(toolbar): reduce the number of tools visible on the toolbar; bump package versions to deploy other fixes 2019-06-05 12:43:03 -04:00
dannyrb 1eeada3319 Nuke tools until we can fix toolbar modules and nested buttons 2019-06-05 12:37:59 -04:00
dannyrb 531abe0fbd bump dependent package versions 2019-06-05 12:37:36 -04:00
dannyrb 680b372e14 Sneak in some eol consistency 2019-06-05 12:37:00 -04:00
diego0020 1c3f3cfcf6 initial prototype 2019-06-05 09:11:13 -05:00
romulo bordezani 236a115112 i18n - Multiple languages overrides 2019-06-04 18:16:07 -03:00
Gustavo André Lelis 3f4fbd2639 Merge pull request #518 from OHIF/bump-react-viewport
fix(react-viewport): Bump react-cornerstone-viewport
2019-06-04 14:28:47 -03:00
Gustavo Lelis 203303e1e7 fix(react-viewport): Bump react-cornerstone-viewport 2019-06-04 13:41:55 -03:00
romulo bordezani 1874f93bcc i18n - Multiple languages overrides 2019-06-04 12:34:57 -03:00
Biharck Araujo 9c58ea8f55 fix(extension-dicom-microscopy): bump microscopy and ohif-core deps, scope package name (#513) 2019-06-04 08:54:02 +02:00
Biharck Araujo bd2fa615cc fix(StudyListWithData): Fix InvalidDate and broken date sorting in Study List (#495)
Fixes #492
2019-06-04 08:43:34 +02:00
romulo bordezani d678a617dc i18n - extension extraction 2019-06-03 19:56:59 -03:00
João Felipe Medeiros Moreira aff74bcee4 Merge branch 'feature/i18n-basics' of github.com:romulobordezani/Viewers into feature/i18n-basics 2019-06-03 18:02:11 -03:00
João Felipe Medeiros Moreira 99c95fc1e1 Creating spanish translation 2019-06-03 18:02:01 -03:00
romulo bordezani 543d8d33c1 i18n - extension extraction 2019-06-03 17:56:36 -03:00
dannyrb a636df8fdc Pass in CommandsManager config 2019-06-03 15:41:49 -04:00
dannyrb 3f5660722e Defaults for hotkeys 2019-06-03 14:27:03 -04:00
dannyrb afa6d78e42 push WIP 2019-06-03 13:22:05 -04:00
dannyrb 66e3b9f857 Commands list for cornerstone extension 2019-06-03 12:43:36 -04:00
dannyrb 9b838ab326 Provide store to commands manager; hard code active contexts 2019-06-03 12:22:25 -04:00
dannyrb 9326b5e63d Actions and reducers for managing UI contexts 2019-06-03 12:22:06 -04:00
dannyrb 56de51a21d Kill old code 2019-06-03 12:21:50 -04:00
dannyrb 03d66233ff Make sure we're registering a hotkey for a command that exists 2019-06-02 23:04:24 -04:00
dannyrb 6b0ef0904e Shift initialization of OHIF classes to app.js 2019-06-02 22:44:13 -04:00
dannyrb c1f8984c1b Switch folder; dependency injection; note about moving to extensions 2019-06-02 22:43:04 -04:00
dannyrb b0706e5544 Playing with a hotkeys + commands setup and config 2019-06-02 15:44:27 -04:00
dannyrb d29f996e61 formatting 2019-06-02 15:44:01 -04:00
dannyrb fabe981855 WIP hotkeys code 2019-05-31 22:09:05 -04:00
dannyrb d9e45261f3 Registering some initial commands 2019-05-31 16:25:10 -04:00
dannyrb ae0858bdd3 Shift store init to own directory 2019-05-31 11:55:44 -04:00
Danny Brown 0fbd47f502 Merge pull request #510 from OHIF/dependabot/npm_and_yarn/extensions/ohif-vtk-extension/fstream-1.0.12
Bump fstream from 1.0.11 to 1.0.12 in /extensions/ohif-vtk-extension
2019-05-31 09:49:06 -04:00
Danny Brown 68eaefabc8 Merge branch 'master' into dependabot/npm_and_yarn/extensions/ohif-vtk-extension/fstream-1.0.12 2019-05-31 09:44:23 -04:00
Danny Brown d9be87331e Merge pull request #486 from OHIF/dependabot/npm_and_yarn/docs/latest/tar-2.2.2
build(deps): bump tar from 2.2.1 to 2.2.2 in /docs/latest
2019-05-31 09:43:23 -04:00
dependabot[bot] b09b603bb3 Bump fstream from 1.0.11 to 1.0.12 in /extensions/ohif-vtk-extension
Bumps [fstream](https://github.com/npm/fstream) from 1.0.11 to 1.0.12.
- [Release notes](https://github.com/npm/fstream/releases)
- [Commits](https://github.com/npm/fstream/compare/v1.0.11...v1.0.12)
2019-05-31 12:34:46 +00:00
dependabot[bot] 6f6492b4ab build(deps): bump tar from 2.2.1 to 2.2.2 in /docs/latest
Bumps [tar](https://github.com/npm/node-tar) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Commits](https://github.com/npm/node-tar/compare/v2.2.1...v2.2.2)
2019-05-30 19:07:24 +00:00
Danny Brown c79e51334d Merge pull request #499 from dannyrb/master
Roadmap and icon updates using latest react-viewerbase
2019-05-30 15:05:50 -04:00
dannyrb dcb21d9759 Poor man's fix for SR thumbnails. CC: @swederik 2019-05-30 15:04:54 -04:00
dannyrb 5c164d6518 fix: grab the latest and greatest icon updates 2019-05-30 14:56:46 -04:00
dannyrb 2f1e3d2734 Use oval in place of circle 2019-05-30 14:56:02 -04:00
romulo bordezani 376b2c518a i18n basic setup 2019-05-30 15:41:15 -03:00
dannyrb efe21b9121 fix: logo should have a consistent look and feel 2019-05-30 13:37:17 -04:00
dannyrb 5871a2faf7 @swederik's prop to show prettier SR thumbnails 2019-05-30 13:36:48 -04:00
dannyrb b6e5faba1b bumpity bump bump 2019-05-30 12:57:46 -04:00
dannyrb 22b1c89c07 Publish scoped version of ohif-cornerstone-extension 2019-05-30 12:48:41 -04:00
dannyrb 57203d783e fix(icons): Fix icon usage across all packages and extensions 2019-05-30 12:28:20 -04:00
dannyrb 2b874f9564 bump to latest react-viewerbase 2019-05-30 12:13:56 -04:00
dannyrb e955f54f61 Update incorrect icon name in labeling flow 2019-05-30 12:08:46 -04:00
dannyrb e35a251ab8 Use new scoped import 2019-05-30 12:06:44 -04:00
dannyrb 6e0b14a198 Bump dependent version 2019-05-30 12:06:28 -04:00
dannyrb b78a780ff2 Bump to latest ohif-vtk-extension 2019-05-30 11:59:58 -04:00
dannyrb 996d5f40ca formatting 2019-05-30 11:54:59 -04:00
dannyrb 59b54ffb39 add react-viewerbase to globals 2019-05-30 11:54:42 -04:00
dannyrb ab823cce43 Make public 2019-05-30 11:54:21 -04:00
dannyrb 2066b97771 Use scoped package name 2019-05-30 11:50:27 -04:00
dannyrb 15972744b4 Move vtk extension's react-viewerbase to peerDeps; bump version 2019-05-30 11:40:11 -04:00
dannyrb c16654514d Re-apply semicolons 2019-05-30 00:46:45 -04:00
dannyrb ffbd6ad6e4 Merge branch 'master' of github.com:OHIF/Viewers
# Conflicts:
#	extensions/ohif-cornerstone-extension/package.json
#	package.json
#	src/components/Header/Header.js
#	src/components/Labelling/LabellingFlow.js
#	src/components/OHIFLogo/OHIFLogo.js
#	src/connectedComponents/ConnectedPluginSwitch.js
#	src/connectedComponents/ToolbarRow.js
#	src/utils/getDefaultToolbarButtons.js
#	src/utils/getDefaultToolbarButtons.test.js
#	yarn.lock
2019-05-30 00:46:00 -04:00
dannyrb 30ac5d1144 Bump to latest published deps 2019-05-30 00:28:16 -04:00
dannyrb 2b9d2ce107 Bump to v0.0.33 2019-05-30 00:27:37 -04:00
dannyrb 6519bb08ee Fix missing logo/icon 2019-05-30 00:12:43 -04:00
dannyrb 770cc5abed Hard requirement on newer version of react-viewerbase 2019-05-30 00:12:18 -04:00
dannyrb f51b9391d1 Use updated icon names 2019-05-29 23:47:26 -04:00
dannyrb 115445a30b YouTube button 2019-05-29 23:46:42 -04:00
Danny Brown a3405e7a9e Merge pull request #504 from dannyrb/master-semicolon-fix
semicolon fix
2019-05-29 10:37:36 -04:00
dannyrb fb7c229b43 prettier applied to all files in src/ 2019-05-29 08:39:54 -04:00
dannyrb 433bb219b0 Force semi-colon use 2019-05-29 08:37:35 -04:00
Evren Ozkan 6b8d1a695b fix(layout): Fix the issues with displaying vtkjs viewports (#500)
* fix(dependencies): Bump react-cornerstone-viewport to 0.1.29

* fix(dependencies): Bump ohif-cornerstone-extension to 0.0.32

* fix(layout): Get missing display set fields in viewport specific data from the original display set

* fix(layout): Cache the viewport data to be used for the replaced viewport when it is empty since viewportSpecificData is cleaned when viewport is changed
2019-05-28 19:02:33 -04:00
dannyrb 7eaa4378bc Use Icon component in place of icons.svg 2019-05-28 14:57:07 -04:00
dannyrb 6cd84dfa27 Use new icon logic 2019-05-28 14:51:29 -04:00
dannyrb ac44228b94 Kill old icons logic 2019-05-28 14:50:22 -04:00
dannyrb 97899570ae Formatting 2019-05-28 13:19:06 -04:00
dannyrb 1c14f41bd0 Use new Dropdown props format 2019-05-28 13:18:40 -04:00
dannyrb b3f54b4500 Merge branch 'master' of github.com:OHIF/Viewers 2019-05-28 13:03:41 -04:00
dannyrb e80f089daa Merge branch 'master' of github.com:dannyrb/Viewers 2019-05-28 13:03:18 -04:00
Evren Ozkan f1f2981415 fix(dependencies): Bump cornerstone-tools to 3.11.0 (#497) 2019-05-28 10:49:01 -04:00
Danny Brown 3125cd6417 Merge pull request #496 from dannyrb/fix/codesandbox-embedded
Fix codesandbox link
2019-05-28 10:09:11 -04:00
dannyrb 4795c8d95e Fix codesandbox link 2019-05-28 10:06:54 -04:00
Evren Ozkan 3c8e646f0f fix(dependencies): Bump react-cornerstone-viewport to 0.1.28 (#490)
* fix(dependencies): Bump react-cornerstone-viewport to 0.1.28

* fix(dependencies): Bump ohif-cornerstone-extension to 0.0.31
2019-05-27 19:02:05 -04:00
Evren Ozkan 3bae254a6f fix(hotkeys): Fix the issues with hotkeys (#488)
* wip viewport

* refactoring to do not use dispatch from window

* fixing server active testing

* fix(dependencies): Bump ohif-core to 0.5.5
2019-05-27 11:31:39 -04:00
Evren Ozkan c2eb5f342f Revert "React viewport (#439)" (#487)
This reverts commit b24a502433.
2019-05-27 11:09:11 -04:00
Biharck Araujo b24a502433 React viewport (#439)
Implementing hotkeys actions
2019-05-27 08:22:33 -03:00
Danny Brown e830d0f41e Merge pull request #481 from dannyrb/master
Add roadmap, update embedded-viewer recipe
2019-05-22 16:13:58 -04:00
Danny Brown 812c9bdb49 Merge branch 'master' into master 2019-05-22 16:01:44 -04:00
dannyrb dc2336e6e7 docs: embedded viewer and roadmap updates (readme and docs) 2019-05-22 16:00:51 -04:00
dannyrb b6fedc434a Update embedded viewer docs 2019-05-22 15:57:35 -04:00
dannyrb e5369b995a Roadmap section to readme 2019-05-22 15:24:38 -04:00
dannyrb 5a2eb9dacc Component library link in title bar 2019-05-22 15:22:59 -04:00
dannyrb 4759860c12 canny assets 2019-05-22 15:22:32 -04:00
dannyrb 6b4463b30a Add demo and roadmap to top of readme 2019-05-22 14:52:26 -04:00
Danny Brown 54253e2f84 Merge pull request #479 from OHIF/all-contributors/add-EsrefDurna
docs: add EsrefDurna as a contributor
2019-05-22 06:34:05 -04:00
allcontributors[bot] 6704eab9e2 docs: update .all-contributorsrc 2019-05-22 10:32:04 +00:00
allcontributors[bot] bfb4c81419 docs: update README.md 2019-05-22 10:32:03 +00:00
Danny Brown 29f8496490 Merge pull request #475 from dannyrb/master
Note regarding meteor version branch location
2019-05-21 15:49:47 -04:00
dannyrb 5aa5b51f7d Note regarding meteor version branch location 2019-05-21 15:49:09 -04:00
Danny Brown 26f536e3fd Merge pull request #474 from dannyrb/master
Missing bracket
2019-05-21 15:13:46 -04:00
dannyrb a87f8326b1 Missing bracket 2019-05-21 15:13:23 -04:00
Danny Brown 7aaf7e8178 Merge pull request #473 from dannyrb/master
add docker badge to readme
2019-05-21 15:12:41 -04:00
dannyrb 125fe5afe5 add docker badge to readme 2019-05-21 15:11:35 -04:00
Danny Brown 567807c148 Merge pull request #472 from dannyrb/master
fix: Tag multiple docker images; push multiple docker images
2019-05-21 14:57:25 -04:00
dannyrb 14d99f1922 fix: Tag multiple docker images; push multiple docker images 2019-05-21 14:51:57 -04:00
Danny Brown d601c881f0 Merge pull request #471 from dannyrb/master
fix: Remove npmrc file if it exists
2019-05-21 14:43:24 -04:00
dannyrb 2a83318cd7 fix: Remove npmrc file if it exists 2019-05-21 14:42:47 -04:00
Danny Brown 6ac48f6c44 Merge pull request #470 from dannyrb/master
fix: push docker image with full version tag
2019-05-21 14:33:31 -04:00
dannyrb c2358c5059 fix: push docker image with full version tag 2019-05-21 14:33:04 -04:00
Danny Brown e950391d40 Merge pull request #469 from dannyrb/master
fix: Now that we can access our new version, lets see if we can use i…
2019-05-21 14:25:17 -04:00
dannyrb 762aee9efa fix: Now that we can access our new version, lets see if we can use it correctly in our docker tag 2019-05-21 14:24:47 -04:00
Danny Brown 4b1969da8a Merge pull request #468 from dannyrb/master
fix: Drop the tilde; may not be part of the workspace we're preserving
2019-05-21 14:13:17 -04:00
dannyrb a02a41f706 fix: Drop the tilde; may not be part of the workspace we're preserving 2019-05-21 14:12:47 -04:00
Danny Brown df4e3ce0c3 Merge pull request #466 from dannyrb/master
fix: Make sure we persist our npm_publish changes so docker_publish c…
2019-05-21 14:02:53 -04:00
dannyrb caf989f77c fix: Make sure we persist our npm_publish changes so docker_publish can access new version number 2019-05-21 14:01:14 -04:00
Danny Brown d96b8329cc Merge pull request #465 from dannyrb/master
fix: Create our tmp directory before we try to create a file in it
2019-05-21 13:50:10 -04:00
dannyrb 50a188a5f1 fix: Create our tmp directory before we try to create a file in it 2019-05-21 13:49:21 -04:00
Danny Brown 95629cfe12 Merge pull request #464 from dannyrb/master
fix: explicit txt extension for tmp version file
2019-05-21 13:43:13 -04:00
dannyrb ca881f207a fix: explicit txt extension for tmp version file 2019-05-21 13:41:42 -04:00
Danny Brown e3fdbc4f2a Merge pull request #463 from dannyrb/master
fix: Try to tag docker image w/ correct/new version number
2019-05-21 13:34:52 -04:00
dannyrb 0fc22f97dd fix: Try to tag docker image w/ correct/new version number 2019-05-21 13:33:50 -04:00
Danny Brown 14a19ca192 Merge pull request #462 from dannyrb/master
Add semantic-release/exec extension
2019-05-21 13:07:09 -04:00
dannyrb 768ac472f9 Add semantic-release/exec extension 2019-05-21 13:05:58 -04:00
Danny Brown 87cf8c210c Merge pull request #461 from dannyrb/master
Test improved docker image tagging
2019-05-21 13:01:48 -04:00
dannyrb e94a01a3e9 formatting 2019-05-21 13:00:03 -04:00
dannyrb 8cc9e5b485 Expand to multiple lines 2019-05-21 12:59:25 -04:00
dannyrb fdd74421cc Push latest tag as well 2019-05-21 12:55:50 -04:00
dannyrb 5feb29422c Try using latest version to bump docker image tag 2019-05-21 12:53:15 -04:00
Danny Brown e848cedbaf Merge pull request #460 from dannyrb/chore/create-tagged-docker-image
Chore/create tagged docker image
2019-05-20 21:32:18 -04:00
Danny Brown 21278c4405 Merge branch 'master' into chore/create-tagged-docker-image 2019-05-20 21:29:27 -04:00
dannyrb d9e9fc45a1 Add docker_publish to master merge 2019-05-20 21:27:47 -04:00
dannyrb 5e81fe8336 Add a default nginx config to use for our published image 2019-05-20 21:27:04 -04:00
dannyrb 851ec0be6a Add a docker_publish job 2019-05-20 21:26:39 -04:00
dannyrb c9630c6a8b Rename dockerfile-web --> dockerfile 2019-05-20 21:26:18 -04:00
dannyrb dea917bea4 Fix cpx command on linux? 2019-05-20 21:25:44 -04:00
Danny Brown c8270b29bf Merge pull request #458 from OHIF/all-contributors/add-allcontributors
docs: add allcontributors as a contributor
2019-05-20 12:04:55 -04:00
allcontributors[bot] 627b621060 docs: update .all-contributorsrc 2019-05-20 16:04:41 +00:00
allcontributors[bot] c8c9c61d19 docs: update README.md 2019-05-20 16:04:40 +00:00
Danny Brown 89c0adeefe Merge pull request #457 from OHIF/all-contributors/add-dannyrb
docs: add dannyrb as a contributor
2019-05-20 12:04:19 -04:00
allcontributors[bot] 5abe368e9e docs: update .all-contributorsrc 2019-05-20 16:04:10 +00:00
allcontributors[bot] f63aeb6208 docs: update README.md 2019-05-20 16:04:09 +00:00
Danny Brown 392c865503 Merge pull request #456 from OHIF/all-contributors/add-galelis
docs: add galelis as a contributor
2019-05-20 12:03:52 -04:00
allcontributors[bot] 5814818d67 docs: update .all-contributorsrc 2019-05-20 16:03:43 +00:00
allcontributors[bot] 90247368a1 docs: update README.md 2019-05-20 16:03:42 +00:00
Danny Brown 75f7214512 Merge pull request #455 from OHIF/all-contributors/add-evren217
docs: add evren217 as a contributor
2019-05-20 12:03:20 -04:00
allcontributors[bot] 342a6da93a docs: update .all-contributorsrc 2019-05-20 16:03:04 +00:00
allcontributors[bot] ca76d7c080 docs: update README.md 2019-05-20 16:03:01 +00:00
Danny Brown dc2975cca0 Merge pull request #454 from dannyrb/master
Shift/re-order contributors
2019-05-20 11:32:00 -04:00
dannyrb 749bb294f1 Shift/re-order contributors 2019-05-20 11:31:05 -04:00
Danny Brown f1ae712e0c Merge pull request #453 from OHIF/all-contributors/add-swederik
docs: add swederik as a contributor
2019-05-20 11:29:20 -04:00
Danny Brown 1f6e855e38 Merge branch 'master' into all-contributors/add-swederik 2019-05-20 11:29:15 -04:00
Danny Brown 1f104c7b29 Merge pull request #452 from dannyrb/master
Bump to latest versions (fixes some misc. icon issues)
2019-05-20 11:29:01 -04:00
allcontributors[bot] 92b20f4f3a docs: create .all-contributorsrc 2019-05-20 15:27:53 +00:00
allcontributors[bot] 58514301f4 docs: update README.md 2019-05-20 15:27:52 +00:00
Danny Brown 7c4fe9f306 Merge branch 'master' into master 2019-05-20 11:25:57 -04:00
Danny Brown 5e12182901 Merge pull request #451 from dannyrb/docs/yalc-docs
Docs/yalc docs
2019-05-20 11:25:44 -04:00
dannyrb ed80dd003f Bump to latest versions (fixes some misc. icon issues) 2019-05-20 11:24:26 -04:00
dannyrb c4c5e731c4 More context 2019-05-20 11:11:11 -04:00
dannyrb 7550cb5fd5 yalc usage instructions 2019-05-20 11:10:30 -04:00
Danny Brown e3d5a3392a Merge pull request #447 from dannyrb/fix/missing-roboto-font
Fix/missing roboto font
2019-05-19 20:20:59 -04:00
Danny Brown 7f8f84fefd Merge branch 'master' into fix/missing-roboto-font 2019-05-19 20:15:44 -04:00
dannyrb a45eb42e6b Add note regarding preference for SVG over entire font for logo text 2019-05-19 20:15:07 -04:00
dannyrb 05c0e1418c fix(index.html): Add Roboto Google Font dependency 2019-05-19 20:14:39 -04:00
dannyrb bb58a5f9f7 Docs for missing roboto font 2019-05-19 20:13:44 -04:00
Danny Brown 6fa65fa39b Merge pull request #446 from dannyrb/chore/remove-v1-config-files
Remove old configuration files
2019-05-19 15:40:12 -04:00
Danny Brown 3811293f36 Merge branch 'master' into chore/remove-v1-config-files 2019-05-19 15:37:49 -04:00
dannyrb b7a0440109 Remove old configuration files 2019-05-19 15:36:14 -04:00
Danny Brown 8978611869 Merge pull request #444 from dannyrb/fix/icons
Fix/icons
2019-05-17 16:20:25 -04:00
dannyrb 0cb179158e fix(icons): Fix icon path finding 2019-05-17 16:15:41 -04:00
dannyrb a03a3f7e29 sneak in remaining icon fix 2019-05-17 16:14:56 -04:00
dannyrb aa34839bf8 Remove unused setup buttons 2019-05-17 16:14:33 -04:00
dannyrb 4cd1763ab7 Fix // issue with icon path resolution 2019-05-17 16:00:37 -04:00
Danny Brown ab929c2827 Merge pull request #443 from OHIF/readme-fixes
docs(README): Fix URL in README, fix typo in docs
2019-05-17 14:44:30 -04:00
Erik Ziegler ec3f1aa58d docs(README): Fix URL in README, fix typo in docs 2019-05-17 16:24:45 +02:00
Danny Brown 4220419cfa Merge pull request #442 from OHIF/readme-fixes
docs(README.md): Updated README to fix URLs
2019-05-17 10:22:00 -04:00
Erik Ziegler a39aa0088d docs(README.md): Updated README to fix URLs 2019-05-17 16:18:00 +02:00
Danny Brown e24f718081 Merge pull request #441 from dannyrb/fix/docs-deploy
Add .nojekyll file
2019-05-17 09:43:36 -04:00
Danny Brown 2f1b05c095 Merge branch 'master' into fix/docs-deploy 2019-05-17 09:43:30 -04:00
dannyrb c5faa1704d Add .nojekyll file 2019-05-17 09:42:38 -04:00
Danny Brown 83c062df31 Merge pull request #440 from OHIF/publish-docs
fix(publishStaticSite): Set publishStaticSite.sh to executable
2019-05-17 09:34:16 -04:00
Erik Ziegler 51e1f3a547 fix(publishStaticSite): Set publishStaticSite.sh to executable 2019-05-17 15:31:39 +02:00
Danny Brown 149ea452ad Merge pull request #437 from dannyrb/fix/docs-deploy
Try shelling out to use our GITHUB_TOKEN env variable
2019-05-16 01:17:48 -04:00
dannyrb c0d6e4cee9 Try shelling out to use our GITHUB_TOKEN env variable 2019-05-16 01:17:09 -04:00
Danny Brown c9db6e2a26 Merge pull request #436 from dannyrb/fix/docs-deploy
Try stubbed git user info
2019-05-16 00:38:13 -04:00
dannyrb 1c0b064d9b Try stubbed git user info 2019-05-16 00:37:12 -04:00
Danny Brown 9dd2177fa4 Merge pull request #434 from dannyrb/fix/docs-deploy
Trust unknown hosts in docs:publish step
2019-05-16 00:06:11 -04:00
dannyrb 39112c211d Employ same trick for publishing docs "trust" github host 2019-05-16 00:05:19 -04:00
Danny Brown c1c3241be4 Merge pull request #433 from dannyrb/fix/docs-deploy
Rename command to publish
2019-05-15 23:55:56 -04:00
dannyrb 462d4b5f10 Rename command to publish 2019-05-15 23:54:47 -04:00
Danny Brown d09abfd0e8 Merge pull request #432 from dannyrb/fix/docs-deploy
Publish docs to gh-pages on merge to master
2019-05-15 23:16:21 -04:00
dannyrb c90c3e2f98 Publish docs to gh-pages on merge to master 2019-05-15 23:12:46 -04:00
Danny Brown 6f4f098671 Merge pull request #431 from dannyrb/react
🎉 Let there be React 🎉
2019-05-15 22:00:53 -04:00
dannyrb f1b1c83751 Update circleci and semantic-release to handle master merges 2019-05-15 21:55:03 -04:00
dannyrb d69b014721 Merge branch 'master' into react
We're shifting master to a new branch named v1.x. Any changes made since the react branch were forked are not applicable to v2.x development. We'll recursively merge using the "ours" strategy, and then pull this into master to effectively make our "react" version (v2.x) the new master.
2019-05-15 21:47:18 -04:00
Evren Ozkan e9c54f17de fix(dependencies): Bump ohif-cornerstone-extension to 0.0.30 (#430) 2019-05-15 18:54:20 -04:00
Evren Ozkan 5818b654b4 fix(layout): Set currentImageIdIndex to 0 if image is not found (#429)
* fix(layout): Set currentImageIdIndex to 0 if image is not found

* fix(dependencies): Bump react-cornerstone-viewport to 0.1.27
2019-05-15 18:23:18 -04:00
Danny Brown be8c243bf8 Merge pull request #427 from dannyrb/react
Set and use enabled element
2019-05-15 15:50:27 -04:00
dannyrb 776f5b0e8c No need to produce a warning here 2019-05-15 15:45:42 -04:00
dannyrb f925c8a380 bumpity bump bump 2019-05-15 15:09:48 -04:00
dannyrb 3d1a43f52d bump own version 2019-05-15 15:05:32 -04:00
dannyrb 36daa8afe2 bump react-cornerstone-viewport dependency version 2019-05-15 15:05:03 -04:00
dannyrb 49d574d8ac Position this absolutely near the top left of our page 2019-05-15 14:24:04 -04:00
dannyrb f1df6ebba5 bump 2019-05-15 09:22:48 -04:00
dannyrb 724ba44aee fix grabbing enabled element 2019-05-15 09:17:43 -04:00
dannyrb 4ad93943dc bump 2019-05-14 23:21:45 -04:00
dannyrb 2cd3bf2848 bump 2019-05-14 22:15:52 -04:00
dannyrb 557fdce016 less error-prone import 2019-05-14 22:12:34 -04:00
dannyrb 25ae0bddc6 feat(CinePlayer): expose cornerstone enabled element for use in CINE player button actions 2019-05-14 22:00:35 -04:00
dannyrb 0a4fee7337 Use the DOM that should now be set for each viewport to influence button behavior 2019-05-14 21:47:15 -04:00
dannyrb d430596025 Try capturing and setting the dom reference in our viewports module 2019-05-14 21:38:31 -04:00
dannyrb 1ff173b3e8 Capture yarn.lock change 2019-05-14 21:37:20 -04:00
dannyrb cb745a220f Bump dependencies higher up in the config; change react-cornerstone-viewport to the flagged expose-dom release 2019-05-14 21:36:47 -04:00
dannyrb fe3fb0ff50 Merge branch 'react' of github.com:OHIF/Viewers into react 2019-05-14 13:23:02 -04:00
dannyrb b6902e40f6 Cleaning 2019-05-14 13:21:07 -04:00
Evren Ozkan 065a81d6e7 fix(measurements): Show missing measurements in measurement table (#426)
- Bump cornerstone-tools to 3.9.0, ohif-core to 0.5.2 and react-viewerbase to 0.4.1
- Add bidirectional, elliptical, circle and rectangle roi tools
- Support labeling and context-menu for all annotation tools
- Sort measurements by lesion naming number to show the last added measurement in the end in measurement table
2019-05-13 18:07:57 -04:00
Danny Brown 12172eaf48 Merge pull request #425 from dannyrb/docs/update-historical-meteor-docs
Update historical meteor docs
2019-05-13 15:17:30 -04:00
dannyrb e867ec58a4 cp instead of mv 2019-05-13 15:07:02 -04:00
dannyrb 1679a0f93e Try a slightly revised generateStaticSite script 2019-05-13 14:52:13 -04:00
dannyrb 5e37931aad Update summary link 2019-05-13 14:45:34 -04:00
dannyrb 0be2d1e675 Previous version URL and update list formatting 2019-05-13 14:44:02 -04:00
dannyrb d83ebc9ae1 Copy pasta Google Cloud Healtcare docs 2019-05-13 14:31:57 -04:00
dannyrb d27d56b1bf Attempt at fixing a syntax error 2019-05-13 14:31:00 -04:00
dannyrb e12214395b Collective changes since fork 2019-05-13 14:19:33 -04:00
dannyrb e501f268bf Make sure we move all files/folders 2019-05-13 14:13:47 -04:00
Danny Brown 12eefb3108 Merge pull request #424 from dannyrb/docs/last-bits
Note regarding different repositories
2019-05-13 13:54:32 -04:00
dannyrb b6d9b9aefc Tidying up contribution docs 2019-05-13 13:47:42 -04:00
dannyrb d10710ec51 Copy-pasta and trim 2019-05-13 13:14:08 -04:00
dannyrb 9f0004659e Next steps 2019-05-13 13:03:06 -04:00
dannyrb 1eb930239d Configuration 2019-05-13 13:02:41 -04:00
dannyrb e45dcc9f33 Setup and troubleshooting 2019-05-13 13:02:16 -04:00
dannyrb 2333eb294d Requirements 2019-05-13 13:01:38 -04:00
dannyrb 2d2df3a9de Provide diagram as a partial 2019-05-13 12:59:20 -04:00
dannyrb ee31127b08 Explaining web requests, cors, and diagram of flow 2019-05-13 12:58:59 -04:00
dannyrb 69564569dc High level summary 2019-05-13 11:58:43 -04:00
dannyrb 19dc9b6d99 nginx-image-archive diagram 2019-05-13 11:52:11 -04:00
dannyrb 56624fdc6c Note about adding own recipes 2019-05-13 11:39:52 -04:00
dannyrb ae33915991 Helpful image and breakdown of "what is covered" by the viewer/project 2019-05-13 11:31:51 -04:00
dannyrb f3bae8bb8f Scope of project image 2019-05-13 11:31:08 -04:00
dannyrb 633429411d Note regarding different repositories 2019-05-10 15:20:15 -04:00
Danny Brown af48839414 Merge pull request #423 from dannyrb/docs/reamining-cleanup
Docs/reamining cleanup
2019-05-10 15:15:16 -04:00
dannyrb 23eb3a427d Remove data links from sidebar 2019-05-10 15:12:59 -04:00
dannyrb 83987f297c Remove empty data blurb for now 2019-05-10 15:12:46 -04:00
dannyrb e6eec6b1ad OIDC settings and security 2019-05-10 15:09:31 -04:00
dannyrb 10e5f849fe Update data link 2019-05-10 15:09:13 -04:00
dannyrb c8130d1dc8 Outlining security section 2019-05-10 14:53:23 -04:00
dannyrb 24c807bc60 What if my archive doesn't support DicomWeb? 2019-05-10 14:53:09 -04:00
dannyrb bcf1e4058d On proxy and cors 2019-05-10 14:52:46 -04:00
dannyrb cc2d7e0864 No image archive? No problem 2019-05-10 14:52:31 -04:00
dannyrb 252921c470 Point prepared users to the configuration docs 2019-05-10 14:52:14 -04:00
dannyrb 90812d123e Remove docker outline 2019-05-10 14:51:59 -04:00
dannyrb 65724394bd Blurb regarding current state of tool management 2019-05-10 14:04:57 -04:00
dannyrb 169399f9cb Clear out scope-of-project file 2019-05-10 13:58:45 -04:00
dannyrb 90d79ec9e2 White labeling (custom logo) notes 2019-05-10 13:58:30 -04:00
dannyrb e90913b0a5 Fix link 2019-05-10 13:58:04 -04:00
dannyrb e53b57a642 Configuration 2019-05-10 09:55:24 -04:00
dannyrb 5acb30d7f0 Auto-format 2019-05-10 09:51:41 -04:00
dannyrb c1eeba27fc Delete dcm4chee-with-docker guide. If we do this, we'll expose it the same way we did w/ orthanc 2019-05-10 09:49:53 -04:00
dannyrb 2632824feb Architecture --> Scope of project 2019-05-10 09:47:34 -04:00
dannyrb 2f0c40f64a CTA for troubleshooting 2019-05-10 09:47:12 -04:00
dannyrb 5609070fd8 Add installation 2019-05-10 09:46:58 -04:00
dannyrb f8d8e1ad51 Remove empty deployment page 2019-05-10 09:33:39 -04:00
dannyrb 74cac08ce7 Add a snapshot of our config 2019-05-10 09:29:18 -04:00
dannyrb 522f29d359 Note about other image archives 2019-05-10 09:26:03 -04:00
dannyrb 5c8b4c7e0e Requirements for local data source 2019-05-10 09:25:51 -04:00
dannyrb ed91e2678f This is outdated - refer to /docs 2019-05-10 09:18:46 -04:00
dannyrb 2d48893602 Remove publicserver example (we get this for free with CRA) 2019-05-10 09:18:28 -04:00
Danny Brown d0802fa266 Merge pull request #420 from dannyrb/docs/orthanc-proxy
Docs/orthanc proxy
2019-05-10 09:01:51 -04:00
dannyrb 8fc0f4c60a Remove confusing "it should say" comment 2019-05-10 00:38:54 -04:00
dannyrb 010ef0c786 formatting 2019-05-10 00:36:27 -04:00
dannyrb 94d602e6b1 requestFromBrowser is required until we update ohif-core 2019-05-10 00:36:11 -04:00
dannyrb 73713664b2 Nuke orthanc w/ docker old readme 2019-05-10 00:35:50 -04:00
dannyrb a0feaa3dad More data-source fun 2019-05-10 00:35:36 -04:00
dannyrb 399c71b22c Don't check in any orthanc files 2019-05-10 00:13:28 -04:00
dannyrb ec56239b70 Don't check in any orthanc files 2019-05-10 00:13:03 -04:00
dannyrb f42459eb9e Trying to setup local CORS; better docker dir naming 2019-05-10 00:09:04 -04:00
dannyrb 450385391e Simplify spinning up orthanc 2019-05-09 23:25:07 -04:00
dannyrb 7617e23ee6 Shift table to bottom of page 2019-05-09 23:24:50 -04:00
dannyrb 429392e88e Local orthanc instance w/ persistant storage 2019-05-09 23:17:25 -04:00
dannyrb 31838b9ef3 Building for production: quick hits 2019-05-09 22:26:17 -04:00
dannyrb a57309f2c9 Remove meteor-packages file 2019-05-09 22:14:25 -04:00
dannyrb 09369ef2cc Trim getting started 2019-05-09 22:14:01 -04:00
dannyrb 4c1aaa7d00 Add data source page 2019-05-09 22:13:39 -04:00
dannyrb 4a1026340a Themeing docs 2019-05-09 22:13:20 -04:00
dannyrb 6582d6367e Mark required props as required; sensible defaults for optional props 2019-05-09 16:10:14 -04:00
dannyrb 1772317aa3 Remove app props we never see provided 2019-05-09 16:09:34 -04:00
dannyrb cfd1cd0797 Only set a userManager if we have a non-empty oidc array 2019-05-09 16:07:21 -04:00
dannyrb ba33493cf8 More verbose installation steps + flow 2019-05-09 15:48:23 -04:00
dannyrb 354eebf592 Quick CTA regarding meteor vs react versions 2019-05-09 15:48:01 -04:00
dannyrb 925a1dfb73 Add an aliased start script 2019-05-09 15:47:38 -04:00
dannyrb fb1d2beb4a Where to next? 2019-05-09 14:13:28 -04:00
dannyrb 6b53ac8572 Updated introduction page 2019-05-09 14:06:19 -04:00
dannyrb 28e46498f2 Shuffle files around 2019-05-09 13:31:42 -04:00
dannyrb bf7553675d Merge branch 'docs/orthanc-proxy' of github.com:dannyrb/Viewers into docs/orthanc-proxy 2019-05-09 12:16:14 -04:00
dannyrb 52e156fbe6 multi-line so it doesn't break page layout 2019-05-09 12:15:51 -04:00
Danny Brown b7f100f601 Merge branch 'react' into docs/orthanc-proxy 2019-05-09 12:10:16 -04:00
dannyrb 2fac6db880 Formatting 2019-05-09 12:09:21 -04:00
dannyrb 6ee83a8043 Clean up our hodge podge of links 2019-05-09 12:07:46 -04:00
dannyrb 315fb1480e Persist our orthanc data 2019-05-09 12:07:15 -04:00
dannyrb 266e819113 Keycloak theme images 2019-05-09 12:07:02 -04:00
dannyrb 988f9950b8 What we would improve if we had more time 2019-05-09 12:06:36 -04:00
dannyrb 9f664ed896 Using PostgresSql w/ Orthanc 2019-05-09 12:06:23 -04:00
dannyrb fdbc2f16a9 Values to change 2019-05-09 11:25:29 -04:00
dannyrb 289838270a Rebuilding the OHIF Viewer 2019-05-09 11:25:19 -04:00
dannyrb 48e933912f Note regarding SSL next steps 2019-05-09 11:25:00 -04:00
dannyrb 083cfd27d1 Some helpful docker commands 2019-05-09 11:24:48 -04:00
dannyrb ee2bebd974 First time setup 2019-05-09 11:24:33 -04:00
dannyrb 6935cbe373 Commit our secret 2019-05-09 11:08:14 -04:00
dannyrb 060882d93a Switch everything to use the OHIF realm; we can't seed the master realm, because it already exists. 2019-05-09 10:43:59 -04:00
dannyrb b1ef87cfce Set a default custom theme for OHIF login 2019-05-09 08:59:34 -04:00
dannyrb c8f3c3af6c Add reusable diagram 2019-05-08 23:37:45 -04:00
dannyrb 9bab503f32 Lingering image to squash 2019-05-08 22:43:32 -04:00
dannyrb b081ae18eb Add our basic diagram 2019-05-08 22:43:16 -04:00
dannyrb 11cadc3145 Shift design files over to docs/assets 2019-05-08 22:42:26 -04:00
dannyrb dc5eaa13ac Files already exist in docs/v1/assets 2019-05-08 22:35:00 -04:00
dannyrb e573edfd66 Formatting 2019-05-08 20:24:06 -04:00
dannyrb 5cd9d8c819 Warning about access token fail 2019-05-08 20:14:16 -04:00
dannyrb c0ddf5a6c6 Updated seed data for keycloak 2019-05-08 20:13:24 -04:00
dannyrb db281d3219 Auth separate client if token not set 2019-05-08 14:50:26 -04:00
dannyrb d17861bf84 add jwt decoded image 2019-05-08 13:08:02 -04:00
dannyrb 8f2fd7418b Local docker-ignore file 2019-05-08 13:07:50 -04:00
dannyrb 7a4fb95e10 Use JWT auth (don't need to hit auth server) to verify for /pacs/ dicom-web 2019-05-08 13:07:20 -04:00
dannyrb 1803188033 Use a more secure flow, and be more explicit with redirects for security's sake 2019-05-08 13:06:15 -04:00
dannyrb acbb593cec Make sure we're setting our bearer token; not basic auth 2019-05-08 13:03:17 -04:00
dannyrb 5e8f5360b6 Load catch-all static assets to bottom of route matching 2019-05-08 09:01:04 -04:00
dannyrb c33b468f1e Group related lines 2019-05-08 08:59:33 -04:00
dannyrb 88517fc282 Group related lines 2019-05-08 08:59:13 -04:00
dannyrb f495ccfa3f Clean up oidc config 2019-05-07 15:42:11 -04:00
dannyrb aa768c7fd4 Add server_tokens note 2019-05-07 12:37:16 -04:00
dannyrb 88c6efd139 Prefer explicit IP over localhost 2019-05-07 12:36:58 -04:00
dannyrb 0a61ef1bb5 Include mime.types without the server crashing 2019-05-07 12:36:39 -04:00
dannyrb cccbe235e0 Setup error/access logs in config 2019-05-07 12:36:21 -04:00
dannyrb f6e0c553f5 Fix error/access log mounts 2019-05-07 12:35:55 -04:00
dannyrb fdb7a99a33 More specific orthanc setup 2019-05-07 12:35:36 -04:00
dannyrb c057357515 Fixing keycloak + postgres setup 2019-05-07 12:34:58 -04:00
dannyrb 512f640e8a Init keycloak with a predictable realm/client/setting/secret 2019-05-07 12:33:18 -04:00
dannyrb 8ebabc1447 Provide a default orthanc.json that includes plugin locations for the image 2019-05-07 12:29:55 -04:00
dannyrb 548e974f69 Init oidc twice 2019-05-07 12:29:34 -04:00
dannyrb 4928085416 Use a specific version 2019-05-07 12:28:53 -04:00
dannyrb c9fcedb247 Begin laying out keycloak configuration 2019-05-06 16:01:45 -04:00
dannyrb dc16e0856c Clean up docker-compose 2019-05-06 16:01:07 -04:00
dannyrb 93624f9941 Comment out incorrect mime.types location 2019-05-06 16:00:25 -04:00
dannyrb a4933447ec Move log files up top 2019-05-06 16:00:00 -04:00
dannyrb 8e939eb491 Revised dockerfile notes 2019-05-06 14:11:40 -04:00
dannyrb f8f4584f4e Remove unreferenced config files 2019-05-06 13:49:52 -04:00
dannyrb 411baa702a Shift and rename files to match defaults 2019-05-06 13:47:33 -04:00
dannyrb 8114f4fe48 Begin writing UAC docs now that we have a workign example 2019-05-06 13:03:35 -04:00
dannyrb 1d7527c919 Cleaning up nginx config file and adding notes 2019-05-06 13:03:00 -04:00
dannyrb 915fee5eb0 docker-compose 2019-05-04 21:51:53 -04:00
dannyrb e1ddbd9777 Rename the simpler dockerfile in root to dockerfile-web 2019-05-04 21:51:26 -04:00
dannyrb 9f9e8c9635 Replaced this with the dockerfile in root 2019-05-04 21:51:09 -04:00
dannyrb d9ee7dd3b3 second config 2019-05-04 21:50:53 -04:00
dannyrb 471378e4d8 Disable orthanc authentication 2019-05-04 21:50:08 -04:00
dannyrb c8b3374899 Playing with different js configs 2019-05-04 21:49:46 -04:00
dannyrb 24e47d6810 Some rough notes for myself 2019-05-04 21:49:16 -04:00
dannyrb 2b71866bdb Note regarding command to build image 2019-05-03 21:21:42 -04:00
dannyrb 0852e33cd1 Copy our build output into a folder we can serve (static content; pwa) 2019-05-03 21:21:11 -04:00
dannyrb 337bd5ffc9 Switch to openresty image (nginx with some lua magic) 2019-05-03 21:20:43 -04:00
dannyrb ea7e7e3292 Set the config we'd like to use when building our app 2019-05-03 21:19:41 -04:00
dannyrb 08db413024 Use first client config to create our UserManager 2019-05-03 21:18:13 -04:00
Evren Ozkan c9ddb23d9c Add measurement table functions (#415)
* fix(measurements): Add measurement table functions
- Support for labeling measurements and adding measurement description
- Jump to measurement when clicked on measurement table

* fix(layout): Fix the issues with layout when switched with different plugins

* fix(measurements): Support for deleting measurements in measurement table

* fix(measurements): Add context menu for measurements

* fix(dependencies): Bump ohif-core to 0.4.2
2019-05-02 17:12:06 -04:00
dannyrb 2a56ec5c5f Keycloak and authproxy 2019-05-02 12:59:31 -04:00
Danny Brown 0bab19985e Merge pull request #416 from dannyrb/docs/orthanc-proxy
Docs/orthanc proxy
2019-05-02 08:54:41 -04:00
dannyrb 6a84c377fc Use build output folder; not public folder 2019-05-01 16:39:20 -04:00
dannyrb 3821e8a4d9 Copy the build output directory; not the unbuilt public files 2019-05-01 16:38:34 -04:00
dannyrb b8dd70f2c8 Some comments 2019-05-01 16:38:17 -04:00
dannyrb 7c62466994 docker-compose note 2019-05-01 16:37:53 -04:00
Danny Brown efcdad7e67 Merge pull request #414 from dannyrb/fix/broken-icons-link
fix(App.js): Fixed broken toolbar icons not rendering with base tag r…
2019-05-01 13:37:26 -04:00
dannyrb 2cbeb26eb4 Make sure our baseDirectory ends in a forward slash 2019-05-01 13:28:18 -04:00
dannyrb f583af0f20 Remove typo in names 2019-05-01 13:13:11 -04:00
dannyrb 7f52bade3e Pull config from window for now 2019-05-01 13:10:44 -04:00
dannyrb 94e45b1b65 Add unit test 2019-05-01 13:07:43 -04:00
dannyrb 3a38bdd416 fix(App.js): Fixed broken toolbar icons not rendering with base tag removed 2019-05-01 12:56:41 -04:00
Danny Brown 6bed32d229 Merge pull request #412 from dannyrb/deploying-static-site-2
Guide for different static asset hosts/deployment
2019-05-01 12:37:27 -04:00
dannyrb ac86c178d2 Fix typo 2019-05-01 12:30:52 -04:00
dannyrb 7cd85f78af Update guide links 2019-05-01 12:14:34 -04:00
dannyrb dfd5c28d9f Links for AWS/GCP/Azure 2019-05-01 12:10:44 -04:00
dannyrb 22a05ba718 Copy links from top of deploy-static 2019-05-01 11:55:58 -04:00
Danny Brown 7914adb033 Merge branch 'react' into deploying-static-site-2 2019-05-01 11:53:36 -04:00
dannyrb 4e9890bec6 Merge branch 'deploying-static-site-2' of github.com:dannyrb/Viewers into deploying-static-site-2 2019-05-01 11:52:39 -04:00
dannyrb 4d1b88d251 Begin stubbing 2019-05-01 11:52:33 -04:00
dannyrb 3fcae202c8 GitHub pages and advanced pre-amble 2019-05-01 11:52:11 -04:00
Evren Ozkan 7ff9a87b6e fix(wado-proxy): Use wado proxy to retrieve images if enabled in configuration 2019-05-01 11:27:53 -04:00
dannyrb 66925566a2 Hammering out the easier deployment providers 2019-05-01 11:22:52 -04:00
dannyrb 4c6dd2f61d Add netlify drop GIF 2019-05-01 08:42:40 -04:00
dannyrb 553806f612 Show settings; CTA: Netlify-Drop 2019-05-01 08:42:22 -04:00
dannyrb 11ee986ad4 Formatting; change image location 2019-05-01 08:41:41 -04:00
Evren Ozkan 4532d2fe7f bump(dependencies): Bump ohif-cornerstone-extension to 0.0.28 and react-viewerbase to 0.3.2 2019-04-30 16:47:14 -04:00
Danny Brown fd3c8161f7 Merge pull request #411 from dannyrb/deploying-static-site-2
fix webworkers
2019-04-30 16:16:19 -04:00
Danny Brown c555bd9fa2 Merge branch 'react' into deploying-static-site-2 2019-04-30 16:12:16 -04:00
dannyrb 686f613fd0 Use absolute path for webworker scripts 2019-04-30 16:11:06 -04:00
Danny Brown 09b71f6c2b Merge pull request #410 from dannyrb/deploying-static-site-2
docs: stand-alone static deploy
2019-04-30 15:58:56 -04:00
dannyrb 4cecdcc3dc Defaults 2019-04-30 13:37:28 -04:00
dannyrb 81cf8cbd7c Set ENV variables in scripts instead of in build 2019-04-30 13:36:25 -04:00
dannyrb 33d06dba4e how it works 2019-04-30 11:56:13 -04:00
dannyrb 0909ab7c53 Transition to configuration 2019-04-30 10:39:24 -04:00
dannyrb b5cac7191d add .js to app config 2019-04-30 10:08:10 -04:00
dannyrb 140c0b48e7 Merge branch 'deploying-static-site-2' into react-upstream 2019-04-30 09:59:16 -04:00
dannyrb 8e4b0ac737 Merge build and restore sections 2019-04-30 09:52:51 -04:00
Danny Brown 12f6553432 Merge pull request #395 from OHIF/react-documentation
React documentation
2019-04-30 09:51:44 -04:00
Danny Brown 22bf63f279 Merge branch 'react' into react-documentation 2019-04-30 09:45:33 -04:00
biharck 5938ffb676 removing example folder 2019-04-30 10:38:45 -03:00
biharck 530b86d752 Merge branch 'react-documentation' of github.com:OHIF/Viewers into react-documentation 2019-04-30 10:36:37 -03:00
biharck b186e86906 adding --max_old_space_size=4096 to the build:web task 2019-04-30 10:35:35 -03:00
biharck 4853d4fae4 updating .dockignore file and fixing dockerfile 2019-04-30 10:35:09 -03:00
biharck f8e8acd9e9 updating docker-compose files to adhere new way to deploy 2019-04-30 10:33:47 -03:00
biharck e39e3dd5d5 merge from ract and adding docker-compose PACs configuration files 2019-04-30 10:32:53 -03:00
dannyrb d844308e32 Add test for utils folder grouped exports 2019-04-30 00:03:47 -04:00
dannyrb bff397d88e Rough notes "Build for Production" 2019-04-29 23:49:29 -04:00
dannyrb 70a9b9ca06 For step 1, point users to the "build for production" guide 2019-04-29 23:11:04 -04:00
dannyrb 6e058ef312 Update link to point to react branch 2019-04-29 21:48:38 -04:00
dannyrb 1b14730013 Begin detailing steps to build for production (host static assets) 2019-04-29 21:48:26 -04:00
dannyrb b3b5f5321f Add build for production page 2019-04-29 21:48:03 -04:00
Danny Brown 27065dd303 Merge pull request #408 from dannyrb/docs/deploying-static-site
Docs/deploying static site
2019-04-29 16:26:15 -04:00
dannyrb b279d1fc82 Don't collect coverage from __test__ dirs 2019-04-29 16:23:38 -04:00
dannyrb 88733202de Use default config when building for scripts package 2019-04-29 16:17:02 -04:00
dannyrb 0b87dc4ddb formatting 2019-04-29 15:53:46 -04:00
dannyrb ed5fdb1de2 Test that we return _something_ 2019-04-29 15:52:04 -04:00
dannyrb 97a8a4f52c Super basic oidc tests 2019-04-29 15:42:21 -04:00
dannyrb 69fb4d7947 Shift oidc and initWebworkers to own files 2019-04-29 15:39:09 -04:00
dannyrb 70f83f131a Try to find ideal defaults 2019-04-29 15:06:17 -04:00
dannyrb a5146e6f38 Remove basetag 2019-04-29 15:00:51 -04:00
dannyrb 319af9bde3 Nuke root url 2019-04-29 14:42:29 -04:00
dannyrb 1d7ddd5bf5 Delete examples/ 2019-04-29 14:18:13 -04:00
dannyrb 6177a02f18 Shift default config to own file 2019-04-29 13:29:37 -04:00
dannyrb 0d5ac9ce4c Fix build script to point at /demo 2019-04-29 13:21:14 -04:00
dannyrb eec3155298 Simplify loading init config 2019-04-29 13:20:11 -04:00
dannyrb 775a91152c Specify our netlify config 2019-04-29 13:19:17 -04:00
dannyrb 0748f27cf2 Import a public config 2019-04-29 13:18:41 -04:00
dannyrb 4127126388 remove homepage key 2019-04-29 12:58:57 -04:00
dannyrb 50e8cf341a Add dotenv syntax highlighting to list of recommended extensions 2019-04-29 12:58:34 -04:00
Danny Brown 70ddba7aed Merge branch 'react' into react-documentation 2019-04-29 10:25:47 -04:00
dannyrb e43139eec5 Be a bit more explicit with homepage url 2019-04-29 09:50:31 -04:00
dannyrb c9b043420b Revert codesplitting 2019-04-29 09:22:20 -04:00
dannyrb 0c09e073b6 Cast a wider net 2019-04-29 09:13:31 -04:00
dannyrb 6286893eb8 Rollup support for dynamic import 2019-04-29 08:58:15 -04:00
dannyrb 68b021fc80 Try a demo only redirect 2019-04-29 08:52:52 -04:00
dannyrb a7f77ca543 Send over everything, not just top level dir 2019-04-29 08:35:58 -04:00
dannyrb e5865515e7 formatting 2019-04-29 08:33:48 -04:00
dannyrb 19aa4b23cd Codesplit at route level 2019-04-29 08:32:49 -04:00
dannyrb 5713de49e2 Remove unused routes/index.js 2019-04-29 08:32:26 -04:00
dannyrb 91613d6bb0 Async component for dynamic imports 2019-04-29 08:31:40 -04:00
dannyrb f02559c778 Try an all-in-one script 2019-04-29 07:03:54 -04:00
dannyrb 803aaafdcf Use CPX command 2019-04-29 06:52:02 -04:00
dannyrb 5aba221957 Try to limit heap size during build 2019-04-28 19:12:51 -04:00
dannyrb fbd75ed1e7 Formatting; rename BrowserRouter to Router 2019-04-28 15:54:56 -04:00
dannyrb c94c8003d7 Fix copy path 2019-04-28 15:36:19 -04:00
dannyrb 5cdfc64ccf Set PUBLIC_URL to demo 2019-04-28 15:35:10 -04:00
dannyrb af2be5c1e0 Copy all build output to /demo 2019-04-28 15:25:53 -04:00
Danny Brown 6f0a222e17 Merge branch 'react' into docs/deploying-static-site 2019-04-28 15:16:56 -04:00
dannyrb 66f587a5f9 Pull info from node env var, not package.json 2019-04-28 15:14:20 -04:00
dannyrb 3447c80a6a Split build command; one for web, one for package source 2019-04-28 14:59:47 -04:00
Danny Brown 26e934493c Merge pull request #407 from dannyrb/docs/deploying-static-site
docs: deploying as a static site
2019-04-28 14:38:23 -04:00
dannyrb 8a16892a0c Unused files 2019-04-28 14:33:25 -04:00
dannyrb 32f8d74327 Spelling 2019-04-28 14:32:28 -04:00
dannyrb 213d88ed46 Cleaning up menu further 2019-04-28 14:32:00 -04:00
dannyrb b6a189700e Rough outline for data section 2019-04-28 14:26:03 -04:00
dannyrb f08e589cd2 Footer links to ease readability 2019-04-28 14:02:41 -04:00
dannyrb fcd2d63c5b Stand-alone viewer section 2019-04-28 13:44:51 -04:00
dannyrb 1ae6704ed0 Update menu 2019-04-28 13:44:33 -04:00
dannyrb 398f4eb5ec Formatting 2019-04-28 13:44:07 -04:00
dannyrb 0b8626496b Fix start number 2019-04-28 12:58:25 -04:00
dannyrb c1f7e0ef65 Help page 2019-04-28 12:53:20 -04:00
dannyrb 85e3240597 FAQ formatting 2019-04-28 12:52:31 -04:00
dannyrb 223d986f82 Embedded viewer docs 2019-04-28 12:52:10 -04:00
dannyrb 3b8987ecb1 Embedded viewer deployment scenario 2019-04-28 11:04:27 -04:00
dannyrb aad2916933 Embedded-viewer-diagram assets and images 2019-04-28 11:03:59 -04:00
dannyrb c01f3aa920 High level summary of deployment 2019-04-27 16:23:25 -04:00
dannyrb b820f885a1 Switch sidebar and file locations up for more logical grouping 2019-04-27 15:44:02 -04:00
biharck a8fc20ede4 fixing run-queue-1.0.3 integrity 2019-04-26 22:47:44 -03:00
biharck 276d304f7a fixing yarn lock file 2019-04-26 22:41:42 -03:00
biharck bfedc907bb merging with react branch 2019-04-26 22:34:57 -03:00
biharck 5d34a85d05 adding Troubleshooting details when docker needs to increase memory size 2019-04-26 22:30:50 -03:00
biharck b0d06baf29 adding more details at the getting-started readme and changing react index to use .js config files 2019-04-26 22:20:17 -03:00
biharck 610aeb1b9a rolling back querystring 2019-04-26 22:04:11 -03:00
Danny Brown 1169ad028a Merge pull request #406 from dannyrb/chore/repository-cleanup
test semantic-release w/ dry run flag
2019-04-26 16:33:14 -04:00
Danny Brown a407dfa3f7 Merge branch 'react' into chore/repository-cleanup 2019-04-26 16:29:49 -04:00
dannyrb bb748a2ec3 Test w/ dry run flag 2019-04-26 16:28:05 -04:00
biharck 7991b41287 moving config files from json to js objects and injecting them at example page 2019-04-26 17:16:41 -03:00
biharck ceafbbcdb8 moving config files from json to js objects and injecting them at example page 2019-04-26 17:07:25 -03:00
Danny Brown 4f4dae75aa Merge pull request #405 from dannyrb/chore/repository-cleanup
Attempt release with --no-ci flag
2019-04-26 15:43:03 -04:00
dannyrb 6c438b4e11 Attempt release with --no-ci flag 2019-04-26 15:41:40 -04:00
Danny Brown 2d82838c2b Merge pull request #404 from dannyrb/chore/repository-cleanup
Specify branch differently in releaserc
2019-04-26 15:22:15 -04:00
dannyrb 9c84420e4a Merge branch 'chore/repository-cleanup' of github.com:dannyrb/Viewers into chore/repository-cleanup 2019-04-26 15:21:13 -04:00
dannyrb 15b771fedc Specify branch differently in releaserc 2019-04-26 15:21:07 -04:00
Danny Brown ad5187a92b Merge pull request #403 from dannyrb/chore/repository-cleanup
Debug why we're not cutting a release
2019-04-26 15:11:20 -04:00
Danny Brown cbf5aab550 Merge branch 'react' into chore/repository-cleanup 2019-04-26 15:11:10 -04:00
dannyrb 47fa31542d Debug why we're not cutting a release 2019-04-26 15:09:35 -04:00
Danny Brown 7c06e214ad Merge pull request #402 from dannyrb/chore/repository-cleanup
Chore/repository cleanup
2019-04-26 14:43:30 -04:00
dannyrb 5a91b5704b fix(package.json): Test automatic build and release w/ semantic-release 2019-04-26 14:39:03 -04:00
dannyrb e55787e184 ci(package.json): Support for yarn run cm via commitizen for well formatted commit messages 2019-04-26 14:37:25 -04:00
Danny Brown f20822bd3d Merge branch 'react' into chore/repository-cleanup 2019-04-26 14:28:52 -04:00
dannyrb d43fc16c06 Configure react branch as release branch 2019-04-26 14:27:29 -04:00
dannyrb c4c94883cc Publish a new version when merged to react branch 2019-04-26 14:24:59 -04:00
Danny Brown 3279ab37c1 Merge branch 'react' into react-documentation 2019-04-26 11:52:21 -04:00
dannyrb 895f13257a Use exact version of ohif-core 2019-04-26 11:50:07 -04:00
biharck accb4fd2bb wip to fix jquery-hotkeys 2019-04-26 11:00:27 -03:00
biharck 4821705d68 fixing typo 2019-04-25 14:47:26 -03:00
biharck 09e0601a4f adding dcm4che docker-compose file 2019-04-25 14:21:28 -03:00
biharck 8a4b334840 fixing generateStaticSite 2019-04-24 22:55:08 -03:00
biharck eb15358563 adding orthanc to the readme file 2019-04-24 22:27:33 -03:00
biharck 0ab6b73440 fixing cors issue 2019-04-24 22:23:06 -03:00
biharck 803dbc54bc temporary change to emulate orthanc 2019-04-24 15:20:23 -03:00
biharck 79b974179e Adding proxy for orthanc 2019-04-24 15:14:26 -03:00
biharck 06e754834f adding docker-compose readme and fixing docker-compose context 2019-04-24 09:16:08 -03:00
biharck af9ee3664f skiping deps folder 2019-04-24 09:01:37 -03:00
biharck 2fa8567cd9 Replacing query-string to querystring 2019-04-24 09:00:36 -03:00
biharck a4dfcaa0dc adding docker file 2019-04-24 09:00:03 -03:00
biharck 667da2a4b8 Merge branch 'react' into react-documentation 2019-04-19 18:06:45 -03:00
biharck 99d1fd7e26 adding dockerignore file 2019-04-19 18:05:38 -03:00
biharck 04443494b0 adding orthanc configuration file and into the readme file 2019-04-19 09:58:30 -03:00
biharck 3cdd62a94f adding orthanc details 2019-04-18 10:07:46 -03:00
biharck 68c6913375 adding gifs and adding more details on getting started 2019-04-18 09:29:27 -03:00
Egor Lezhnin 46ed339579 fix(google-cloud): Update healthcare-api-adapter to use v1beta1 URLs (#379) 2019-04-08 13:10:29 +02:00
Erik Ziegler 9270fbf78d docs(google-cloud): Update Google Cloud docs to clarify instructions 2019-04-05 17:37:45 +02:00
Dusan Zelembaba 9d83a1e6cc Restrict Scope for Cloud Healthcare API Example Config (#378)
The integration only needs read access to projects not all cloud
platform resources.
2019-04-05 16:13:14 +02:00
Erik Ziegler 6c9270b3de fix(dockerfile): Fix jessie-updates issues with node:8.10.0-slim image 2019-04-04 09:02:15 +02:00
Erik Ziegler 6586c03af1 feat(google-cloud): Add docs for how to use OHIF against Google Cloud Healthcare 2019-04-03 18:17:38 +02:00
Erik Ziegler 416b4ade38 feat(google-cloud): Add an example configuration for Google Cloud Healthcare (you may need to enable the Cloud Resource Manager API) 2019-03-22 16:47:22 +01:00
Erik Ziegler c0549967c6 fix(toolbar): Remove unnecessary Presentation State button 2019-03-22 16:43:39 +01:00
Erik Ziegler 46828dc5ce fix(google-cloud): Minor cleanup to prevent Google Cloud packages from being added unnecessarily 2019-03-22 16:43:31 +01:00
Egor Lezhnin 9486522552 feat(google-cloud): Add support for Google Cloud Healthcare API DICOM Store Switch (#325)
* NOTASK: PoC for loading data from Healthcare API

* NOTASK: PoC for loading data from Healthcare API fix

* Add sample dialog for loading test dicom-picker

* Fix incorrect promise resolving

* NOTASK: PoC for loading dicom store

* Add web-components as git submodules. (Probably will be changed later)

* Add rough dicomStore picker

* Add dataset selector

* NOTASK: QIDO metadata first draft

* NOTASK: Not Implemented error for color images

* NOTASK: clean-up

* Dicom files uploader intermediate version

* NOTASK: Accept header

* NOTASK: docker configs

* NOTASK: fix

* NOTASK: howTo

* Add draft of DICOM uploader

* Add missing files

* Fix error with missing clientId

* Update submodule

* NOTASK: HowTo

* NOTASK: config for dev

* NOTASK: new docker file

* clean-up

* Update GCP web-components

* Add integration with async web components

* Fix errors in nginx.conf

* Structured reports views basic implementation

* NOTASK: qido -> wado

* NOTASK: config fix

* NOTASK: dirty copy-paste implementation

* Add "Change dicom store" button.
Add an ability to clear date.
Fix bug, when OAuth dosn't work if URL is not /

* Fix studylist filtering

* Fix dockerfile

* NOTASK: meteor update

* NOTASK: fix of package structure

* NOTASK: merge fix

* improvements

Move check for now SR into SR modal
Use simple button to open SR modal
Remove button styling
cleanup

* copy SR data retrieval to wado

* make search of SR simpler

* Codestyle fix

* NOTASK: palette color error message

* Fix date filter.
Fix server settings on first loading.
Add SR and PS buttons

* NOTASK: PS is now hidden by default

* NOTASK: dirty solution

* NOTASK:  new wadoimage lib version

* Fix PS and SR buttons

* Make modal dialogs vertically centered

* Update web components. Quick UI fixes

* Add missing files to the previous commit

* NOTASK:  show-hide for PS

* NOTASK:  show-hide for PS

* NOTASK:  fix of min-max PixelValue bug

* Add "sign out" functionality for Google OAuth. Update web-components.

* intermediate commit

* Add demo signin page

* Beautifying demo sign in page

* NOTASK:  merge

* NOTASK:  clean-up

* Use npm for getting healthcare-api-adapter instead of git submodule.

* NOTASK:  clean-up

* meteor update

* clean-up

* clean-up

* Clean up code

* Update healthcare-api-adapter version. Add location to dicom store path. Fix buttons style.

* Downgrade meteor and packages to master version. Use meteor-build-client-fixed2
2019-03-22 16:42:26 +01:00
Erik Ziegler 1783351f57 Update dicomweb-client to 0.4.2 2019-02-08 09:41:12 +01:00
Erik Ziegler 85a88744d5 Fix duplicate eventData variable in measurementHandlers 2019-02-08 09:30:42 +01:00
James Petts 9c97d6229e fix typo: e -> eventData. 2019-02-05 12:18:31 +00:00
Biharck Araujo c228d94690 Merge pull request #345 from biharck/master
including skip configuration if the push comes from external PR
2019-01-31 13:44:12 -02:00
biharck 386eeddcd9 including skip configuration if the push comes from external PR 2019-01-31 11:23:35 -02:00
James Petts 4579543bde Fixed memory leak by properly triggering remove. (#339) 2019-01-23 09:38:18 +01:00
Zaid Safadi fa4b768214 Update references to meteor-build-client-fixed to use the new version and supporting legacy browsers. (#334) 2019-01-16 10:35:52 +01:00
Ubaldo Mattos e1d846e3f7 Create environment-installations.md 2018-12-24 19:09:28 -02:00
Ubaldo Mattos 995e8220cf Delete teste.md 2018-12-24 11:28:44 -02:00
Ubaldo Mattos ecc659e066 Create teste.md 2018-12-24 11:28:09 -02:00
Ubaldo Mattos 7724230ed7 Update README.MD 2018-12-23 13:10:11 -02:00
Ubaldo Mattos 5ed8d80c92 Update README.md 2018-12-23 13:09:47 -02:00
Ubaldo Mattos 718ad120c5 Update README.md 2018-12-23 13:09:03 -02:00
Ubaldo Mattos 5eb5ee1aa8 Standalone Installation Instructions for Windows Server 2016 2018-12-23 13:07:08 -02:00
Ubaldo Mattos a3dc19ed44 Standalone Installation Instructions for Windows 2016 2018-12-23 13:06:33 -02:00
Ubaldo Mattos 9c0bf74a8c Standalone installation Instructions
Standalone installation Instructions for Windows Server 2016
2018-12-23 13:05:51 -02:00
Ubaldo Mattos 36cb273c3c Rename Standalone-Installation-Instructions-For-Windows-Server-2016.md to Standalone-Installation-Instructions.md 2018-12-23 13:04:07 -02:00
Ubaldo Mattos cb9cf192e9 Create Standalone-Installation-Instructions-For-Windows-Server-2016.md 2018-12-23 13:02:24 -02:00
Ubaldo Mattos 8abcf9aed4 Create README.md 2018-12-23 13:00:46 -02:00
Ubaldo Mattos 0b048cfa72 Create README.md 2018-12-23 12:38:05 -02:00
Ubaldo Mattos eb5b41fcbc Create README.MD 2018-12-23 12:37:30 -02:00
Ubaldo Mattos 72be17fd88 Delete README.md 2018-12-23 12:37:02 -02:00
Ubaldo Mattos c0baa7e10b Delete README.md 2018-12-23 12:36:52 -02:00
Ubaldo Mattos d5944c64bb Create README.md 2018-12-23 12:34:50 -02:00
Ubaldo Mattos 124b6f3cbe Update README.md 2018-12-23 12:33:50 -02:00
Ubaldo Mattos 093bd11bc5 Create README.md 2018-12-23 12:33:00 -02:00
Ubaldo Mattos 1b8e0622f7 Delete README.md 2018-12-23 12:32:24 -02:00
Ubaldo Mattos 35db826556 Delete Windows Server 2016.md 2018-12-23 12:32:11 -02:00
Ubaldo Mattos 9dde9697e6 Create README.md 2018-12-23 12:30:30 -02:00
Ubaldo Mattos 23f93cb85f Update Windows Server 2016.md 2018-12-23 12:28:01 -02:00
Ubaldo Mattos f67b94f4a8 Update Windows Server 2016.md 2018-12-23 12:26:29 -02:00
Ubaldo Mattos 1a3c6c5b75 Update Windows Server 2016.md 2018-12-23 12:25:42 -02:00
Ubaldo Mattos e7b500b04e Update Windows Server 2016.md 2018-12-23 12:24:49 -02:00
Ubaldo Mattos e2d38e6637 Update Windows Server 2016.md 2018-12-23 12:23:51 -02:00
Ubaldo Mattos a1ed687ec7 Update Windows Server 2016.md 2018-12-23 12:22:38 -02:00
Ubaldo Mattos 83e6e890a4 Update Windows Server 2016.md 2018-12-23 12:22:09 -02:00
Ubaldo Mattos 9799778873 Update Windows Server 2016.md 2018-12-23 12:21:58 -02:00
Ubaldo Mattos f3a4bbc63a Update Windows Server 2016.md 2018-12-23 12:19:40 -02:00
Ubaldo Mattos 0038a1d9e1 Update Windows Server 2016.md 2018-12-23 12:18:40 -02:00
Ubaldo Mattos 07c6d1f5bd Update Windows Server 2016.md 2018-12-23 12:18:22 -02:00
Ubaldo Mattos e16da38bc1 Update Windows Server 2016.md 2018-12-23 12:18:06 -02:00
Ubaldo Mattos 0258774875 Update Windows Server 2016.md 2018-12-23 12:12:16 -02:00
Ubaldo Mattos 2194779f87 Update Windows Server 2016.md 2018-12-23 11:56:07 -02:00
Ubaldo Mattos 9f94525996 Update Windows Server 2016.md 2018-12-23 11:55:00 -02:00
Ubaldo Mattos 433c81f451 Update Windows Server 2016.md 2018-12-23 11:54:33 -02:00
Ubaldo Mattos 2f600c4535 Update Windows Server 2016.md 2018-12-23 11:54:04 -02:00
Ubaldo Mattos 833e84fd76 Update Windows Server 2016.md 2018-12-23 11:53:32 -02:00
Ubaldo Mattos 3b280ab41c Update Windows Server 2016.md 2018-12-23 10:07:29 -02:00
Ubaldo Mattos a6e07bf4a1 Update Windows Server 2016.md 2018-12-23 10:06:24 -02:00
Ubaldo Mattos 4df497ff78 Update Windows Server 2016.md 2018-12-23 10:05:24 -02:00
Ubaldo Mattos 4fce726d86 Update Windows Server 2016.md 2018-12-23 10:04:17 -02:00
Ubaldo Mattos e42ae11936 Update Windows Server 2016.md 2018-12-23 09:54:43 -02:00
Ubaldo Mattos 7e72ea591b Update Windows Server 2016.md 2018-12-23 09:48:18 -02:00
Ubaldo Mattos 09dc550f4c Create Windows Server 2016.md
This file is the first of a serie with information about how to install OHIF viewer on client machines.
2018-12-23 09:45:00 -02:00
Evren Ozkan e508a59ee3 fix(thumbnails): Prevent caching for thumbnail images by using canvas element (thanks @jasonklotzer) 2018-12-19 10:29:45 -05:00
Zaid Safadi 7643a384b4 Update cornerstone libs (wado) to latest and fix Incorrect ultrasound measurement #319 (#323) 2018-12-17 23:33:30 +01:00
nicolasvandooren 947a5f470d feat(standalone-viewer): Add authorization header (#322) 2018-12-12 18:01:46 +01:00
1171 changed files with 67308 additions and 59673 deletions

No files matched your search

-18
View File
@@ -1,18 +0,0 @@
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"ie": "11"
}
}
],
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-transform-regenerator",
"@babel/plugin-transform-runtime"
]
}
+6
View File
@@ -0,0 +1,6 @@
# Browsers that we support
> 1%
IE 11
not dead
not op_mini all
+69
View File
@@ -0,0 +1,69 @@
#!/bin/bash
# Set directory to location of this script
# https://stackoverflow.com/a/3355423/1867984
cd "$(dirname "$0")"
yarn -v
node -v
echo 'Installing Gitbook CLI'
yarn global bin
yarn config get prefix
yarn config set prefix ~/.yarn
export PATH="$PATH:`yarn global bin`"
echo 'Running Gitbook installation'
# Generate all version's GitBook output
# For each directory in /docs ...
cd ./../docs/
for D in *; do
if [ -d "${D}" ]; then
echo "Generating output for: ${D}"
cd "${D}"
# Clear previous output, generate new
rm -rf _book
gitbook install
gitbook build
cd ..
fi
done
# Move CNAME File into `latest`
cp CNAME ./latest/_book/CNAME
# Create a history folder in our latest version's output
mkdir ./latest/_book/history
# Move each version's files to latest's history folder
for D in *; do
if [ -d "${D}" ]; then
if [ "${D}" == v* ] ; then
echo "Moving ${D} to the latest version's history folder"
mkdir "./latest/_book/history/${D}"
cp -v -r "./${D}/_book"/* "./latest/_book/history/${D}"
fi
fi
done
# Back to repo root
cd ..
echo "Done generating documentation output"
echo 'STARTING PUBLISH'
# WILL ALWAYS FAIL IF INITIATED FROM PR BRANCH
./node_modules/.bin/gh-pages \
--silent \
--repo https://$GITHUB_TOKEN@github.com/OHIF/Viewers.git \
--message 'Autogenerated Message: [ci skip]' \
--dist docs/latest/_book
+287 -40
View File
@@ -1,4 +1,4 @@
version: 2
version: 2.1
### ABOUT
#
@@ -9,19 +9,31 @@ version: 2
# create pull request previews and to update `https://docs.ohif.org`
###
orbs:
codecov: codecov/codecov@1.0.5
cypress: cypress-io/cypress@1.8.0
defaults: &defaults
working_directory: ~/repo
docker:
- image: circleci/node:10.15.1
- image: circleci/node:10.16.0
environment:
TERM: xterm # Enable colors in term
working_directory: ~/repo
jobs:
build_and_test:
PR_UNIT_TESTS:
<<: *defaults
steps:
# Download and cache dependencies
- checkout
# Enable yarn workspaces
- run: yarn config set workspaces-experimental true
# Checkout code and ALL Git Tags
- checkout:
post:
- git fetch --all
- restore_cache:
name: Restore Yarn Package Cache
name: Restore Yarn and Cypress Package Cache
keys:
# when lock file changes, use increasingly general patterns to restore cache
- yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
@@ -33,63 +45,298 @@ jobs:
- save_cache:
name: Save Yarn Package Cache
paths:
- ~/.cache/yarn
- ~/.cache ## Cache yarn and Cypress
key: yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
# Build & Test
- run: yarn build
# https://www.viget.com/articles/using-junit-on-circleci-2-0-with-jest-and-eslint/
# RUN TESTS
- run:
name: 'JavaScript Test Suite'
command: yarn test:ci
environment:
JEST_JUNIT_OUTPUT: 'reports/junit/js-test-results.xml'
command: yarn run test:unit:ci
# Store result
- store_test_results:
path: reports/junit
- store_artifacts:
path: reports/junit
# PLATFORM/VIEWER
- run:
name: 'VIEWER: Combine report output'
command: |
viewerCov="/home/circleci/repo/platform/viewer/coverage"
touch "${viewerCov}/reports"
cat "${viewerCov}/clover.xml" >> "${viewerCov}/reports"
echo "\<<\<<\<< EOF" >> "${viewerCov}/reports"
cat "${viewerCov}/lcov.info" >>"${viewerCov}/reports"
echo "\<<\<<\<< EOF" >> "${viewerCov}/reports"
- codecov/upload:
file: '/home/circleci/repo/platform/viewer/coverage/reports'
flags: 'viewer'
# PLATFORM/CORE
- run:
name: 'CORE: Combine report output'
command: |
coreCov="/home/circleci/repo/platform/core/coverage"
touch "${coreCov}/reports"
cat "${coreCov}/clover.xml" >> "${coreCov}/reports"
echo "\<<\<<\<< EOF" >> "${coreCov}/reports"
cat "${coreCov}/lcov.info" >> "${coreCov}/reports"
echo "\<<\<<\<< EOF" >> "${coreCov}/reports"
- codecov/upload:
file: '/home/circleci/repo/platform/core/coverage/reports'
flags: 'core'
# Persist :+1:
- persist_to_workspace:
root: ~/repo
paths: .
# npm_publish:
# <<: *defaults
# steps:
# - attach_workspace:
# at: ~/repo
# - run:
# name: Avoid hosts unknown for github
# command:
# mkdir ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking
# no\n" > ~/.ssh/config
# - run:
# name: Publish using Semantic Release
# command: npx semantic-release
MERGE_UNIT_TESTS:
<<: *defaults
steps:
# Enable yarn workspaces
- run: yarn config set workspaces-experimental true
# Checkout code and ALL Git Tags
- checkout:
post:
- git fetch --all
- restore_cache:
name: Restore Yarn and Cypress Package Cache
keys:
# when lock file changes, use increasingly general patterns to restore cache
- yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
- yarn-packages-v1-{{ .Branch }}-
- yarn-packages-v1-
- run:
name: Install Dependencies
command: yarn install --frozen-lockfile
- save_cache:
name: Save Yarn Package Cache
paths:
- ~/.cache ## Cache yarn and Cypress
key: yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
# RUN TESTS
- run:
name: 'JavaScript Test Suite'
command: yarn run test:unit:ci
# PLATFORM/VIEWER
- run:
name: 'VIEWER: Combine report output'
command: |
viewerCov="/home/circleci/repo/platform/viewer/coverage"
touch "${viewerCov}/reports"
cat "${viewerCov}/clover.xml" >> "${viewerCov}/reports"
echo "\<<\<<\<< EOF" >> "${viewerCov}/reports"
cat "${viewerCov}/lcov.info" >>"${viewerCov}/reports"
echo "\<<\<<\<< EOF" >> "${viewerCov}/reports"
- codecov/upload:
file: '/home/circleci/repo/platform/viewer/coverage/reports'
flags: 'viewer'
# PLATFORM/CORE
- run:
name: 'CORE: Combine report output'
command: |
coreCov="/home/circleci/repo/platform/core/coverage"
touch "${coreCov}/reports"
cat "${coreCov}/clover.xml" >> "${coreCov}/reports"
echo "\<<\<<\<< EOF" >> "${coreCov}/reports"
cat "${coreCov}/lcov.info" >> "${coreCov}/reports"
echo "\<<\<<\<< EOF" >> "${coreCov}/reports"
- codecov/upload:
file: '/home/circleci/repo/platform/core/coverage/reports'
flags: 'core'
# Persist :+1:
- persist_to_workspace:
root: ~/repo
paths: .
npm_publish:
<<: *defaults
steps:
- attach_workspace:
at: ~/repo
- run:
name: Avoid hosts unknown for github
command:
mkdir ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking
no\n" > ~/.ssh/config
- run: git config --global user.email "danny.ri.brown+ohif-bot@gmail.com"
- run: git config --global user.name "ohif-bot"
- run:
name: Authenticate with registry
command:
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/repo/.npmrc
- run: npx lerna version
- run: npx lerna publish from-package
# Persist :+1:
- persist_to_workspace:
root: ~/repo
paths: .
docs_publish:
<<: *defaults
steps:
- attach_workspace:
at: ~/repo
- run:
name: Avoid hosts unknown for github
command:
mkdir ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking
no\n" > ~/.ssh/config
- run: git config --global user.email "danny.ri.brown+ohif-bot@gmail.com"
- run: git config --global user.name "ohif-bot"
- run: yarn global add gitbook-cli
- run: yarn global add gh-pages
- run: chmod +x ~/repo/.circleci/build-and-publish-docs.sh
- run: ~/repo/.circleci/build-and-publish-docs.sh
docker_publish:
<<: *defaults
steps:
- attach_workspace:
at: ~/repo
- setup_remote_docker:
docker_layer_caching: true
- run:
name: Build and push Docker image
command: |
# This file will exist if a new version was published by
# our `semantic-release` command in the previous job
if [[ ! -e tmp/updated-version.txt ]]; then
exit 0
else
# Remove npm config
rm -f ./.npmrc
# Set our version number using vars
export IMAGE_VERSION=$(cat tmp/updated-version.txt)
export IMAGE_VERSION_FULL=v$IMAGE_VERSION.${CIRCLE_BUILD_NUM}
echo $IMAGE_VERSION
echo $IMAGE_VERSION_FULL
# Build our image, auth, and push
docker build --tag ohif/$IMAGE_NAME:$IMAGE_VERSION_FULL --tag ohif/$IMAGE_NAME:latest .
echo $DOCKER_PWD | docker login -u $DOCKER_LOGIN --password-stdin
docker push ohif/$IMAGE_NAME:$IMAGE_VERSION_FULL
docker push ohif/$IMAGE_NAME:latest
fi
viewer_demo_build:
<<: *defaults
steps:
- attach_workspace:
at: ~/repo
# Build & Test
- run:
name: 'Build Demo Site'
command: yarn run build:demo
no_output_timeout: 30m
- run:
name: 'Upload SourceMaps, Send Deploy Notification'
command: |
# export FILE_1=$(find ./build/static/js -type f -name "2.*.js" -exec basename {} \;)
# export FILE_MAIN=$(find ./build/static/js -type f -name "main.*.js" -exec basename {} \;)
# export FILE_RUNTIME_MAIN=$(find ./build/static/js -type f -name "runtime~main.*.js" -exec basename {} \;)
# curl https://api.rollbar.com/api/1/sourcemap -F source_map=@build/static/js/$FILE_1.map -F access_token=$ROLLBAR_TOKEN -F version=$CIRCLE_SHA1 -F minified_url=https://$GOOGLE_STORAGE_BUCKET/static/js/$FILE_1
# curl https://api.rollbar.com/api/1/sourcemap -F source_map=@build/static/js/$FILE_MAIN.map -F access_token=$ROLLBAR_TOKEN -F version=$CIRCLE_SHA1 -F minified_url=https://$GOOGLE_STORAGE_BUCKET/static/js/$FILE_MAIN
# curl https://api.rollbar.com/api/1/sourcemap -F source_map=@build/static/js/$FILE_RUNTIME_MAIN.map -F access_token=$ROLLBAR_TOKEN -F version=$CIRCLE_SHA1 -F minified_url=https://$GOOGLE_STORAGE_BUCKET/static/js/$FILE_RUNTIME_MAIN
curl --request POST https://api.rollbar.com/api/1/deploy/ -F access_token=$ROLLBAR_TOKEN -F environment=$GOOGLE_STORAGE_BUCKET -F revision=$CIRCLE_SHA1 -F local_username=CircleCI
# Persist :+1:
- persist_to_workspace:
root: ~/repo
paths: .
viewer_demo_publish:
working_directory: ~/repo
docker:
- image: google/cloud-sdk
steps:
- attach_workspace:
at: ~/repo
- setup_remote_docker:
docker_layer_caching: true
- run:
name: Deploy latest version to viewer.ohif.org
command: |
# https://circleci.com/docs/2.0/google-auth/#authorization
echo $GCLOUD_SERVICE_KEY | gcloud auth activate-service-account --key-file=-
gcloud --quiet config set project ${GOOGLE_PROJECT_ID}
gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE}
# Remove all files in Storage Bucket; Push latest
gsutil -m rm gs://$GOOGLE_STORAGE_BUCKET/**
gsutil -m rsync -R platform/viewer/dist gs://$GOOGLE_STORAGE_BUCKET
workflows:
version: 2
# PULL REQUESTS
pull_requests:
PR_CHECKS:
jobs:
- build_and_test:
- PR_UNIT_TESTS:
filters:
branches:
ignore:
- master
- feature/*
- hotfix/*
# Cypress job added by `cypress-io` orb
- cypress/run:
pre-steps:
- run: 'rm -rf ~/.yarn && npm i -g yarn && yarn -v && yarn global
add wait-on' # Use yarn latest
yarn: true
store_artifacts: true
start: yarn run dev
wait-on: 'http://localhost:3000'
no-workspace: true # Don't persist workspace
working_directory: platform/viewer
cache-key: 'yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}'
post-steps:
- store_test_results:
path: cypress/results
requires:
- PR_UNIT_TESTS
# MERGE TO REACT
cut_release:
# MERGE TO MASTER
RELEASE:
jobs:
- build_and_test:
- MERGE_UNIT_TESTS:
filters:
branches:
only: react
# - npm_publish:
only: master
# Cypress job added by `cypress-io` orb
- cypress/run:
pre-steps:
- run: 'rm -rf ~/.yarn && npm i -g yarn && yarn -v && yarn global
add wait-on' # Use yarn latest
yarn: true
record: true
store_artifacts: true
start: yarn run dev
wait-on: 'http://localhost:3000'
working_directory: platform/viewer
cache-key: 'yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}'
post-steps:
- store_test_results:
path: cypress/results
requires:
- MERGE_UNIT_TESTS
# Update NPM
- npm_publish:
requires:
- cypress/run
# Update docs.ohif.org
- docs_publish:
requires:
- cypress/run
# Update hub.docker.org
# - docker_publish:
# requires:
# - build_and_test
# - npm_publish
# Update viewer.ohif.org
- viewer_demo_build:
requires:
- cypress/run
- viewer_demo_publish:
requires:
- viewer_demo_build
+23
View File
@@ -0,0 +1,23 @@
# ABOUT:
# https://docs.codecov.io/docs/codecov-yaml
#
#
# COMMIT STATUS:
# https://docs.codecov.io/docs/commit-status
coverage:
status:
project:
default:
threshold: 0.10%
core:
flags: core
viewer:
flags: viewer
patch: off
flags:
core:
paths:
- platform/core
viewer:
paths:
- platform/viewer
-16
View File
@@ -1,16 +0,0 @@
{
"extends": [
"react-app",
"eslint:recommended",
"plugin:react/recommended"
],
"parser": "babel-eslint",
"env": {
"jest": true
},
"settings": {
"react": {
"version": "detect",
},
},
}
+23
View File
@@ -0,0 +1,23 @@
{
"extends": [
"react-app",
"eslint:recommended",
"plugin:react/recommended",
"plugin:prettier/recommended"
],
"parser": "babel-eslint",
"env": {
"jest": true
},
"settings": {
"react": {
"version": "detect"
}
},
"globals": {
"cy": true,
"context": true,
"Cypress": true,
"assert": true
}
}
+33
View File
@@ -0,0 +1,33 @@
---
name: "\U0001F41B Bug report"
about: Create a report to help us improve
title: ''
labels: 'Community: Report :bug:'
assignees: ''
---
> **Before Creating an issue**
>
> - Are you running the latest version?
> - Are you reporting to the correct repository?
> - Did you search existing issues?
## Bug Report
### Describe the Bug
_A clear and concise description of what the bug is._
### What steps can we follow to reproduce the bug?
1. First step
2. Second step
3. ...
```js
Please use code blocks to show formatted errors or code snippets
```
> :warning: Reports we cannot reproduce are at risk of being marked stale and
> closed. The more information you can provide, the more likely we are to look
> into and address your issue.
@@ -0,0 +1,25 @@
---
name: "\U0001F680 Feature request"
about: Suggest an idea for this project
title: ''
labels: 'Community: Request :hand:'
assignees: ''
---
> :hand: Many people requests features. Tell us why yours is important to the
> community. How does it add value? Why _this feature_?
>
> Is your request very specific to your needs? Consider
> [contributing it](https://docs.ohif.org/contributing.html) yourself! Or reach
> out to a community member that offers
> [consulting services](https://docs.ohif.org/help.html#paid--commercial).
## Request
**What feature or change would you like to see made?**
...
**Why should we prioritize this feature?**
...
@@ -0,0 +1,18 @@
---
name: "\U0001F917 Support Question"
about: "I have a question \U0001F4AC"
title: ''
labels: 'Community: Question :question:'
assignees: ''
---
> :hand: We are a small team with limited resources. Your question is much more
> likely to be answered if it is
> [a good question](https://stackoverflow.com/help/how-to-ask)
**Description**
Questions can often be answered by our documentation. Unable to find an answer
in our docs? We'll try to help. In the meantime, if you answer your own
question, please respond with the answer here so that others may benefit as
well. Better yet, open a PR to expand our docs ^\_^
+28
View File
@@ -0,0 +1,28 @@
# GitHub App: Stale
# https://github.com/apps/stale
#
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 21
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- 'Story 🙌'
- 'Bug: Verified 🐛'
- 'Task: CI/Tooling 🤖'
- 'Task: Docs 📖'
- 'Task: Docs :book:'
- 'Task: Refactor 🛠'
- 'Task: Tests 🔬'
- 'PR: Awaiting Review 👀'
- 'Triage 🏳️'
- 'Announcement 🎉'
# Label to use when marking an issue as stale
staleLabel: 'Stale :baguette_bread:'
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
+12
View File
@@ -8,6 +8,7 @@ docs/_book
src/version.js
junit.xml
coverage/
.docz/
# YALC (for Erik)
.yalc
@@ -20,3 +21,14 @@ npm-debug.log
package-lock.json
yarn-error.log
.DS_Store
# Common Example Data Directories
sampledata/
example/deps/
docker/dcm4che/dcm4che-arc
# Cypress test results
cypress/videos/
# Locize settings
.locize
-45
View File
@@ -1,45 +0,0 @@
{
"requireCurlyBraces": {
"keywords": [ "if", "else", "for", "while", "do" ],
"allExcept" : ["return" , "continue", "break"]
},
"requireSpaceAfterKeywords": [ "if", "else", "for", "while", "do", "switch", "return" ],
"requireSpacesInFunctionExpression": {
"beforeOpeningCurlyBrace": true
},
"disallowSpacesInFunctionExpression": {
"beforeOpeningRoundBrace": true
},
"disallowSpacesInsideParentheses": true,
"disallowKeywordsOnNewLine": ["else"],
"disallowNewlineBeforeBlockStatements": true,
"requirePaddingNewLinesAfterUseStrict": true,
"requirePaddingNewLinesAfterBlocks": {
"allExcept": ["inCallExpressions", "inArrayExpressions", "inProperties"]
},
"requireObjectKeysOnNewLine": true,
"requireSemicolons": true,
"requireSpaceAfterBinaryOperators": true,
"requireSpaceAfterComma": true,
"requireSpaceBeforeObjectValues": true,
"requireSpacesInsideObjectBrackets": "all",
"requireLineBreakAfterVariableAssignment": true,
"requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-"],
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
"disallowKeywords": [ "with" ],
"disallowMultipleLineBreaks": true,
"requireLineFeedAtFileEnd": true,
"disallowSpaceAfterObjectKeys": true,
"disallowQuotedKeysInObjects": true,
"disallowMultipleSpaces": true,
"disallowVar": true,
"validateLineBreaks": "LF",
"validateIndentation": 4,
"validateQuoteMarks": {
"mark": "'",
"escape": true
},
"validateParameterSeparator": ", ",
"requireDollarBeforejQueryAssignment": true
}
-93
View File
@@ -1,93 +0,0 @@
{
// JSHint Default Configuration File (as on JSHint website)
// See http://jshint.com/docs/ for more details
"maxerr" : 50, // {int} Maximum error before stopping
// Enforcing
"bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
"camelcase" : false, // true: Identifiers must be in camelCase
"curly" : false, // true: Require {} for every new block or scope
"eqeqeq" : true, // true: Require triple equals (===) for comparison
"forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty()
"freeze" : true, // true: prohibits overwriting prototypes of native objects such as Array, Date etc.
"immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`
"latedef" : false, // true: Require variables/functions to be defined before being used
"newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()`
"noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee`
"noempty" : true, // true: Prohibit use of empty blocks
"nonbsp" : true, // true: Prohibit "non-breaking whitespace" characters.
"nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment)
"plusplus" : false, // true: Prohibit use of `++` and `--`
"quotmark" : false, // Quotation mark consistency:
// false : do nothing (default)
// true : ensure whatever is used is consistent
// "single" : require single quotes
// "double" : require double quotes
"undef" : true, // true: Require all non-global variables to be declared (prevents global leaks)
"unused" : "vars", // Unused variables:
// true : all variables, last function parameter
// "vars" : all variables only
// "strict" : all variables, all function parameters
"strict" : false, // true: Requires all functions run in ES5 Strict Mode
"maxparams" : false, // {int} Max number of formal params allowed per function
"maxdepth" : false, // {int} Max depth of nested blocks (within functions)
"maxstatements" : false, // {int} Max number statements per function
"maxcomplexity" : false, // {int} Max cyclomatic complexity per function
"maxlen" : false, // {int} Max number of characters per line
"varstmt" : false, // true: Disallow any var statements. Only `let` and `const` are allowed.
// Relaxing
"asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
"boss" : false, // true: Tolerate assignments where comparisons would be expected
"debug" : false, // true: Allow debugger statements e.g. browser breakpoints.
"eqnull" : false, // true: Tolerate use of `== null`
"es5" : true, // true: Allow ES5 syntax (ex: getters and setters)
"esnext" : true, // true: Allow ES.next (ES6) syntax (ex: `const`)
"moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features)
// (ex: `for each`, multiple try/catch, function expression…)
"evil" : false, // true: Tolerate use of `eval` and `new Function()`
"expr" : false, // true: Tolerate `ExpressionStatement` as Programs
"funcscope" : false, // true: Tolerate defining variables inside control statements
"globalstrict" : false, // true: Allow global "use strict" (also enables 'strict')
"iterator" : false, // true: Tolerate using the `__iterator__` property
"lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
"laxbreak" : false, // true: Tolerate possibly unsafe line breakings
"laxcomma" : false, // true: Tolerate comma-first style coding
"loopfunc" : false, // true: Tolerate functions being defined in loops
"multistr" : false, // true: Tolerate multi-line strings
"noyield" : false, // true: Tolerate generator functions with no yield statement in them.
"notypeof" : false, // true: Tolerate invalid typeof operator values
"proto" : false, // true: Tolerate using the `__proto__` property
"scripturl" : false, // true: Tolerate script-targeted URLs
"shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
"sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation
"supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;`
"validthis" : false, // true: Tolerate using this in a non-constructor function
// Environments
"browser" : true, // Web Browser (window, document, etc)
"browserify" : false, // Browserify (node.js code in the browser)
"couch" : false, // CouchDB
"devel" : false, // Development/debugging (alert, confirm, etc)
"dojo" : false, // Dojo Toolkit
"jasmine" : false, // Jasmine
"jquery" : true, // jQuery
"mocha" : false, // Mocha
"mootools" : false, // MooTools
"node" : false, // Node.js
"nonstandard" : false, // Widely adopted globals (escape, unescape, etc)
"phantom" : false, // PhantomJS
"prototypejs" : false, // Prototype and Scriptaculous
"qunit" : false, // QUnit
"rhino" : false, // Rhino
"shelljs" : false, // ShellJS
"typed" : false, // Globals for typed array constructions
"worker" : false, // Web Workers
"wsh" : false, // Windows Scripting Host
"yui" : false, // Yahoo User Interface
"globals" : {
"require": true,
"Package": true // Meteor Package definition
}
}
+27
View File
@@ -0,0 +1,27 @@
#!/bin/bash
# Set directory to location of this script
# https://stackoverflow.com/a/3355423/1867984
cd "$(dirname "$0")"
cd .. # Up to project root
# Helpful to verify which versions we're using
yarn -v
node -v
# Install build deps and all monorepo package dependencies. Yarn Workspaces
# should also symlink all projects appropriately
yarn install --no-ignore-optional --pure-lockfile
# Build && Move PWA Output
yarn run build:ci
mkdir -p ./.netlify/www/pwa
mv platform/viewer/dist/* .netlify/www/pwa -v
# Build && Move script output
# yarn run build:package
echo 'Nothing left to see here. Go home, folks.'
# Build using react-scripts
# npx cross-env PUBLIC_URL=/demo APP_CONFIG=config/netlify.js react-scripts --max_old_space_size=4096 build
+14
View File
@@ -0,0 +1,14 @@
<html>
<head>
<title>OHIF Viewer: Deploy Preview</title>
</head>
<body>
<h1>Index of Previews</h1>
<ul>
<li>
<a href="/pwa">Progressive Web App</a>
</li>
</ul>
</body>
</html>
+2 -3
View File
@@ -3,7 +3,6 @@
"printWidth": 80,
"proseWrap": "always",
"tabWidth": 2,
"semi": false,
"singleQuote": true,
"endOfLine": "lf"
"semi": true,
"singleQuote": true
}
+14
View File
@@ -0,0 +1,14 @@
#!/bin/bash
# https://github.com/shelljs/shelljs
# https://github.com/shelljs/shelljs#exclude-options
PROJECT=$1
if [ -z "$PROJECT" ]
then
# Default
npx lerna run dev:viewer
else
eval "npx lerna run dev:$PROJECT"
fi
read -p 'Press [Enter] key to continue...'
+2 -1
View File
@@ -2,6 +2,7 @@
"recommendations": [
"esbenp.prettier-vscode",
"sysoev.language-stylus",
"dbaeumer.vscode-eslint"
"dbaeumer.vscode-eslint",
"mikestead.dotenv"
]
}
+29 -29
View File
@@ -1,30 +1,30 @@
{
"editor.rulers": [80, 120],
// ===
// Spacing
// ===
"editor.insertSpaces": true,
"editor.tabSize": 2,
"editor.trimAutoWhitespace": true,
"files.trimTrailingWhitespace": true,
"files.eol": "\n",
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
// ===
// Event Triggers
// ===
"editor.formatOnSave": true,
"eslint.autoFixOnSave": true,
"eslint.run": "onSave",
"eslint.validate": [
{ "language": "javascript", "autoFix": true },
{ "language": "javascriptreact", "autoFix": true }
],
"prettier.disableLanguages": [],
"prettier.endOfLine": "lf"
}
"editor.rulers": [80, 120],
// ===
// Spacing
// ===
"editor.insertSpaces": true,
"editor.tabSize": 2,
"editor.trimAutoWhitespace": true,
"files.trimTrailingWhitespace": true,
"files.eol": "\n",
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
// ===
// Event Triggers
// ===
"editor.formatOnSave": true,
"eslint.autoFixOnSave": true,
"eslint.run": "onSave",
"eslint.validate": [
{ "language": "javascript", "autoFix": true },
{ "language": "javascriptreact", "autoFix": true }
],
"prettier.disableLanguages": [],
"prettier.endOfLine": "lf",
"workbench.colorCustomizations": {}
}
@@ -0,0 +1,22 @@
const path = require('path');
function excludeNodeModulesExcept(modules) {
var pathSep = path.sep;
if (pathSep == '\\')
// must be quoted for use in a regexp:
pathSep = '\\\\';
var moduleRegExps = modules.map(function(modName) {
return new RegExp('node_modules' + pathSep + modName);
});
return function(modulePath) {
if (/node_modules/.test(modulePath)) {
for (var i = 0; i < moduleRegExps.length; i++)
if (moduleRegExps[i].test(modulePath)) return false;
return true;
}
return false;
};
}
module.exports = excludeNodeModulesExcept;
+17
View File
@@ -0,0 +1,17 @@
const autoprefixer = require('autoprefixer');
const cssToJavaScript = {
test: /\.css$/,
use: [
'style-loader',
{ loader: 'css-loader', options: { importLoaders: 1 } },
{
loader: 'postcss-loader',
options: {
plugins: () => [autoprefixer('last 2 version', 'ie >= 11')],
},
},
],
};
module.exports = cssToJavaScript;
+10
View File
@@ -0,0 +1,10 @@
/**
* This is exclusively used by `vtk.js` to bundle glsl files.
*/
const loadShaders = {
test: /\.glsl$/i,
include: /vtk\.js[\/\\]Sources/,
loader: 'shader-loader',
};
module.exports = loadShaders;
+17
View File
@@ -0,0 +1,17 @@
/**
* This allows us to include web workers in our bundle, and VTK.js
* web workers in our bundle. While this increases bundle size, it
* cuts down on the number of includes we need for `script tag` usage.
*/
const loadWebWorkers = {
test: /\.worker\.js$/,
include: /vtk\.js[\/\\]Sources/,
use: [
{
loader: 'worker-loader',
options: { inline: true, fallback: false },
},
],
};
module.exports = loadWebWorkers;
+10
View File
@@ -0,0 +1,10 @@
const stylusToJavaScript = {
test: /\.styl$/,
use: [
{ loader: 'style-loader' }, // 3. Style nodes from JS Strings
{ loader: 'css-loader' }, // 2. CSS to CommonJS
{ loader: 'stylus-loader' }, // 1. Stylus to CSS
],
};
module.exports = stylusToJavaScript;
+39
View File
@@ -0,0 +1,39 @@
const excludeNodeModulesExcept = require('./../helpers/excludeNodeModulesExcept.js');
function transpileJavaScript(mode) {
const exclude =
mode === 'production'
? excludeNodeModulesExcept([
'vtk.js',
// 'dicomweb-client',
// https://github.com/react-dnd/react-dnd/blob/master/babel.config.js
'react-dnd',
// https://github.com/dcmjs-org/dcmjs/blob/master/.babelrc
// https://github.com/react-dnd/react-dnd/issues/1342
// 'dcmjs', // contains: loglevelnext
// https://github.com/shellscape/loglevelnext#browser-support
// 'loglevelnext',
// https://github.com/dcmjs-org/dicom-microscopy-viewer/issues/35
// 'dicom-microscopy-viewer',
// https://github.com/openlayers/openlayers#supported-browsers
// 'ol', --> Should be fine
])
: excludeNodeModulesExcept([]);
return {
test: /\.jsx?$/,
// These are packages that are not transpiled to our lowest supported
// JS version (currently ES5). Most of these leverage ES6+ features,
// that we need to transpile to a different syntax.
exclude,
loader: 'babel-loader',
options: {
// Find babel.config.js in monorepo root
// https://babeljs.io/docs/en/options#rootmode
rootMode: 'upward',
envName: mode,
},
};
}
module.exports = transpileJavaScript;
+56
View File
@@ -0,0 +1,56 @@
const path = require('path');
const webpack = require('webpack');
const loadShadersRule = require('./rules/loadShaders.js');
const loadWebWorkersRule = require('./rules/loadWebWorkers.js');
const transpileJavaScriptRule = require('./rules/transpileJavaScript.js');
module.exports = (env, argv, { SRC_DIR, DIST_DIR }) => {
if (!process.env.NODE_ENV) {
throw new Error('process.env.NODE_ENV not set');
}
const mode =
process.env.NODE_ENV === 'production' ? 'production' : 'development';
return {
mode,
entry: {
app: `${SRC_DIR}/index.js`,
},
context: SRC_DIR,
module: {
rules: [
transpileJavaScriptRule(mode),
loadWebWorkersRule,
loadShadersRule,
],
},
resolve: {
// Which directories to search when resolving modules
modules: [
// Modules specific to this package
path.resolve(__dirname, '../node_modules'),
// Hoisted Yarn Workspace Modules
path.resolve(__dirname, '../../../node_modules'),
SRC_DIR,
],
// Attempt to resolve these extensions in order.
extensions: ['.js', '.jsx', '.json', '*'],
// symlinked resources are resolved to their real path, not their symlinked location
symlinks: true,
},
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
'process.env.DEBUG': JSON.stringify(process.env.DEBUG),
'process.env.APP_CONFIG': JSON.stringify(process.env.APP_CONFIG || ''),
'process.env.PUBLIC_URL': JSON.stringify(process.env.PUBLIC_URL || '/'),
}),
],
// Fix: https://github.com/webpack-contrib/css-loader/issues/447#issuecomment-285598881
// For issue in cornerstone-wado-image-loader
node: {
fs: 'empty',
},
};
};
+18
View File
@@ -0,0 +1,18 @@
const webpackBase = require('./webpack.base.js');
const cssToJavaScriptRule = require('./rules/cssToJavaScript.js');
const stylusToJavaScriptRule = require('./rules/stylusToJavaScript.js');
/**
* WebPack configuration for CommonJS Bundles. Extends rules of BaseConfig by making
* sure we're bundling styles and other files that would normally be split in a
* PWA.
*/
module.exports = (env, argv, { SRC_DIR, DIST_DIR }) => {
const baseConfig = webpackBase(env, argv, { SRC_DIR, DIST_DIR });
return merge(baseConfig, {
module: {
rules: [cssToJavaScriptRule, stylusToJavaScriptRule],
},
});
};
+2 -2
View File
@@ -1,6 +1,6 @@
The MIT License (MIT)
MIT License
Copyright (c) 2015 Open Health Imaging Foundation
Copyright (c) 2018 Open Health Imaging Foundation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
-32
View File
@@ -1,32 +0,0 @@
# OHIF Viewer (React Version)
Disclaimer: Work in Progress
## To run locally
1. `yarn install`
1. `yarn start`
1. `Go to http://localhost:5000`
To user another DICOMWeb endpoint, adapt index.js
## To include in your projects
Please refer to the example in the example directory. To set the DICOMWeb
endpoint and do other customization, adapt index.html.
### Build
1. `yarn install`
1. `yarn build`
### Run the example
1. `cd example`
1. `yarn install`
1. `yarn start`
1. `Go to http://localhost:5000`
## License
MIT © [OHIF](https://github.com/OHIF)
+189 -111
View File
@@ -1,190 +1,268 @@
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<div align="center">
<h1>ohif-viewer</h1>
<p><strong>ohif-viewer</strong> is a zero-footprint medical image viewer. It is a configurable and exstensible progressive web application with out of the box support for PACS like orthanc, dcm4che, and Google's Healthcare API.</p>
<h1>OHIF Medical Imaging Viewer</h1>
<p><strong>The OHIF Viewer</strong> is a zero-footprint medical image viewer provided by the <a href="http://ohif.org/">Open Health Imaging Foundation (OHIF)</a>. It is a configurable and extensible progressive web application with out-of-the-box support for image archives which support <a href="https://www.dicomstandard.org/dicomweb/">DICOMweb</a>.</p>
</div>
<div align="center">
<a href="https://deploy-preview-398--ohif.netlify.com/"><strong>Read The Docs</strong></a> |
<a href="https://github.com/OHIF/Viewers/tree/react/docs/latest">Edit the docs</a>
<a href="https://docs.ohif.org/"><strong>Read The Docs</strong></a> |
<a href="https://github.com/OHIF/Viewers/tree/master/docs/latest">Edit the docs</a>
</div>
<div align="center">
<a href="https://viewer.ohif.org/">Live Demo</a> |
<a href="https://react.ohif.org/">Component Library</a>
</div>
<hr />
[![CircleCI][circleci-image]][circleci-url]
[![codecov][codecov-image]][codecov-url]
[![All Contributors][all-contributors-image]][contributing-url]
[![code style: prettier][prettier-image]][prettier-url]
[![semantic-release][semantic-image]][semantic-url]
[![NPM version][npm-version-image]][npm-url]
[![NPM downloads][npm-downloads-image]][npm-url]
[![Pulls][docker-pulls-img]][docker-image-url]
[![MIT License][license-image]][license-url]
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
## Why?
[![Netlify Status][netlify-image]][netlify-url]
[![CircleCI][circleci-image]][circleci-url]
[![codecov][codecov-image]][codecov-url]
[![All Contributors](https://img.shields.io/badge/all_contributors-10-orange.svg?style=flat-square)](#contributors)
Building a web based medical imaging viewer from scratch is time intensive, hard
to get right, and expensive. Instead of re-inventing the wheel, you can use the
OHIF Viewer as a rock solid platform to build on top of. The Viewer is a
[React][react-url] [Progressive Web Application][pwa-url] that can be embedded
in existing applications via it's [packaged source
(ohif-viewer)][ohif-viewer-url] or hosted stand-alone. The Viewer exposes
[configuration][configuration-url] and [extensions][extensions-url] to support
workflow customization and advanced functionality at common integration points.
## What?
If you're interested in using the OHIF Viewer, but you're not sure it supports
your use case
[check out our docs](https://deploy-preview-398--ohif.netlify.com/). Still not
sure, or you would like to propose new features? Don't hesitate to
[create an issue](https://github.com/OHIF/Viewers/issues) or open a pull request
^\_^
The OHIF Medical Imaging Viewer is for viewing medical images. It can retrieve and load images from most sources and formats; render sets in 2D, 3D, and reconstructed representations; allows for the manipulation, annotation, and serialization of observations; supports internationalization, OpenID Connect, offline use, hotkeys, and many more features.
## Getting Started
Almost everything offers some degree of customization and configuration. If it doesn't support something you need, we accept pull requests and have an ever improving Extension System.
This readme is specific to testing and developing locally. If you're more
interested in production deployment strategies,
[you can check out our documentation on publishing](https://deploy-preview-398--ohif.netlify.com/).
## Why Choose Us
Want to play around before you dig in?
[Check out our LIVE Demo](https://viewer.ohif.org/)
### Community & Experience
### Setup
The OHIF Viewer is a collaborative effort that has served as the basis for many active, production, and FDA Cleared medical imaging viewers. It benefits from our extensive community's collective experience, and from the sponsored contributions of individuals, research groups, and commercial organizations.
_Requirements:_
### Built to Adapt
- [NodeJS & NPM](https://nodejs.org/en/download/)
- [Yarn](https://yarnpkg.com/lang/en/docs/install/)
...
_Steps:_
1. Fork this repository
2. Clone your forked repository (your `origin`)
### Support
- `git clone git@github.com:YOUR_GITHUB_USERNAME/Viewers.git`
...
3. Add `OHIF/Viewers` as a `remote` repository (the `upstream`)
## Quick Start Deployment
- `git remote add upstream git@github.com:OHIF/Viewers.git`
> This is only one of many ways to configure and deploy the OHIF Viewer. To learn more about your options, and how to choose the best one for your requirements, check out [our deployment recipes and documentation](https://docs.ohif.org/deployment/).
### Developing Locally
The fastest and easiest way to get started is to include the OHIF Viewer with a script tag. In practice, this is as simple as:
In your cloned repository's root folder, run:
- Including the following dependencies with script tags:
- [React](https://unpkg.com/react@16/umd/react.production.min.js)
- [React Dom](https://unpkg.com/react-dom@16/umd/react-dom.production.min.js)
- The [OHIF Viewer](https://unpkg.com/@ohif/viewer)
- Have an element with an ID of `root` on the page
- Configure the OHIF Viewer at `window.config`:
```js
// Restore dependencies
window.config = {
routerBasename: "/",
servers: {
dicomWeb: [
{
name: "DCM4CHEE",
qidoRoot: "https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs",
wadoRoot: "https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs",
qidoSupportsIncludeField: true,
imageRendering: "wadors",
thumbnailRendering: "wadors"
}
]
}
};
```
- Install the viewer: `window.OHIFStandaloneViewer.installViewer(window.config);`
This exact setup is demonstrated in this [CodeSandbox](https://codesandbox.io/s/ohif-viewer-script-tag-usage-c4u4t) and in our [Embedding The Viewer](https://docs.ohif.org/deployment/recipes/embedded-viewer.html) deployment recipe.
## Developing
### Requirements
- [Yarn 1.17.3+](https://yarnpkg.com/en/docs/install)
- [Node 8+](https://nodejs.org/en/)
- Yarn Workspaces should be enabled on your machine:
- `yarn config set workspaces-experimental true`
### Getting Started
1. [Fork this repository][how-to-fork]
2. [Clone your forked repository][how-to-clone]
- `git clone https://github.com/YOUR-USERNAME/Viewers.git`
3. Navigate to the cloned project's directory
4. Add this repo as a `remote` named `upstream`
- `git remote add upstream https://github.com/OHIF/Viewers.git`
5. `yarn install` to restore dependencies and link projects
#### To Develop
_From this repository's root directory:_
```bash
# Enable Yarn Workspaces
yarn config set workspaces-experimental true
# Restore dependencies
yarn install
// Stands up local server to host Viewer.
// Viewer connects to our public cloud PACS by default
yarn start
```
For more advanced local development scenarios, like using your own locally
hosted PACS and test data,
[check out our Essential: Getting Started](https://deploy-preview-398--ohif.netlify.com/essentials/getting-started.html)
guide.
## Commands
### Contributing
These commands are available from the root directory. Each project directory also supports a number of commands that can be found in their respective `README.md` and `project.json` files.
> Large portions of the Viewer's functionality are maintained in other
> repositories. To get a better understanding of the Viewer's architecture and
> "where things live", read
> [our docs on the Viewer's architecture](https://deploy-preview-398--ohif.netlify.com/advanced/architecture.html#diagram)
| Yarn Commands | Description |
| -------------------- | ------------------------------------------------------------- |
| **Develop** | |
| `dev` or `start` | Default development experience for Viewer |
| `dev:project <package-name>` | Replace with `core`, `ui`, `i18n`, `cornerstone`, `vtk`, etc. |
| `test:unit` | Jest multi-project test runner; overall coverage |
| **Deploy** | |
| `build`* | Builds production output for our PWA Viewer |
| `build:package`* | Builds production `commonjs` output for our Viewer |
| `build:package-all`* | Builds commonjs bundles for all projects |
It is notoriously difficult to setup multiple dependent repositories for
end-to-end testing and development. That's why we recommend writing and running
unit tests when adding and modifying features. This allows us to program in
isolation without a complex setup, and has the added benefit of producing
well-tested business logic.
1. Clone this repository
2. Navigate to the project directory, and `yarn install`
3. To begin making changes, `yarn run dev`
4. To commit changes, run `yarn run cm`
\* - For more information on our different builds, check out our [Deploy Docs][deployment-docs]
When creating tests, place the test file "next to" the file you're testing.
[For example](https://github.com/OHIF/Viewers/blob/react/src/index.test.js):
## Projects
```js
// File
index.js
The OHIF Medical Image Viewing Platform is maintained as a
[`monorepo`][monorepo]. This means that this repository, instead of containing a
single project, contains many projects. If you explore our project structure,
you'll see the following:
// Test for file
index.test.js
```bash
.
├── extensions #
│ ├── _example # Skeleton of example extension
│ ├── cornerstone # 2D images w/ Cornerstone.js
│ ├── dicom-html # Structured Reports as HTML in viewport
│ ├── dicom-microscopy # Whole slide microscopy viewing
│ ├── dicom-pdf # View DICOM wrapped PDFs in viewport
│ └── vtk # MPR and Volume support w/ VTK.js
│
├── platform #
│ ├── core # Business Logic
│ ├── i18n # Internationalization Support
│ ├── ui # React component library
│ └── viewer # Connects platform and extension projects
│
├── ... # misc. shared configuration
├── lerna.json # MonoRepo (Lerna) settings
├── package.json # Shared devDependencies and commands
└── README.md # This file
```
As you add and modify code, `jest` will watch for uncommitted changes and run
your tests, reporting the results to your terminal. Make a pull request with
your changes to `master`, and a core team member will review your work. If you
have any questions, please don't hesitate to reach out via a GitHub issue.
Want to better understand why and how we've structured this repository? Read
more about it in our [Architecture Documentation][ohif-architecture].
## Issues
### Platform
_Looking to contribute? Look for the [Good First Issue][good-first-issue]
label._
These projects comprise the
### 🐛 Bugs
| Name | Description | Links |
| ------------------------------- | ----------- | ----- |
| [@ohif/core][platform-core] | | NPM |
| [@ohif/i18n][platform-i18n] | | NPM |
| [@ohif/viewer][platform-viewer] | | NPM |
| [@ohif/ui][platform-ui] | | NPM |
Please file an issue for bugs, missing documentation, or unexpected behavior.
### Extensions
[**See Bugs**][bugs]
This is a list of Extensions maintained by the OHIF Core team. It's possible to customize and configure these extensions, and you can even create your own. You can [read more about extensions here][ohif-extensions].
### 💡 Feature Requests
| Name | Description | Links |
| -------------------------------------------------------------- | ----------- | ----- |
| [@ohif/extension-cornestone][extension-cornerstone] | | NPM |
| [@ohif/extension-dicom-html][extension-dicom-html] | | NPM |
| [@ohif/extension-dicom-microscopy][extension-dicom-microscopy] | | NPM |
| [@ohif/extension-dicom-pdf][extension-dicom-pdf] | | NPM |
| [@ohif/extension-vtk][extension-vtk] | | NPM |
Please file an issue to suggest new features. Vote on feature requests by adding
a 👍. This helps maintainers prioritize what to work on.
## Acknowledgments
[**See Feature Requests**][requests-feature]
To acknowledge the OHIF Viewer in an academic publication, please cite
### ❓ Questions
> _LesionTracker: Extensible Open-Source Zero-Footprint Web Viewer for Cancer
> Imaging Research and Clinical Trials_
>
> Trinity Urban, Erik Ziegler, Rob Lewis, Chris Hafey, Cheryl Sadow, Annick D.
> Van den Abbeele and Gordon J. Harris
>
> _Cancer Research_, November 1 2017 (77) (21) e119-e122 DOI:
> [10.1158/0008-5472.CAN-17-0334](https://www.doi.org/10.1158/0008-5472.CAN-17-0334)
For questions related to using the library, please visit our support community,
or file an issue on GitHub.
**Note:** If you use or find this repository helpful, please take the time to
star this repository on Github. This is an easy way for us to assess adoption
and it can help us obtain future funding for the project.
[Google Group][google-group]
This work is supported primarily by the National Institutes of Health, National
Cancer Institute, Informatics Technology for Cancer Research (ITCR) program,
under a
[grant to Dr. Gordon Harris at Massachusetts General Hospital (U24 CA199460)](https://projectreporter.nih.gov/project_info_description.cfm?aid=8971104).
## License
MIT © [OHIF](https://github.com/OHIF)
<!--
Links:
-->
Links
-->
<!-- prettier-ignore-start -->
<!-- ROW -->
<!-- Badges -->
[lerna-image]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[lerna-url]: https://lerna.js.org/
[netlify-image]: https://api.netlify.com/api/v1/badges/a5d369ab-18a6-41c3-bcde-83805205ac7f/deploy-status
[netlify-url]: https://app.netlify.com/sites/ohif/deploys
[all-contributors-image]: https://img.shields.io/badge/all_contributors-0-orange.svg?style=flat-square
[contributing-url]: https://github.com/OHIF/Viewers/blob/react/CONTRIBUTING.md
[circleci-image]: https://circleci.com/gh/OHIF/Viewers.svg?style=svg
[circleci-url]: https://circleci.com/gh/OHIF/Viewers
[codecov-image]: https://codecov.io/gh/OHIF/Viewers/branch/react/graph/badge.svg
[codecov-url]: https://codecov.io/gh/OHIF/Viewers
[codecov-url]: https://codecov.io/gh/OHIF/Viewers/branch/react
[prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
[prettier-url]: https://github.com/prettier/prettier
[semantic-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[semantic-url]: https://github.com/semantic-release/semantic-release
<!-- ROW -->
[npm-url]: https://npmjs.org/package/ohif-viewer
[npm-downloads-image]: https://img.shields.io/npm/dm/ohif-viewer.svg?style=flat-square
[npm-version-image]: https://img.shields.io/npm/v/ohif-viewer.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@ohif/viewer
[npm-downloads-image]: https://img.shields.io/npm/dm/@ohif/viewer.svg?style=flat-square
[npm-version-image]: https://img.shields.io/npm/v/@ohif/viewer.svg?style=flat-square
[docker-pulls-img]: https://img.shields.io/docker/pulls/ohif/viewer.svg?style=flat-square
[docker-image-url]: https://hub.docker.com/r/ohif/viewer
[license-image]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square
[license-url]: LICENSE
<!-- DOCS -->
<!-- Links -->
[monorepo]: https://en.wikipedia.org/wiki/Monorepo
[how-to-fork]: https://help.github.com/en/articles/fork-a-repo
[how-to-clone]: https://help.github.com/en/articles/fork-a-repo#step-2-create-a-local-clone-of-your-fork
[ohif-architecture]: https://docs.ohif.org/advanced/architecture.html
[ohif-extensions]: https://docs.ohif.org/advanced/architecture.html
[deployment-docs]: https://docs.ohif.org/deployment/
[react-url]: https://reactjs.org/
[pwa-url]: https://developers.google.com/web/progressive-web-apps/
[ohif-viewer-url]: https://www.npmjs.com/package/ohif-viewer
[configuration-url]: https://deploy-preview-398--ohif.netlify.com/essentials/configuration.html
[extensions-url]: https://deploy-preview-398--ohif.netlify.com/advanced/extensions.html
<!-- Misc. -->
[react-viewer]: https://github.com/OHIF/Viewers/tree/react
<!-- Issue Boilerplate -->
[bugs]: https://github.com/OHIF/Viewers/labels/bug
[requests-feature]: https://github.com/OHIF/Viewers/labels/enhancement
[good-first-issue]: https://github.com/OHIF/Viewers/labels/good%20first%20issue
[google-group]: https://groups.google.com/forum/#!forum/cornerstone-platform
[ohif-viewer-url]: https://www.npmjs.com/package/@ohif/viewer
[configuration-url]: https://docs.ohif.org/essentials/configuration.html
[extensions-url]: https://docs.ohif.org/advanced/extensions.html
<!-- Platform -->
[platform-core]: platform/core/README.md
[platform-i18n]: platform/i18n/README.md
[platform-ui]: platform/ui/README.md
[platform-viewer]: platform/viewer/README.md
<!-- Extensions -->
[extension-cornerstone]: extensions/cornerstone/README.md
[extension-dicom-html]: extensions/dicom-html/README.md
[extension-dicom-microscopy]: extensions/dicom-microscopy/README.md
[extension-dicom-pdf]: extensions/dicom-pdf/README.md
[extension-vtk]: extensions/vtk/README.md
<!-- prettier-ignore-end -->
+8
View File
@@ -0,0 +1,8 @@
/* Used by webpack, babel and eslint */
const path = require('path');
module.exports = {
'@codinsky/parse-js': path.resolve(__dirname, 'packages/parse/src'),
'@codinsky/curate': path.resolve(__dirname, 'packages/curate/src'),
};
+63
View File
@@ -0,0 +1,63 @@
const aliases = require('./aliases.config');
const path = require('path');
// https://babeljs.io/docs/en/options#babelrcroots
module.exports = {
babelrcRoots: ['./platform/*', './extensions/*'],
plugins: ['inline-react-svg', '@babel/plugin-proposal-class-properties'],
env: {
test: {
presets: [
[
// TODO: https://babeljs.io/blog/2019/03/19/7.4.0#migration-from-core-js-2
'@babel/preset-env',
{
modules: 'commonjs',
debug: false,
},
],
'@babel/preset-react',
],
plugins: [
'@babel/plugin-proposal-object-rest-spread',
'@babel/plugin-syntax-dynamic-import',
'@babel/plugin-transform-regenerator',
'@babel/plugin-transform-runtime',
],
},
production: {
presets: [
// WebPack handles ES6 --> Target Syntax
['@babel/preset-env', { modules: false }],
'@babel/preset-react',
],
ignore: ['**/*.test.jsx', '**/*.test.js', '__snapshots__', '__tests__'],
},
development: {
presets: [
// WebPack handles ES6 --> Target Syntax
['@babel/preset-env', { modules: false }],
'@babel/preset-react',
],
plugins: ['react-hot-loader/babel'],
ignore: ['**/*.test.jsx', '**/*.test.js', '__snapshots__', '__tests__'],
},
},
};
// TODO: Plugins; Aliases
// We don't currently use aliases, but this is a nice snippet that would help
// [
// 'module-resolver',
// {
// // https://github.com/tleunen/babel-plugin-module-resolver/issues/338
// // There seem to be a bug with module-resolver with a mono-repo setup:
// // It doesn't resolve paths correctly when using root/alias combo, so we
// // use this function instead.
// resolvePath(sourcePath, currentFile, opts) {
// // This will return undefined if aliases has no key for the sourcePath,
// // in which case module-resolver will fallback on its default behaviour.
// return aliases[sourcePath];
// },
// },
// ],
+64
View File
@@ -0,0 +1,64 @@
#!/bin/bash
# Set directory to location of this script
# https://stackoverflow.com/a/3355423/1867984
cd "$(dirname "$0")"
yarn -v
node -v
echo 'Installing Gitbook CLI'
yarn global add gitbook-cli
echo 'Running Gitbook installation'
# Generate all version's GitBook output
# For each directory in /docs ...
cd ./../docs/
for D in *; do
if [ -d "${D}" ]; then
echo "Generating output for: ${D}"
cd "${D}"
# Clear previous output, generate new
rm -rf _book
gitbook install
gitbook build
cd ..
fi
done
# Move CNAME File into `latest`
cp CNAME ./latest/_book/CNAME
# Create a history folder in our latest version's output
mkdir ./latest/_book/history
# Move each version's files to latest's history folder
for D in *; do
if [ -d "${D}" ]; then
if [ "${D}" == v* ] ; then
echo "Moving ${D} to the latest version's history folder"
mkdir "./latest/_book/history/${D}"
cp -v -r "./${D}/_book"/* "./latest/_book/history/${D}"
fi
fi
done
# Back to repo root
cd ..
echo "Done generating documentation output"
echo 'PUBLISHING'
./node_modules/.bin/gh-pages \
--silent \
--repo https://$GITHUB_TOKEN@github.com/OHIF/Viewers.git \
--message 'Autogenerated Message: [ci skip]' \
--dist docs/latest/_book
-31
View File
@@ -1,31 +0,0 @@
{
"servers": {
"dicomWeb": [
{
"name": "DCM4CHEE",
"wadoUriRoot": "https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/wado",
"qidoRoot": "https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs",
"wadoRoot": "https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs",
"qidoSupportsIncludeField": true,
"imageRendering": "wadors",
"thumbnailRendering": "wadors",
"requestOptions": {
"requestFromBrowser": true
}
}
]
},
"oidc": [{
"authServerUrl": "https://cancer.crowds-cure.org/auth/realms/dcm4che",
"authRedirectUri": "http://localhost:5000/callback",
"clientId": "crowds-cure-cancer",
"postLogoutRedirectUri": "http://localhost:5000/logout-redirect.html",
"responseType": "id_token token",
"scope": "email profile openid",
"revokeAccessTokenOnSignout": true,
"extraQueryParams": {
"kc_idp_hint": "crowds-cure-cancer-auth0-oidc",
"client_id": "crowds-cure-cancer"
}
}]
}
-19
View File
@@ -1,19 +0,0 @@
{
"servers": {
"dicomWeb": [
{
"name": "DCM4CHEE",
"wadoUriRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado",
"qidoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
"wadoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
"qidoSupportsIncludeField": true,
"imageRendering": "wadors",
"thumbnailRendering": "wadors",
"requestOptions": {
"requestFromBrowser": true,
"auth": "admin:admin"
}
}
]
}
}
-18
View File
@@ -1,18 +0,0 @@
{
"servers": {
"dicomWeb": [
{
"name": "DCM4CHEE",
"wadoUriRoot": "https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado",
"qidoRoot": "https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs",
"wadoRoot": "https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs",
"qidoSupportsIncludeField": true,
"imageRendering": "wadors",
"thumbnailRendering": "wadors",
"requestOptions": {
"requestFromBrowser": true
}
}
]
}
}
-38
View File
@@ -1,38 +0,0 @@
{
"servers": {
"dimse": [{
"name": "SPRITE PACS",
"wadoUriRoot": "http://localhost:1000/wado/CT",
"requestOptions": {
"logRequests": true,
"logResponses": true,
"logTiming": true
},
"peers": [
{
"host": "localhost",
"port": 108,
"aeTitle": "CT",
"default": true,
"supportsInstanceRetrievalByStudyUid": false
},
{
"host": "0.0.0.0",
"port": 104,
"aeTitle": "OHIFDCM",
"default": true,
"server": true
}
]
}]
},
"defaultServiceType": "dimse",
"dropCollections": true,
"public": {
"verifyEmail": false,
"ui": {
"studyListFunctionsEnabled": true,
"studyListDateFilterNumDays": 1
}
}
}
-37
View File
@@ -1,37 +0,0 @@
{
"public": {
"clientOnly": true,
"ui": {
"studyListFunctionsEnabled": true,
"studyListDateFilterNumDays": 10000
},
"servers": {
"dicomWeb": [
{
"name": "Orthanc",
"wadoUriRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado",
"qidoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
"wadoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
"qidoSupportsIncludeField": true,
"imageRendering": "wadors",
"thumbnailRendering": "wadors",
"requestOptions": {
"requestFromBrowser": true,
"logRequests": true,
"logResponses": false,
"logTiming": true,
"auth": "admin:admin"
}
}]
},
"custom": {
"oidc": [{
"authServerUrl": "https://cancer.crowds-cure.org/auth/realms/dcm4che",
"authRedirectUri": "/studylist",
"postLogoutRedirectUri": "/",
"clientId": "ohif-viewer"
}]
},
"userAuthenticationRoutesEnabled": false
}
}
-54
View File
@@ -1,54 +0,0 @@
{
"servers": {
"dicomWeb": [
{
"name": "DCM4CHEE",
"wadoUriRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado",
"qidoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
"wadoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
"qidoSupportsIncludeField": false,
"imageRendering": "wadouri",
"thumbnailRendering": "wadors",
"requestOptions": {
"auth": "admin:admin",
"logRequests": true,
"logResponses": false,
"logTiming": true
}
}],
"dimse": [{
"name": "DCM4CHEE_DIMSE",
"wadoUriRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado",
"requestOptions": {
"auth": "admin:admin",
"logRequests": true,
"logResponses": false,
"logTiming": true
},
"peers": [
{
"host": "localhost",
"port": 4242,
"aeTitle": "DCM4CHEE",
"default": true,
"supportsInstanceRetrievalByStudyUid": false
},
{
"host": "0.0.0.0",
"port": 11112,
"aeTitle": "DCM4CHEE",
"default": true,
"server": true
}
]
}]
},
"defaultServiceType": "dicomWeb",
"public": {
"verifyEmail": false,
"ui": {
"studyListFunctionsEnabled": true,
"studyListDateFilterNumDays": 1
}
}
}
-54
View File
@@ -1,54 +0,0 @@
{
"servers": {
"dicomWeb": [
{
"name": "DCM4CHEE",
"wadoUriRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado",
"qidoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
"wadoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
"qidoSupportsIncludeField": false,
"imageRendering": "wadouri",
"requestOptions": {
"auth": "admin:admin",
"logRequests": true,
"logResponses": false,
"logTiming": true
}
}],
"dimse": [{
"name": "DCM4CHEE_DIMSE",
"wadoUriRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado",
"requestOptions": {
"auth": "admin:admin",
"logRequests": true,
"logResponses": false,
"logTiming": true
},
"peers": [
{
"host": "localhost",
"port": 4242,
"aeTitle": "DCM4CHEE",
"default": true,
"supportsInstanceRetrievalByStudyUid": false
},
{
"host": "0.0.0.0",
"port": 11112,
"aeTitle": "DCM4CHEE",
"default": true,
"server": true
}
]
}]
},
"defaultServiceType": "dimse",
"dropCollections": true,
"public": {
"verifyEmail": false,
"ui": {
"studyListFunctionsEnabled": true,
"studyListDateFilterNumDays": 1
}
}
}
-51
View File
@@ -1,51 +0,0 @@
{
"servers": {
"dicomWeb": [
{
"name": "Medken Orthanc",
"wadoUriRoot": "http://dicom-orthanc.medken.com/wado",
"qidoRoot": "http://dicom-orthanc.medken.com/dicom-web",
"wadoRoot": "http://dicom-orthanc.medken.com/dicom-web",
"qidoSupportsIncludeField": false,
"imageRendering": "wadouri",
"requestOptions": {
"logRequests": false,
"logResponses": false,
"logTiming": true
}
}
],
"dimse" : [{
"name": "ORTHANC_DIMSE",
"wadoUriRoot": "http://dicom-orthanc.medken.com/wado",
"peers": [
{
"host": "208.100.41.100",
"port": 4242,
"aeTitle": "MKORTHANC",
"default": true
},
{
"host": "0.0.0.0",
"port": 11119,
"aeTitle": "OHIFDCM",
"default": true,
"server": true
}
]
}]
},
"defaultServiceType": "dimse",
"medkenpanel" : {
"prefix" : "admin"
},
"fhir" : {
"host" : "localhost",
"port" : 3937
},
"public": {
"ui": {
"studyListDateFilterNumDays": 1
}
}
}
-37
View File
@@ -1,37 +0,0 @@
{
"servers": {
"dicomWeb": [
{
"name": "Orthanc",
"wadoUriRoot": "http://localhost:8042/wado",
"qidoRoot": "http://localhost:8042/dicom-web",
"wadoRoot": "http://localhost:8042/dicom-web",
"qidoSupportsIncludeField": true,
"imageRendering": "wadouri",
"thumbnailRendering": "wadouri",
"requestOptions": {
"auth": "orthanc:orthanc",
"logRequests": true,
"logResponses": false,
"logTiming": true
}
}
]
},
"defaultServiceType": "dicomWeb",
"dropCollections": true,
"public": {
"verifyEmail": false,
"ui": {
"studyListFunctionsEnabled": true,
"leftSidebarOpen": false,
"displaySetNavigationLoopOverSeries": false,
"displaySetNavigationMultipleViewports": true,
"autoPositionMeasurementsTextCallOuts": "TRLB",
"studyListDateFilterNumDays": 1
}
},
"proxy": {
"enabled": true
}
}
-43
View File
@@ -1,43 +0,0 @@
{
"servers": {
"dimse": [{
"name": "ORTHANC_DIMSE",
"wadoUriRoot": "http://localhost:8042/wado",
"requestOptions": {
"auth": "orthanc:orthanc",
"logRequests": true,
"logResponses": false,
"logTiming": true
},
"peers": [
{
"host": "localhost",
"port": 4242,
"aeTitle": "ORTHANC",
"default": true,
"server": false
},
{
"host": "0.0.0.0",
"port": 11112,
"aeTitle": "OHIFDCM",
"default": true,
"server": true
}
]
}]
},
"defaultServiceType": "dimse",
"dropCollections": true,
"public": {
"verifyEmail": false,
"ui": {
"studyListFunctionsEnabled": true,
"leftSidebarOpen": false,
"displaySetNavigationLoopOverSeries": false,
"displaySetNavigationMultipleViewports": true,
"autoPositionMeasurementsTextCallOuts": "TRLB",
"studyListDateFilterNumDays": 10000
}
}
}
-42
View File
@@ -1,42 +0,0 @@
{
"servers": {
"dimse": [{
"name": "OSIRIX_DIMSE",
"wadoUriRoot": "http://localhost:3333/wado",
"requestOptions": {
"logRequests": true,
"logResponses": false,
"logTiming": true
},
"peers": [
{
"host": "localhost",
"port": 11112,
"aeTitle": "OSIRIX",
"default": true,
"server": false
},
{
"host": "0.0.0.0",
"port": 4242,
"aeTitle": "OHIFDCM",
"default": true,
"server": true
}
]
}]
},
"defaultServiceType": "dimse",
"dropCollections": true,
"public": {
"verifyEmail": false,
"ui": {
"studyListFunctionsEnabled": true,
"leftSidebarOpen": false,
"displaySetNavigationLoopOverSeries": false,
"displaySetNavigationMultipleViewports": true,
"autoPositionMeasurementsTextCallOuts": "TRLB",
"studyListDateFilterNumDays": 1
}
}
}
-37
View File
@@ -1,37 +0,0 @@
{
"servers": {
"dicomWeb": [
{
"name": "Orthanc",
"wadoUriRoot": "http://dicomweb.ohif.org/wado",
"qidoRoot": "http://dicomweb.ohif.org/dicom-web",
"wadoRoot": "http://dicomweb.ohif.org/dicom-web",
"qidoSupportsIncludeField": false,
"imageRendering": "wadouri",
"thumbnailRendering": "wadouri",
"requestOptions": {
"auth": "orthanc:orthanc",
"logRequests": true,
"logResponses": false,
"logTiming": true
}
}
]
},
"defaultServiceType": "dicomWeb",
"dropCollections": true,
"public": {
"verifyEmail": false,
"ui": {
"studyListFunctionsEnabled": true,
"leftSidebarOpen": false,
"displaySetNavigationLoopOverSeries": false,
"displaySetNavigationMultipleViewports": true,
"autoPositionMeasurementsTextCallOuts": "TRLB",
"studyListDateFilterNumDays": 1
}
},
"proxy": {
"enabled": true
}
}
-29
View File
@@ -1,29 +0,0 @@
# Stage 1: Build the application
# docker build -t ohif/viewer:latest .
FROM node:11.2.0-slim as builder
RUN apt-get update && apt-get install -y git yarn
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
ENV PATH /usr/src/app/node_modules/.bin:$PATH
COPY package.json /usr/src/app/package.json
COPY yarn.lock /usr/src/app/yarn.lock
ADD . /usr/src/app/
RUN yarn install
RUN yarn run build
WORKDIR example
RUN yarn install
RUN yarn run prepare
ADD example /usr/src/app/build
# Stage 2: Bundle the built application into a Docker container
# which runs Nginx using Alpine Linux
FROM nginx:1.15.5-alpine
RUN rm -rf /etc/nginx/conf.d
COPY conf /etc/nginx
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
-41
View File
@@ -1,41 +0,0 @@
{
"apps" : [{
"name" : "ohif-viewer",
"script" : "main.js",
"watch" : true,
"merge_logs" : true,
"cwd" : "/app/bundle/",
"env": {
"METEOR_SETTINGS": {
"servers": {
"dicomWeb": [
{
"name": "Orthanc",
"wadoUriRoot": "http://pacsIP:8042/wado",
"qidoRoot": "http://pacsIP:8042/dicom-web",
"wadoRoot": "http://pacsIP:8042/dicom-web",
"qidoSupportsIncludeField": false,
"imageRendering": "wadouri",
"thumbnailRendering": "wadouri",
"requestOptions": {
"auth": "orthanc:orthanc",
"logRequests": true,
"logResponses": false,
"logTiming": true
}
}
]
},
"defaultServiceType": "dicomWeb",
"public": {
"ui": {
"studyListDateFilterNumDays": 1
}
},
"proxy": {
"enabled": true
}
}
}
}]
}
-30
View File
@@ -1,30 +0,0 @@
{
"servers": {
"dicomWeb": [
{
"name": "Orthanc",
"wadoUriRoot": "http://pacsIP:8042/wado",
"qidoRoot": "http://pacsIP:8042/dicom-web",
"wadoRoot": "http://pacsIP:8042/dicom-web",
"qidoSupportsIncludeField": false,
"imageRendering": "wadouri",
"thumbnailRendering": "wadouri",
"requestOptions": {
"auth": "orthanc:orthanc",
"logRequests": true,
"logResponses": false,
"logTiming": true
}
}
]
},
"defaultServiceType": "dicomWeb",
"public": {
"ui": {
"studyListDateFilterNumDays": 1
}
},
"proxy": {
"enabled": true
}
}
View File
Whitespace-only changes.
-9
View File
@@ -1,9 +0,0 @@
# Embed the viewer using a script tag
<iframe src="https://codesandbox.io/embed/lrjoo3znxm?fontsize=14" style="width:100%; height:600px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin"></iframe>
## Important notes:
- You must correctly specify `rootUrl` **and** the HTML `<base>` tag.
- If your application runs in a subdirectory (e.g. /viewer/), this must be specified in `routerBasename`
- Currently, the WADO Image Loader Codecs and Web Worker source code must also be server at the ROOT URL
+48 -5
View File
@@ -1,11 +1,54 @@
##### Looking for your Deploy Preview? - <a onclick="function redirect() { window.location.href='/demo/'; } redirect();">Deploy Preview for Viewer</a>
<div class='row'>
<div class='column' style='text-align: right; padding: 0 20px'>
<strong>Looking for a Deploy Preview?</strong>
<a onclick="function redirect() { window.location.href='/demo/'; } redirect();">Deploy Preview for Viewer</a>
</div>
<div class='column' style='text-align: left; padding: 0 20px'>
<a href="https://www.netlify.com">
<img src="https://www.netlify.com/img/global/badges/netlify-color-bg.svg"/>
</a>
</div>
</div>
# Introduction - test
> ATTENTION! You are looking at the docs for the `React` version of the OHIF
> Viewer. If you're looking for the `Meteor` version's documentation (now
> deprecated), select it's version from the dropdown box in the top left corner
> of this page.
The [Open Health Imaging Foundation](https://www.ohif.org) is developing an open source framework for constructing web-based medical imaging applications.
# Introduction
## The **OHIF Viewer**: A general purpose DICOM Viewer ([demo](http://viewer.ohif.org/))
The [Open Health Imaging Foundation][ohif-org] (OHIF) Viewer is an open source,
web-based, medical imaging viewer. It can be configured to connect to Image
Archives that support [DicomWeb][dicom-web], and offers support for mapping to
proprietary API formats. OHIF maintained extensions add support for viewing,
annotating, and reporting on DICOM images in 2D (slices) and 3D (volumes).
![OHIF Viewer Screenshot](../assets/img/viewer.png)
The Open Health Imaging Foundation intends to provide a simple general purpose DICOM Viewer which can be easily extended for specific uses.
<center><i>The <strong>OHIF Viewer</strong>: A general purpose DICOM Viewer (<a href="http://viewer.ohif.org/">Live Demo</a>)</center>
The Open Health Imaging Foundation intends to provide a simple general purpose
DICOM Viewer which can be easily extended for specific uses. If you find
yourself unable to extend the viewer for your purposes, please reach out via our
[GitHub issues][gh-issues]. We are actively seeking feedback on ways to improve
our integration and extension points.
## Where to Next?
Check out these helpful links:
- Ready to dive into some code? Check out our
[Getting Started Guide](./essentials/getting-started.md).
- We're an active, vibrant community.
[Learn how you can be more involved.](./contributing.md)
- Feeling lost? Read our [help page](./help.md).
<!--
Links
-->
<!-- prettier-ignore-start -->
[ohif-org]: https://www.ohif.org
[dicom-web]: https://en.wikipedia.org/wiki/DICOMweb
[gh-issues]: https://github.com/OHIF/Viewers/issues
<!-- prettier-ignore-end -->
+25 -13
View File
@@ -2,13 +2,16 @@
- Essentials
- [Getting Started](essentials/getting-started.md)
- [Installation](essentials/installation.md)
- [Data Source](essentials/data-source.md)
- [Configuration](essentials/configuration.md)
- [Themeing](essentials/themeing.md)
- [Translating](essentials/translating.md)
- [Troubleshooting](essentials/troubleshooting.md)
- [Architecture](architecture/index.md)
- Overview
- Deployment
- [Scope of Project](essentials/scope-of-project.md)
---
- [Advanced](advanced/index.md)
- [Architecture](advanced/architecture.md)
- [Overview](advanced/architecture.md#overview)
@@ -22,18 +25,27 @@
- [Modules](advanced/extensions.md#modules)
- [Registering](advanced/extensions.md#registering-extensions)
- [OHIF Maintained](advanced/extensions.md#ohif-maintained-extensions)
- [Custom Tools](advanced/custom-tools.md)
- Connecting to Image Archives
- [DICOM Web](connecting-to-image-archives/dicomweb.md)
---
----
- I Want To
- [Embed the viewer using a script tag](I-want-to/script-tag.md)
- [Deployment](deployment/index.md)
- [Embedded](deployment/index.md#embedded-viewer)
- [Stand-alone](deployment/index.md#stand-alone-viewer)
- [Data](deployment/index.md#data)
- Recipes
- Script Include
- [Embedding the Viewer](deployment/recipes/embedded-viewer.md)
- Stand-Alone
- [Build for Production](deployment/recipes/build-for-production.md)
- [Static](deployment/recipes/static-assets.md)
- [Nginx + Image Archive](deployment/recipes/nginx--image-archive.md)
- [User Account Control](deployment/recipes/user-account-control.md)
- [Google Cloud Healthcare](connecting-to-image-archives/google-cloud-healthcare.md)
---
----
- FAQ
- [General](faq/general.md)
----
- [FAQ](frequently-asked-questions.md)
- [Contributing](contributing.md)
- [Browser Support](browser-support.md)
- [Help](help.md)
@@ -10,7 +10,7 @@
<!-- CORNERSTONE.js -->
<tr>
<td>
<a href="https://www.npmjs.com/package/ohif-cornerstone-extension">
<a href="https://www.npmjs.com/package/@ohif/extension-cornerstone">
Cornerstone
</a>
</td>
@@ -22,7 +22,7 @@
<!-- VTK.js -->
<tr>
<td>
<a href="https://www.npmjs.com/package/ohif-vtk-extension">
<a href="https://www.npmjs.com/package/@ohif/extension-vtk">
VTK.js
</a>
</td>
@@ -33,30 +33,30 @@
</tr>
<tr>
<td>
<a href="">HTML</a>
<a href="https://www.npmjs.com/package/@ohif/extension-dicom-html">DICOM HTML</a>
</td>
<td>
Renders text and HTML content for <a href="https://github.com/OHIF/Viewers/blob/react/extensions/ohif-dicom-html-extension/src/OHIFDicomHtmlSopClassHandler.js#L7-L15">specific SopClassUIDs</a>.
Renders text and HTML content for <a href="https://github.com/OHIF/Viewers/blob/master/extensions/dicom-html/src/OHIFDicomHtmlSopClassHandler.js#L4-L12">specific SopClassUIDs</a>.
</td>
<td>Viewport, SopClassHandler</td>
</tr>
<tr>
<td>
<a href="https://www.npmjs.com/package/ohif-dicom-pdf-extension">PDF</a>
<a href="https://www.npmjs.com/package/@ohif/extension-dicom-pdf">DICOM PDF</a>
</td>
<td>
Renders PDFs for a <a href="https://github.com/OHIF/Viewers/blob/react/extensions/ohif-dicom-pdf-extension/src/OHIFDicomPDFSopClassHandler.js#L8">specific SopClassUID</a>.
Renders PDFs for a <a href="https://github.com/OHIF/Viewers/blob/master/extensions/dicom-pdf/src/OHIFDicomPDFSopClassHandler.js#L4-L6">specific SopClassUID</a>.
</td>
<td>Viewport, SopClassHandler</td>
</tr>
<tr>
<td>
<a href="https://www.npmjs.com/package/ohif-dicom-microscopy-extension">Microscopy</a>
<a href="https://www.npmjs.com/package/@ohif/extension-dicom-microscopy">DICOM Microscopy</a>
</td>
<td>
Renders Microscopy images for a <a href="https://github.com/OHIF/Viewers/blob/react/extensions/ohif-dicom-microscopy-extension/src/DicomMicroscopySopClassHandler.js#L6">specific SopClassUID</a>.
Renders Microscopy images for a <a href="https://github.com/OHIF/Viewers/blob/master/extensions/dicom-microscopy/src/DicomMicroscopySopClassHandler.js#L5-L7">specific SopClassUID</a>.
</td>
<td>Viewport, SopClassHandler</td>
</tr>
</tbody>
</table>
</table>
+63 -19
View File
@@ -1,17 +1,31 @@
# Architecture
Looking to extend your instance of the OHIF Viewer? Want learn how to reuse _a portion_ of the Viewer in your own application? Or maybe you want to get involved and draft or suggest a new feature? Regardless, you're in the right place!
Looking to extend your instance of the OHIF Viewer? Want learn how to reuse _a
portion_ of the Viewer in your own application? Or maybe you want to get
involved and draft or suggest a new feature? Regardless, you're in the right
place!
The OHIF Viewer aims to be decoupled, configurable, and extensible; while this allows our code to be used in more ways, it also increases complexity. Below, we aim to demistify that complexity by providing insight into how our Viewer is architected, and the role each of it's dependent libraries plays.
The OHIF Viewer aims to be decoupled, configurable, and extensible; while this
allows our code to be used in more ways, it also increases complexity. Below, we
aim to demistify that complexity by providing insight into how our Viewer is
architected, and the role each of it's dependent libraries plays.
## Overview
The [`OHIF/Viewers`](https://github.com/OHIF/Viewers/tree/react) repository contains the source code for the OHIF Medical Imaging Viewer. It is effectively a React [progressive web app](https://developers.google.com/web/progressive-web-apps/) (PWA) that combines the business logic housed in [`OHIF/ohif-core`](https://github.com/OHIF/ohif-core) and the components in our React Component library [`OHIF/react-viewerbase`](https://github.com/OHIF/react-viewerbase). It provides customization for common use cases through [configuration](../essentials/configuration.md) and for adding functionality via [extensions](./extensions.md).
The [`OHIF/Viewers`][viewers-project] project contains the source code for the
OHIF Medical Imaging Viewer. It is effectively a React [progressive web
app][pwa] (PWA) that combines the business logic housed in
[`OHIF/ohif-core`][core] and the components in our React Component library
[`OHIF/react-viewerbase`][component-library]. It provides customization for
common use cases through [configuration][configuration] and for adding
functionality via [extensions][extensions].
### Business Logic
Our goal is to maintain the majority of our business logic in [`OHIF/ohif-core`](https://github.com/OHIF/ohif-core). `ohif-core` offers pre-packaged solutions for features common to Web-based medical imaging viewers. For example:
Our goal is to maintain the majority of our business logic in
[`OHIF/ohif-core`](https://github.com/OHIF/ohif-core). `ohif-core` offers
pre-packaged solutions for features common to Web-based medical imaging viewers.
For example:
- Hotkeys
- DICOM Web
@@ -22,33 +36,46 @@ Our goal is to maintain the majority of our business logic in [`OHIF/ohif-core`]
- [And many others](https://github.com/OHIF/ohif-core/blob/master/src/index.js#L49-L69)
It does this while remaining decoupled from any particular view library or
rendering logic. While we use it to power our React Viewer, it can be used with Vue, React, Vanilla JS, or any number of other frameworks.
rendering logic. While we use it to power our React Viewer, it can be used with
Vue, React, Vanilla JS, or any number of other frameworks.
### React Component Library
[`OHIF/react-viewerbase`](https://github.com/OHIF/react-viewerbase) is a React Component library that contains the reusable components that power the OHIF Viewer. It allows us to build, compose, and test components in isolation; easing the development process by reducing the need to stand-up a local PACS with test case data.
[`OHIF/react-viewerbase`](https://github.com/OHIF/react-viewerbase) is a React
Component library that contains the reusable components that power the OHIF
Viewer. It allows us to build, compose, and test components in isolation; easing
the development process by reducing the need to stand-up a local PACS with test
case data.
[Check out our component library!](https://react.ohif.org/)
### Misc. Extensions
Want to add custom logic or UI Components to the OHIF Viewer, but don't want to maintain a fork? We expose common integration points via [extensions](./extensions.md) to make that possible. For a list of extensions maintained by OHIF, [check out this helpful table](./extensions.html#ohif-maintained-extensions).
Want to add custom logic or UI Components to the OHIF Viewer, but don't want to
maintain a fork? We expose common integration points via
[extensions](./extensions.md) to make that possible. For a list of extensions
maintained by OHIF,
[check out this helpful table](./extensions.html#ohif-maintained-extensions).
If you find yourself thinking "I wish the Viewer could do X", and you can't accomplish it with an extension today, create a GitHub issue! We're actively looking for ways to improve our extensibility ^_^
If you find yourself thinking "I wish the Viewer could do X", and you can't
accomplish it with an extension today, create a GitHub issue! We're actively
looking for ways to improve our extensibility ^\_^
[Click here to read more about extensions!](./extensions.md)
### Diagram
This diagram is a conceptual illustration of how the Viewer is architected.
This diagram is a conceptual illustration of how the Viewer is architected.
0. (optional) `extensions` can be registered with `ohif-core`'s extension manager
1. `ohif-core` provides bussiness logic and a way for `viewer` to access registered extensions
2. The `viewer` composes and provides data to components from our component library (`react-viewerbase`)
3. The `viewer` can be built and served as a stand-alone PWA, or as an embeddable package ([`ohif-viewer`](https://www.npmjs.com/package/ohif-viewer))
1. (optional) `extensions` can be registered with `ohif-core`'s extension
manager
2. `ohif-core` provides bussiness logic and a way for `viewer` to access
registered extensions
3. The `viewer` composes and provides data to components from our component
library (`react-viewerbase`)
4. The `viewer` can be built and served as a stand-alone PWA, or as an
embeddable package
([`ohif-viewer`](https://www.npmjs.com/package/ohif-viewer))
![Architecture Diagram](../assets/img/architecture-diagram.png)
@@ -56,10 +83,27 @@ This diagram is a conceptual illustration of how the Viewer is architected.
## Common Questions
> When should I use the packaged source `ohif-viewer` versus building a PWA from the source?
> When should I use the packaged source `ohif-viewer` versus building a PWA from
> the source?
...
> Can I create my own Viewer using Vue.js or Angular.js?
You can, but you will not be able to leverage as much of the existing code and components. `ohif-core` could still be used for business logic, and to provide a model for extensions. `react-viewerbase` would then become a guide for the components you would need to recreate.
You can, but you will not be able to leverage as much of the existing code and
components. `ohif-core` could still be used for business logic, and to provide a
model for extensions. `react-viewerbase` would then become a guide for the
components you would need to recreate.
<!--
Links
-->
<!-- prettier-ignore-start -->
[viewers-project]: https://github.com/OHIF/Viewers
[pwa]: https://developers.google.com/web/progressive-web-apps/
[core]: https://github.com/OHIF/ohif-core
[component-library]: https://github.com/OHIF/react-viewerbase
[configuration]: ../essentials/configuration.md
[extensions]: ./extensions.m
<!-- prettier-ignore-end -->
+8
View File
@@ -0,0 +1,8 @@
# Tool Management
This is not yet exposed in an easy/convenient way. Most tools are currently
added by creating new Viewport, Toolbar, and SOPInstanceHandler extension
modules. You can read more about that approach in [extensions](./extensions.md).
In the near future, we intend to improve the extensibility of tools for existing
Viewports (like our Cornerstone.js and VTK.js viewports).
+147 -30
View File
@@ -1,46 +1,134 @@
# Extensions
Extensions add new functionality to the viewer by registering one or more modules. They go one step further than configuration in that they allow us to inject custom React components, so long as they adhere to the module's interface. This can be something as simple as adding a new button to the toolbar, or as complex as a new viewport capable of rendering volumes in 3D.
Extensions add new functionality to the viewer by registering one or more
modules. They go one step further than configuration in that they allow us to
inject custom React components, so long as they adhere to the module's
interface. This can be something as simple as adding a new button to the
toolbar, or as complex as a new viewport capable of rendering volumes in 3D.
- [Overview](#overview)
- [Modules](#modules)
- [Commands](#commands)
- [Hotkeys](#hotkeys)
- [Toolbar](#toolbar)
- [Panel](#panel)
- [Viewport](#viewport)
- [SOP Class Handler](#sopclasshandler)
## Overview
At a glance, an extension is a class or object that has a `getExtensionId()` method, and one or more "module" methods. You can find an abbreviated extension below, or [view the source](https://github.com/OHIF/Viewers/blob/react/extensions/ohif-cornerstone-extension/src/OHIFCornerstoneExtension.js#L32-L65) of our `cornerstone` viewport extension.
At a glance, an extension is a javascript object that has an `id` property, and
one or more "module" methods. You can find an abbreviated extension below, or
[view the source][example-ext-src] of our example extension.
```js
class myCustomExtension {
export default {
/**
* Only required property. Should be a unique value across all extensions.
*/
id: 'example-extension',
/** Required */
getExtensionId: () => 'my-extension-id';
/**
* Registers one or more named commands scoped to a context. Commands are
* the primary means for...
*/
getCommandsModule() {
return {
defaultContext: 'VIEWER'
actions: { ... },
definitions: { ... }
}
},
/** React component that receives props from ConnectLayoutManager
* If more than one viewport module is registered, SopClassHandler
* is used to help determine which component is used */
getViewportModule: () => reactViewportComponent;
/**
* Allows you to provide toolbar definitions that will be merged with any
* existing application toolbar configuration. Used to determine which
* buttons should be visible when, their order, what happens when they're
* clicked, etc.
*/
getToolbarModule() {
return {
definitions: [ ... ],
defaultContext: 'ACTIVE_VIEWPORT::CORNERSTONE'
}
}
/** React component that adds buttons/behavior to the viewer Toolbar */
getToolbarModule: () => reactToolbarComponent;
/**
* Not yet implemented
*/
getPanelModule: () => null,
/**
* Registers a ReactComponent that should be used to render data in a
* Viewport. The first registered viewport is our "default viewport". If
* more than one viewport is registered, we use `SopClassHandlers` to
* determine which viewport should be used.
*/
getViewportModule: () => reactViewportComponent,
/** Provides a whitelist of SOPClassUIDs the viewport is capable of rendering.
* Can modify default behavior for methods like `getDisplaySetFromSeries` */
getSopClassHandler: () => {
id: 'some-other-unique-id',
type: PLUGIN_TYPES.SOP_CLASS_HANDLER,
sopClassUids: ['string'],
getDisplaySetFromSeries: (series, study, dicomWebClient, authorizationHeaders) => ...
};
// Not yet used
getPanelModule: () => null;
sopClassUids: [ ... ],
getDisplaySetFromSeries: (series, study, dicomWebClient, authorizationHeaders) => { ... }
},
}
```
### Modules
There are a few different kinds of modules. Each kind of module allows us to extend the viewer in a different way, and provides a consistent API for us to do so. You can find a full list of the [different types of modules `in ohif-core`](https://github.com/OHIF/ohif-core/blob/43c08a29eff3fb646a0e83a03a236ddd84f4a6e8/src/plugins.js#L1-L6). Information on each type of module, it's API, and how we determine when/where it should be used is included below:
There are a few different module types. Each module type allows us to extend the
viewer in a different way, and provides a consistent API for us to do so. You
can find a full list of the different types of modules
[`in ohif-core`][module-types]. Information on each type of module, it's API,
and how we determine when/where it should be used is included below.
> NOTE: Modifying the extensions/modules registered to the OHIF Viewer currently
> requires us to import and pass extensions to the ExtensionManager in
> `src/App.js`, then rebuild the application. Long-term, we intend to make it
> possible to accomplish this without a build step.
#### Commands
The Commands Module allows us to register one or more commands scoped to
specific contexts. Commands can be run by [hotkeys][#], [toolbar buttons][#],
and any registered custom react component (like a [viewport][#] or [panel][#]).
Here is a simple example commands module:
```js
{
getCommandsModule() {
return {
actions: {
speak: ({ viewports, words }) => {
console.log(viewports, words);
},
},
definitions: {
rotateViewportCW: {
commandFn: actions.rotateViewport,
storeContexts: ['viewports'],
options: { rotation: 90 }
},
rotateViewportCCW: {
commandFn: actions.rotateViewport,
storeContexts: ['viewports'],
options: { rotation: -90 },
context: 'ACTIVE_VIEWER::CORNERSTONE'
},
},
defaultContext: 'VIEWER'
}
}
}
```
#### Viewport
An extension can register a Viewport Module by providing a `getViewportModule()` method that returns a React Component. The React component will receive the following props:
An extension can register a Viewport Module by providing a `getViewportModule()`
method that returns a React Component. The React component will receive the
following props:
```js
children: PropTypes.arrayOf(PropTypes.element)
@@ -52,7 +140,8 @@ children: PropTypes.node,
customProps: PropTypes.object
```
Viewport components are managed by the `LayoutManager`. Which Viewport component is used depends on:
Viewport components are managed by the `LayoutManager`. Which Viewport component
is used depends on:
- The Layout Configuration
- Registered SopClassHandlers
@@ -62,11 +151,15 @@ Viewport components are managed by the `LayoutManager`. Which Viewport component
<center><i>An example of three Viewports</i></center>
For a complete example implementation, [check out the OHIFCornerstoneViewport](https://github.com/OHIF/Viewers/blob/react/extensions/ohif-cornerstone-extension/src/OHIFCornerstoneViewport.js).
For a complete example implementation,
[check out the OHIFCornerstoneViewport](https://github.com/OHIF/Viewers/blob/master/extensions/cornerstone/src/OHIFCornerstoneViewport.js).
#### Toolbar
An extension can register a Toolbar Module by providing a `getToolbarModule()` method that returns a React Component. The component does not receive any props. If you want to modify or react to state, you will need to connect to the redux store.
An extension can register a Toolbar Module by providing a `getToolbarModule()`
method that returns a React Component. The component does not receive any props.
If you want to modify or react to state, you will need to connect to the redux
store.
![Toolbar Extension](../assets/img/extensions-toolbar.gif)
@@ -74,7 +167,8 @@ An extension can register a Toolbar Module by providing a `getToolbarModule()` m
Toolbar components are rendered in the `ToolbarRow` component.
For a complete example implementation, [check out the OHIFCornerstoneViewport's Toolbar Module](https://github.com/OHIF/Viewers/blob/react/extensions/ohif-cornerstone-extension/src/ToolbarModule.js).
For a complete example implementation,
[check out the OHIFCornerstoneViewport's Toolbar Module](https://github.com/OHIF/Viewers/blob/master/extensions/cornerstone/src/toolbarModule.js).
#### SopClassHandler
@@ -84,18 +178,28 @@ For a complete example implementation, [check out the OHIFCornerstoneViewport's
> The panel module is not yet in use.
#### Hotkeys
...
### Registering Extensions
Extensions are registered for the application at startup. The `ExtensionManager`, exposed by `ohif-core`, registers a list of extensions with our application's store. Each module provided by the extension becomes available via `state.plugins.availablePlugins`, and consists of three parts: id, type ([PLUGIN_TYPE](https://github.com/OHIF/ohif-core/blob/43c08a29eff3fb646a0e83a03a236ddd84f4a6e8/src/plugins.js#L1-L6)), and the return value of the module method.
Extensions are registered for the application at startup. The
`ExtensionManager`, exposed by `ohif-core`, registers a list of extensions with
our application's store. Each module provided by the extension becomes available
via `state.plugins.availablePlugins`, and consists of three parts: id, type
([PLUGIN_TYPE](https://github.com/OHIF/ohif-core/blob/43c08a29eff3fb646a0e83a03a236ddd84f4a6e8/src/plugins.js#L1-L6)),
and the return value of the module method.
In a future version, we will likely expose a way to provide the extensions you would like included at startup.
In a future version, we will likely expose a way to provide the extensions you
would like included at startup.
_app.js_
```js
import { createStore, combineReducers } from "redux";
import OHIF from "ohif-core";
import OHIFCornerstoneExtension from "ohif-cornerstone-extension";
import { createStore, combineReducers } from 'redux';
import OHIF from '@ohif/core';
import OHIFCornerstoneExtension from 'ohif-cornerstone-extension';
const combined = combineReducers(OHIF.redux.reducers);
const store = createStore(combined);
@@ -108,6 +212,19 @@ ExtensionManager.registerExtensions(store, extensions);
## OHIF Maintained Extensions
A small number of powerful extensions for popular use cases are maintained by OHIF. They're co-located in the [`OHIF/Viewers`](https://github.com/OHIF/Viewers/tree/react/) repository, in the top level [`extensions/`](https://github.com/OHIF/Viewers/tree/react/extensions) directory.
A small number of powerful extensions for popular use cases are maintained by
OHIF. They're co-located in the
[`OHIF/Viewers`](https://github.com/OHIF/Viewers) repository, in the top level
[`extensions/`](https://github.com/OHIF/Viewers/tree/master/extensions)
directory.
{% include "./_maintained-extensions-table.md" %}
<!--
Links
-->
<!-- prettier-ignore-start -->
[example-ext-src]: https://github.com/OHIF/Viewers/tree/master/extensions/_example/src
[module-types]: https://github.com/OHIF/Viewers/blob/master/platform/core/src/extensions/MODULE_TYPES.js
<!-- prettier-ignore-end -->
@@ -0,0 +1,23 @@
# MonoRepos: A Crash Course
- [Lerna][lerna]
Solutions:
## Semantic-Release
- [Semantic-Release](https://github.com/semantic-release/semantic-release/issues/193#issuecomment-462063871)
- [Multi-semantic-release](https://github.com/dhoulb/multi-semantic-release)
- [semantic-release-monorepo](https://github.com/Updater/semantic-release-monorepo)
# Netlify
- https://community.netlify.com/t/best-practices-for-deploying-sites-from-monorepos/818
<!--
Links
-->
<!-- prettier-ignore-start -->
[lerna]: https://github.com/lerna/lerna
<!-- prettier-ignore-end -->
Binary file not shown.
+14
View File
@@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
</style>
</defs>
<path
style="fill:currentColor;fill-opacity:1;stroke:none"
d="M 7.5 2 A 4.5 4.5 0 0 0 3 6.5 A 4.5 4.5 0 0 0 3.0527344 7.15625 A 3 3 0 0 0 1 10 A 3 3 0 0 0 4 13 L 11.5 13 A 3.5 3.5 0 0 0 15 9.5 A 3.5 3.5 0 0 0 11.970703 6.0351562 A 4.5 4.5 0 0 0 7.5 2 z M 7.5 3 A 3.5 3.5 0 0 1 11 6.5 A 3.5 3.5 0 0 1 10.949219 7.0644531 A 2.5 2.5 0 0 1 11.5 7 A 2.5 2.5 0 0 1 14 9.5 A 2.5 2.5 0 0 1 11.5 12 L 4 12 A 2 2 0 0 1 2 10 A 2 2 0 0 1 4 8 A 2 2 0 0 1 4.3574219 8.0332031 A 3.5 3.5 0 0 1 4 6.5 A 3.5 3.5 0 0 1 7.5 3 z "
id="path4139"
class="ColorScheme-Text"/>
</svg>

After

Width:  |  Height:  |  Size: 818 B

Binary file not shown.
Binary file not shown.
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="npm" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 780 250" style="enable-background:new 0 0 780 250;" xml:space="preserve">
<style type="text/css">
.st0{fill:#C12127;}
</style>
<path class="st0" d="M240,250h100v-50h100V0H240V250z M340,50h50v100h-50V50z M480,0v200h100V50h50v150h50V50h50v150h50V0H480z
M0,200h100V50h50v150h50V0H0V200z"/>
</svg>

After

Width:  |  Height:  |  Size: 473 B

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 260.4 82.9" enable-background="new 0 0 260.4 82.9" xml:space="preserve">
<g>
<path fill="#525DF9" d="M31.7,8.9c9.6,0,16.5,4.9,19,13.4l0.1,0.4h9.6l-0.1-0.6C57.6,8.5,46.7,0,31.8,0C13.7,0,0,14.1,0,32.9 s13.7,32.9,31.8,32.9c14.9,0,25.8-8.5,28.6-22.1l0.1-0.6h-9.6l-0.1,0.4c-2.5,8.5-9.5,13.4-19,13.4c-13.1,0-21.9-9.6-21.9-24 C9.8,18.6,18.6,8.9,31.7,8.9z"/>
<path fill="#525DF9" d="M110.1,58c-2.3,0-3.5-1.4-3.5-4.2V32.7c0-8.8-7.2-14.7-17.9-14.7c-7.5,0-16.7,3.9-18.3,14.9l-0.1,0.6h8.4 l0.1-0.4c1.4-5.7,5.8-6.9,9.3-6.9c6,0,9.5,2.7,9.5,7.4v2.6l-13.6,1.4c-7.6,0.8-15.7,5-15.7,14.6c0,8.1,6,13.5,14.8,13.5 c6.5,0,11.8-3.4,15-6.8c1.3,4.2,4.5,6.5,9.1,6.5c1.7,0,3.2-0.3,5.2-0.9l0.3-0.1v-7l-0.6,0.2C111.5,57.9,110.9,58,110.1,58z M97.7,43.5v7.3c-4.6,4.6-8.9,6.7-13.5,6.7c-2,0-6.8-0.6-6.8-5.7c0-3.8,2.8-6.3,7.4-6.9L97.7,43.5z"/>
<path fill="#525DF9" d="M146.5,18c-6.5,0-12,3.1-15.2,6.1v-5.2h-8.9v46h8.9V34.3c2.2-3.2,6.7-8.3,13-8.3c5.6,0,8.7,3.1,8.7,8.8 v30.1h8.9V33.3C161.9,23.7,156.1,18,146.5,18z"/>
<path fill="#525DF9" d="M195.8,18c-6.5,0-12,3.1-15.2,6.1v-5.2h-8.9v46h8.9V34.3c2.2-3.2,6.7-8.3,13-8.3c5.6,0,8.7,3.1,8.7,8.8 v30.1h8.9V33.3C211.2,23.7,205.4,18,195.8,18z"/>
<polygon fill="#525DF9" points="251.3,18.9 238.6,51.8 237.8,47.9 225.6,18.9 216.2,18.9 234.3,62.4 226,82.9 235,82.9 260.4,18.9 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 445.9 638" enable-background="new 0 0 445.9 638" xml:space="preserve">
<g>
<g>
<path fill="#5F5DF9" d="M224.5,638C101.1,638,0,537.8,0,414.7V223.3C0,100.2,101.1,0,224.5,0c109.6,0,202.8,78.3,220.9,186.1
c2.9,17.4-8.6,33.8-26,36.8c-17.4,2.9-33.7-8.8-36.7-26.2c-13-77-78.6-132.9-157-132.9c-88.2,0-159.3,71.6-159.3,159.5v191.4
c0,88,71.1,159.5,159.3,159.5c78.3,0,144.2-55.9,157.1-132.9c2.9-17.4,19.3-29.1,36.6-26.2c17.4,2.9,28.6,19.4,25.7,36.7
C427.2,559.7,334,638,224.5,638z"/>
</g>
<g opacity="0.5">
<path fill="#5F5DF9" d="M153.6,347.7c-17.6,0-30.7-14.3-30.7-31.9v-92.3c0-56.8,45.8-103,102.8-103c38.9,0,73.9,21.6,91.7,56.4
c8,15.7,1.7,34.9-14,42.9c-15.7,8-35,1.8-43-13.9c-6.8-13.4-21-21.7-35.8-21.7c-21.8,0-40.2,17.6-40.2,39.2v92.3
C184.3,333.4,171.2,347.7,153.6,347.7z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 MiB

+187
View File
@@ -0,0 +1,187 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="203px" height="39px" viewBox="0 0 203 39" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 54.1 (76490) - https://sketchapp.com -->
<title>Custom Preset 2 Copy</title>
<desc>Created with Sketch.</desc>
<defs>
<filter x="-22.4%" y="-22.4%" width="144.8%" height="144.8%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4707441 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176" id="path-2"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176 L0.103703704,13.9901176 Z" id="path-4"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176" id="path-6"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176 L0.103703704,13.9901176 Z" id="path-8"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176" id="path-10"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176 L0.103703704,13.9901176 Z" id="path-12"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176" id="path-14"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176 L0.103703704,13.9901176 Z" id="path-16"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176" id="path-18"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176 L0.103703704,13.9901176 Z" id="path-20"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176" id="path-22"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176 L0.103703704,13.9901176 Z" id="path-24"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176" id="path-26"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176 L0.103703704,13.9901176 Z" id="path-28"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176" id="path-30"></path>
<path d="M0.103703704,13.9901176 C0.103703704,21.6217647 6.3365037,27.8085294 14.0246815,27.8085294 L14.0246815,27.8085294 C21.7130667,27.8085294 27.9456593,21.6217647 27.9456593,13.9901176 L27.9456593,13.9901176 C27.9456593,6.35805882 21.7130667,0.171294118 14.0246815,0.171294118 L14.0246815,0.171294118 C6.3365037,0.171294118 0.103703704,6.35805882 0.103703704,13.9901176 L0.103703704,13.9901176 Z" id="path-32"></path>
<polyline id="path-34" points="1.7512 17.989 11.9476 17.989 12.85 0.35 0.05 0.1"></polyline>
<polyline id="path-36" points="1.7512 17.989 11.9476 17.989 12.85 0.35 0.05 0.1"></polyline>
<polygon id="path-38" points="1.7512 17.989 11.9476 17.989 12.85 0.35 0.05 0.1"></polygon>
</defs>
<g id="Custom-Preset-2-Copy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect fill="#FFFFFF" x="0" y="0" width="203" height="39"></rect>
<g id="Group-65" filter="url(#filter-1)" transform="translate(6.000000, 5.000000)">
<g id="Group-49" transform="translate(1.000000, 1.000000)">
<g id="Group-3">
<mask id="mask-3" fill="white">
<use xlink:href="#path-2"></use>
</mask>
<g id="Clip-2"></g>
<path d="M1.85138074,6.7158 C1.69250667,7.85927059 2.08948444,8.45077059 1.85138074,9.00253529 C1.61306963,9.55450588 1.3349363,10.5402706 1.57324741,11.2104176 C1.81155852,11.8805647 2.16892148,13.3392412 2.48666963,13.3789765 C2.80441778,13.4180941 2.24856593,11.8019176 2.56610667,12.3143588 C2.88406222,12.8270059 2.88406222,13.5893882 3.44012148,14.1150059 C3.99597333,14.6406235 4.75072889,14.5617706 5.34661037,15.0740059 C5.94228444,15.5866529 6.53795852,16.3358588 7.09401778,16.2570059 C7.09401778,16.2570059 7.05419556,16.6510647 6.77626963,17.3214176 C6.4983437,17.9915647 6.45852148,18.7798882 6.81609185,19.2532118 C7.17345481,19.7263294 7.53081778,20.4362118 7.84877333,20.7909471 C8.16652148,21.1456824 8.40483259,23.0381529 8.32518815,23.9841824 C8.24595852,24.9304176 8.68275852,27.0594471 9.67561778,27.5327706 C10.668477,28.0058882 9.67561778,27.2960059 9.47712889,26.7047118 C9.27843259,26.1134176 9.63040296,24.7333882 10.1101363,24.5361529 C10.58904,24.3389176 11.0260474,23.5505941 11.3834104,22.9984176 C11.7409807,22.4466529 12.654403,22.2098882 12.9325363,21.5399471 C13.2106696,20.8698 13.0914104,20.0810647 13.2502844,19.7263294 C13.4091585,19.3713882 13.8461659,18.5828588 12.8927141,18.1097412 C11.939677,17.6366235 11.5424919,17.8733882 11.5026696,17.4395941 C11.4628474,17.0058 11.2245363,16.5328882 10.5496326,16.3358588 C9.87431407,16.1384176 9.27843259,15.7560941 8.52367704,15.6714765 C7.76912889,15.5866529 7.61025481,16.1781529 7.21306963,15.8625353 C6.81609185,15.5473294 6.4983437,15.2317118 6.33926222,14.8376529 C6.18059556,14.4433882 5.70376593,14.6799471 5.74379556,14.4433882 C5.78320296,14.2066235 6.41869926,13.5366824 5.70376593,13.7732412 C4.98904,14.0095941 4.3535437,13.9307412 4.39315852,13.3001235 C4.43318815,12.6693 5.30678815,12.4325353 5.66435852,12.3536824 C6.02151407,12.2748294 6.29964741,12.7084176 6.73665481,12.9847118 C7.17345481,13.2605941 6.77626963,12.5904471 7.01458074,12.1171235 C7.25289185,11.6440059 8.16652148,11.6835353 8.28557333,11.0133882 C8.40483259,10.3432412 8.24595852,9.79106471 8.96089185,9.71221176 C9.67561778,9.63335882 10.4301659,9.75153529 10.5098104,9.39659412 C10.58904,9.04206471 9.67561778,9.51518235 9.63600296,9.08138824 C9.59618074,8.6478 10.4301659,8.05650588 10.668477,8.49009412 C10.9067881,8.92368235 11.5026696,8.96321176 11.5821067,8.8053 C11.6615437,8.6478 11.5821067,8.37191765 11.3039733,7.70156471 C11.0260474,7.03121176 10.7479141,7.22844706 10.5098104,6.47944706 C10.2714993,5.73024118 9.87431407,6.51877059 9.47712889,6.12450588 C9.0799437,5.73024118 8.60332148,4.90218235 8.52367704,5.61206471 C8.44444741,6.32153529 8.44444741,6.7158 8.08708444,7.26777059 C7.72951407,7.81994706 7.57084741,7.38615294 7.25289185,7.03121176 C6.9351437,6.67647647 6.22021037,6.32153529 6.45852148,6.00632941 C6.69683259,5.69071176 6.9351437,4.86285882 7.29250667,5.09962353 C7.65007704,5.33618235 8.2061363,5.33618235 8.12669926,4.94171176 C8.04726222,4.54765294 8.12669926,4.38974118 8.28557333,4.19271176 C8.44444741,3.99547647 9.00050667,3.64053529 9.00050667,4.35041765 C9.00050667,5.06009412 8.92086222,5.25732941 9.47712889,5.33618235 C10.0331881,5.41503529 10.668477,5.45435882 10.6290696,5.09962353 C10.58904,4.74468235 10.7879437,4.82353529 10.6290696,4.23203529 C10.4699881,3.64053529 9.99336593,3.60141765 9.47712889,3.32512353 C8.96089185,3.04924118 8.68275852,2.61565294 8.24595852,2.77335882 C7.80915852,2.93106471 7.76912889,3.08856471 7.72951407,3.52235882 C7.68969185,3.95615294 7.45138074,4.11385882 7.29250667,3.91662353 C7.13384,3.71959412 7.33232889,3.08856471 6.73665481,3.48303529 C6.14077333,3.87709412 5.90266963,4.54765294 5.58492148,4.07432941 C5.26696593,3.60141765 6.0613363,2.77335882 5.22735111,3.1283 C4.39315852,3.48303529 3.79727704,3.87709412 4.23428444,4.03500588 C4.67129185,4.19271176 5.10829926,4.4688 4.67129185,4.62650588 C4.23428444,4.78400588 3.36047704,4.50812353 3.04272889,4.82353529 C2.72498074,5.13874118 1.85138074,6.7158 1.85138074,6.7158" id="Fill-1" fill="#2196F3" mask="url(#mask-3)"></path>
</g>
<g id="Group-6">
<mask id="mask-5" fill="white">
<use xlink:href="#path-4"></use>
</mask>
<g id="Clip-5"></g>
<path d="M1.85138074,6.7158 C1.69250667,7.85927059 2.08948444,8.45077059 1.85138074,9.00253529 C1.61306963,9.55450588 1.3349363,10.5402706 1.57324741,11.2104176 C1.81155852,11.8805647 2.16892148,13.3392412 2.48666963,13.3789765 C2.80441778,13.4180941 2.24856593,11.8019176 2.56610667,12.3143588 C2.88406222,12.8270059 2.88406222,13.5893882 3.44012148,14.1150059 C3.99597333,14.6406235 4.75072889,14.5617706 5.34661037,15.0740059 C5.94228444,15.5866529 6.53795852,16.3358588 7.09401778,16.2570059 C7.09401778,16.2570059 7.05419556,16.6510647 6.77626963,17.3214176 C6.4983437,17.9915647 6.45852148,18.7798882 6.81609185,19.2532118 C7.17345481,19.7263294 7.53081778,20.4362118 7.84877333,20.7909471 C8.16652148,21.1456824 8.40483259,23.0381529 8.32518815,23.9841824 C8.24595852,24.9304176 8.68275852,27.0594471 9.67561778,27.5327706 C10.668477,28.0058882 9.67561778,27.2960059 9.47712889,26.7047118 C9.27843259,26.1134176 9.63040296,24.7333882 10.1101363,24.5361529 C10.58904,24.3389176 11.0260474,23.5505941 11.3834104,22.9984176 C11.7409807,22.4466529 12.654403,22.2098882 12.9325363,21.5399471 C13.2106696,20.8698 13.0914104,20.0810647 13.2502844,19.7263294 C13.4091585,19.3713882 13.8461659,18.5828588 12.8927141,18.1097412 C11.939677,17.6366235 11.5424919,17.8733882 11.5026696,17.4395941 C11.4628474,17.0058 11.2245363,16.5328882 10.5496326,16.3358588 C9.87431407,16.1384176 9.27843259,15.7560941 8.52367704,15.6714765 C7.76912889,15.5866529 7.61025481,16.1781529 7.21306963,15.8625353 C6.81609185,15.5473294 6.4983437,15.2317118 6.33926222,14.8376529 C6.18059556,14.4433882 5.70376593,14.6799471 5.74379556,14.4433882 C5.78320296,14.2066235 6.41869926,13.5366824 5.70376593,13.7732412 C4.98904,14.0095941 4.3535437,13.9307412 4.39315852,13.3001235 C4.43318815,12.6693 5.30678815,12.4325353 5.66435852,12.3536824 C6.02151407,12.2748294 6.29964741,12.7084176 6.73665481,12.9847118 C7.17345481,13.2605941 6.77626963,12.5904471 7.01458074,12.1171235 C7.25289185,11.6440059 8.16652148,11.6835353 8.28557333,11.0133882 C8.40483259,10.3432412 8.24595852,9.79106471 8.96089185,9.71221176 C9.67561778,9.63335882 10.4301659,9.75153529 10.5098104,9.39659412 C10.58904,9.04206471 9.67561778,9.51518235 9.63600296,9.08138824 C9.59618074,8.6478 10.4301659,8.05650588 10.668477,8.49009412 C10.9067881,8.92368235 11.5026696,8.96321176 11.5821067,8.8053 C11.6615437,8.6478 11.5821067,8.37191765 11.3039733,7.70156471 C11.0260474,7.03121176 10.7479141,7.22844706 10.5098104,6.47944706 C10.2714993,5.73024118 9.87431407,6.51877059 9.47712889,6.12450588 C9.0799437,5.73024118 8.60332148,4.90218235 8.52367704,5.61206471 C8.44444741,6.32153529 8.44444741,6.7158 8.08708444,7.26777059 C7.72951407,7.81994706 7.57084741,7.38615294 7.25289185,7.03121176 C6.9351437,6.67647647 6.22021037,6.32153529 6.45852148,6.00632941 C6.69683259,5.69071176 6.9351437,4.86285882 7.29250667,5.09962353 C7.65007704,5.33618235 8.2061363,5.33618235 8.12669926,4.94171176 C8.04726222,4.54765294 8.12669926,4.38974118 8.28557333,4.19271176 C8.44444741,3.99547647 9.00050667,3.64053529 9.00050667,4.35041765 C9.00050667,5.06009412 8.92086222,5.25732941 9.47712889,5.33618235 C10.0331881,5.41503529 10.668477,5.45435882 10.6290696,5.09962353 C10.58904,4.74468235 10.7879437,4.82353529 10.6290696,4.23203529 C10.4699881,3.64053529 9.99336593,3.60141765 9.47712889,3.32512353 C8.96089185,3.04924118 8.68275852,2.61565294 8.24595852,2.77335882 C7.80915852,2.93106471 7.76912889,3.08856471 7.72951407,3.52235882 C7.68969185,3.95615294 7.45138074,4.11385882 7.29250667,3.91662353 C7.13384,3.71959412 7.33232889,3.08856471 6.73665481,3.48303529 C6.14077333,3.87709412 5.90266963,4.54765294 5.58492148,4.07432941 C5.26696593,3.60141765 6.0613363,2.77335882 5.22735111,3.1283 C4.39315852,3.48303529 3.79727704,3.87709412 4.23428444,4.03500588 C4.67129185,4.19271176 5.10829926,4.4688 4.67129185,4.62650588 C4.23428444,4.78400588 3.36047704,4.50812353 3.04272889,4.82353529 C2.72498074,5.13874118 1.85138074,6.7158 1.85138074,6.7158 Z" id="Stroke-4" stroke="#2196F3" mask="url(#mask-5)"></path>
</g>
<g id="Group-9">
<mask id="mask-7" fill="white">
<use xlink:href="#path-6"></use>
</mask>
<g id="Clip-8"></g>
<path d="M6.5378963,2.45802941 C6.53582222,2.89882353 6.65715556,3.24635294 7.05434074,2.85229412 C7.45152593,2.45802941 7.68962963,1.98491176 7.96797037,2.18194118 C8.2458963,2.37917647 8.72251852,2.32667647 8.9208,2.3135 C9.1197037,2.30032353 9.15931852,1.70882353 9.71537778,1.78767647 C10.271437,1.86652941 10.0729481,1.6695 10.6686222,1.35388235 C11.2645037,1.03847059 12.5354963,0.486705882 11.2246815,0.644411765 C9.91386667,0.802117647 9.83442963,0.447176471 8.9208,1.03847059 C8.00758519,1.62997059 7.8090963,1.62997059 7.57078519,1.78767647 C7.33247407,1.94538235 7.05434074,1.31455882 6.73659259,1.78767647 C6.41863704,2.26079412 6.54017778,2.00879412 6.5378963,2.45802941" id="Fill-7" fill="#2196F3" mask="url(#mask-7)"></path>
</g>
<g id="Group-12">
<mask id="mask-9" fill="white">
<use xlink:href="#path-8"></use>
</mask>
<g id="Clip-11"></g>
<path d="M6.5378963,2.45802941 C6.53582222,2.89882353 6.65715556,3.24635294 7.05434074,2.85229412 C7.45152593,2.45802941 7.68962963,1.98491176 7.96797037,2.18194118 C8.2458963,2.37917647 8.72251852,2.32667647 8.9208,2.3135 C9.1197037,2.30032353 9.15931852,1.70882353 9.71537778,1.78767647 C10.271437,1.86652941 10.0729481,1.6695 10.6686222,1.35388235 C11.2645037,1.03847059 12.5354963,0.486705882 11.2246815,0.644411765 C9.91386667,0.802117647 9.83442963,0.447176471 8.9208,1.03847059 C8.00758519,1.62997059 7.8090963,1.62997059 7.57078519,1.78767647 C7.33247407,1.94538235 7.05434074,1.31455882 6.73659259,1.78767647 C6.41863704,2.26079412 6.54017778,2.00879412 6.5378963,2.45802941 Z" id="Stroke-10" stroke="#2196F3" mask="url(#mask-9)"></path>
</g>
<g id="Group-15">
<mask id="mask-11" fill="white">
<use xlink:href="#path-10"></use>
</mask>
<g id="Clip-14"></g>
<path d="M11.3040148,1.23570588 C10.8346519,1.63841176 10.1126667,2.22147059 10.6685185,2.22147059 C11.2245778,2.22147059 11.4946222,1.93241176 11.7966074,2.3135 C12.0985926,2.69438235 11.9791259,3.28588235 11.9791259,3.56176471 C11.9791259,3.83785294 11.8202519,4.46888235 12.2176444,5.25720588 C12.6148296,6.04552941 12.6544444,6.55817647 13.051837,6.04552941 C13.4488148,5.53329412 14.4020593,4.54752941 14.8786815,4.46888235 C15.3553037,4.38982353 15.8323407,4.19258824 16.0704444,3.79832353 C16.3085481,3.40405882 16.0704444,3.02152941 16.4674222,2.73988235 C16.8644,2.45802941 16.784963,2.10308824 16.9044296,1.6695 C17.0232741,1.23570588 18.0959852,1.23570588 17.6191556,0.999352941 C17.1427407,0.762588235 16.2689333,0.604882353 15.2360444,0.723264706 C14.203363,0.841441176 12.1778222,0.486705882 11.3040148,1.23570588" id="Fill-13" fill="#2196F3" mask="url(#mask-11)"></path>
</g>
<g id="Group-18">
<mask id="mask-13" fill="white">
<use xlink:href="#path-12"></use>
</mask>
<g id="Clip-17"></g>
<path d="M11.3040148,1.23570588 C10.8346519,1.63841176 10.1126667,2.22147059 10.6685185,2.22147059 C11.2245778,2.22147059 11.4946222,1.93241176 11.7966074,2.3135 C12.0985926,2.69438235 11.9791259,3.28588235 11.9791259,3.56176471 C11.9791259,3.83785294 11.8202519,4.46888235 12.2176444,5.25720588 C12.6148296,6.04552941 12.6544444,6.55817647 13.051837,6.04552941 C13.4488148,5.53329412 14.4020593,4.54752941 14.8786815,4.46888235 C15.3553037,4.38982353 15.8323407,4.19258824 16.0704444,3.79832353 C16.3085481,3.40405882 16.0704444,3.02152941 16.4674222,2.73988235 C16.8644,2.45802941 16.784963,2.10308824 16.9044296,1.6695 C17.0232741,1.23570588 18.0959852,1.23570588 17.6191556,0.999352941 C17.1427407,0.762588235 16.2689333,0.604882353 15.2360444,0.723264706 C14.203363,0.841441176 12.1778222,0.486705882 11.3040148,1.23570588 Z" id="Stroke-16" stroke="#2196F3" mask="url(#mask-13)"></path>
</g>
<g id="Group-21">
<mask id="mask-15" fill="white">
<use xlink:href="#path-14"></use>
</mask>
<g id="Clip-20"></g>
<path d="M6.93518519,13.4181353 C6.68256296,13.8270176 6.81592593,13.8519294 7.09405926,13.9307824 C7.37198519,14.0096353 6.9748,14.4825471 7.29254815,14.5220765 C7.6102963,14.5618118 8.32522963,14.7588412 8.52371852,14.5220765 C8.72262222,14.2857235 8.20617778,14.3779588 7.84860741,14.1150471 C7.49145185,13.8519294 7.11459259,13.1278412 6.93518519,13.4181353" id="Fill-19" fill="#2196F3" mask="url(#mask-15)"></path>
</g>
<g id="Group-24">
<mask id="mask-17" fill="white">
<use xlink:href="#path-16"></use>
</mask>
<g id="Clip-23"></g>
<path d="M6.93518519,13.4181353 C6.68256296,13.8270176 6.81592593,13.8519294 7.09405926,13.9307824 C7.37198519,14.0096353 6.9748,14.4825471 7.29254815,14.5220765 C7.6102963,14.5618118 8.32522963,14.7588412 8.52371852,14.5220765 C8.72262222,14.2857235 8.20617778,14.3779588 7.84860741,14.1150471 C7.49145185,13.8519294 7.11459259,13.1278412 6.93518519,13.4181353 Z" id="Stroke-22" stroke="#2196F3" mask="url(#mask-17)"></path>
</g>
<g id="Group-27">
<mask id="mask-19" fill="white">
<use xlink:href="#path-18"></use>
</mask>
<g id="Clip-26"></g>
<path d="M26.1584504,19.8445265 C25.7305689,20.0572029 25.9203467,20.3967029 25.5229541,20.6332618 C25.1257689,20.8696147 25.284643,20.9484676 25.1655911,21.5006441 C25.0463319,22.0524088 25.2052059,22.3678206 25.4833393,21.9342324 C25.7614726,21.5006441 26.6350726,19.6081735 26.1584504,19.8445265" id="Fill-25" fill="#2196F3" mask="url(#mask-19)"></path>
</g>
<g id="Group-30">
<mask id="mask-21" fill="white">
<use xlink:href="#path-20"></use>
</mask>
<g id="Clip-29"></g>
<path d="M26.1584504,19.8445265 C25.7305689,20.0572029 25.9203467,20.3967029 25.5229541,20.6332618 C25.1257689,20.8696147 25.284643,20.9484676 25.1655911,21.5006441 C25.0463319,22.0524088 25.2052059,22.3678206 25.4833393,21.9342324 C25.7614726,21.5006441 26.6350726,19.6081735 26.1584504,19.8445265 Z" id="Stroke-28" stroke="#2196F3" mask="url(#mask-21)"></path>
</g>
<g id="Group-33">
<mask id="mask-23" fill="white">
<use xlink:href="#path-22"></use>
</mask>
<g id="Clip-32"></g>
<path d="M26.5159378,11.4075706 C26.3966785,11.5259529 26.1981896,10.8556 26.0791378,10.5401882 C25.9598785,10.2247765 25.9627822,9.67651176 26.29816,9.37180588 C26.7158785,8.99174706 26.5159378,9.86983529 26.5159378,10.3431588 C26.5159378,10.8160706 26.6349896,11.2891882 26.5159378,11.4075706 M25.1254785,10.1854529 C24.8473452,10.0277471 24.331523,10.1854529 23.6960267,10.3824824 C23.060323,10.5797176 23.5688859,9.94374706 23.8549007,9.5151 C24.1106341,9.13195294 23.9739526,9.63327647 24.5302193,9.67280588 C25.0860711,9.71233529 25.4040267,10.3431588 25.1254785,10.1854529 M24.2124711,11.5259529 C24.1726489,11.8411588 24.331523,12.3538059 23.4577156,12.1567765 C22.5839081,11.9595412 22.5839081,11.4864235 22.2265452,11.8411588 C21.8691822,12.1961 21.4321748,12.5113059 20.9157304,11.9595412 C20.3994933,11.4075706 20.4789304,11.2498647 20.2010044,11.2103353 C20.0029304,11.1825412 19.3427526,11.0361588 18.7922933,11.1951 C18.8350193,11.1697765 18.8806489,11.1364235 18.9298044,11.0921588 C19.3269896,10.7374235 19.2475526,10.6190412 19.6843526,10.2247765 C20.1215674,9.83030588 20.4391081,9.47577647 20.7568563,9.83030588 C21.0746044,10.1854529 21.749923,10.2643059 21.5116119,10.6585706 C21.2733007,11.0526294 21.4321748,11.2891882 21.7103081,11.0526294 C21.9880267,10.8160706 22.3854193,10.6585706 22.1074933,10.3431588 C21.8291526,10.0277471 21.5510193,9.19968824 21.9486193,9.75165882 C22.3458044,10.3036294 22.4648563,10.5797176 22.70296,10.8949235 C22.9414785,11.2103353 23.1797896,11.4075706 23.2592267,11.2103353 C23.3386637,11.0133059 23.2194044,10.5797176 23.3386637,10.5008647 C23.4577156,10.4220118 23.3386637,11.1710118 23.6960267,11.2103353 C24.0533896,11.2498647 24.2520859,11.2103353 24.2124711,11.5259529 M28.4224267,13.2213941 C28.3033748,12.5508353 27.4295674,6.47936471 27.4295674,6.47936471 C27.4295674,6.47936471 25.0860711,4.98115882 24.6890933,5.29636471 C24.2917007,5.61198235 23.6165896,5.56442353 23.6960267,5.25312941 C23.7754637,4.94183529 24.2917007,5.02089412 23.4176859,4.42918824 C22.5442933,3.83768824 22.3854193,3.32524706 21.7103081,4.07424706 C21.0347822,4.82345294 20.8761156,5.45427647 20.4789304,5.65151176 C20.0817452,5.84854118 19.763997,6.47936471 20.2010044,6.63707059 C20.6378044,6.79457059 20.6776267,6.63707059 21.0347822,6.95227647 C21.39256,7.26789412 21.8691822,7.18883529 21.9486193,6.99201176 C22.0280563,6.79457059 22.1074933,6.16395294 22.1471081,5.92739412 C22.1869304,5.69083529 22.5905452,4.90230588 22.5474044,5.53312941 C22.5044711,6.16395294 23.1001452,6.16395294 22.70296,6.59754118 C22.3059822,7.03112941 22.5442933,7.38627647 21.749923,7.46512941 C20.9553452,7.54377647 20.9157304,7.07086471 20.4789304,7.30742353 C20.041923,7.54377647 20.0817452,7.70168824 19.9228711,7.93804118 C19.763997,8.1746 18.9298044,8.64771765 18.9298044,8.64771765 C18.9298044,8.64771765 18.2546933,8.41115882 18.5722341,8.84495294 C18.8901896,9.27854118 19.1681156,9.79098235 18.8901896,9.83030588 C18.6120563,9.86983529 17.8573007,9.43624706 17.8573007,9.90936471 C17.8573007,10.3824824 17.7384563,10.8949235 18.0562044,11.0133059 C18.2804119,11.0966882 18.4260119,11.2776588 18.63176,11.2523353 C18.4722637,11.3206882 18.3272859,11.4197176 18.2150785,11.5652765 C17.9058341,11.9661294 18.0958193,12.6692176 17.460323,12.9057765 C16.8250341,13.1425412 16.8250341,13.4182176 16.7055674,13.9308647 C16.586723,14.4433059 16.7055674,15.7442765 16.8644415,15.8626588 C17.0231081,15.9808353 17.3014489,16.9666 17.9767674,16.8875412 C18.6520859,16.8086882 19.3668119,16.7784235 19.605123,16.8922765 C19.8434341,17.0057176 20.2404119,16.6511882 20.3596711,17.5578941 C20.4789304,18.4646 20.7568563,18.5829824 20.9157304,19.0561 C21.0746044,19.5290118 20.8362933,20.5149824 20.9157304,21.1062765 C20.9951674,21.6975706 21.5510193,22.7228647 21.5510193,23.2353059 C21.5510193,23.7477471 22.1471081,23.9843059 22.4648563,23.7872765 C22.7826044,23.5900412 23.4577156,23.1957765 23.7356415,22.5649529 C24.0139822,21.9343353 24.0139822,21.6189235 24.4505748,20.7908647 C24.8873748,19.9630118 24.7685304,19.3715118 24.9668119,18.7406882 C25.1655081,18.1098647 25.6433748,17.6760706 26.29816,16.9666 C26.9527378,16.2571294 26.8349304,15.8626588 26.29816,15.9019824 C25.7613896,15.9413059 25.4034044,15.4290706 25.1254785,14.7982471 C24.8479674,14.1672176 24.5302193,12.5903647 24.7685304,13.1028059 C25.0068415,13.6156588 25.4832563,15.0348059 25.9598785,15.2713647 C26.4365007,15.5079235 27.3105156,14.8692765 27.5090044,14.6366294 C27.7074933,14.4037765 27.6280563,13.7338353 27.1116119,13.4577471 C26.5953748,13.1816588 26.913123,12.9453059 27.4295674,13.2605118 C27.9458044,13.5759235 28.5416859,13.8913353 28.4224267,13.2213941" id="Fill-31" fill="#2196F3" mask="url(#mask-23)"></path>
</g>
<g id="Group-36">
<mask id="mask-25" fill="white">
<use xlink:href="#path-24"></use>
</mask>
<g id="Clip-35"></g>
<path d="M26.5159378,11.4075706 C26.3966785,11.5259529 26.1981896,10.8556 26.0791378,10.5401882 C25.9598785,10.2247765 25.9627822,9.67651176 26.29816,9.37180588 C26.7158785,8.99174706 26.5159378,9.86983529 26.5159378,10.3431588 C26.5159378,10.8160706 26.6349896,11.2891882 26.5159378,11.4075706 Z M25.1254785,10.1854529 C24.8473452,10.0277471 24.331523,10.1854529 23.6960267,10.3824824 C23.060323,10.5797176 23.5688859,9.94374706 23.8549007,9.5151 C24.1106341,9.13195294 23.9739526,9.63327647 24.5302193,9.67280588 C25.0860711,9.71233529 25.4040267,10.3431588 25.1254785,10.1854529 Z M24.2124711,11.5259529 C24.1726489,11.8411588 24.331523,12.3538059 23.4577156,12.1567765 C22.5839081,11.9595412 22.5839081,11.4864235 22.2265452,11.8411588 C21.8691822,12.1961 21.4321748,12.5113059 20.9157304,11.9595412 C20.3994933,11.4075706 20.4789304,11.2498647 20.2010044,11.2103353 C20.0029304,11.1825412 19.3427526,11.0361588 18.7922933,11.1951 C18.8350193,11.1697765 18.8806489,11.1364235 18.9298044,11.0921588 C19.3269896,10.7374235 19.2475526,10.6190412 19.6843526,10.2247765 C20.1215674,9.83030588 20.4391081,9.47577647 20.7568563,9.83030588 C21.0746044,10.1854529 21.749923,10.2643059 21.5116119,10.6585706 C21.2733007,11.0526294 21.4321748,11.2891882 21.7103081,11.0526294 C21.9880267,10.8160706 22.3854193,10.6585706 22.1074933,10.3431588 C21.8291526,10.0277471 21.5510193,9.19968824 21.9486193,9.75165882 C22.3458044,10.3036294 22.4648563,10.5797176 22.70296,10.8949235 C22.9414785,11.2103353 23.1797896,11.4075706 23.2592267,11.2103353 C23.3386637,11.0133059 23.2194044,10.5797176 23.3386637,10.5008647 C23.4577156,10.4220118 23.3386637,11.1710118 23.6960267,11.2103353 C24.0533896,11.2498647 24.2520859,11.2103353 24.2124711,11.5259529 Z M28.4224267,13.2213941 C28.3033748,12.5508353 27.4295674,6.47936471 27.4295674,6.47936471 C27.4295674,6.47936471 25.0860711,4.98115882 24.6890933,5.29636471 C24.2917007,5.61198235 23.6165896,5.56442353 23.6960267,5.25312941 C23.7754637,4.94183529 24.2917007,5.02089412 23.4176859,4.42918824 C22.5442933,3.83768824 22.3854193,3.32524706 21.7103081,4.07424706 C21.0347822,4.82345294 20.8761156,5.45427647 20.4789304,5.65151176 C20.0817452,5.84854118 19.763997,6.47936471 20.2010044,6.63707059 C20.6378044,6.79457059 20.6776267,6.63707059 21.0347822,6.95227647 C21.39256,7.26789412 21.8691822,7.18883529 21.9486193,6.99201176 C22.0280563,6.79457059 22.1074933,6.16395294 22.1471081,5.92739412 C22.1869304,5.69083529 22.5905452,4.90230588 22.5474044,5.53312941 C22.5044711,6.16395294 23.1001452,6.16395294 22.70296,6.59754118 C22.3059822,7.03112941 22.5442933,7.38627647 21.749923,7.46512941 C20.9553452,7.54377647 20.9157304,7.07086471 20.4789304,7.30742353 C20.041923,7.54377647 20.0817452,7.70168824 19.9228711,7.93804118 C19.763997,8.1746 18.9298044,8.64771765 18.9298044,8.64771765 C18.9298044,8.64771765 18.2546933,8.41115882 18.5722341,8.84495294 C18.8901896,9.27854118 19.1681156,9.79098235 18.8901896,9.83030588 C18.6120563,9.86983529 17.8573007,9.43624706 17.8573007,9.90936471 C17.8573007,10.3824824 17.7384563,10.8949235 18.0562044,11.0133059 C18.2804119,11.0966882 18.4260119,11.2776588 18.63176,11.2523353 C18.4722637,11.3206882 18.3272859,11.4197176 18.2150785,11.5652765 C17.9058341,11.9661294 18.0958193,12.6692176 17.460323,12.9057765 C16.8250341,13.1425412 16.8250341,13.4182176 16.7055674,13.9308647 C16.586723,14.4433059 16.7055674,15.7442765 16.8644415,15.8626588 C17.0231081,15.9808353 17.3014489,16.9666 17.9767674,16.8875412 C18.6520859,16.8086882 19.3668119,16.7784235 19.605123,16.8922765 C19.8434341,17.0057176 20.2404119,16.6511882 20.3596711,17.5578941 C20.4789304,18.4646 20.7568563,18.5829824 20.9157304,19.0561 C21.0746044,19.5290118 20.8362933,20.5149824 20.9157304,21.1062765 C20.9951674,21.6975706 21.5510193,22.7228647 21.5510193,23.2353059 C21.5510193,23.7477471 22.1471081,23.9843059 22.4648563,23.7872765 C22.7826044,23.5900412 23.4577156,23.1957765 23.7356415,22.5649529 C24.0139822,21.9343353 24.0139822,21.6189235 24.4505748,20.7908647 C24.8873748,19.9630118 24.7685304,19.3715118 24.9668119,18.7406882 C25.1655081,18.1098647 25.6433748,17.6760706 26.29816,16.9666 C26.9527378,16.2571294 26.8349304,15.8626588 26.29816,15.9019824 C25.7613896,15.9413059 25.4034044,15.4290706 25.1254785,14.7982471 C24.8479674,14.1672176 24.5302193,12.5903647 24.7685304,13.1028059 C25.0068415,13.6156588 25.4832563,15.0348059 25.9598785,15.2713647 C26.4365007,15.5079235 27.3105156,14.8692765 27.5090044,14.6366294 C27.7074933,14.4037765 27.6280563,13.7338353 27.1116119,13.4577471 C26.5953748,13.1816588 26.913123,12.9453059 27.4295674,13.2605118 C27.9458044,13.5759235 28.5416859,13.8913353 28.4224267,13.2213941 Z" id="Stroke-34" stroke="#2196F3" mask="url(#mask-25)"></path>
</g>
<g id="Group-39">
<mask id="mask-27" fill="white">
<use xlink:href="#path-26"></use>
</mask>
<g id="Clip-38"></g>
<path d="M18.8503674,6.59758235 C18.6070785,6.67025882 18.4135674,7.14955294 18.5326193,7.38631765 C18.6520859,7.62267059 18.4135674,7.26772941 18.0958193,7.46496471 C17.7778637,7.66199412 17.3060119,8.21417059 17.7405304,8.25328824 C18.1752563,8.29302353 18.0958193,7.93808235 18.4930044,8.09578824 C18.8901896,8.25328824 19.3269896,8.21417059 19.3269896,7.81990588 C19.3269896,7.42543529 19.2475526,6.47940588 18.8503674,6.59758235" id="Fill-37" fill="#2196F3" mask="url(#mask-27)"></path>
</g>
<g id="Group-42">
<mask id="mask-29" fill="white">
<use xlink:href="#path-28"></use>
</mask>
<g id="Clip-41"></g>
<path d="M18.8503674,6.59758235 C18.6070785,6.67025882 18.4135674,7.14955294 18.5326193,7.38631765 C18.6520859,7.62267059 18.4135674,7.26772941 18.0958193,7.46496471 C17.7778637,7.66199412 17.3060119,8.21417059 17.7405304,8.25328824 C18.1752563,8.29302353 18.0958193,7.93808235 18.4930044,8.09578824 C18.8901896,8.25328824 19.3269896,8.21417059 19.3269896,7.81990588 C19.3269896,7.42543529 19.2475526,6.47940588 18.8503674,6.59758235 Z" id="Stroke-40" stroke="#2196F3" mask="url(#mask-29)"></path>
</g>
<g id="Group-45">
<mask id="mask-31" fill="white">
<use xlink:href="#path-30"></use>
</mask>
<g id="Clip-44"></g>
<path d="M16.2689333,4.78404706 C16.0295852,4.81801765 15.9509778,5.41487059 16.4674222,5.49372353 C16.9838667,5.57257647 17.9082815,5.37534118 17.5652296,5.05992941 C17.2221778,4.74472353 16.8252,4.70519412 16.2689333,4.78404706" id="Fill-43" fill="#2196F3" mask="url(#mask-31)"></path>
</g>
<g id="Group-48">
<mask id="mask-33" fill="white">
<use xlink:href="#path-32"></use>
</mask>
<g id="Clip-47"></g>
<path d="M16.2689333,4.78404706 C16.0295852,4.81801765 15.9509778,5.41487059 16.4674222,5.49372353 C16.9838667,5.57257647 17.9082815,5.37534118 17.5652296,5.05992941 C17.2221778,4.74472353 16.8252,4.70519412 16.2689333,4.78404706 Z" id="Stroke-46" stroke="#2196F3" mask="url(#mask-33)"></path>
</g>
</g>
<g id="Group-54">
<path d="M28.1296528,14.2858085 C28.1296528,21.8560338 21.992681,27.9932099 14.4222514,27.9932099 C6.85182183,27.9932099 0.71485,21.8560338 0.71485,14.2858085 C0.71485,6.71537887 6.85182183,0.578407042 14.4222514,0.578407042 C21.992681,0.578407042 28.1296528,6.71537887 28.1296528,14.2858085 Z" id="Stroke-50" stroke="#2196F3"></path>
<path d="M14.4854387,1.69603028 C7.4461993,1.69603028 1.71931197,7.42291761 1.71931197,14.462157 C1.71931197,21.5013965 7.4461993,27.2280796 14.4854387,27.2280796 C21.5246782,27.2280796 27.2513613,21.5013965 27.2513613,14.462157 C27.2513613,7.42291761 21.5246782,1.69603028 14.4854387,1.69603028 M14.4854387,28.8618824 C6.54536127,28.8618824 0.0855091549,22.4022345 0.0855091549,14.462157 C0.0855091549,6.52187535 6.54536127,0.0622274648 14.4854387,0.0622274648 C22.4255162,0.0622274648 28.8851641,6.52187535 28.8851641,14.462157 C28.8851641,22.4022345 22.4255162,28.8618824 14.4854387,28.8618824" id="Fill-52" fill="#2196F3"></path>
</g>
<g id="Group-64" transform="translate(16.000000, 0.000000)">
<g id="Group-57">
<mask id="mask-35" fill="white">
<use xlink:href="#path-34"></use>
</mask>
<g id="Clip-56"></g>
<path d="M7.92792,7.13868 C7.61952,7.44688 7.25072,7.60088 6.82132,7.60088 C6.39172,7.60088 6.02312,7.44688 5.71492,7.13868 C5.40672,6.83048 5.25232,6.46128 5.25232,6.03208 C5.25232,5.60268 5.40672,5.23948 5.71492,4.94208 C6.02312,4.64488 6.39172,4.49608 6.82132,4.49608 C7.25072,4.49608 7.61952,4.64488 7.92792,4.94208 C8.23592,5.23948 8.39032,5.60268 8.39032,6.03208 C8.39032,6.46128 8.23592,6.83048 7.92792,7.13868 M10.43812,2.53088 C9.44732,1.55088 8.24732,1.06088 6.83792,1.06088 C5.42852,1.06088 4.22852,1.55088 3.23752,2.53088 C2.24652,3.51048 1.75112,4.69428 1.75112,6.08168 C1.75112,6.91828 2.17492,8.31688 3.02292,10.27648 C3.87052,12.23628 4.71832,14.01988 5.56592,15.62728 C6.41412,17.23468 6.83792,18.01648 6.83792,17.97268 C6.96992,17.73048 7.15152,17.40008 7.38272,16.98168 C7.61412,16.56328 8.02152,15.77608 8.60512,14.61988 C9.18852,13.46368 9.70052,12.40108 10.14052,11.43288 C10.58132,10.46368 10.98872,9.46168 11.36292,8.42648 C11.73752,7.39188 11.92432,6.61008 11.92432,6.08168 C11.92432,4.69428 11.42892,3.51048 10.43812,2.53088" id="Fill-55" fill="#FFFFFF" mask="url(#mask-35)"></path>
</g>
<g id="Group-60">
<mask id="mask-37" fill="white">
<use xlink:href="#path-36"></use>
</mask>
<g id="Clip-59"></g>
<path d="M7.92792,7.13868 C7.61952,7.44688 7.25072,7.60088 6.82132,7.60088 C6.39172,7.60088 6.02312,7.44688 5.71492,7.13868 C5.40672,6.83048 5.25232,6.46128 5.25232,6.03208 C5.25232,5.60268 5.40672,5.23948 5.71492,4.94208 C6.02312,4.64488 6.39172,4.49608 6.82132,4.49608 C7.25072,4.49608 7.61952,4.64488 7.92792,4.94208 C8.23592,5.23948 8.39032,5.60268 8.39032,6.03208 C8.39032,6.46128 8.23592,6.83048 7.92792,7.13868 M10.43812,2.53088 C9.44732,1.55088 8.24732,1.06088 6.83792,1.06088 C5.42852,1.06088 4.22852,1.55088 3.23752,2.53088 C2.24652,3.51048 1.75112,4.69428 1.75112,6.08168 C1.75112,6.91828 2.17492,8.31688 3.02292,10.27648 C3.87052,12.23628 4.71832,14.01988 5.56592,15.62728 C6.41412,17.23468 6.83792,18.01648 6.83792,17.97268 C6.96992,17.73048 7.15152,17.40008 7.38272,16.98168 C7.61412,16.56328 8.02152,15.77608 8.60512,14.61988 C9.18852,13.46368 9.70052,12.40108 10.14052,11.43288 C10.58132,10.46368 10.98872,9.46168 11.36292,8.42648 C11.73752,7.39188 11.92432,6.61008 11.92432,6.08168 C11.92432,4.69428 11.42892,3.51048 10.43812,2.53088" id="Fill-58" fill="#FFFFFF" mask="url(#mask-37)"></path>
</g>
<g id="Group-63">
<mask id="mask-39" fill="white">
<use xlink:href="#path-38"></use>
</mask>
<g id="Clip-62"></g>
<path d="M6.82128,4.9961 C6.51968,4.9961 6.27828,5.0933 6.06188,5.3021 C5.85068,5.5057 5.75228,5.7377 5.75228,6.0321 C5.75228,6.3301 5.85268,6.5695 6.06828,6.7851 C6.28368,7.0005 6.52308,7.1009 6.82128,7.1009 C7.11948,7.1009 7.35888,7.0005 7.57448,6.7849 C7.78988,6.5695 7.89028,6.3301 7.89028,6.0321 C7.89028,5.7377 7.79188,5.5057 7.58068,5.3017 C7.36428,5.0933 7.12288,4.9961 6.82128,4.9961 L6.82128,4.9961 Z M6.82128,8.1009 C6.25648,8.1009 5.76528,7.8961 5.36128,7.4921 C4.95728,7.0881 4.75228,6.5969 4.75228,6.0321 C4.75228,5.4639 4.95928,4.9761 5.36748,4.5823 C5.77108,4.1933 6.26008,3.9961 6.82128,3.9961 C7.38228,3.9961 7.87128,4.1933 8.27488,4.5821 C8.68348,4.9763 8.89028,5.4641 8.89028,6.0321 C8.89028,6.5967 8.68548,7.0879 8.28168,7.4921 C7.87728,7.8961 7.38608,8.1009 6.82128,8.1009 L6.82128,8.1009 Z M6.83788,1.5609 C5.55368,1.5609 4.49108,1.9945 3.58908,2.8865 C2.68888,3.7763 2.25108,4.8215 2.25108,6.0817 C2.25108,6.6073 2.46468,7.7273 3.48188,10.0779 C4.31968,12.0155 5.16968,13.8041 6.00828,15.3941 C6.38528,16.1089 6.64868,16.6035 6.83208,16.9447 C6.86828,16.8789 6.90608,16.8105 6.94528,16.7399 C7.17208,16.3295 7.58028,15.5405 8.15888,14.3947 C8.73768,13.2469 9.25128,12.1809 9.68528,11.2259 C10.11888,10.2727 10.52508,9.2735 10.89248,8.2565 C11.33228,7.0427 11.42448,6.4039 11.42448,6.0817 C11.42448,4.8215 10.98668,3.7765 10.08648,2.8865 C9.18468,1.9945 8.12208,1.5609 6.83788,1.5609 L6.83788,1.5609 Z M7.04328,18.4751 L6.83508,18.4745 C6.52208,18.4733 6.46988,18.3767 6.06328,17.6257 C5.85068,17.2335 5.53768,16.6451 5.12388,15.8607 C4.27328,14.2479 3.41208,12.4359 2.56388,10.4749 C1.68068,8.4333 1.25108,6.9963 1.25108,6.0817 C1.25108,4.5619 1.80108,3.2475 2.88588,2.1753 C3.96928,1.1041 5.29908,0.5609 6.83788,0.5609 C8.37688,0.5609 9.70648,1.1041 10.78968,2.1753 C11.87448,3.2477 12.42448,4.5621 12.42448,6.0817 C12.42448,6.6751 12.23108,7.4977 11.83308,8.5967 C11.45648,9.6383 11.04028,10.6623 10.59568,11.6399 C10.15628,12.6071 9.63668,13.6855 9.05148,14.8451 C8.45908,16.0185 8.05648,16.7965 7.82048,17.2235 C7.62348,17.5797 7.46268,17.8721 7.33788,18.1003 L7.33788,18.1803 L7.04328,18.4751 Z" id="Fill-61" fill="#2196F3" mask="url(#mask-39)"></path>
</g>
</g>
</g>
<g id="Translation-Manageme" transform="translate(40.000000, 6.000000)" fill-rule="nonzero">
<path d="M2.688,9.94 L2.688,1.946 L1.42108547e-14,1.946 L1.42108547e-14,0.504 L7.126,0.504 L7.126,1.946 L4.41,1.946 L4.41,9.94 L2.688,9.94 Z M7.462,9.94 L7.462,5.32 C7.462,4.396 7.448,3.724 7.406,3.122 L8.89,3.122 L8.96,4.41 L9.002,4.41 C9.338,3.458 10.136,2.968 10.878,2.968 C11.046,2.968 11.144,2.982 11.284,3.01 L11.284,4.62 C11.13,4.592 10.976,4.578 10.766,4.578 C9.954,4.578 9.38,5.096 9.226,5.88 C9.198,6.034 9.184,6.216 9.184,6.398 L9.184,9.94 L7.462,9.94 Z M17.612,5.852 L17.612,8.302 C17.612,8.918 17.64,9.52 17.724,9.94 L16.17,9.94 L16.044,9.184 L16.002,9.184 C15.596,9.716 14.882,10.094 13.986,10.094 C12.614,10.094 11.844,9.1 11.844,8.064 C11.844,6.356 13.37,5.474 15.89,5.488 L15.89,5.376 C15.89,4.928 15.708,4.186 14.504,4.186 C13.832,4.186 13.132,4.396 12.67,4.69 L12.334,3.57 C12.838,3.262 13.72,2.968 14.798,2.968 C16.982,2.968 17.612,4.354 17.612,5.852 Z M15.932,7.546 L15.932,6.608 C14.714,6.594 13.552,6.846 13.552,7.882 C13.552,8.554 13.986,8.862 14.532,8.862 C15.232,8.862 15.722,8.414 15.89,7.924 C15.932,7.798 15.932,7.672 15.932,7.546 Z M19.432,9.94 L19.432,5.152 C19.432,4.368 19.404,3.71 19.376,3.122 L20.874,3.122 L20.958,4.144 L21,4.144 C21.308,3.612 22.05,2.968 23.184,2.968 C24.374,2.968 25.606,3.738 25.606,5.894 L25.606,9.94 L23.884,9.94 L23.884,6.09 C23.884,5.11 23.52,4.368 22.582,4.368 C21.896,4.368 21.42,4.858 21.238,5.376 C21.182,5.516 21.154,5.726 21.154,5.922 L21.154,9.94 L19.432,9.94 Z M27.02,9.604 L27.37,8.344 C27.748,8.582 28.49,8.848 29.106,8.848 C29.862,8.848 30.198,8.526 30.198,8.078 C30.198,7.616 29.918,7.392 29.078,7.084 C27.748,6.636 27.202,5.908 27.202,5.096 C27.202,3.892 28.196,2.968 29.778,2.968 C30.534,2.968 31.192,3.15 31.598,3.374 L31.248,4.578 C30.968,4.41 30.408,4.186 29.806,4.186 C29.19,4.186 28.854,4.494 28.854,4.914 C28.854,5.348 29.176,5.544 30.044,5.866 C31.29,6.3 31.85,6.93 31.864,7.938 C31.864,9.184 30.898,10.08 29.092,10.08 C28.266,10.08 27.524,9.884 27.02,9.604 Z M33.278,9.94 L33.278,-7.10542736e-15 L35,-7.10542736e-15 L35,9.94 L33.278,9.94 Z M42.168,5.852 L42.168,8.302 C42.168,8.918 42.196,9.52 42.28,9.94 L40.726,9.94 L40.6,9.184 L40.558,9.184 C40.152,9.716 39.438,10.094 38.542,10.094 C37.17,10.094 36.4,9.1 36.4,8.064 C36.4,6.356 37.926,5.474 40.446,5.488 L40.446,5.376 C40.446,4.928 40.264,4.186 39.06,4.186 C38.388,4.186 37.688,4.396 37.226,4.69 L36.89,3.57 C37.394,3.262 38.276,2.968 39.354,2.968 C41.538,2.968 42.168,4.354 42.168,5.852 Z M40.488,7.546 L40.488,6.608 C39.27,6.594 38.108,6.846 38.108,7.882 C38.108,8.554 38.542,8.862 39.088,8.862 C39.788,8.862 40.278,8.414 40.446,7.924 C40.488,7.798 40.488,7.672 40.488,7.546 Z M44.184,1.848 L45.878,1.372 L45.878,3.122 L47.516,3.122 L47.516,4.41 L45.878,4.41 L45.878,7.42 C45.878,8.26 46.102,8.68 46.76,8.68 C47.068,8.68 47.236,8.666 47.432,8.61 L47.46,9.912 C47.208,10.01 46.746,10.094 46.214,10.094 C45.57,10.094 45.052,9.884 44.73,9.534 C44.352,9.142 44.184,8.512 44.184,7.616 L44.184,4.41 L43.218,4.41 L43.218,3.122 L44.184,3.122 L44.184,1.848 Z M50.54,9.94 L48.818,9.94 L48.818,3.122 L50.54,3.122 L50.54,9.94 Z M49.686,0.28 C50.274,0.28 50.638,0.686 50.652,1.218 C50.652,1.722 50.274,2.142 49.672,2.142 C49.098,2.142 48.72,1.722 48.72,1.218 C48.72,0.686 49.112,0.28 49.686,0.28 Z M55.496,2.968 C57.526,2.968 58.884,4.396 58.884,6.468 C58.884,8.974 57.12,10.094 55.384,10.094 C53.466,10.094 51.968,8.778 51.968,6.58 C51.968,4.34 53.438,2.968 55.496,2.968 Z M55.454,4.214 C54.236,4.214 53.746,5.404 53.746,6.538 C53.746,7.854 54.404,8.848 55.44,8.848 C56.42,8.848 57.106,7.896 57.106,6.51 C57.106,5.446 56.63,4.214 55.454,4.214 Z M60.298,9.94 L60.298,5.152 C60.298,4.368 60.27,3.71 60.242,3.122 L61.74,3.122 L61.824,4.144 L61.866,4.144 C62.174,3.612 62.916,2.968 64.05,2.968 C65.24,2.968 66.472,3.738 66.472,5.894 L66.472,9.94 L64.75,9.94 L64.75,6.09 C64.75,5.11 64.386,4.368 63.448,4.368 C62.762,4.368 62.286,4.858 62.104,5.376 C62.048,5.516 62.02,5.726 62.02,5.922 L62.02,9.94 L60.298,9.94 Z M79.422,9.94 L79.24,6.09 C79.184,4.872 79.114,3.402 79.128,2.128 L79.086,2.128 C78.778,3.276 78.386,4.55 77.966,5.74 L76.58,9.828 L75.264,9.828 L74.004,5.796 C73.64,4.592 73.304,3.304 73.052,2.128 L73.024,2.128 C72.982,3.36 72.926,4.858 72.856,6.146 L72.646,9.94 L71.036,9.94 L71.666,0.504 L73.934,0.504 L75.166,4.298 C75.502,5.404 75.796,6.524 76.034,7.574 L76.076,7.574 C76.328,6.552 76.65,5.39 77.014,4.284 L78.316,0.504 L80.556,0.504 L81.102,9.94 L79.422,9.94 Z M88.13,5.852 L88.13,8.302 C88.13,8.918 88.158,9.52 88.242,9.94 L86.688,9.94 L86.562,9.184 L86.52,9.184 C86.114,9.716 85.4,10.094 84.504,10.094 C83.132,10.094 82.362,9.1 82.362,8.064 C82.362,6.356 83.888,5.474 86.408,5.488 L86.408,5.376 C86.408,4.928 86.226,4.186 85.022,4.186 C84.35,4.186 83.65,4.396 83.188,4.69 L82.852,3.57 C83.356,3.262 84.238,2.968 85.316,2.968 C87.5,2.968 88.13,4.354 88.13,5.852 Z M86.45,7.546 L86.45,6.608 C85.232,6.594 84.07,6.846 84.07,7.882 C84.07,8.554 84.504,8.862 85.05,8.862 C85.75,8.862 86.24,8.414 86.408,7.924 C86.45,7.798 86.45,7.672 86.45,7.546 Z M89Line truncated
<path d="M0.91,27.712 L0.91,20.376 C0.91,19.508 0.882,18.808 0.854,18.164 L1.946,18.164 L2.016,19.326 L2.044,19.326 C2.534,18.5 3.346,18.024 4.452,18.024 C6.104,18.024 7.336,19.41 7.336,21.454 C7.336,23.89 5.838,25.094 4.242,25.094 C3.346,25.094 2.562,24.702 2.156,24.03 L2.128,24.03 L2.128,27.712 L0.91,27.712 Z M2.128,21.006 L2.128,22.182 C2.128,22.364 2.142,22.532 2.184,22.686 C2.408,23.54 3.15,24.128 4.032,24.128 C5.334,24.128 6.09,23.064 6.09,21.51 C6.09,20.166 5.376,19.004 4.074,19.004 C3.234,19.004 2.436,19.592 2.212,20.516 C2.17,20.67 2.128,20.852 2.128,21.006 Z M11.746,18.024 C13.692,18.024 15.008,19.438 15.008,21.496 C15.008,24.002 13.258,25.094 11.634,25.094 C9.814,25.094 8.386,23.75 8.386,21.608 C8.386,19.354 9.884,18.024 11.746,18.024 Z M11.718,18.948 C10.276,18.948 9.646,20.292 9.646,21.566 C9.646,23.05 10.486,24.17 11.69,24.17 C12.866,24.17 13.748,23.064 13.748,21.538 C13.748,20.39 13.174,18.948 11.718,18.948 Z M15.694,18.164 L16.954,18.164 L17.864,21.608 C18.046,22.364 18.228,23.064 18.354,23.764 L18.396,23.764 C18.55,23.078 18.774,22.35 18.998,21.622 L20.104,18.164 L21.14,18.164 L22.19,21.552 C22.442,22.364 22.638,23.078 22.792,23.764 L22.834,23.764 C22.946,23.078 23.128,22.364 23.352,21.566 L24.318,18.164 L25.536,18.164 L23.352,24.94 L22.232,24.94 L21.196,21.706 C20.958,20.95 20.762,20.278 20.594,19.48 L20.566,19.48 C20.398,20.292 20.188,20.992 19.95,21.72 L18.858,24.94 L17.738,24.94 L15.694,18.164 Z M32.074,21.776 L27.314,21.776 C27.342,23.442 28.392,24.128 29.638,24.128 C30.52,24.128 31.066,23.974 31.514,23.778 L31.738,24.66 C31.304,24.856 30.548,25.094 29.47,25.094 C27.384,25.094 26.138,23.708 26.138,21.664 C26.138,19.62 27.342,18.024 29.316,18.024 C31.542,18.024 32.116,19.956 32.116,21.202 C32.116,21.454 32.102,21.636 32.074,21.776 Z M27.328,20.894 L30.926,20.894 C30.94,20.124 30.604,18.906 29.218,18.906 C27.958,18.906 27.426,20.04 27.328,20.894 Z M33.642,24.94 L33.642,20.278 C33.642,19.48 33.628,18.794 33.586,18.164 L34.664,18.164 L34.72,19.508 L34.762,19.508 C35.07,18.598 35.826,18.024 36.652,18.024 C36.778,18.024 36.876,18.038 36.988,18.052 L36.988,19.214 C36.862,19.186 36.736,19.186 36.568,19.186 C35.7,19.186 35.084,19.83 34.916,20.754 C34.888,20.922 34.874,21.132 34.874,21.328 L34.874,24.94 L33.642,24.94 Z M43.526,21.776 L38.766,21.776 C38.794,23.442 39.844,24.128 41.09,24.128 C41.972,24.128 42.518,23.974 42.966,23.778 L43.19,24.66 C42.756,24.856 42,25.094 40.922,25.094 C38.836,25.094 37.59,23.708 37.59,21.664 C37.59,19.62 38.794,18.024 40.768,18.024 C42.994,18.024 43.568,19.956 43.568,21.202 C43.568,21.454 43.554,21.636 43.526,21.776 Z M38.78,20.894 L42.378,20.894 C42.392,20.124 42.056,18.906 40.67,18.906 C39.41,18.906 38.878,20.04 38.78,20.894 Z M49.714,15 L50.932,15 L50.932,23.19 C50.932,23.792 50.96,24.478 50.988,24.94 L49.896,24.94 L49.84,23.764 L49.798,23.764 C49.434,24.52 48.622,25.094 47.516,25.094 C45.878,25.094 44.604,23.708 44.604,21.65 C44.59,19.396 46.004,18.024 47.642,18.024 C48.692,18.024 49.378,18.514 49.686,19.046 L49.714,19.046 L49.714,15 Z M49.714,22.098 L49.714,20.922 C49.714,20.768 49.7,20.558 49.658,20.404 C49.476,19.634 48.804,18.99 47.88,18.99 C46.606,18.99 45.85,20.11 45.85,21.594 C45.85,22.966 46.536,24.1 47.852,24.1 C48.678,24.1 49.434,23.54 49.658,22.63 C49.7,22.462 49.714,22.294 49.714,22.098 Z M55.958,23.19 L55.958,15 L57.176,15 L57.176,19.256 L57.204,19.256 C57.638,18.5 58.422,18.024 59.514,18.024 C61.208,18.024 62.384,19.424 62.384,21.468 C62.384,23.89 60.844,25.094 59.332,25.094 C58.352,25.094 57.568,24.716 57.05,23.834 L57.022,23.834 L56.952,24.94 L55.902,24.94 C55.93,24.478 55.958,23.792 55.958,23.19 Z M57.176,21.02 L57.176,22.224 C57.176,22.378 57.19,22.532 57.232,22.672 C57.456,23.526 58.184,24.114 59.08,24.114 C60.382,24.114 61.138,23.064 61.138,21.51 C61.138,20.152 60.438,18.99 59.108,18.99 C58.282,18.99 57.498,19.578 57.246,20.502 C57.204,20.656 57.176,20.824 57.176,21.02 Z M62.93,18.164 L64.274,18.164 L65.744,22.168 C65.912,22.616 66.08,23.148 66.192,23.554 L66.22,23.554 C66.346,23.148 66.486,22.63 66.654,22.14 L67.998,18.164 L69.3,18.164 L67.452,22.994 C66.57,25.318 65.968,26.494 65.128,27.236 C64.512,27.754 63.924,27.964 63.616,28.02 L63.308,26.998 C63.616,26.9 64.022,26.704 64.386,26.396 C64.722,26.13 65.128,25.654 65.422,25.024 C65.478,24.898 65.52,24.8 65.52,24.73 C65.52,24.66 65.492,24.562 65.422,24.408 L62.93,18.164 Z" id="poweredby" fill="#AAAAAA"></path>
<path d="M73.29,24.94 L73.29,15 L75.012,15 L75.012,24.94 L73.29,24.94 Z M79.982,17.968 C82.012,17.968 83.37,19.396 83.37,21.468 C83.37,23.974 81.606,25.094 79.87,25.094 C77.952,25.094 76.454,23.778 76.454,21.58 C76.454,19.34 77.924,17.968 79.982,17.968 Z M79.94,19.214 C78.722,19.214 78.232,20.404 78.232,21.538 C78.232,22.854 78.89,23.848 79.926,23.848 C80.906,23.848 81.592,22.896 81.592,21.51 C81.592,20.446 81.116,19.214 79.94,19.214 Z M89.558,23.456 L89.796,24.73 C89.432,24.898 88.718,25.08 87.864,25.08 C85.736,25.08 84.35,23.708 84.35,21.594 C84.35,19.55 85.75,17.968 88.144,17.968 C88.774,17.968 89.418,18.108 89.81,18.276 L89.502,19.578 C89.222,19.438 88.816,19.312 88.2,19.312 C86.884,19.312 86.1,20.278 86.114,21.524 C86.114,22.924 87.024,23.722 88.2,23.722 C88.788,23.722 89.222,23.596 89.558,23.456 Z M92.792,24.94 L91.07,24.94 L91.07,18.122 L92.792,18.122 L92.792,24.94 Z M91.938,15.28 C92.526,15.28 92.89,15.686 92.904,16.218 C92.904,16.722 92.526,17.142 91.924,17.142 C91.35,17.142 90.972,16.722 90.972,16.218 C90.972,15.686 91.364,15.28 91.938,15.28 Z M94.01,24.94 L94.01,23.946 L96.572,20.67 C96.922,20.25 97.216,19.914 97.566,19.522 L97.566,19.494 L94.262,19.494 L94.262,18.122 L99.666,18.122 L99.666,19.172 L97.174,22.378 C96.838,22.784 96.516,23.176 96.166,23.54 L96.166,23.568 L99.75,23.568 L99.75,24.94 L94.01,24.94 Z M106.638,22.014 L102.074,22.014 C102.116,23.246 103.068,23.778 104.174,23.778 C104.972,23.778 105.532,23.652 106.064,23.47 L106.316,24.646 C105.728,24.898 104.916,25.08 103.936,25.08 C101.724,25.08 100.422,23.722 100.422,21.636 C100.422,19.746 101.57,17.968 103.754,17.968 C105.966,17.968 106.694,19.788 106.694,21.286 C106.694,21.608 106.666,21.86 106.638,22.014 Z M102.074,20.81 L105.07,20.81 C105.084,20.18 104.804,19.144 103.656,19.144 C102.592,19.144 102.144,20.11 102.074,20.81 Z M108.724,25.094 C108.108,25.094 107.674,24.618 107.674,23.988 C107.674,23.344 108.122,22.882 108.738,22.882 C109.368,22.882 109.802,23.33 109.802,23.988 C109.802,24.618 109.382,25.094 108.724,25.094 Z M115.962,23.456 L116.2,24.73 C115.836,24.898 115.122,25.08 114.268,25.08 C112.14,25.08 110.754,23.708 110.754,21.594 C110.754,19.55 112.154,17.968 114.548,17.968 C115.178,17.968 115.822,18.108 116.214,18.276 L115.906,19.578 C115.626,19.438 115.22,19.312 114.604,19.312 C113.288,19.312 112.504,20.278 112.518,21.524 C112.518,22.924 113.428,23.722 114.604,23.722 C115.192,23.722 115.626,23.596 115.962,23.456 Z M120.442,17.968 C122.472,17.968 123.83,19.396 123.83,21.468 C123.83,23.974 122.066,25.094 120.33,25.094 C118.412,25.094 116.914,23.778 116.914,21.58 C116.914,19.34 118.384,17.968 120.442,17.968 Z M120.4,19.214 C119.182,19.214 118.692,20.404 118.692,21.538 C118.692,22.854 119.35,23.848 120.386,23.848 C121.366,23.848 122.052,22.896 122.052,21.51 C122.052,20.446 121.576,19.214 120.4,19.214 Z M125.244,24.94 L125.244,20.152 C125.244,19.368 125.216,18.71 125.188,18.122 L126.658,18.122 L126.742,19.13 L126.784,19.13 C127.106,18.598 127.722,17.968 128.884,17.968 C129.78,17.968 130.48,18.472 130.774,19.228 L130.802,19.228 C131.04,18.85 131.32,18.57 131.628,18.374 C132.02,18.108 132.454,17.968 133.028,17.968 C134.148,17.968 135.296,18.738 135.296,20.922 L135.296,24.94 L133.616,24.94 L133.616,21.174 C133.616,20.04 133.224,19.368 132.398,19.368 C131.81,19.368 131.376,19.788 131.194,20.278 C131.138,20.432 131.11,20.656 131.11,20.852 L131.11,24.94 L129.43,24.94 L129.43,20.992 C129.43,20.04 129.052,19.368 128.254,19.368 C127.61,19.368 127.176,19.872 127.008,20.334 C126.952,20.516 126.924,20.712 126.924,20.908 L126.924,24.94 L125.244,24.94 Z" id="locize.com" fill="#888888"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 994 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

+47
View File
@@ -0,0 +1,47 @@
# Browser Support
The browsers that we support are specified in the `.browserlistrc` file located
in the `platform/viewer` project. While we leverage the latest language features
when writing code, we rely on `babel` to _transpile_ our code so that it can run
in the browsers that we support.
## In Practice
The OHIF Viewer is capable of _running_ on:
- IE 11
- FireFox
- Chrome
- Safari
- Edge
However, we do not have the resources to adequately test and maintain bug free
functionality across all of these. In order to push web based medical imaging
forward, we focus our development efforts on recent version of modern evergreen
browsers.
Our support of older browsers equates to our willingness to review PRs for bug
fixes, and target their minimum JS support whenever possible.
### Polyfills
> A polyfill, or polyfiller, is a piece of code (or plugin) that provides the
> technology that you, the developer, expect the browser to provide natively.
An example of a polyfill is that you expect `Array.prototype.filter` to exist,
but for some reason, the browser that's being used has not implemented that
language feature yet. Our earlier transpilation will rectify _syntax_
discrepencies, but unimplemented features require a "temporary" implementation.
That's where polyfills step in.
You can utilize a service like [polyfill.io](https://polyfill.io/v3/) to
auto-detect and apply polyfills as needed, or you can update the PWA build to
include polyfill's in your bundle by incorporating [core-js][core-js]
<!--
Links
-->
<!-- prettier-ignore-start -->
[core-js]: https://github.com/zloirock/core-js/blob/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md
<!-- prettier-ignore-end -->
@@ -1,41 +0,0 @@
# DCM4CHEE with Docker
1. Install Docker (https://www.docker.com/)
2. Follow the DCM4CHEE Guidelines for Running on Docker.
The easiest path is to use Docker-Compose which will start and stop multiple containers for you. There are excellent instructions provided by the DCM4CHEE team on the 'light archive' repository:
https://github.com/dcm4che/dcm4chee-arc-light/wiki/Running-on-Docker#use-docker-compose
* Create docker-compose.yml and docker-compose.env files
* Start the containers:
```` bash
docker-compose start
````
**Note:** If you are running this on Mac OSX you will probably need to change the default docker-compose.yml file slightly. Specifically, the paths that refer to /var/local/ will likely need to be changed to /opt/
3. Run the OHIF Viewer or Lesion Tracker using the dcm4cheeDIMSE.json configuration file
````bash
cd OHIFViewer
PACKAGE_DIRS="../Packages" meteor --settings ../config/dcm4cheeDIMSE.json
````
## Web Service URLs from DCM4CHEE:
Original source here: https://github.com/dcm4che/dcm4chee-arc-light/wiki/Running-on-Docker#web-service-urls
> - Archive UI: <http://localhost:8080/dcm4chee-arc/ui> - if secured, login with
> Username | Password | Role
> --- | --- | ---
> `user` | `user` | `user`
> `admin` | `admin` | `user` + `admin`
> - Keycloak Administration Console: <http://localhost:8080/auth>, login with Username: `admin`, Password: `admin`.
> - Wildfly Administration Console: <http://localhost:9990>, login with Username: `admin`, Password: `admin`.
> - Kibana UI: <http://localhost:5601>
> - DICOM QIDO-RS Base URL: <http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs>
> - DICOM STOW-RS Base URL: <http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs>
> - DICOM WADO-RS Base URL: <http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs>
> - DICOM WADO-URI: <http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado>
@@ -1,6 +0,0 @@
# Connecting to Image Archives
# DICOM Web
[DICOMWeb](https://en.wikipedia.org/wiki/DICOMweb) refers to RESTful DICOM Services and is a recently standardized set of guidelines for exchanging medical images and imaging metadata over the internet. Not all archives fully support it yet, but it is gaining wider adoption.
@@ -0,0 +1,71 @@
# Google Cloud Healthcare
> The [Google Cloud Healthcare API](https://cloud.google.com/healthcare/) is a
> powerful option for storing medical imaging data in the cloud.
An alternative to deploying your own PACS is to use a software-as-a-service
provider such as Google Cloud. The Cloud Healthcare API promises to be a
scalable, secure, cost effective image storage solution for those willing to
store their data in the cloud. It offers an
[almost-entirely complete DICOMWeb API](https://cloud.google.com/healthcare/docs/dicom)
which requires tokens generated via the
[OAuth 2.0 Sign In flow](https://developers.google.com/identity/sign-in/web/sign-in).
Images can even be transcoded on the fly if this is desired.
## Setup a Google Cloud Healthcare Project
- Create a Google Cloud account
- Create a project in Google Cloud
- Enable the [Cloud Healthcare API](https://cloud.google.com/healthcare/) for
your project.
- (Optional): Create a Dataset and Data Store for storing your DICOM data
- Enable the
[Cloud Resource Manager API](https://cloud.google.com/resource-manager/) for
your project.
- _Note:_ If you are having trouble finding the APIs, use the search box at
the top of the Cloud console.
- Go to APIs & Services > Credentials to create an OAuth Consent screen and fill
in your application details.
- Under Scopes for Google APIs, click "manually paste scopes".
- Add the following scopes:
- `https://www.googleapis.com/auth/cloudplatformprojects.readonly`
- `https://www.googleapis.com/auth/cloud-healthcare`
- Go to APIs & Services > Credentials to create a new set of credentials:
- Choose the "Web Application" type
- Set up an
[OAuth 2.0 Client ID](https://support.google.com/cloud/answer/6158849?hl=en)
- Add your domain (e.g. `http://localhost:3000`) to Authorized JavaScript
origins.
- Add your domain, plus `callback` (e.g. `http://localhost:3000/callback`) to
Authorized Redirect URIs.
- Save your Client ID for later.
- (Optional): Enable Public Datasets that are being hosted by Google:
https://cloud.google.com/healthcare/docs/resources/public-datasets/
## Run the viewer with your OAuth Client ID
1. Open the `config/google.js` file and change `YOURCLIENTID` to your Client ID
value.
1. Run the OHIF Viewer using the config/google.js configuration file
```bash
cd OHIFViewer
yarn install
APP_CONFIG=config/google.js yarn run dev
```
## Running via Docker
The OHIF Viewer Docker container can be connected to Google Cloud Healthcare by
providing a Client ID at runtime. This is a very simple method to get up and
running.
1. Install Docker (https://www.docker.com/)
1. Run the Docker container, providing a Client ID as an environment variable.
Client IDs look like `xyz.apps.googleusercontent.com`.
```bash
docker run --env CLIENT_ID=$CLIENT_ID --publish 5000:80 ohif/viewer:latest
```
@@ -1,33 +0,0 @@
# Orthanc with Docker
Depending on whether or not you want uploaded studies to persist in Orthanc after Docker has been closed, there are two different methods for starting the Docker image:
## Temporary data storage
This command will start an instance of the jodogne/orthanc-plugins Docker image. *All data will be removed when the instance is stopped!*
````
docker run --rm -p 4242:4242 -p 8042:8042 jodogne/orthanc-plugins
````
## Persistent data storage
In order to allow your data to persist after the instance is stopped, you first need to create an image and attached data volume with Docker. The steps are as follows:
1. Create a persistent data volume for Orthanc to use
````
docker create --name sampledata -v /sampledata jodogne/orthanc-plugins
````
**Note: On Windows, you need to use an absolute path for the data volume, like so:**
````
docker create --name sampledata -v '//C/Users/erik/sampledata' jodogne/orthanc-plugins
````
2. Run Orthanc from Docker with the data volume attached
````
docker run --volumes-from sampledata -p 4242:4242 -p 8042:8042 jodogne/orthanc-plugins
````
3. Upload your data and it will be persisted
+85 -14
View File
@@ -1,32 +1,103 @@
# Contributing
### I would like to contribute code - how do I do this?
## I would like to contribute code - how do I do this?
Fork the repository, make your change and submit a pull request.
### Any guidance on submitting changes?
- The OHIF Viewer consists of code from three different repositories. Make sure
your change is modifying the appropriate one:
- `ohif-core`: Business Logic
- `react-viewerbase`: Reusable React Component Library
- `Viewers`: The glue, PWA, and primary extension point
- At a minimum, you may want to read the following documentation:
- [Essentials: Getting Started](./essentials/getting-started.md)
- [Advanced: Architecture](./advanced/architecture.md)
While we do appreciate code contributions, triaging and integrating contributed code changes can be very time consuming. Please consider the following tips when working on your pull requests:
### When changes impact multiple repositories
- Functionality is appropriate for the repository. Consider posting on the forum if you are not sure.
- Code quality is acceptable. We don't have coding standards defined, but make sure it passes ESLint and looks like the rest of the code in the repository.
- Quality of design is acceptable. This is a bit subjective so you should consider posting on the forum for specific guidance.
- The scope of the pull request is not too large. Please consider separate pull requests for each feature as big pull requests are very time consuming to understand.
This is a particularly tricky scenario. We don't want to publish code in one
repository, just so we can test and complete the other half of its requirements
in another. Thankfully, there are a couple of ways you can test unpublished
dependent changes locally before publishing:
We will provide feedback on your pull requests as soon as possible. Following the tips above will help ensure your changes are reviewed.
- [Use `yarn link`](https://yarnpkg.com/en/docs/cli/link)
### Testing contribution pull requests
For example if you are working on `ohif-core` and would like to use your local
version to debug a problem in `Viewers`, simply run yarn link inside of the
`ohif-core` project.
OHIF uses [netlify](netlify.com) so that pull requests are autogenerated and available for testing.
- If you're experiencing issues with `yarn link`,
[try `yalc`](https://github.com/whitecolor/yalc)
For example, [this url](https://deploy-preview-237--ohif.netlify.com/viewer/?url=https://s3.eu-central-1.amazonaws.com/ohif-viewer/sampleDICOM.json) allows you to test [pull request 237, the request that created this FAQ entry,](https://github.com/OHIF/Viewers/pull/237) using data pulled from Amazon S3.
Yalc provides an improved workflow as we add more and more dependent packages
that are "in-progress". This comes into play as we begin working on extensions
and their dependencies.
Replacing the number 237 in the link below with your pull request number should let you test it as well and you can use this link for discussions on github without requiring reviewers to download and build your branch.
```js
// Install yalc for the first time
yarn global add yalc
// EXAMPLE: using an in-development version of ohif-core w/ Viewers locally
// 1. Navigate to ohif-core's project root
yarn install
yalc publish
// 2. Run the following after each change to ohif-core
yarn build
yalc push .
// 3. Use the local package in our Viewers project. Navigate to the Viewers
// Project root.
yarn install
yalc add ohif-core
yarn run dev
```
## Any guidance on submitting changes?
While we do appreciate code contributions, triaging and integrating contributed
code changes can be very time consuming. Please consider the following tips when
working on your pull requests:
- Functionality is appropriate for the repository. Consider creating a GitHub
issue to discuss your suggested changes.
- The scope of the pull request is not too large. Please consider separate pull
requests for each feature as big pull requests are very time consuming to
understand.
We will provide feedback on your pull requests as soon as possible. Following
the tips above will help ensure your changes are reviewed.
## Testing contribution pull requests
OHIF uses [netlify](netlify.com) so that pull requests are autogenerated and
available for testing.
For example, [this url][example-url] allows you to test [pull request 237, the
request that created this FAQ entry,][pr-237] using data pulled from Amazon S3.
Replacing the number 237 in the link below with your pull request number should
let you test it as well and you can use this link for discussions on github
without requiring reviewers to download and build your branch.
```bash
https://deploy-preview-237--ohif.netlify.com/viewer/?url=https://s3.eu-central-1.amazonaws.com/ohif-viewer/sampleDICOM.json
```
If you have made a documentation change, a link like this will let you preview the gitbook generated by the pull request:
```
If you have made a documentation change, a link like this will let you preview
the gitbook generated by the pull request:
```bash
https://deploy-preview-237--ohif.netlify.com/contributing.html
```
<!--
Links
-->
<!-- prettier-ignore-start -->
[example-url]: https://deploy-preview-237--ohif.netlify.com/viewer/?url=https://s3.eu-central-1.amazonaws.com/ohif-viewer/sampleDICOM.json
[pr-237]: https://github.com/OHIF/Viewers/pull/237
<!-- prettier-ignore-end -->
+145
View File
@@ -0,0 +1,145 @@
# Contributing: Tests
> Testing is an opinionated topic. Here is a rough overview of our testing
> philosiphy. See something you want to discuss or think should be changed? Open
> a PR and let's discuss.
You're an engineer. You know how to write code, and writing tests isn't all that
different. But do you know why we write tests? Do you know when to write one, or
what kind of test to write? How do you know if a test is a _"good"_ test? This
document's goal is to give you the tools you need to make those determinations.
Okay. So why do we write tests? To increase our... **CONFIDENCE**
- If I do a large refactor, does everything still work?
- If I changed some critical piece of code, is it safe to push to production?
Gaining the confidence we need to answer these questions after every change is
costly. Good tests allow us to answer them without manual regression testing.
What and how we choose to test to increase that confidence is nuanced.
## Kinds of Tests
Test's buy us confidence, but not all tests are created equal. Each kind of test
has a different cost to write and maintain. An expensive test is worth it if it
gives us confidence that a payment is processed, but it may not be the best
choice for asserting an element's border color.
| Test Type | Example | Speed | Cost |
| ----------- | ------------------------------------------------------------------------ | ---------------- | ------------------------------------------------------------------------ |
| Static | `addNums(1, '2')` called with `string`, expected `int`. | :rocket: Instant | :money_with_wings: |
| Unit | `addNums(1, 2)` returns expected result `3` | :airplane: Fast | :money_with_wings::money_with_wings: |
| Integration | Clicking "Sign In", navigates to the dashboard (mocked network requests) | :running: Okay | :money_with_wings::money_with_wings::money_with_wings: |
| End-to-end | Clicking "Sign In", navigates to the dashboard (no mocks) | :turtle: Slow | :money_with_wings::money_with_wings::money_with_wings::money_with_wings: |
- :rocket: Speed: How quickly tests run
- :money_with_wings: Cost: Time to write, and to debug when broken (more points
of failure)
### Static Code Analysis
Modern tooling gives us this "for free". It can catch invalid regular
expressions, unused variables, and guarantee we're calling methods/functions
with the expected paramater types.
Example Tooling:
- [ESLint][eslint-rules]
- [TypeScript][typescript-docs] or [Flow][flow-org]
### Unit Tests
The building blocks of our libraries and applications. For these, you'll often
be testing a single function or method. Conceptually, this equates to:
_Pure Function Test:_
- If I call `sum(2, 2)`, I expect the output to be `4`
_Side Effect Test:_
- If I call `resetViewport(viewport)`, I expect `cornerstone.reset` to be called
with `viewport`
#### When to use
Anything that is exposed as public API should have unit tests.
#### When to avoid
You're actually testing implementation details. You're testing implementation
details if:
- Your test does something that the consumer of your code would never do.
- IE. Using a private function
- A refactor can break your tests
### Integration Tests
We write integration tests to gain confidence that several units work together.
Generally, we want to mock as little as possible for these tests. In practice,
this means only mocking network requests.
#### When to use
...
### End-to-End Tests
These are the most expensive tests to write and maintain. Largely because, when
they fail, they have the largest number of potential points of failure. So why
do we write them? Because they also buy us the most confidence.
#### When to use
Mission critical features and functionality, or to cover a large breadth of
functionality until unit tests catch up. Unsure if we should have a test for
feature `X` or scenario `Y`? Open an issue and let's discuss.
## Summary
- Does your test increase confidence?
- Does the test type chosen balance the cost-to-confidence ratio?
## Further Reading
### General
- [Assert(js) Conf 2018 Talks][assert-js-talks]
- [Write tests. Not too many. Mostly integration.][kent-talk] - Kent C. Dodds
- [I see your point, but…][gleb-talk] - Gleb Bahmutov
- [Static vs Unit vs Integration vs E2E Testing][kent-blog] - Kent C. Dodds
(Blog)
### End-to-end Testing w/ Cypress
- [Getting Started](https://docs.cypress.io/guides/overview/why-cypress.html)
- Be sure to check out `Getting Started` and `Core Concepts`
- [Best Practices](https://docs.cypress.io/guides/references/best-practices.html)
- [Example Recipes](https://docs.cypress.io/examples/examples/recipes.html)
## Testing Dorito
[![testing dorito][testing-dorito-img]][testing-dorito]
<!--
Links
-->
<!-- prettier-ignore-start -->
[eslint-rules]: https://eslint.org/docs/rules/
[typescript-docs]: https://www.typescriptlang.org/docs/home.html
[flow-org]: https://flow.org/
<!-- Talks -->
[assert-js-talks]: https://www.youtube.com/playlist?list=PLZ66c9_z3umNSrKSb5cmpxdXZcIPNvKGw
[kent-talk]: https://www.youtube.com/watch?list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf
[gleb-talk]: https://www.youtube.com/watch?v=5FnalKRjpZk
[kent-blog]: https://kentcdodds.com/blog/unit-vs-integration-vs-e2e-tests
<!-- Images -->
[testing-trophy]: https://twitter.com/kentcdodds/status/960723172591992832?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E960723172591992832&ref_url=https%3A%2F%2Fkentcdodds.com%2Fblog%2Fwrite-tests
[aaron-square]: https://twitter.com/Carofine247/status/966727489274961920
[gleb-pyramid]: https://twitter.com/Carofine247/status/966764532046684160/photo/3
[testing-pyramid]: https://dojo.ministryoftesting.com/dojo/lessons/the-mobile-test-pyramid
[testing-dorito]: https://twitter.com/denvercoder/status/960752578198843392
[testing-dorito-img]: https://pbs.twimg.com/media/DVVHXycUMAAcN-F?format=jpg&name=4096x4096
<!-- prettier-ignore-end -->
-5
View File
@@ -1,5 +0,0 @@
# Data Hierarchy
## Studies, Series, Instances, Frames
## Display Sets
-5
View File
@@ -1,5 +0,0 @@
# Image Viewport
### Main Viewport Component
The [imageViewerViewport](https://github.com/OHIF/Viewers/tree/master/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport) component
@@ -1 +0,0 @@
# Measurements and Annotations
-1
View File
@@ -1 +0,0 @@
# Tool Management
@@ -0,0 +1,4 @@
<div style="text-align: center;">
<img src="/assets/img/embedded-viewer-diagram.png" alt="Embedded Viewer Diagram" style="margin: 0 auto;" />
<div><i>embedded viewer diagram</i></div>
</div>
@@ -0,0 +1,4 @@
<div style="text-align: center;">
<img src="/assets/img/nginx-image-archive.png" alt="request flow example" style="margin: 0 auto;" />
<div><i>simplified request flow diagram</i></div>
</div>
@@ -0,0 +1,4 @@
<div style="text-align: center;">
<img src="/assets/img/user-access-control-request-flow.png" alt="request flow example" style="margin: 0 auto;" />
<div><i>simplified request flow diagram</i></div>
</div>
@@ -1,5 +0,0 @@
# Deployment
There are a few possible approaches for deploying the application:
-
+210
View File
@@ -0,0 +1,210 @@
# Deployment
The OHIF Viewer can be embedded in other web applications via it's [packaged
script source][ohif-viewer-npm], or served up as a stand-alone PWA ([progressive
web application][pwa-url]) by building and hosting a collection of static
assets. In either case, you will need to configure your instance of the Viewer
so that it can connect to your data source (the database or PACS that provides
the data your Viewer will display).
## Overview
Our goal is to make deployment as simple and painless as possible; however,
there is an inherent amount of complexity in customizing, optimizing, and
deploying web applications. If you find yourself a little lost, please don't
hesitate to [reach out for help](/help.md)
## Deployment Scenarios
### Embedded Viewer
The quickest and easiest way to get the OHIF Viewer up and running is to embed
it into an existing web application. It allows us to forego a "build step", and
add a powerful medical imaging viewer to an existing web page using only a few
include tags.
- Read more about it here: [Embedded Viewer](./recipes/embedded-viewer.md)
- And check out our [live demo on CodeSandbox][code-sandbox]
{% include "./_embedded-viewer-diagram.md" %}
### Stand-alone Viewer
Deploying the OHIF Viewer as a stand-alone web application provides many
benefits, but comes at the cost of time and complexity. Some benefits include:
_Today:_
- Leverage [extensions](/advanced/extensions.md) to drop-in powerful new
features
- Add routes and customize the viewer's workflow
- Finer control over styling and whitelabeling
_In the future:_
- The ability to package the viewer for [App Store distribution][app-store]
- Leverage `service-workers` for offline support and speed benefits from caching
#### Hosted Static Assets
At the end of the day, a production OHIF Viewer instance is a collection of
HTML, CSS, JS, Font Files, and Images. We "build" those files from our
`source code` with configuration specific to our project. We then make those
files publicly accessible by hosting them on a Web Server.
If you have not deployed a web application before, this may be a good time to
[reach out for help](/help.md), as these steps assume prior web development and
deployment experience.
##### Part 1 - Build Production Assets
"Building", or creating, the files you will need is the same regardless of the
web host you choose. You can find detailed instructions on how to configure and
build the OHIF Viewer in our
["Build for Production" guide](./recipes/build-for-production.md).
##### Part 2 - Host Your App
There are a lot of [benefits to hosting static assets][host-static-assets] over
dynamic content. You can find instructions on how to host your build's output
via one of these guides:
_Drag-n-drop_
- [Netlify: Drop](/deployment/recipes/static-assets.md#netlify-drop)
_Easy_
- [Surge.sh](/deployment/recipes/static-assets.md#surgesh)
- [GitHub Pages](/deployment/recipes/static-assets.md#github-pages)
_Advanced_
- [AWS S3 + Cloudfront](/deployment/recipes/static-assets.md#aws-s3--cloudfront)
- [GCP + Cloudflare](/deployment/recipes/static-assets.md#gcp--cloudflare)
- [Azure](/deployment/recipes/static-assets.md#azure)
## Data
The OHIF Viewer is able to connect to any data source that implements the [DICOM
Web Standard][dicom-web-standard]. [DICOM Web][dicom-web] refers to RESTful
DICOM Services -- a recently standardized set of guidelines for exchanging
medical images and imaging metadata over the internet. Not all archives fully
support it yet, but it is gaining wider adoption.
### Configure Connection
If you have an existing archive and intend to host the OHIF Viewer at the same
domain name as your archive, then connecting the two is as simple as following
the steps layed out in our
[Configuration Essentials Guide](./../essentials/configuration.md).
#### What if I don't have an imaging archive?
We provide some guidance on configuring a local image archive in our
[Data Source Essentials](./../essentials/data-source.md) guide. Hosting an
archive remotely is a little trickier. You can check out some of our
[advanced recipes](#recipes) for modeled setups that may work for you.
#### What if I intend to host the OHIF Viewer at a different domain?
There are two important steps to making sure this setup works:
1. Your Image Archive needs to be exposed, in some way, to the open web. This
can be directly, or through a `reverse proxy`, but the Viewer needs _some
way_ to request it's data.
2. \* Your Image Archive needs to have appropriate CORS (Cross-Origin Resource
Sharing) Headers
> \* Cross-Origin Resource Sharing (CORS) is a mechanism that uses additional
> HTTP headers to tell a browser to let a web application running at one origin
> (domain) have permission to access selected resources from a server at a
> different origin. - [MDN Web Docs: Web - Http - CORS][cors]
Most image archives do not provide either of these features "out of the box".
It's common to use IIS, Nginx, or Apache to route incoming requests and append
appropriate headers. You can find an example of this setup in our
[Nginx + Image Archive Deployment Recipe](deployment/recipes/nginx--image-archive.md).
#### What if my archive doesn't support DicomWeb?
> This is possible to do with the OHIF Viewer, but not as straightforward. Look
> out for documentation on this subject in the near future.
...
### Securing Your Data
> Feeling lost? Securing your data is important, and it can be hard to tell if
> you've gotten it right. Don't hesitate to work with professional auditors, or
> [enlist help from experts](./../help.md).
The OHIF Viewer can be configured to work with authorization servers that
support one or more of the OpenID-Connect authorization flows. The Viewer finds
it's OpenID-Connect settings on the `oidc` configuration key. You can set these
values following the instructions laid out in the
[Configuration Essentials Guide](./../essentials/configuration.md).
_Example OpenID-Connect Settings:_
```js
window.config = {
...
oidc: [
{
// ~ REQUIRED
// Authorization Server URL
authority: 'http://127.0.0.1/auth/realms/ohif',
client_id: 'ohif-viewer',
redirect_uri: 'http://127.0.0.1/callback', // `OHIFStandaloneViewer.js`
response_type: 'code', // "Authorization Code Flow"
scope: 'openid', // email profile openid
// ~ OPTIONAL
post_logout_redirect_uri: '/logout-redirect.html',
},
],
}
```
You can find an example of this setup in our
[User Account Control Deployment Recipe](deployment/recipes/user-account-control.md).
#### Choosing a Flow for the Viewer
In general, we recommend using the "Authorization Code Flow" ( [see
`response_type=code` here][code-flows]); however, the "Implicit Flow" ( [see
`response_type=token` here][code-flows]) can work if additonal precautions are
taken. If the flow you've chosen produces a JWT Token, it's validity can be used
to secure access to your Image Archive as well.
### Recipes
We've included a few recipes for common deployment scenarios. There are many,
many possible configurations, so please don't feel limited to these setups.
Please feel free to suggest or contribute your own recipes.
- Script Include
- [Embedding the Viewer](deployment/recipes/embedded-viewer.md)
- Stand-Alone
- [Build for Production](deployment/recipes/build-for-production.md)
- [Static](deployment/recipes/static-assets.md)
- [Nginx + Image Archive](deployment/recipes/nginx--image-archive.md)
- [User Account Control](deployment/recipes/user-account-control.md)
<!--
Links
-->
<!-- prettier-ignore-start -->
[ohif-viewer-npm]: https://www.npmjs.com/package/ohif-viewer
[pwa-url]: https://developers.google.com/web/progressive-web-apps/
[static-assets-url]: https://www.maxcdn.com/one/visual-glossary/static-content/
[app-store]: https://medium.freecodecamp.org/i-built-a-pwa-and-published-it-in-3-app-stores-heres-what-i-learned-7cb3f56daf9b
[dicom-web-standard]: https://www.dicomstandard.org/dicomweb/
[dicom-web]: https://en.wikipedia.org/wiki/DICOMweb
[host-static-assets]: https://www.netlify.com/blog/2016/05/18/9-reasons-your-site-should-be-static/
[cors]: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
[code-flows]: https://medium.com/@darutk/diagrams-of-all-the-openid-connect-flows-6968e3990660
[code-sandbox]: https://codesandbox.io/s/ohif-viewer-script-tag-usage-b3st9
<!-- prettier-ignore-end -->
@@ -0,0 +1,182 @@
# Build for Production
> If you've already followed the
> ["Getting Started" Guide](/essentials/getting-started.md), you can skip ahead
> to [Configuration](#configuration)
## Overview
### Build Machine Requirements
- [Node.js & NPM](https://nodejs.org/en/download/)
- [Yarn](https://yarnpkg.com/lang/en/docs/install/)
- [Git](https://www.atlassian.com/git/tutorials/install-git)
### Getting the Code
_With Git:_
```bash
# Clone the remote repository to your local machine
git clone https://github.com/OHIF/Viewers.git
# Make sure the local code reflects the `react` version of the OHIF Viewer
git checkout react
```
More on: _[`git clone`](https://git-scm.com/docs/git-clone),
[`git checkout`](https://git-scm.com/docs/git-checkout)_
_From .zip:_
[OHIF/Viewers: react.zip](https://github.com/OHIF/Viewers/archive/react.zip)
### Restore Dependencies & Build
Open your terminal, and navigate to the directory containing the source files.
Next run these commands:
```js
// Restore dependencies
yarn install
// Build source code for production
yarn run build:web
```
If everything worked as expected, you should have a new `build/` directory in
the project's folder. It should roughly resemble the following:
```bash
build
├── config/
├── static/
├── index.html
├── manifest.json
├── service-worker.js
└── ...
```
By default, the build output will connect to OHIF's publicly accessible PACS. If
this is your first time setting up the OHIF Viewer, it is recommended that you
test with these default settings. After testing, you can find instructions on
how to configure the project for your own imaging archive below.
### Configuration
> This step assumes you have an imaging archive. If you need assistance setting
> one up, check out the [`Data Source` Guide](./../../essentials/data-source.md)
> or a deployment recipe that contains an open source Image Archive
#### How it Works
The configuration for our project is in the `/public/config` directory. Our
build process knows which configuration file to use based on the `APP_CONFIG`
environment variable. By default, its value is
[`default.js`](https://github.com/OHIF/Viewers/blob/master/platform/viewer/public/config/default.js).
When we build, the `%APP_CONFIG%` value in
our[`/public/index.html`](https://github.com/OHIF/Viewers/blob/master/platform/viewer/public/index.html)
file is substituted for the correct configuration file's name. This sets
the`window.config` equal to our configuration file's value.
#### How do I configure my project?
The simplest way is to update the existing default config:
_/public/config/default.js_
```js
window.config = {
routerBasename: '/',
servers: {
dicomWeb: [
{
name: 'DCM4CHEE',
wadoUriRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado',
qidoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
wadoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
qidoSupportsIncludeField: true,
imageRendering: 'wadors',
thumbnailRendering: 'wadors',
requestOptions: {
requestFromBrowser: true,
},
},
],
},
};
```
You can also create a new config file and specify its path relative to the build
output's root by setting the `APP_CONFIG` environment variable. You can set the
value of this environment variable a few different ways:
- [Add a temporary environment variable in your shell](https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#adding-temporary-environment-variables-in-your-shell)
- [Add environment specific variables in `.env` file(s)](https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#adding-development-environment-variables-in-env)
- Using the `cross-env` package in an npm script:
- `"build": "cross-env APP_CONFIG=config/my-config.js react-scripts build"`
After updating the configuration, `yarn run build:web` to generate updated build
output.
## Next Steps
### Deploying Build Output
_Drag-n-drop_
- [Netlify: Drop](/deployment/recipes/static-assets.md#netlify-drop)
_Easy_
- [Surge.sh](/deployment/recipes/static-assets.md#surgesh)
- [GitHub Pages](/deployment/recipes/static-assets.md#github-pages)
_Advanced_
- [AWS S3 + Cloudfront](/deployment/recipes/static-assets.md#aws-s3--cloudfront)
- [GCP + Cloudflare](/deployment/recipes/static-assets.md#gcp--cloudflare)
- [Azure](/deployment/recipes/static-assets.md#azure)
### Testing Build Output Locally
A quick way to test your build output locally is to spin up a small webserver.
You can do this by running the following commands in the `build/` output
directory:
```js
// Install http-server as a globally available package
yarn global add http-server
// Serve the files in our current directory
// Accessible at: `http://localhost:8080`
http-server
```
### Automating Builds and Deployments
If you found setting up your environmnent and running all of these steps to be a
bit tedious, then you are in good company. Thankfully, there are a large number
of tools available to assist with automating tasks like building and deploying
web application. For a starting point, check out this repository's own use of:
- [CircleCI][circleci]: [config.yaml][circleci-config]
- [Netlify][netlify]: [netlify.toml][netlify.toml] |
[generateStaticSite.sh][generatestaticsite.sh]
- [Semantic-Release][semantic-release]: [.releaserc][releaserc]
## Troubleshooting
> Issues and resolutions for common GitHub issues will be summarized here
...
<!-- prettier-ignore-start -->
[circleci]: https://circleci.com/gh/OHIF/Viewers
[circleci-config]: https://github.com/OHIF/Viewers/blob/react/.circleci/config.yml
[netlify]: https://app.netlify.com/sites/ohif/deploys
[netlify.toml]: https://github.com/OHIF/Viewers/blob/react/netlify.toml
[generateStaticSite.sh]: https://github.com/OHIF/Viewers/blob/react/generateStaticSite.sh
[semantic-release]: https://semantic-release.gitbook.io/semantic-release/
[releaserc]: https://github.com/OHIF/Viewers/blob/react/.releaserc
<!-- prettier-ignore-end -->
@@ -0,0 +1,104 @@
# Embedded Viewer
The quickest and easiest way to get the OHIF Viewer up and running is to embed
it into an existing web application. It allows us to forego a "build step", and
add a powerful medical imaging viewer to an existing web page using only a few
include tags. Here's how it works:
{% include "./../_embedded-viewer-diagram.md" %}
1. Create a new web page or template that includes the following external
dependencies:
<ul>
<li>
<a href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<code>bootstrap@3.3.7</code>
</a>
</li>
<li>
<a href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700|Sanchez&display=swap">
<code>Google Fonts, Sanchez & Roboto</code>
</a>
</li>
<li>
<a href="https://unpkg.com/react@16/umd/react.production.min.js">
<code>react@16.8.6</code>
</a>
</li>
<li>
<a href="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js">
<code>react-dom@16.8.6</code>
</a>
</li>
<li>
<a href="https://unpkg.com/ohif-viewer/dist/index.umd.js">
<code>ohif-viewer@latest</code>
</a>
</li>
</ul>
<ol start="2">
<li>The <a href="">WADO Image Loader Codecs and Web Worker source code</a>
should be accessible from your server's root</li>
<li>Create a JS Object to hold the OHIF Viewer's configuration. Here are some
example values that would allow the viewer to hit our public PACS:</li>
</ol>
```js
// Set before importing `ohif-viewer`
window.config = {
// default: '/'
routerBasename: '/',
servers: {
dicomWeb: [
{
name: 'DCM4CHEE',
wadoUriRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado',
qidoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
wadoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
qidoSupportsIncludeField: true,
imageRendering: 'wadors',
thumbnailRendering: 'wadors',
requestOptions: {
requestFromBrowser: true,
},
},
],
},
};
```
<ol start="5"><li>
Render the viewer in the web page's target <code>div</code>
</li></ol>
```js
// Made available by the `ohif-viewer` script included in step 1
var Viewer = window.OHIFStandaloneViewer.App;
var app = React.createElement(Viewer, window.config, null);
ReactDOM.render(app, document.getElementById('ohif-viewer-target'));
```
#### Tips & Tricks
> I'm having trouble getting this to work. Where can I go for help?
First, check out this fully functional [CodeSandbox][code-sandbox] example. If
you're still having trouble, feel free to search or GitHub issues. Can't find
anything related your problem? Create a new one.
> When I include bootstrap, other styles on my page no longer work correctly.
> What can I do?
When we include `bootsrap` (and the other dependencies), they are added
globally. This has the potential of causing conflicts with other scripts and
styles on the page. To prevent this, `embed` the viewer in a new/empty web page.
Have that working? Good. Now `embed` that new page using an
[`<iframe>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe).
This should produce the expected result while also protecting your page from any
globally defined styles/scripts.
[code-sandbox]: https://codesandbox.io/s/ohif-viewer-script-tag-usage-b3st9
Loaded 100 of 1171 files, more files were not shown because too many files have changed in this diff. Show more