Compare commits

..
799 Commits
Author SHA1 Message Date
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 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 0e59e02991 Merge pull request #401 from dannyrb/chore/repository-cleanup
chore(ci): CircleCI and VS Code preferences
2019-04-26 13:14:15 -04:00
dannyrb ea4ea9469e This is the default value for this config field 2019-04-26 13:03:32 -04:00
dannyrb 739101ded4 No package name collission 2019-04-26 13:03:22 -04:00
dannyrb 6038546f52 prep --> preBuild 2019-04-26 13:00:24 -04:00
dannyrb 5b15d39871 Shuffle some test coverage setting around 2019-04-26 12:58:43 -04:00
dannyrb e9952a7511 Try removing max-old-space-size now that we've removed bad directories 2019-04-26 12:50:13 -04:00
dannyrb c571003210 Exclude a few more locations 2019-04-26 12:46:35 -04:00
dannyrb 1b2cfb9fda Don't commit coverage reports 2019-04-26 12:37:34 -04:00
dannyrb f8850f6522 Don't collect coverage from extensions 2019-04-26 12:37:06 -04:00
dannyrb 28d1fde2ed Attempt to set NODE_OPTIONS before running tests 2019-04-26 12:33:17 -04:00
dannyrb 8a0915c49f Update scripts to match CI memory limits 2019-04-26 12:25:23 -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
dannyrb 64090634e7 No need to track our junit output 2019-04-26 10:12:33 -04:00
biharck accb4fd2bb wip to fix jquery-hotkeys 2019-04-26 11:00:27 -03:00
dannyrb eb562f730f Sanity test only for now 2019-04-25 16:52:44 -04:00
dannyrb ae92d07a5a Stubbed sanity test 2019-04-25 16:51:07 -04:00
dannyrb ebefd8b758 Add CircleCI test config 2019-04-25 16:50:57 -04:00
dannyrb 62de1a3721 Add codecov dev dependency 2019-04-25 16:50:44 -04:00
dannyrb 256ba0d42f Configure jest -- fix a few common issues 2019-04-25 16:44:41 -04:00
dannyrb ad8b554f04 add semantic-release dev dependency 2019-04-25 15:46:48 -04:00
Danny Brown 53cd72d43e Merge branch 'react' into chore/repository-cleanup 2019-04-25 15:38:42 -04:00
dannyrb e0fa2bacd7 Autoformat 2019-04-25 15:35:11 -04:00
dannyrb 2a49f490ff CircleCI config to attempt build on PR 2019-04-25 15:34:59 -04:00
dannyrb 0d43c4cc81 Autoformat 2019-04-25 15:31:01 -04:00
dannyrb 357ad6af3c Default prettier settings 2019-04-25 15:30:46 -04:00
dannyrb fbb9207b93 VS Code default settings 2019-04-25 15:29:42 -04:00
Danny Brown a8dfc3d7ce Merge pull request #400 from dannyrb/chore/repository-cleanup
Chore/repository cleanup
2019-04-25 15:17:38 -04:00
dannyrb b37fd03add Better description 2019-04-25 15:12:10 -04:00
dannyrb 98cf09835a Point out Viewer architecture 2019-04-25 15:06:09 -04:00
dannyrb 22e32bc1c7 Simpler getting started; but not advanced scenarios 2019-04-25 15:03:31 -04:00
dannyrb 393a3f37d3 MISC urls 2019-04-25 15:01:18 -04:00
dannyrb 8ee610565a Why updates 2019-04-25 15:01:01 -04:00
dannyrb daaa42456a Getting Started 2019-04-25 15:00:48 -04:00
dannyrb 8c75599bd2 Contributing 2019-04-25 15:00:29 -04:00
dannyrb 8c0138d183 Issues 2019-04-25 15:00:17 -04:00
dannyrb cdf12511ea Badges 2019-04-25 14:59:59 -04:00
dannyrb 95dd18dc90 Read the docs 2019-04-25 14:01:35 -04:00
dannyrb 300886f315 The why 2019-04-25 14:01:19 -04: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
Danny Brown 415ade4a97 Merge pull request #398 from dannyrb/chore/update-docs-outline
chore(docs): System architecture
2019-04-25 00:01:25 -04:00
dannyrb d45ac5db0a "Goal" of architecture page 2019-04-24 23:54:26 -04:00
dannyrb d062efdc82 Stubbed common question 2019-04-24 23:39:56 -04:00
dannyrb a78fa6e3b3 Component library 2019-04-24 23:39:45 -04:00
dannyrb e96a331d91 Diagram explanation 2019-04-24 23:25:43 -04:00
dannyrb e188180a4a Remaining architecture menu items 2019-04-24 23:16:36 -04:00
dannyrb 2b67f906ea Extensions 2019-04-24 23:16:24 -04:00
dannyrb 98df7d5989 Common questions 2019-04-24 23:16:14 -04:00
dannyrb 320c3b0d67 Updated primary nav 2019-04-24 22:31:05 -04:00
dannyrb e533f6f0e8 Configuration placeholder 2019-04-24 22:30:51 -04:00
dannyrb 8ce7c04fa3 Business logic 2019-04-24 22:30:35 -04:00
dannyrb cf93a1eb06 Overview 2019-04-24 22:30:18 -04: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
dannyrb 9c7ed9f4bf Add starting architecture docs 2019-04-24 15:41:23 -04:00
dannyrb 7865d39fbb Add diagram to source 2019-04-24 15:27:57 -04: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
Danny Brown d1f7edf423 Merge pull request #393 from dannyrb/chore/update-docs-outline
Chore/update docs outline
2019-04-23 09:49:15 -04: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
dannyrb 17af9be266 Don't build example for this PR 2019-04-19 14:43:25 -04:00
dannyrb 6608af5daa Merge branch 'react' of github.com:OHIF/Viewers into chore/update-docs-outline 2019-04-19 14:23:51 -04:00
Danny Brown e4d9a56910 Merge pull request #389 from dannyrb/react
Restore react example at /demo
2019-04-19 14:22:48 -04:00
dannyrb 551c2d7e23 Merge branch 'react' of github.com:OHIF/Viewers into react
# Conflicts:
#	docs/latest/_book/package.json
2019-04-19 14:21:13 -04:00
dannyrb 46b737fcbb Skinny advanced description 2019-04-19 14:05:31 -04:00
dannyrb 46337e7f8b Merge branch 'chore/update-docs-outline' of github.com:dannyrb/Viewers into chore/update-docs-outline
# Conflicts:
#	docs/latest/SUMMARY.md
2019-04-19 13:41:16 -04:00
dannyrb 0705565c02 Update high level summary of extensions 2019-04-19 12:46:05 -04:00
dannyrb c1b7e5a7fc Remove unused proptypes 2019-04-19 12:42:38 -04:00
dannyrb 37368ca30e Formatting 2019-04-19 12:42:26 -04:00
dannyrb dcc5f53396 Add toolbar section 2019-04-19 12:41:25 -04:00
dannyrb 41d6e0d7ca Docs for Viewport Module 2019-04-19 10:45:40 -04:00
dannyrb 29abad4a24 Remove unused import 2019-04-19 10:45:22 -04:00
dannyrb 38b31984ae Quick readme on how to write/dev docs 2019-04-19 10:45:09 -04:00
dannyrb 312e300ffc Update sidebar for extensions links 2019-04-19 10:44:46 -04:00
biharck 04443494b0 adding orthanc configuration file and into the readme file 2019-04-19 09:58:30 -03:00
dannyrb 1c08604fbb Remove custom extensions as it's just an overview of what an extension is 2019-04-19 01:10:41 -04:00
dannyrb d6c0305a3e Play with new menu ordering 2019-04-19 01:04:02 -04:00
dannyrb 13496911bc Shift to advanced folder 2019-04-19 00:59:46 -04:00
dannyrb 464cb02b5e Rough notes, extensions 2019-04-18 17:01:35 -04:00
dannyrb 2f4b3cd6b7 OHIF maintained extensions 2019-04-18 15:52:36 -04: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
dannyrb f5ee00ab98 Adding architecture page 2019-04-17 16:45:17 -04:00
dannyrb 7975e442e2 This menu item is generated by the versions plugin; no need to add it here 2019-04-17 16:43:17 -04:00
dannyrb 4f2a6a3c70 Silly little bat script to make dev on windows less painful 2019-04-17 16:42:56 -04:00
dannyrb 38c01d46a1 Don't track gitbook output 2019-04-17 16:41:59 -04:00
dannyrb 2b49b7fc4d _book are built assets. We don't need them in source control 2019-04-17 16:41:24 -04:00
dannyrb 19fa0bca18 Remove unused npm scripts 2019-04-17 16:20:38 -04:00
dannyrb 10913933cd Remove unused update-docs script 2019-04-17 16:19:39 -04:00
dannyrb 0174872427 Re-add demo/example 2019-04-17 15:43:04 -04:00
Danny Brown 891118afa0 Merge pull request #387 from dannyrb/chore/update-docs-outline
chore: restore docs
2019-04-17 14:43:35 -04:00
dannyrb 4941e271ed Temporarily disable demo deploy 2019-04-17 14:34:49 -04:00
dannyrb a1f9a04acc Updated lock 2019-04-17 14:34:34 -04:00
dannyrb 15cfe428df Remove unused deploys 2019-04-17 14:33:13 -04:00
dannyrb 605bd4f2bc Change expected react dir 2019-04-17 14:04:31 -04:00
dannyrb 8415120378 move CNAME file 2019-04-17 14:03:32 -04:00
dannyrb b8f38a200e remove lingering sha import 2019-04-16 16:57:29 -04:00
dannyrb 08d1faa3e7 Rollup config --> isContextConsumer 2019-04-16 16:56:43 -04:00
dannyrb 6a44da2d16 Use yarn run 2019-04-16 16:48:51 -04:00
dannyrb da77d15762 Be more explicit with our versions 2019-04-16 16:39:36 -04:00
dannyrb aae8925653 Kill travis 2019-04-16 16:39:13 -04:00
dannyrb f7a55ae382 Shift to prebuild 2019-04-16 16:36:20 -04:00
dannyrb 09291acbd5 Make sure version.js exists before we build 2019-04-16 16:34:52 -04:00
dannyrb a3c814339e Don't track package-lock 2019-04-16 16:34:38 -04:00
dannyrb f771b91a03 Add yarn.lock 2019-04-16 16:34:26 -04:00
dannyrb 822ee3143d Remove sha file creation (contained most recent commit hash) 2019-04-16 16:29:09 -04:00
dannyrb 2c3f71f0b0 Test commit 2019-04-16 16:17:56 -04:00
Danny Brown a9896b0135 Merge pull request #385 from dannyrb/react
💥 _explosion noises_
2019-04-16 16:05:37 -04:00
dannyrb c92539dae6 Another batch of meteor files 2019-04-16 13:42:54 -04:00
dannyrb b8e1a6e745 Discard meteor files 2019-04-16 13:34:10 -04:00
dannyrb c7539184aa Re-order dependencies 2019-04-16 12:19:14 -04:00
dannyrb 038d807d08 OS safe copy command 2019-04-16 12:15:40 -04:00
dannyrb 780f84af89 Re-add extensions as top level dir 2019-04-16 12:00:06 -04:00
dannyrb 77ec71a12a Preserve react dockerfile 2019-04-15 16:56:23 -04:00
dannyrb bd605b9752 More shifting 2019-04-15 16:55:51 -04:00
dannyrb f526d54786 Delete Yarn.lock for now 2019-04-15 16:45:37 -04:00
dannyrb 72cdebccf4 🧹🧹🧹 Don't mind me. Just moving things around 2019-04-15 16:44:36 -04:00
dannyrb 9a0d295ee6 Some more of this 🧨 2019-04-15 16:38:53 -04:00
dannyrb 7e68259edb 💥 _explosion noises_ 2019-04-15 16:35:19 -04:00
Gustavo André Lelis ca98e69a66 Merge pull request #383 from OHIF/bump-react-viewerbase
Bump react-viewerbase version to 0.2.17
2019-04-15 10:12:19 -03:00
Gustavo Lelis ba72350c9e fix(react-viewerbase): Fixing the package version instead of using latest minor 2019-04-15 10:07:28 -03:00
Gustavo Lelis 3077d18ace Bump react-viewerbase version to 0.2.17 2019-04-10 11:05:54 -03:00
Erik Ziegler cca67a3413 fix(ccc-example): Fix ccc localhost settings 2019-04-09 13:57:11 +02: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 55510a27be chore(version): Bump ohif-cornerstone-extension to 0.0.28 2019-04-04 13:13:32 +02:00
Erik Ziegler 5558da0641 fix(babel) Update ohif-cornerstone-extension with react-cornerstone-viewport fix 2019-04-04 13:11:57 +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
Gustavo André Lelis 768db26bfc Merge pull request #375 from OHIF/viewport-custom-props
feat(vewportOverlay): Update the extension to be able to pass custom …
2019-03-29 14:53:28 -03:00
Gustavo Lelis 59c06c886b feat(react-cornerstone-viewport): Bump version 2019-03-29 13:51:16 -03:00
Gustavo Lelis c05c666d72 feat(viewportOverlay): Adding default value on customProps 2019-03-28 17:19:20 -03:00
Gustavo Lelis aacd0c68b8 feat(vewportOverlay): Update the extension to be able to pass custom properties to the viewport 2019-03-27 04:34:23 -03: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 c1173e3232 Update cornerstone-extension for dcmjs 0.3.8 2019-03-08 19:38:05 +01:00
Erik Ziegler 773e0c32bb Bump ohif-viewer to 0.0.19 2019-03-08 19:08:08 +01:00
Erik Ziegler 2eb87ee8c1 Update cornerstone-extension and dcmjs to fix segmentation display in Cornerstone 2019-03-08 19:06:02 +01:00
Evren Ozkan c31e21fe18 Bump ohif-cornerstone-extension to 0.0.23 2019-03-08 09:01:13 -05:00
Evren Ozkan ae4fa90e99 fix(ohif-cornerstone-extension): Handle undefined sopClassUids
Bump ohif-cornerstone-extension to 0.0.22
2019-03-08 08:55:59 -05:00
Erik Ziegler 19eeb07f0b Bump ohif-cornerstone-extension to 0.0.21 2019-03-08 13:35:46 +01:00
Erik Ziegler 9fd19e0ae6 docs(page-width): Widen pages 2019-03-04 14:04:21 +01:00
Erik Ziegler 0bbb7476eb docs(versions): Fix version selector 2019-03-04 13:45:57 +01:00
Erik Ziegler 6658623f1f docs(readme): Start adding documentation for React version 2019-03-04 13:43:39 +01:00
Erik Ziegler ec51cb7a6c feat(vtk): Enable vtk extension (still very much work-in-progress) 2019-03-01 10:55:52 +01:00
Erik Ziegler 932fcea446 Bump ohif-viewer to 0.0.18 2019-02-28 11:42:49 +01:00
Erik Ziegler f111411046 feat(extensions): Toolbar module depends on plugin in active viewport 2019-02-28 11:18:01 +01:00
Evren Ozkan 2fdc1687d0 fix(dependencies): Bump cornerstone-tools to 3.2.3 and ohif-core to 0.3.3 2019-02-26 13:24:24 -05:00
Evren Ozkan 5fb95cc8a3 fix(measurement-table): Set measurementId in table data 2019-02-26 13:22:56 -05:00
Erik Ziegler 6f8b9ae593 Update ohif-cornerstone-extension to support props to specify which image should be displayed in a stack 2019-02-21 16:51:52 +01:00
Gustavo Lelis 656b64e9db Update viewerbase, bump ohif-viewer to 0.0.17 2019-02-21 08:10:25 +01:00
Erik Ziegler d00be8dbd7 Bump ohif-viewer to 0.0.16 2019-02-18 15:09:49 +01:00
Erik Ziegler 113c20c346 feat(measurement-table): Improve measurement table support. Still missing labelling 2019-02-18 15:00:37 +01:00
Erik Ziegler becdfee1ed Switch ohif-core submodule to a proper commit hash 2019-02-18 10:58:32 +01:00
Erik Ziegler 9de327fa12 Add base tag if not present to fix issues with Icons referenced in SVG 2019-02-18 10:53:36 +01:00
Erik Ziegler 422414ca74 Update gitmodules to use https instead of ssh 2019-02-18 10:49:13 +01:00
Gustavo Lelis e6480594ae fix(cine): Fix tool icon 2019-02-18 10:47:07 +01:00
maltempi 126babe4ee Removing not used studyCount field 2019-02-15 23:45:59 -02:00
maltempi d4e865860e Using momentjs method to subtract days 2019-02-15 23:43:10 -02:00
maltempi 94ab9ff791 Formating studyDate field 2019-02-15 23:36:33 -02:00
maltempi 04dc3724ff Adding study list sorting 2019-02-15 23:14:05 -02:00
maltempi 9e7d14d4c8 Fixing pagination 2019-02-15 22:43:21 -02:00
maltempi 993b50e3bc merging master into study-list-filter 2019-02-15 09:18:55 -02:00
Erik Ziegler eb710c3494 Update react-viewerbase to fix studylist redirect issues 2019-02-14 15:21:52 +01:00
Erik Ziegler 26932612f8 Fix static site icon URL 2019-02-14 15:07:35 +01:00
Erik Ziegler 6b6237cdf6 Update ohif-viewer to use latest ohif-core (0.0.15) 2019-02-13 14:27:46 +01:00
Erik Ziegler dd26fcb1cd Update ohif-cornerstone-extension to use latest ohif-core 2019-02-13 14:18:36 +01:00
Erik Ziegler b0a5d07498 Update ohif-viewer's dependencies (0.0.14) 2019-02-13 10:15:54 +01:00
Erik Ziegler 977ede54e8 Add overflow:hidden to FlexboxLayout 2019-02-12 18:21:40 +01:00
Erik Ziegler b763178852 Update ohif-cornerstone-extension with latest react-cornerstone-viewport 2019-02-12 18:19:09 +01:00
Erik Ziegler bca45d0646 Update ohif-core to include latest measurements code 2019-02-12 09:59:21 +01:00
Gustavo Lelis 6dd9a6ac49 feat(measurementTable): Adding prop-types as peerDependency as we have is also as peer on react-cornerstone-viewport 2019-02-12 03:32:23 -02:00
Gustavo Lelis cb32c299e2 feat(measurementTable): Adding convert measurements into table data function into our reducer 2019-02-12 03:30:25 -02:00
Gustavo Lelis 7c20343912 feat(measurementTable): Providing studyInstanceUids for ConnectedViewer component 2019-02-12 03:30:25 -02:00
Gustavo Lelis de853c9221 feat(measurementTable): Fixing tool naming to match with tools instanciated in the viewer 2019-02-12 03:30:24 -02:00
Gustavo Lelis 0ff4e43315 feat(measurementTable): Add dispatch functions for measurements updates. 2019-02-12 03:30:23 -02:00
Evren Ozkan 13c8599f06 feat(react-measurements): Integrate Timepoint API and Measurement API from ohif-core package - WIP 2019-02-12 02:34:37 -02:00
Evren Ozkan 84e2f86a76 feat(react-measurements): Add measurement table - WIP 2019-02-12 02:34:35 -02:00
Erik Ziegler e1f1d9b630 Fix passing children into cornerstone-extension 2019-02-11 22:33:53 +01:00
Erik Ziegler 6a3c257cb3 Fixes for passing configuration / children into the cornerstone-extension 2019-02-11 22:28:24 +01:00
Erik Ziegler 3e5147f4ba Bump react-cornerstone-viewport dependency (ohif-cornerstone-extension 0.0.11) 2019-02-11 09:32:34 +01:00
Erik Ziegler 23e5ffe07c Prevent bad NPM publications 2019-02-10 23:04:25 +01:00
Erik Ziegler 72cfccd55e ohif-viewer 0.0.11 (bug fix) 2019-02-10 22:45:27 +01:00
Erik Ziegler 72a4ae11fa Fix for passing availableTools inside Cornerstone extension 2019-02-10 22:43:06 +01:00
Erik Ziegler b413527371 Demonstrate tool configuration via App redux settings (using Freehand tool) (ohif-cornerstone-extension: 0.0.8, ohif-viewer 0.0.10) 2019-02-10 22:28:42 +01:00
Erik Ziegler e235980040 Fix update issues when component props change (ohif-cornerstone-extension: 0.0.7, ohif-viewer 0.0.9) 2019-02-10 21:35:09 +01:00
Erik Ziegler 2868b08a4a Improvements for dicom-html-extension 2019-02-10 17:11:15 +01:00
Erik Ziegler af20f5f3e3 Add rudimentary DICOM-SR to HTML extension 2019-02-08 19:13:12 +01:00
Erik Ziegler 4d08af5beb Update ohif-viewer version because of a bad publish 2019-02-08 14:23:30 +01:00
Erik Ziegler b2298556ca Fix issues with ohif-cornerstone-extension 2019-02-08 14:02:42 +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
maltempi db6d372dc4 Adding date filtering 2019-02-07 22:56:25 -02:00
Erik Ziegler a32a5f3612 Update to ohif-core 0.2.7 2019-02-07 19:18:01 +01:00
Erik Ziegler 61ee07a8f8 Bump ohif-cornerstone-extension to 0.0.5 2019-02-07 17:57:11 +01:00
Erik Ziegler 35fd77573b Allow OHIFCornerstoneExtension to have children passed into it upon declaration 2019-02-07 17:56:23 +01:00
Erik Ziegler 3d1eff07ad Move ExtensionManager and localStorage into ohif-core 2019-02-07 15:10:39 +01:00
Biharck Araujo 14c344ecb5 adding style to fix viewport maximization (#349) 2019-02-07 11:14:16 +01:00
Erik Ziegler 5bb64fd925 Switch index.html to the dcmjs dicomweb server 2019-02-06 17:16:27 +01:00
Erik Ziegler 5b29d082ca Comment out some stuff that I didn't mean to push yet 2019-02-06 14:58:06 +01:00
Erik Ziegler 22202141b8 Moved the Cornerstone viewport code to an extension. Tons of changes to rollup and package.json files to make everything play nicely 2019-02-06 14:46:06 +01:00
James Petts 9c97d6229e fix typo: e -> eventData. 2019-02-05 12:18:31 +00:00
Erik Ziegler 9a0f417eec Update ohif-core to fix microscopy (again) 2019-02-04 17:22:04 +01:00
Erik Ziegler e3d26f2181 Fix performance issues with Microscopy extension 2019-02-04 16:45:49 +01:00
Erik Ziegler bf8f737fec Begin adding DICOM Segmentation handling to Cornerstone plugin via dcmjs 2019-02-03 22:18:08 +01:00
Sandra b93a677ef3 Refactor extensions interface (#344)
* Added container class for plugins that care for registration of submodules

* Added extensions manager that cares for adding modules to store

* Make extensions require less knowledge of internal extension management

* Reformatting

* Update generateStaticSite to use ohif-viewer, remove old OHIFViewer-react folder

* Add yarn.lock so Netlify knows to use Yarn

* Fix for copying static site folder

* Try to fix netlify build which is stuck uploading

* Try to fix static site deployment

* Try to fix static site deployment again

* Try to fix static site deployment one more time

* Extracted pdf plugin into external package

* Removed some unused dependencies

* Published pdf extension to npm registry

* Added external microscopy extension (work in progress)

* Extraction of microscopy plugin working now

* Added microscopy extension npm package to package.json

* Increase ohif-core version

* update yarn.lock

* Fix error in readme

* Fix authentication error in pdf plugin

* Remove readme, update packages, add redirect for netlify

* netlify test

* netlify test 2

* netlify test 2, forgot to add new redirects file

* Use public dicom server for demo

* Another netlify try

* Another netlify try 2

* Another netlify try 3

* Another netlify try 4
2019-02-02 11:10:56 +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
Erik Ziegler af68db0c09 Update ohif-core to make user preferences work 2019-01-31 08:05:06 +00:00
Thiago Maltempi 8a3056b9f0 [React] Integrating UserPreferences + Hotkeys (#332)
* User Preferences - basic integration

* wip user prefs

* Creating ConnectedHeader

* Removing old UserPreferences

* Reverting studylistwithdata

* Initial hotkeys handler migration

* Setting keys after save

* Getting hotkeys from redux

* Adding windowslevel preset listeners

* Refactoring - moving hotkeys setup to ohif-core-hotkeysUtil

* Using hotkeysUtil method on userPreferences save

* Using context in the user preferences

* Adding redux store into localstorage

* Hotkeys - Fixing onResetToDefaults

* Mmoving from OHIFViewer-react to ohif-viewer
2019-01-31 07:55:05 +00:00
Erik Ziegler fbcc4fcf40 Add dockerfile for ohif-viewer package 2019-01-30 18:37:01 +00:00
Siegel 0804bc1177 Added minimal documentation 2019-01-30 17:07:39 +00:00
Erik Ziegler 1e898fd5c8 Update ohif-core, fix rollup usage with dicomweb-client and dicom-microscopy-viewer 2019-01-30 16:21:38 +00:00
Erik Ziegler 03c7274812 Add DicomMicroscopy plugin 2019-01-30 11:24:34 +00:00
Sandra 84c949f2e6 Merge OHIFViewer-react into Packages-react\ohif-viewer (#342)
* Added public directory and debug run code in index.js

* Different entry points for development and publish

* Add port to start debug script

* Merge in progress

* Merge in progress

* Merge in progress

* Merged last components
2019-01-30 09:34:55 +00:00
Erik Ziegler 80df33f4fd Fixes for Layout button and CINE, move some stuff into Cornerstone plugin 2019-01-28 10:23:24 +00:00
Erik Ziegler 2b2583bfd7 Fix versions 2019-01-25 16:55:33 +01:00
Erik Ziegler 4d0822e47e Add DICOM PDF plugin 2019-01-25 16:54:10 +01:00
Erik Ziegler fe68719eca Fix config issue 2019-01-24 14:20:54 +01:00
Erik Ziegler 0501d4ce2a Remove dist folder from ohif-viewer 2019-01-24 14:04:48 +01:00
Erik Ziegler 8f96553ee2 Add ability to easily change the standalone viewer logo (0.0.6) 2019-01-24 14:00:01 +01:00
Erik Ziegler d961a73b6c Fixes for Standalone OpenID Connect usage 2019-01-24 10:22:40 +01:00
James Petts 4579543bde Fixed memory leak by properly triggering remove. (#339) 2019-01-23 09:38:18 +01:00
Erik Ziegler 9cc063430a Fix ROOT_URL for Standalone Viewer 2019-01-17 17:44:26 +01:00
Erik Ziegler 59b7c951df Try to fix standalone routing 2019-01-17 17:40:42 +01:00
Erik Ziegler 2082d46a57 Fix standalone example 2019-01-17 17:22:15 +01:00
Erik Ziegler 6e91df26ee Add ohif-viewer package to work on sharing components across viewers and test the standalone viewer via script tag 2019-01-17 17:00:21 +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
Erik Ziegler 6e291a18b8 feat(CINE): Add basic CINE dialog support 2019-01-14 10:00:30 +01:00
Erik Ziegler 3954c32441 Integrate Study Prefetcher and Study Loading Listener 2019-01-09 09:19:15 +01:00
Erik Ziegler 8962f957d8 Updated to latest react-cornerstone-viewport 2019-01-08 11:38:47 +01:00
Erik Ziegler 65c7bbdcc3 Attempt to fix missing cornerstoneMath issue 2019-01-08 11:17:30 +01:00
Erik Ziegler 6096dc6892 Disable the user requirement for demo purposes 2019-01-08 10:55:56 +01:00
Erik Ziegler d45d2ee8f4 ESLint fixes and cleanup 2019-01-08 10:48:57 +01:00
Erik Ziegler ecbaddfa93 Fix viewport resizing behaviour on layout change 2019-01-07 21:18:52 +01:00
Erik Ziegler 9e7314e4a5 Add OAuth support 2019-01-07 19:17:10 +01:00
Erik Ziegler 0cbf15c46e Styling fixes, add some other tools 2019-01-07 14:00:54 +01:00
Erik Ziegler 9f74adcb44 Fixes for drag/drop 2019-01-07 13:11:38 +01:00
Erik Ziegler 2f0eb5d71e Fix static site generation script after homepage change 2019-01-07 11:30:02 +01:00
Erik Ziegler cb43d379b1 Try to fix missing icons 2019-01-07 11:18:59 +01:00
Erik Ziegler 2b8dfa4468 Update to include layout control 2019-01-06 21:59:25 +01:00
Rodrigo Antinarelli b84fd28dc2 Fix Page scroll (#329)
* add .DS_Store to .gitignore

* create header component

* add icons image file to the project

* add new theme variables

* insert header component into Viewer

* add web fonts

* create dropdown component

* update header styles

* import dropdown with custom list into header component

* reindent index

* Update index.html

* create json file for header menu settings

* import header menu

* header prefix

* remove overflow hidden -- it's hiding Dropdown menu

* header fixes

* header css adjustments

* add Back to Viewer btn

* icon

* fix viewer height to avoid page scroll

* fix

* comment right sidebar's wrapper div -- it's not being rendered yet

* Update ViewerMain.js

* Update ToolbarRow.js

* Update ViewerMain.js
2019-01-05 16:14:12 +01:00
Erik Ziegler c1b8642e4d fix(commit-hook): Add husky to package.json 2019-01-02 17:35:00 +01:00
Erik Ziegler 36dde7842b Switch to react-dnd via react-viewerbase to fix drag/drop of display sets 2019-01-02 17:33:20 +01:00
Rodrigo Antinarelli 2569d0e79b Header component (#328)
* add .DS_Store to .gitignore

* create header component

* add icons image file to the project

* add new theme variables

* insert header component into Viewer

* add web fonts

* create dropdown component

* update header styles

* import dropdown with custom list into header component

* reindent index

* Update index.html

* create json file for header menu settings

* import header menu

* header prefix

* remove overflow hidden -- it's hiding Dropdown menu

* header fixes

* header css adjustments

* add Back to Viewer btn
2019-01-01 12:23:17 +01:00
Erik Ziegler 301ff1adc7 Start fixing viewports 2018-12-31 14:54:22 +01:00
Erik Ziegler 18792da43d Fix toolbar buttons connection to redux 2018-12-31 13:52:37 +01:00
Erik Ziegler 5d6aad488e Update viewer with Study List and routing to Viewer 2018-12-31 13:26:38 +01:00
Rodrigo Antinarelli 4fbc208b41 (React) - Header and Dropdown component (#327)
* add .DS_Store to .gitignore

* create header component

* add icons image file to the project

* add new theme variables

* insert header component into Viewer

* add web fonts

* create dropdown component

* update header styles

* import dropdown with custom list into header component

* reindent index

* Update index.html

* create json file for header menu settings

* import header menu

* header prefix
2018-12-29 15:02:18 +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
Erik Ziegler 470b57de8e Fixes for opening/closing sidebar 2018-12-19 14:53:03 +01:00
Erik Ziegler c08d12cb36 Start adding toggle to open/close sidebar 2018-12-19 09:41:30 +01:00
Erik Ziegler 4174018149 Start adding toolbar back in 2018-12-18 14:15:55 +01:00
Erik Ziegler e84197b19d fix(styles): Switch from stylus to CSS for app-level styles. Add CSS variables for theme 2018-12-18 13:33:26 +01: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
Erik Ziegler 09ac6ee347 fix base URL usage for web workers 2018-12-17 23:08:26 +01:00
Erik Ziegler 4a3a0aa394 Add StandaloneViewer-style routes 2018-12-17 22:50:58 +01:00
Erik Ziegler cd6f177bca Fix sed usage to expand variables 2018-12-17 22:21:30 +01:00
Erik Ziegler 8d9e4191ed Forgot to add homepage to package.json 2018-12-17 21:27:38 +01:00
Erik Ziegler fa0bcfe31f Use homepage to fix static site deploy preview 2018-12-17 21:23:50 +01:00
Erik Ziegler fbfc3f6163 Netlify doesn't have yarn, so switch it to npm 2018-12-17 20:53:59 +01:00
Erik Ziegler f2ca5629c8 Fix static site generation 2018-12-17 20:45:30 +01:00
Erik Ziegler 11d36a4e6b Switch to react app with dependencies on ohif-core and react-viewerbase 2018-12-17 17:23:03 +01:00
Erik Ziegler fc5bd73c1e add new viewer folder 2018-12-14 15:23:48 +01:00
Erik Ziegler d541c23117 wip, very broken as I moved stuff to ohif-core 2018-12-14 14:38:36 +01:00
Erik Ziegler 7b66dec163 continue consolidating packages, converting various pieces to react 2018-12-13 23:24:39 +01:00
Erik Ziegler 5f30f7bd35 reorganize packages, start converting overall app to react (very broken at the moment) 2018-12-12 18:06:25 +01:00
nicolasvandooren 947a5f470d feat(standalone-viewer): Add authorization header (#322) 2018-12-12 18:01:46 +01:00
Erik Ziegler 024fe1a448 chore(ohif-studylist): Remove OHIF.studylist.classes deprecation notice 2018-12-12 09:11:59 +01:00
Erik Ziegler 6511198c90 Package.js updates 2018-12-12 09:11:49 +01:00
Erik Ziegler 184c959037 Move ohif:hotkeys into ohif:core 2018-12-12 09:11:29 +01:00
Erik Ziegler 1abd0e6f9d Move ohif:commands into ohif:core 2018-12-12 09:11:05 +01:00
Erik Ziegler da36c33c70 Move ohif:metadata into ohif:core 2018-12-12 09:11:00 +01:00
Erik Ziegler 700fff763c Move ohif:header into ohif:core 2018-12-12 09:10:53 +01:00
Erik Ziegler 54a0f447b5 Move ohif:log into ohif:core 2018-12-12 09:10:46 +01:00
Erik Ziegler 054e37dfb7 WIP reorganization 2018-12-12 09:10:39 +01:00
Erik Ziegler 6706dfe634 fixes to transition OHIF Viewer to redux 2018-12-11 22:15:33 +01:00
Erik Ziegler 5dec28ba8c chore(cleanup): Remove persistent-session package 2018-12-11 22:15:14 +01:00
Erik Ziegler c3565cd687 Begin switching study browser use react-viewerbase 2018-12-11 12:30:21 +01:00
Erik Ziegler 83a7271cd1 fix(viewport): Fix active viewport by connecting to redux 2018-12-06 16:12:23 +01:00
Erik Ziegler 943efb44e5 refactor(viewport): Switch to react-cornerstone-viewport 2018-12-06 13:10:46 +01:00
Erik Ziegler a42cc5f1a1 fix(meteor): Fix broken autoupdate for Meteor 1.8 2018-12-04 00:36:51 +01:00
Erik Ziegler aa170e9a89 wip on react transition 10 2018-12-03 23:56:29 +01:00
Erik Ziegler 33fad2f317 wip on react transition 9 2018-12-03 23:28:23 +01:00
Erik Ziegler 71b49e6766 wip on react transition 8 2018-12-03 18:11:39 +01:00
Erik Ziegler 9ae5dd25ce wip on react transition 7 2018-12-02 08:23:43 +01:00
Erik Ziegler 765abfd572 wip on react transition 6 2018-12-01 12:27:36 -05:00
Erik Ziegler 1ace720566 wip on react transition 5 2018-12-01 08:52:03 -05:00
Erik Ziegler 5568490819 wip on react transition 4 2018-11-30 16:12:04 -05:00
Erik Ziegler 895fb01a02 wip on react transition 3 2018-11-30 15:23:59 -05:00
Erik Ziegler f821ea2b80 wip on react transition 2 2018-11-30 14:28:15 -05:00
Erik Ziegler 7425c2beb8 wip on react transition 2018-11-30 11:40:16 -05:00
Evren Ozkan 5a4deedda8 fix(reference-lines): Update reference lines for the latest changes in cornerstone tools 2018-11-29 16:02:33 -05:00
Evren Ozkan c7565c7037 fix(download-tool): Update download tool for the latest changes in cornerstone tools 2018-11-29 13:02:54 -05:00
Evren Ozkan 94406edf21 fix(tool-manager): Set tools passive except the active tools 2018-11-29 13:02:12 -05:00
Evren Ozkan 635c8b9119 fix(tool-manager): Instantiate cornerstone tools by element 2018-11-29 12:47:23 -05:00
Evren Ozkan e947f1fad0 fix(tool-context-menu): Show context-menu on tool right-click 2018-11-28 15:04:24 -05:00
Evren Ozkan 4ee352592c fix(tool-style): Add default tool configuration 2018-11-28 14:21:48 -05:00
Evren Ozkan b91542f4cf Update to cornerstone-tools 3.0.0-b.1421 2018-11-28 13:37:03 -05:00
Evren Ozkan ea6dea4549 fix(tool-manager): Set all tools passive by default in order to render external data if exists 2018-11-15 10:55:38 -05:00
James Petts 5019f539ee Fix keyscroll. 2018-11-12 11:18:48 +00:00
James Petts edfbad10af Merge branch 'cornerstone-tools-next' of https://github.com/OHIF/Viewers into cornerstone-tools-next 2018-11-12 11:11:51 +00:00
Evren Ozkan 8b6f17c103 Integrate Cornerstone Tools v3 (#235) - WIP
- fix(stack-scroll): Activate mouse wheel and scrollbar stack scroll
- fix(touch): Activate pinch zoom, two-finger pan and three (or more) finger stack scroll
2018-11-09 13:24:48 -05:00
Evren Ozkan 4cf68adec7 Integrate Cornerstone Tools v3 (#235) - WIP
fix(mouse-buttons): Support for assigning tools to mouse buttons (left, right, middle)
fix(tool-naming): Fix tool naming issues
2018-11-09 13:24:48 -05:00
James Petts 6fedea1653 Working with latest cornerstone and cornerstoneTools versions. 2018-11-09 13:24:48 -05:00
James Petts 05085b452d Kind of working, updated cornerstone-core lib. 2018-11-09 13:24:47 -05:00
James Petts d8b60ec38a WIP newest cTools v3. 2018-11-09 13:24:47 -05:00
Gustavo Lelis 9048dcbc1e Fixing tool naming changes 2018-11-09 13:24:47 -05:00
Gustavo Lelis 875640073e Refator in ToolManager 2018-11-09 13:24:47 -05:00
Gustavo Lelis c30cdbe625 - Fixed by setting all tools to passive mode after instantiate then all
- Fixed the default tool that was not being set correctly.
- Fixed some callouts done by Erik into my PR related with keeping old tool list
2018-11-09 13:24:47 -05:00
Gustavo Lelis 51c5c76eb9 Fix some naming and updating to the correct cornerstone-tools version 2018-11-09 13:24:44 -05:00
Gustavo Lelis 500ca1ec07 Updating to latest version of tools and remving typo 2018-11-09 13:23:43 -05:00
Gustavo Lelis fee6b240a4 Adding cornerstoneTools init() 2018-11-09 13:23:43 -05:00
Gustavo Lelis e5e027f716 WIP: Introducing cornerstoneTools v3 into Viewers 2018-11-09 13:23:43 -05:00
Evren Ozkan a4b8f2c5ed fix(user-preferences): Fix the issues with saving/retrieving user preferences in OHIFViewer 2018-11-09 13:22:14 -05:00
Evren Ozkan 5017fd13af fix(hot-keys): Set the correct context name to enable hot keys based on the current page (#308) 2018-11-09 13:14:03 -05:00
Evren Ozkan 99041bebde fix(study-list): Use offset and limit in the dicomweb queries used to search studies with next/prev pagination in study list (#290) 2018-11-08 17:43:26 -05:00
Evren Ozkan 0a5feb9a0d Integrate Cornerstone Tools v3 (#235) - WIP
- fix(stack-scroll): Activate mouse wheel and scrollbar stack scroll
- fix(touch): Activate pinch zoom, two-finger pan and three (or more) finger stack scroll
2018-10-29 10:58:53 -04:00
Evren Ozkan 3f2968b05f Integrate Cornerstone Tools v3 (#235) - WIP
fix(mouse-buttons): Support for assigning tools to mouse buttons (left, right, middle)
fix(tool-naming): Fix tool naming issues
2018-10-26 23:45:19 -04:00
James Petts 7bf059ad05 Working with latest cornerstone and cornerstoneTools versions. 2018-10-23 16:53:24 +02:00
James Petts 1887df2dc5 Kind of working, updated cornerstone-core lib. 2018-10-23 13:21:21 +02:00
James Petts 548dddfc93 WIP newest cTools v3. 2018-10-23 11:31:59 +02:00
Gustavo Lelis e7042cafef Fixing tool naming changes 2018-09-24 02:38:24 -03:00
Gustavo Lelis 01739fa70a Refator in ToolManager 2018-09-24 02:38:24 -03:00
Gustavo Lelis 5865f542f8 - Fixed by setting all tools to passive mode after instantiate then all
- Fixed the default tool that was not being set correctly.
- Fixed some callouts done by Erik into my PR related with keeping old tool list
2018-09-24 02:38:24 -03:00
Gustavo Lelis 44cb47f64a Fix some naming and updating to the correct cornerstone-tools version 2018-09-24 02:38:23 -03:00
Gustavo Lelis e3bf0f2852 Updating to latest version of tools and remving typo 2018-09-24 02:38:09 -03:00
Gustavo Lelis ad459a2515 Adding cornerstoneTools init() 2018-09-24 02:37:46 -03:00
Gustavo Lelis da5b755637 WIP: Introducing cornerstoneTools v3 into Viewers 2018-09-24 02:37:46 -03:00
1761 changed files with 83231 additions and 97690 deletions

No files matched your search

+68
View File
@@ -0,0 +1,68 @@
{
"files": [
"README.md"
],
"imageSize": 100,
"commit": false,
"contributors": [
{
"login": "swederik",
"name": "Erik Ziegler",
"avatar_url": "https://avatars3.githubusercontent.com/u/607793?v=4",
"profile": "https://github.com/swederik",
"contributions": [
"code"
]
},
{
"login": "evren217",
"name": "Evren Ozkan",
"avatar_url": "https://avatars1.githubusercontent.com/u/4920551?v=4",
"profile": "https://github.com/evren217",
"contributions": [
"code"
]
},
{
"login": "galelis",
"name": "Gustavo André Lelis",
"avatar_url": "https://avatars3.githubusercontent.com/u/2378326?v=4",
"profile": "https://github.com/galelis",
"contributions": [
"code"
]
},
{
"login": "dannyrb",
"name": "Danny Brown",
"avatar_url": "https://avatars1.githubusercontent.com/u/5797588?v=4",
"profile": "http://dannyrb.com/",
"contributions": [
"code"
]
},
{
"login": "allcontributors",
"name": "allcontributors[bot]",
"avatar_url": "https://avatars3.githubusercontent.com/u/46843839?v=4",
"profile": "https://github.com/all-contributors/all-contributors-bot",
"contributions": [
"doc"
]
},
{
"login": "EsrefDurna",
"name": "Esref Durna",
"avatar_url": "https://avatars0.githubusercontent.com/u/1230575?v=4",
"profile": "https://www.linkedin.com/in/siliconvalleynextgeneration/",
"contributions": [
"question"
]
}
],
"contributorsPerLine": 7,
"projectName": "Viewers",
"projectOwner": "OHIF",
"repoType": "github",
"repoHost": "https://github.com"
}
+19
View File
@@ -0,0 +1,19 @@
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"ie": "11"
}
}
],
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-transform-regenerator",
"@babel/plugin-transform-runtime"
]
}
+155
View File
@@ -0,0 +1,155 @@
version: 2
### ABOUT
#
# This configuration powers our Circleci.io integration
#
# Note:
# Netlify works independently from this configuration to
# create pull request previews and to update `https://docs.ohif.org`
###
defaults: &defaults
working_directory: ~/repo
docker:
- image: circleci/node:10.15.1
jobs:
build_and_test:
<<: *defaults
steps:
# Download and cache dependencies
- checkout
- restore_cache:
name: Restore Yarn 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/yarn
key: yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
# Build & Test
- run: yarn build:package:ci
# https://www.viget.com/articles/using-junit-on-circleci-2-0-with-jest-and-eslint/
- run:
name: 'JavaScript Test Suite'
command: yarn test:ci
environment:
JEST_JUNIT_OUTPUT: 'reports/junit/js-test-results.xml'
# Store result
- store_test_results:
path: reports/junit
- store_artifacts:
path: reports/junit
# 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
# --no-ci argument is not ideal; however, semantic-rlease thinks we're
# attempting to run it from a `pr`, which is not the case
- run:
name: Publish using Semantic Release
command: npx semantic-release --debug
# 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 "gh-pages@localhost"
- run: git config --global user.name "npm gh-pages"
- run: yarn global add gh-pages
- run:
name: Generate Docs
command: yarn run staticDeploy
- run:
name: Publish Docs
command: yarn run docs:publish
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
workflows:
version: 2
# PULL REQUESTS
pull_requests:
jobs:
- build_and_test:
filters:
branches:
ignore:
- master
- feature/*
- hotfix/*
# MERGE TO MASTER
cut_release:
jobs:
- build_and_test:
filters:
branches:
only: master
- npm_publish:
requires:
- build_and_test
- docs_publish:
requires:
- build_and_test
- docker_publish:
requires:
- build_and_test
- npm_publish
+16 -17
View File
@@ -1,17 +1,16 @@
.idea/
.meteor/local
.meteor/meteorite
.meteor/dev_bundle
*/.meteor/dev_bundle
node_modules
.npm
npm-debug.log
Packages/active-entry/helloworld/
LesionTracker/tests/nightwatch/reports/
package-lock.json
docs/_book
docs/
img/
test/
LesionTracker/
StandaloneViewer/
# Output
dist/
# Dependencies
node_modules/
# Root
README.md
Dockerfile
# Misc. Config
.git
.DS_Store
.gitignore
.vscode
.circleci
+14
View File
@@ -0,0 +1,14 @@
##
# Environment: Default
#
# We're using this to set variables for development.
# Please feel free to delete or modify this file for your own setup.
# Be careful not to commit anything sensitive to source control.
#
PUBLIC_URL=/
#
# Most vars require REACT_APP_* naming
#
REACT_APP_CONFIG=config/default.js
+13
View File
@@ -0,0 +1,13 @@
##
# EXAMPLE
#
# Read more about .env files when using create-react-app here:
# https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#adding-development-environment-variables-in-env
#
PUBLIC_URL=/demo
#
# Most vars require REACT_APP_* naming
#
REACT_APP_CONFIG=config/netlify.js
-1
View File
@@ -1,4 +1,3 @@
config/**
docs/**
img/**
StandaloneViewer/**
+16
View File
@@ -0,0 +1,16 @@
{
"extends": [
"react-app",
"eslint:recommended",
"plugin:react/recommended"
],
"parser": "babel-eslint",
"env": {
"jest": true
},
"settings": {
"react": {
"version": "detect",
},
},
}
-16
View File
@@ -1,16 +0,0 @@
module.exports = {
'env': {
'browser': true,
'es6': true,
'jquery': true,
'node': true,
'mocha': true
},
'extends': 'eslint:recommended',
'parserOptions': {
'sourceType': 'module'
},
'rules': {
'no-undef': 'error',
}
};
+24 -8
View File
@@ -1,11 +1,27 @@
.idea/
.meteor/local
.meteor/meteorite
.meteor/dev_bundle
*/.meteor/dev_bundle
# Packages
node_modules
# Output
build
dist
docs/_book
src/version.js
junit.xml
coverage/
# YALC (for Erik)
.yalc
yalc.lock
# Logging, System files, misc.
.idea/
.npm
npm-debug.log
Packages/active-entry/helloworld/
LesionTracker/tests/nightwatch/reports/
docs/_book
package-lock.json
yarn-error.log
.DS_Store
# Common Example Data Directories
sampledata/
example/deps/
docker/dcm4che/dcm4che-arc
+9
View File
@@ -0,0 +1,9 @@
{
"trailingComma": "es5",
"printWidth": 80,
"proseWrap": "always",
"tabWidth": 2,
"semi": false,
"singleQuote": true,
"endOfLine": "lf"
}
+14
View File
@@ -0,0 +1,14 @@
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/npm",
"@semantic-release/github",
[
"@semantic-release/exec",
{
"publishCmd": "mkdir tmp && echo ${nextRelease.version} > tmp/updated-version.txt"
}
]
]
}
-123
View File
@@ -1,123 +0,0 @@
language: node_js
node_js:
- "lts/*"
services:
- docker
before_script:
- export PATH=$HOME/.meteor:$PATH
cache:
directories:
- ~/.meteor
- node_modules
- OHIFViewer/node_modules
env:
global:
- METEOR_PACKAGE_DIRS=../Packages
- secure: "ZhIMR4geQP/BXdXrQkcARPCSPnyry2aTgszo+Jg+lZfRHWil2FmAweCiWyOC/5rRxrYYSik/ZyEMAX54v9N9sNjYsPlA9UFqovMirEQhXCYmIG+DNBsU58zgnrDWQoolF1xD4f/IFtLjUGG9WQNR7SavHeL/2VmWK9Nis8TChnyTdmlL8IaWEeKjznseLqyVKZSMb490bG34I4ztdumaYHWWt01uhNFZ/XA048NVd/E8LhO7yLIqwtmCt7Cr1Z61TfSzgyajJaCiuTLvrNDU8W/f/j4wlhybGJruvvOH9qDPRRp2aw3surgAB33irZftYFgG1h/6NjjKeRrBvqocW9sZdAeXWcqw4xiNyi4AbbSGk5aPrFuYMswJWP0/i9MkSF5N0eRcFoWl/DvTeaG4bkzTQquT29pdYE/Ef3KXDgKevwUKH0OBU79v8VSLjIT9Tr0ps/FOvNXjeGHjI6FoqCkLt2XYgDMteltRC7rjtmxTGBRpQQFoRksa/11jwr6t5YNxYootzM11g8EFA/uX56aJHkTjZBpSzMsImDPsWjpqu/MTttVmdtq6iFEkA9NBwZYIZEJBmiy/wfNXhNgCe2lDuaSdK6MMF8PHXWIjvcW2/+h6u355ktr+LRXeolVuYDIAaN3SDSJBsDkJg4duYWuCeq8ptJ4bzeRjZtPchew=" # DOCKER_USER
- secure: "PrUMwM360a1KMLhfIPmx7qp9+Ry2cMDJpW4WspE28UQTrqcSZdhUYFCs5Q2DISZXrZWGI1/utHK+JYeqCAt3xOf3qRsLqupzJIPqzMPyb2AKtyR1JbJZGyBv7y4s6HMrXZ9pNfRBoR7hHFtiZfmTBo8avpMne8gBN1JGGXM0GTqbZwY6JGAG+vQ0Nt+DculhEraDAzFdNF5vBO+lg8wTmvh2qp+espa+4i9JzjTeRk8O09+33jkqRFugZtJOcgIi9iBvZjKUPedmFA1w/hU3lHLUuofi7tTmpAOyqaQyB8Grfj1JsgaCfbOZQs7kPHtsQ1Ai0zw2MbJtTKoA8kHcU9XWDU4Kxa1K1qXyp+ZdofTXYYnHkN4pgS+EU2it/OlKnpJV4I73JK28aF7A+fe8zheWkpJV8rFBiI04xXdILr+jxQKfdM4TOWos/XShp4bJru4VJuIfnveKuR+1EPIpuOhJ2jj4HB7g6AbIAbGsjICbFq98jSiXENeGaYmx1qIBSIlFn+lLJxp40fx/OsGKC0y5orfDgyUcPUkseckEk/H7zc90DGdCLCFmJVVgrKGWnfq8ifFI8GPVTomUVy41PLGv1LTCIYyrjM02mxLIEMIKrKboy4MSbaOidasaobjYFtwjABR3GLnUK5ETLANhO0LLC4Z4w6KFvARFfZ6JPec=" # DOCKER_PASS
- secure: "G5qjTBS6CuCCtueEqCRAEUhznycGz2kRXB7nChUK/ftKbAMW6F487sj8uujDEO0CXTv9aWnKyrPoXPnhlB5APQ5PtmC8F8DJEqWGW29J/oBv1giJq2K2Elcz6a0a7ys8pTgGKJyDT+mEvFF9boxVKI/eZQ+4ACI0EkGHBakpzey7Y1YSMsymtG6eM3ic1Fgrxna8FynzazKS0YdoE5Aj6yPDVpfj/7vSucz3wR3r2JxMtq95hiWKWYPdc/iir0dcDnedU+MF9aaAUv+ReHpM6FPScnan4mqOhrYKK5sBx27p0C/IxJhtaB4RVzU2F0kYLynK1vgUOBFc+9H/G2P+wl6TfO5dGjMmGU6kF2eWtTzRqT7JELRdqu9v/QGOlKpKmhmA3diGfkY0E2keEUyIRchHZAZKYQfLUhUObYcve2/4skmg9qhcxSMuh2qjkfTyFj/M4mcfkTZZWB9izgkHO2O3MxQm1d5DJDtoSfNQZOZiLjckyxmghWF3TEKNp3OhDOt+JikrDboZBts3F9+ocAVjLyg3upmWnlE6rFfkmVtWCXmI6Rto+laHtV/ng83Z3M4wL3VcvoOlPXLb0moqCGN4HGvpfolBqryFksGbUybaIqbQ7hQHhQuThzQ9UHq0AQN44rwzxEuKbxY7bTuyb4vSEAkrvjeLFbz4MSHQgno=" # AWS_ACCESS_KEY_ID
- secure: "ngqtUAXc8sR84CZTzOtRmg+Di/UFXCASV5bLHBmbgmXrvidIisHGW8O7TTx54ZU4UXlbY+Rg/8K6iIyy+uuCLhRcVRDW4sxacdQTNnoDPDNczqwrbBrOCLU7aW0imNBcIDqEvza+1fXsBrFV/iejtOFYVPn4l/yAb/j9MVo65hTGaKwQ4371lNMbRQp9p9DTEGGmkABo/EOtvbNR2H4qVgTuzeR8XdHC8GJUN0bujwQoK3EPTgkaMO6M7XevSNieO35opmy/Ip0GKYNTt4smKPQrUIokokwApCrjn2URdcGLoHENTTHtjLWMM0QMOV47qRBD+FeVaTUe0I4MB1toEZEIck+Vdy7PTCQ/f1HZtlI+bbDLlDPFwB/EMr7J1EKbudu7NnRopN6/zWupmDnL9VWxZy9boCDXCF47OxL1Kba9qqPYigiaS4vQEXygrceQgr+22axowtgTYYyhcsIbXQPq8COlLS/Ls/OgJMKIcQjMhTlKw01B/a08yZ0WxfVD9HJJbDA4EJiztOT7IZCyJvSv1mxJ8uI5hHC4TUBMWIKM6hVVZb0bjvtJjq7kFP9T4gCe/+OKxLIsSqWwY8AZoot6bY5lreZvb0epmyeM4fmf6qQxjIUviaGgj2o4eU7awDQzevwS8hNTsXPdFGItVUrjtKyLFHPkCMiZcTskSZo=" # AWS_SECRET_ACCESS_KEY
- secure: "TfbqhcBGGRbvmJ5KevU60dyCczRbiX7Pt1N36Bgy8Ozj6Cv79jC1K+AaB98j+Q1e0A7PaL7sbuOy7hIV/OqePhGEk0D2mowYj8/ORp14UXQ89FpIL7exUCXSwSPhCIwUaGdY4S5yT0DL1rkb5qeSS8L9KEEEVPvVY1F2vGE/lzzgS1MCLCdk7ajs+3c9HP9N4J2PjYRg3WFkgWmfGNitEjGApSJ91NIJW4Sw9pqLhweWqKO8sAbpsADlE+NhfoDd0kzDTkecxWzSf3siO6yfGKAeh3bf8WE4qZReuLXYDWL3XjJ3LTfK018P1J8Cx9PlMb3M+nHU0B3T6mC1t+XtLrUE/fr1LF89diyDCSRB+ZW2H/l8SNQNVIqgTrXzoBcwqGNeZOPJwd2qcq1vLDAkxgC5QFsoRfyxJmzNff70ESClSmBQy/mNd/pXQZ9JZRMoa097j4pXGZlLGarotiCYUdtlPSZmN/eMsIhLtvxNQ8ryk1ASij5sN7WOdg0r+gZcDAY8AwuuDpmktEu9pHd7iEVFw78DIJmD1N5OgKYdVT6o0WTJnVySBf/+luYK9J/rd6vwvlB4C2LLzhEkWlAGp6n7rl/1V18akM+HPVUPWuDRH69ZYWRPq4TIZwfEPTEG4jYizlTjkn55R+CNi3AWoxL2kr1Qv+zUJSruIvixWvc=" # GITHUB_TOKEN
jobs:
include:
- stage: build production docker image
before_script:
- export REPO=ohif/viewer
- export COMMIT=${TRAVIS_COMMIT::8}
- export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi)
- echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=$PR, BRANCH=$BRANCH"
- export TAG=`if [ "$BRANCH" == "master" ]; then echo "latest"; else echo $BRANCH ; fi`
- echo "TAG=$TAG, COMMIT=$COMMIT"
- docker pull $REPO:latest
- docker --version
script:
- docker build -t $REPO:$COMMIT . --cache-from $REPO:latest
after_success:
- docker tag $REPO:$COMMIT $REPO:$TAG
- docker tag $REPO:$COMMIT $REPO:travis-$TRAVIS_BUILD_NUMBER
- docker images
- docker login -u $DOCKER_USER -p $DOCKER_PASS
- docker push $REPO:$TAG
- docker push $REPO:travis-$TRAVIS_BUILD_NUMBER
- docker push $REPO:$COMMIT
- stage: build development docker image
before_script:
- export REPO=ohif/viewer-dev
- export COMMIT=${TRAVIS_COMMIT::8}
- export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi)
- echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=$PR, BRANCH=$BRANCH"
- export TAG=`if [ "$TRAVIS_BRANCH" == "master" ]; then echo "latest"; else echo $TRAVIS_BRANCH ; fi`
- echo "TAG=$TAG, COMMIT=$COMMIT"
- docker pull $REPO:latest
- docker --version
script:
- docker build -f development.Dockerfile -t $REPO:$COMMIT . --cache-from $REPO:latest
after_success:
- docker tag $REPO:$COMMIT $REPO:$TAG
- docker tag $REPO:$COMMIT $REPO:travis-$TRAVIS_BUILD_NUMBER
- docker images
- docker login -u $DOCKER_USER -p $DOCKER_PASS
- docker push $REPO:$TAG
- docker push $REPO:travis-$TRAVIS_BUILD_NUMBER
- docker push $REPO:$COMMIT
- stage: build standalone viewer
if: branch = master
before_script:
- export ROOT_URL=http://ohif-viewer.s3-website.eu-central-1.amazonaws.com
- export METEOR_PACKAGE_DIRS="../../Packages"
- cd StandaloneViewer
- mkdir buildDirectory
- cd StandaloneViewer
- npm install -g meteor-build-client-fixed@0.4.3
- meteor-build-client-fixed --version
- curl https://install.meteor.com | /bin/sh
- meteor npm install
script:
- meteor-build-client-fixed ~/standaloneViewerBuild -u $ROOT_URL
after_success:
- ls ~/standaloneViewerBuild
- ls /home/travis
- ls /home/travis/build
- ls /home/travis/build/Viewers/StandaloneViewer
deploy:
provider: s3
access_key_id: $AWS_ACCESS_KEY_ID
secret_access_key: $AWS_SECRET_ACCESS_KEY
bucket: ohif-viewer
region: eu-central-1
skip_cleanup: true
local_dir: /home/travis/standaloneViewerBuild
acl: public_read
on:
branch: master
- stage: build documentation
if: branch = master
before_script:
- cd docs
- rm -rf _book
- npm install
- npm install -g gitbook-cli
- gitbook install
script:
- gitbook build
after_success:
- cp assets/CNAME _book/CNAME
deploy:
provider: pages
skip-cleanup: true
local-dir: docs/_book
github-token: $GITHUB_TOKEN
keep-history: true
fqdn: docs.ohif.org
verbose: true
on:
branch: master
+8
View File
@@ -0,0 +1,8 @@
{
"recommendations": [
"esbenp.prettier-vscode",
"sysoev.language-stylus",
"dbaeumer.vscode-eslint",
"mikestead.dotenv"
]
}
+30
View File
@@ -0,0 +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"
}
-1
View File
@@ -19,4 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-47
View File
@@ -1,47 +0,0 @@
{
"parser": "babel-eslint",
"parserOptions": {
"allowImportExportEverywhere": true
},
"plugins": [
"meteor"
],
"env": {
/* Allows global vars from the Meteor environment to pass and enables certain rules */
"meteor": true,
"node": true,
"browser": true
},
"extends": [
"airbnb",
"plugin:meteor/recommended"
],
"settings": {
"import/resolver": "meteor"
},
"rules": {
"meteor/no-session": 0, // We are actually using Session for now...
"meteor/eventmap-params": [2, {"eventParamName": "event"}],
"meteor/eventmap-params": [2, {"templateInstanceParamName": "instance"}],
"import/no-extraneous-dependencies": 0,
"import/no-unresolved": 0, // There are a bunch of ESLint problems with Meteor's resolver
"import/no-duplicates": 0, // So we are disabling these for now
"import/extensions": 0,
"import/no-absolute-path": 0,
"no-console": 0, // For development
"no-plusplus": ["error", { "allowForLoopAfterthoughts": true }],
"indent": ["error", 4],
"new-cap": 0, // Until Match has an exception
"func-names": 0, // This is a bit of an annoying rule
"no-underscore-dangle": 0, // Doesn't seem to mesh with _id for MongoDB Ids (or SimpleSchema)
"max-len": 0, // TODO: re-enable the rules below and fix all of the errors
"consistent-return": 0,
"no-param-reassign": 0,
"no-mixed-operators": 0,
"arrow-body-style": 0,
"valid-typeof": 0,
"import/prefer-default-export": 0
"no-undef": 0
},
"globals": {}
}
-19
View File
@@ -1,19 +0,0 @@
# This file contains information which helps Meteor properly upgrade your
# app when you run 'meteor update'. You should check it into version control
# with your project.
notices-for-0.9.0
notices-for-0.9.1
0.9.4-platform-file
notices-for-facebook-graph-api-2
1.2.0-standard-minifiers-package
1.2.0-meteor-platform-split
1.2.0-cordova-changes
1.2.0-breaking-changes
1.3.0-split-minifiers-package
1.3.5-remove-old-dev-bundle-link
1.4.0-remove-old-dev-bundle-link
1.4.1-add-shell-server-package
1.4.3-split-account-service-packages
1.5-add-dynamic-import-package
1.7-split-underscore-from-meteor-base
-2
View File
@@ -1,2 +0,0 @@
dev_bundle
local
-7
View File
@@ -1,7 +0,0 @@
# This file contains a token that is unique to your project.
# Check it into your repository along with the rest of this directory.
# It can be used for purposes such as:
# - ensuring you don't accidentally deploy one app on top of another
# - providing package authors with aggregated statistics
1q3vtk41m2yk4k1rqj08l
-136
View File
@@ -1,136 +0,0 @@
{
"starrynight": {
"version": "3.7.0"
},
"nightwatch": {
"version": "0.8.6"
},
"src_folders": [
"./tests/nightwatch/walkthroughs"
],
"output_folder": "./tests/nightwatch/reports",
"custom_commands_path": [
"./tests/nightwatch/commands",
"./tests/nightwatch/commands/api/meteor",
"./tests/nightwatch/commands/actions",
"./tests/nightwatch/commands/components",
"./tests/nightwatch/commands/methods"
],
"custom_assertions_path": [
"./tests/nightwatch/assertions"
],
"globals_path": "./tests/nightwatch/globals.json",
"selenium": {
"start_process": true,
"server_path": "${npm_config_prefix}/lib/node_modules/starrynight/node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-2.45.0.jar",
"log_path": "tests/nightwatch/logs",
"host": "127.0.0.1",
"port": 4444,
"cli_args": {
"webdriver.chrome.driver": "${npm_config_prefix}/lib/node_modules/starrynight/node_modules/chromedriver/bin/chromedriver"
}
},
"test_settings": {
"default": {
"launch_url": "http://localhost:5000",
"selenium_host": "127.0.0.1",
"selenium_port": 4444,
"pathname": "/wd/hub",
"silent": true,
"disable_colors": false,
"firefox_profile": false,
"ie_driver": "",
"screenshots": {
"enabled": false,
"path": "./tests/nightwatch/screenshots"
},
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true,
"loggingPrefs": {
"browser": "ALL"
}
},
"exclude": "./tests/nightwatch/unittests/*"
},
"phantomjs": {
"desiredCapabilities": {
"browserName": "phantomjs",
"javascriptEnabled": true,
"databaseEnabled": false,
"locationContextEnabled": false,
"applicationCacheEnabled": false,
"browserConnectionEnabled": false,
"webStorageEnabled": false,
"acceptSslCerts": true,
"rotatable": false,
"nativeEvents": false,
"phantomjs.binary.path": "${npm_config_prefix}/lib/node_modules/starrynight/node_modules/phantomjs/bin/phantomjs"
}
},
"travis": {
"launch_url": "http://localhost:3000",
"selenium_host": "127.0.0.1",
"selenium_port": 4444,
"pathname": "/wd/hub",
"silent": true,
"disable_colors": false,
"firefox_profile": false,
"screenshots": {
"enabled": false,
"path": "./tests/nightwatch/screenshots"
},
"desiredCapabilities": {
"browserName": "firefox",
"javascriptEnabled": true,
"databaseEnabled": true,
"locationContextEnabled": true,
"applicationCacheEnabled": true,
"browserConnectionEnabled": true,
"webStorageEnabled": true,
"acceptSslCerts": true,
"rotatable": true,
"nativeEvents": true
}
},
"travischrome": {
"launch_url": "http://localhost:3000",
"selenium_host": "127.0.0.1",
"selenium_port": 4444,
"pathname": "/wd/hub",
"silent": true,
"disable_colors": false,
"firefox_profile": false,
"screenshots": {
"enabled": false,
"path": "./tests/nightwatch/screenshots"
},
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"databaseEnabled": true,
"locationContextEnabled": true,
"applicationCacheEnabled": true,
"browserConnectionEnabled": true,
"webStorageEnabled": true,
"acceptSslCerts": true,
"rotatable": true,
"nativeEvents": true,
"chromeOptions": {
"args": [
"--no-sandbox"
]
}
}
},
"unittests": {
"selenium": {
"start_process": false,
"start_session": false
},
"filter": "./tests/nightwatch/unittests/*",
"exclude": ""
}
}
}
-65
View File
@@ -1,65 +0,0 @@
# Meteor packages used by this project, one per line.
# Check this file (and the other files in this directory) into your repository.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
npm-bcrypt@0.9.3
meteor-base@1.4.0 # Packages every Meteor app needs to have
mobile-experience@1.0.5 # Packages for a great mobile UX
mongo@1.5.0 # The database Meteor supports right now
blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views
session@1.1.7 # Client-side reactive dictionary for your app
jquery@1.11.10 # Helpful client-side library
tracker@1.2.0 # Meteor's client-side reactive programming library
standard-minifier-css@1.4.1
standard-minifier-js@2.3.4
http@1.4.1
promise@0.11.1
stylus@2.513.13
random@1.1.0
reactive-var@1.0.11
reactive-dict@1.2.0
check@1.3.1
email@1.2.3
ecmascript@0.11.1 # Enable ECMAScript2015+ syntax in app code
clinical:active-entry
clinical:theming
clinical:fonts
clinical:hipaa-audit-log
clinical:hipaa-logger
# OHIF Packages
ohif:polyfill
ohif:design
ohif:core
ohif:header
ohif:cornerstone
ohif:cornerstone-settings
ohif:viewerbase
ohif:studies
ohif:study-list
ohif:hanging-protocols
ohif:metadata
# Necessary for Lesion Trakcer
ohif:lesiontracker
ohif:user-management
ohif:user-meteor-accounts
ohif:select-tree
accounts-base@1.4.2
accounts-password@1.5.1
fortawesome:fontawesome
momentjs:moment@2.15.1
aldeed:simple-schema # Third party package to deal with schemas
aldeed:template-extension@4.0.0
aldeed:collection2
zuuk:stale-session
johdirr:meteor-git-rev
cultofcoders:persistent-session@0.4.4
shell-server@0.3.1
underscore
-2
View File
@@ -1,2 +0,0 @@
server
browser
-1
View File
@@ -1 +0,0 @@
METEOR@1.7.0.3
-146
View File
@@ -1,146 +0,0 @@
accounts-base@1.4.2
accounts-password@1.5.1
aldeed:collection2@2.10.0
aldeed:collection2-core@1.2.0
aldeed:schema-deny@1.1.0
aldeed:schema-index@1.1.1
aldeed:simple-schema@1.5.4
aldeed:template-extension@4.1.0
allow-deny@1.1.0
amplify@1.0.0
autoupdate@1.4.1
babel-compiler@7.1.1
babel-runtime@1.2.2
base64@1.0.11
binary-heap@1.0.10
blaze@2.3.2
blaze-html-templates@1.1.2
blaze-tools@1.0.10
boilerplate-generator@1.5.0
caching-compiler@1.1.12
caching-html-compiler@1.1.3
callback-hook@1.1.0
check@1.3.1
clinical:active-entry@1.5.16
clinical:auto-resizing@0.2.0
clinical:fonts@1.1.6
clinical:hipaa-audit-log@2.4.2
clinical:hipaa-logger@1.3.0
clinical:router@2.0.19
clinical:router-location@2.1.0
clinical:router-middleware-stack@2.1.2
clinical:router-url@2.1.0
clinical:theming@0.4.10
cultofcoders:persistent-session@0.4.5
ddp@1.4.0
ddp-client@2.3.3
ddp-common@1.4.0
ddp-rate-limiter@1.0.7
ddp-server@2.2.0
deps@1.0.12
diff-sequence@1.1.0
dynamic-import@0.4.1
ecmascript@0.11.1
ecmascript-runtime@0.7.0
ecmascript-runtime-client@0.7.1
ecmascript-runtime-server@0.7.0
ejson@1.1.0
email@1.2.3
es5-shim@4.8.0
fastclick@1.0.13
fortawesome:fontawesome@4.7.0
geojson-utils@1.0.10
grove:less@0.2.0
hot-code-push@1.0.4
html-tools@1.0.11
htmljs@1.0.11
http@1.4.1
id-map@1.1.0
iron:controller@1.0.12
iron:core@1.0.11
iron:dynamic-template@1.0.12
iron:layout@1.0.12
johdirr:meteor-git-rev@0.0.4
jquery@1.11.11
launch-screen@1.1.1
livedata@1.0.18
localstorage@1.2.0
logging@1.1.20
mdg:validation-error@0.5.1
meteor@1.9.2
meteor-base@1.4.0
meteor-platform@1.2.6
minifier-css@1.3.1
minifier-js@2.3.5
minimongo@1.4.4
mobile-experience@1.0.5
mobile-status-bar@1.0.14
modern-browsers@0.1.2
modules@0.12.2
modules-runtime@0.10.2
momentjs:moment@2.22.2
mongo@1.5.1
mongo-dev-server@1.1.0
mongo-id@1.0.7
mrt:moment@2.8.1
natestrauser:select2@4.0.3
npm-bcrypt@0.9.3
npm-mongo@3.0.7
observe-sequence@1.0.16
ohif:commands@0.0.1
ohif:core@0.0.1
ohif:cornerstone@0.0.1
ohif:cornerstone-settings@0.0.1
ohif:design@0.0.1
ohif:hanging-protocols@0.0.1
ohif:header@0.0.1
ohif:hotkeys@0.0.1
ohif:lesiontracker@0.0.1
ohif:log@0.0.1
ohif:measurements@0.0.1
ohif:metadata@0.0.1
ohif:polyfill@0.0.1
ohif:select-tree@0.0.1
ohif:servers@0.0.1
ohif:studies@0.0.1
ohif:study-list@0.0.1
ohif:themes@0.0.1
ohif:themes-common@0.0.1
ohif:user-management@0.0.1
ohif:user-meteor-accounts@0.0.1
ohif:viewerbase@0.0.1
ohif:wadoproxy@0.0.1
ordered-dict@1.1.0
promise@0.11.1
raix:eventemitter@0.1.3
random@1.1.0
rate-limit@1.0.9
reactive-dict@1.2.0
reactive-var@1.0.11
reload@1.2.0
retry@1.1.0
routepolicy@1.0.13
service-configuration@1.0.11
session@1.1.7
sha@1.0.9
shell-server@0.3.1
silentcicero:jszip@0.0.4
socket-stream-client@0.2.2
spacebars@1.0.15
spacebars-compiler@1.1.3
srp@1.0.10
standard-app-packages@1.0.9
standard-minifier-css@1.4.1
standard-minifier-js@2.3.4
stylus@2.513.14
templating@1.3.2
templating-compiler@1.3.3
templating-runtime@1.3.2
templating-tools@1.1.2
tracker@1.2.0
ui@1.0.13
underscore@1.0.10
url@1.2.0
webapp@1.6.2
webapp-hashing@1.0.9
zuuk:stale-session@1.0.8
-8
View File
@@ -1,8 +0,0 @@
# LesionTracker
LesionTracker is an open source, zero-footprint image viewer focused on oncology clinical trial workflows. It is built using Meteor platform which enables modularity with a set of packages of the OHIF framework.
### Why LesionTracker?
LesionTracker brings an user experience for the basic tumor metrics through web browser. It provides a DICOM server for storing and streaming images to the viewer, tools for measuring and following lesions over time, and a database for measurements of overlay data. A web-based system for image assessments rather than a workstation-based installed application will improve workflow efficiency, enhance accessibility, and promote collaborative image review for the radiologists at cooperating cancer centers.
To get started, checkout [LesionTracker Documentation](https://github.com/OHIF/Viewers/wiki/LesionTracker)
-58
View File
@@ -1,58 +0,0 @@
import { Session } from 'meteor/session';
if (Meteor.isClient){
ActiveEntry.configure({
logo: {
url: '/mini-circles.png',
displayed: true
},
signIn: {
displayFullName: true,
destination: '/studylist'
},
signUp: {
destination: '/studylist'
},
themeColors: {
primary: ""
},
passwordOptions: {
showPasswordStrengthIndicator: false,
requireRegexValidation: true,
//requireStrongPasswords: false
passwordHistoryCount: 6,
failedAttemptsLimit: 5
}
});
Session.set('ThemeConfig', {
palette: {
colorA: "",
colorB: "",
colorC: "",
colorD: "",
colorE: ""
}
});
}
/*
if (Meteor.isServer){
Accounts.emailTemplates.siteName = 'AwesomeSite';
Accounts.emailTemplates.from = 'AwesomeSite Admin <accounts@example.com>';
Accounts.emailTemplates.enrollAccount.subject = function(user) {
return 'Welcome to Awesome Town, ' + user.profile.name;
};
Accounts.emailTemplates.enrollAccount.text = function(user, url) {
return 'You have been selected to participate in building a better future!'
+ ' To activate your account, simply click the link below:\n\n'
+ url;
};
Meteor.startup(function() {
//process.env.MAIL_URL = 'smtp://sandboxid.mailgun.org:mypassword@smtp.mailgun.org:587';
});
}
*/
-2
View File
@@ -1,2 +0,0 @@
set METEOR_PACKAGE_DIRS=..\Packages
meteor --settings ../config/medkenOrthanc.json
-1
View File
@@ -1 +0,0 @@
METEOR_PACKAGE_DIRS="../Packages" meteor --settings ../config/medkenOrthanc.json
-13
View File
@@ -1,13 +0,0 @@
#!/bin/bash
declare config='../config/orthancDICOMWeb.json'
if [ $# -gt 0 ]; then
if [ "$1" = '--dimse' ]; then
config="${config%/*}/orthancDIMSE.json"
[ -f "$config" ] && echo "DIMSE config file selected: $config"
fi
fi
echo 'Starting Meteor server...'
METEOR_PACKAGE_DIRS="../Packages" meteor --settings "$config"
-2
View File
@@ -1,2 +0,0 @@
set METEOR_PACKAGE_DIRS=..\Packages
meteor --settings ../config/orthancDICOMWeb.json
-2
View File
@@ -1,2 +0,0 @@
echo "Starting Meteor server..."
METEOR_PACKAGE_DIRS="../Packages" meteor --settings ../config/orthancDICOMWeb.json
-3
View File
@@ -1,3 +0,0 @@
<body>
<div id="notificationArea" class="notification-area"></div>
</body>
-2
View File
@@ -1,2 +0,0 @@
body
background-color: black
@@ -1,29 +0,0 @@
<template name="app">
{{#header brandHref='http://ohif.org' headerClasses=instance.headerClasses}}
{{#section 'brand'}}
<svg class="logo-image">
<use xlink:href={{absoluteUrl "packages/ohif_viewerbase/assets/icons.svg#icon-ohif-logo"}}></use>
</svg>
<div class="logo-text">Open Health Imaging Foundation</div>
{{/section}}
{{#section 'headerAfterBrand'}}
{{#if studyListToggleText}}
<a href="#" class="btn studyListLinkSection pull-left js-toggle-studyList" id="{{dasherize studyListToggleText}}-btn">
{{studyListToggleText}}
</a>
{{/if}}
{{/section}}
{{#section 'headerMenu'}}
<span class="research-use pull-left m-r-1">
INVESTIGATIONAL USE ONLY
</span>
<span class="user-name pull-left m-r-1">{{userName}}</span>
<div class="menu-toggle pull-right">
<i class="fa fa-cog"></i>
<span class="caret-down"></span>
</div>
{{/section}}
{{/header}}
{{>Template.dynamic template=(choose this.template 'studylist') data=this}}
</template>
-125
View File
@@ -1,125 +0,0 @@
import { Template } from 'meteor/templating';
import { Session } from 'meteor/session';
import { Router } from 'meteor/clinical:router';
import { ReactiveVar } from 'meteor/reactive-var';
import { OHIF } from 'meteor/ohif:core';
Template.app.onCreated(() => {
const instance = Template.instance();
instance.headerClasses = new ReactiveVar('');
OHIF.header.dropdown.setItems([{
action: OHIF.user.audit,
text: 'View Audit Log',
iconClasses: 'log',
iconSvgUse: 'packages/ohif_viewerbase/assets/icons.svg#log',
separatorAfter: true
}, {
action: () => OHIF.ui.showDialog('themeSelectorModal'),
text: 'Themes',
iconClasses: 'theme',
iconSvgUse: 'packages/ohif_viewerbase/assets/icons.svg#theme',
separatorAfter: true
}, {
action: () => OHIF.ui.showDialog('serverInformationModal'),
text: 'Server Information',
iconClasses: 'server',
iconSvgUse: 'packages/ohif_viewerbase/assets/icons.svg#server',
separatorAfter: true
}, {
action: () => OHIF.ui.showDialog('userPreferencesDialog'),
text: 'Preferences',
icon: 'fa fa-user',
separatorAfter: true
}, {
action: OHIF.user.changePassword,
text: 'Change Password',
iconClasses: 'password',
iconSvgUse: 'packages/ohif_viewerbase/assets/icons.svg#password'
}, {
action: OHIF.user.logout,
text: 'Logout',
iconClasses: 'logout',
iconSvgUse: 'packages/ohif_viewerbase/assets/icons.svg#logout'
}]);
instance.autorun(() => {
const currentRoute = Router.current();
if (!currentRoute) return;
const routeName = currentRoute.route.getName();
const isViewer = routeName.indexOf('viewer') === 0;
// Add or remove the strech class from body
$(document.body)[isViewer ? 'addClass' : 'removeClass']('stretch');
// Set the header on its bigger version if the viewer is not opened
instance.headerClasses.set(isViewer ? '' : 'header-big');
// Set the viewer open state on session
Session.set('ViewerOpened', isViewer);
});
});
Template.app.events({
'click .js-toggle-studyList'(event, instance) {
event.preventDefault();
event.stopPropagation();
const isViewer = Session.get('ViewerOpened');
if (!isViewer) {
const timepointId = OHIF.viewer.data.currentTimepointId;
if (timepointId) {
Router.go('viewerTimepoint', { timepointId });
} else {
const { studyInstanceUids } = OHIF.viewer.data;
Router.go('viewerStudies', { studyInstanceUids });
}
return;
}
OHIF.ui.unsavedChanges.presentProactiveDialog('viewer.*', (hasChanges, userChoice) => {
if (!hasChanges) {
return Router.go('studylist');
}
switch (userChoice) {
case 'abort-action':
return;
case 'save-changes':
OHIF.ui.unsavedChanges.trigger('viewer', 'save', false);
OHIF.ui.unsavedChanges.clear('viewer.*');
break;
case 'abandon-changes':
OHIF.ui.unsavedChanges.clear('viewer.*');
break;
}
Router.go('studylist');
}, {
position: {
x: event.clientX + 15,
y: event.clientY + 15
}
});
}
});
Template.app.helpers({
userName: OHIF.user.getName,
studyListToggleText() {
const isViewer = Session.get('ViewerOpened');
// Return empty if viewer was not opened yet
if (!OHIF.utils.ObjectPath.get(OHIF, 'viewer.data.studyInstanceUids')) return;
return isViewer ? 'Study list' : 'Back to viewer';
},
dasherize(text) {
return text.replace(/ /g, '-').toLowerCase();
}
});
Session.set('defaultSignInMessage', 'Tumor tracking in your browser.');
@@ -1,88 +0,0 @@
@require "{ohif:design}/app"
body>.header
.brand
height: 30px
display: inline-block
text-decoration: none
.logo-image
display: inline-block
fill: transparent
float: left
height: 100%
margin: 0 8px 0 0
width: 30px
.logo-text
display: inline-block
font-family: $logoFontFamily
font-size: 14px
font-weight: $logoFontWeight
theme('color', '$textPrimaryColor')
line-height: 30px
.header-menu
.user-name
font-size: 13px
.menu-toggle
theme('border-left', 'solid 1px $defaultColor')
display: inline-block
height: 18px
padding: 0 8px
.fa
theme('color', '$defaultColor')
font-size: 17px
line-height: 18px
.caret-down
theme('color', '$uiGrayLight')
margin: 0 4px 4px 2px
.btn
theme('color', '$textSecondaryColor')
cursor: pointer
font-size: 13px
font-weight: 500
line-height: 26px
&:hover
theme('color', '$hoverColor')
&:active
theme('color', '$activeColor')
.studyListLinkSection
theme('border-left', '%s solid $uiBorderColor' % $uiBorderThickness)
margin: 3px 0 0 10px
padding: 0 0 0 10px
&#back-to-viewer-btn
border-left: 0
&.header-big
padding-left: $studyListPadding
padding-right: $studyListPadding
.brand
height: 100%
width: 80%
line-height: $topBarExpandedHeight - 10px
.logo-image
margin: 0 20px 0 0
width: 50px
.logo-text
font-size: 30px
.studyListLinkSection
border: none
left: 0
margin: 0
padding: 0
position: absolute
top: 0
@@ -1,37 +0,0 @@
<template name="toolbarSection">
<div class="toolbarSection noselect p-x-2">
<div class="clearfix">
<div class="pull-left m-t-1">
{{>roundedButtonGroup leftSidebarToggleButtonData}}
</div>
{{>toolbarSectionTools toolbarButtons=toolbarButtons}}
<div class="pull-right m-t-1 rm-x-1">
{{#form (extend api=instance.api)}}
{{#button class='btn p-x-2' action='save' disabled=(isFinishDisabled)}}Save{{/button}}
{{/form}}
</div>
<div id="toggleMeasurements" class="pull-right m-t-1 rm-x-1">
{{>roundedButtonGroup rightSidebarToggleButtonData}}
</div>
<div id="toggleHUD" class="toolbarSectionButton pull-right rp-x-1 m-t-1 rm-r-3 {{#if session 'measurementTableHudOpen'}}active{{/if}}">
<div class="svgContainer">
<svg>
<use xlink:href={{absoluteUrl "packages/ohif_viewerbase/assets/icons.svg#icon-hud"}}></use>
</svg>
</div>
<div class="buttonLabel">HUD</div>
</div>
<div id="toggleTrial" class="toolbarSectionButton pull-right rp-x-1 m-t-1 rm-r-1">
<div class="svgContainer">
<svg>
<use xlink:href={{absoluteUrl "packages/ohif_viewerbase/assets/icons.svg#icon-trial-info"}}></use>
</svg>
</div>
<div class="buttonLabel">Trial</div>
</div>
</div>
</div>
</template>
@@ -1,319 +0,0 @@
import { Template } from 'meteor/templating';
import { Session } from 'meteor/session';
import { Tracker } from 'meteor/tracker';
import { OHIF } from 'meteor/ohif:core';
import { Viewerbase } from 'meteor/ohif:viewerbase';
Template.toolbarSection.helpers({
isFinishDisabled() {
const instance = Template.instance();
// Run this computation on save or every time any measurement / timepoint suffer changes
OHIF.ui.unsavedChanges.depend();
instance.saveObserver.depend();
Session.get('LayoutManagerUpdated');
return OHIF.ui.unsavedChanges.probe('viewer.*') === 0;
},
leftSidebarToggleButtonData() {
const instance = Template.instance();
return {
toggleable: true,
key: 'leftSidebar',
value: instance.data.state,
options: [{
value: 'studies',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-studies',
svgWidth: 15,
svgHeight: 13,
bottomLabel: 'Studies'
}]
};
},
rightSidebarToggleButtonData() {
const instance = Template.instance();
return {
toggleable: true,
key: 'rightSidebar',
value: instance.data.state,
options: [{
value: 'measurements',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-measurements-lesions',
svgWidth: 18,
svgHeight: 10,
bottomLabel: 'Measurements'
}]
};
},
toolbarButtons() {
// Check if the measure tools shall be disabled
const isToolDisabled = false; //!Template.instance().data.timepointApi;
const targetSubTools = [];
targetSubTools.push({
id: 'bidirectional',
title: 'Bidirectional',
classes: 'imageViewerTool rm-l-3',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-measure-target',
disabled: isToolDisabled
});
targetSubTools.push({
id: 'targetCR',
title: 'CR Target',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-measure-target-cr',
disabled: isToolDisabled
});
targetSubTools.push({
id: 'targetUN',
title: 'UN Target',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-measure-target-un',
disabled: isToolDisabled
});
const extraTools = [];
extraTools.push({
id: 'stackScroll',
title: 'Stack Scroll',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-stack-scroll'
});
extraTools.push({
id: 'resetViewport',
title: 'Reset',
classes: 'imageViewerCommand',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-reset'
});
extraTools.push({
id: 'rotateR',
title: 'Rotate Right',
classes: 'imageViewerCommand',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-rotate-right'
});
extraTools.push({
id: 'flipH',
title: 'Flip H',
classes: 'imageViewerCommand',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-flip-horizontal'
});
extraTools.push({
id: 'flipV',
title: 'Flip V',
classes: 'imageViewerCommand',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-flip-vertical'
});
extraTools.push({
id: 'invert',
title: 'Invert',
classes: 'imageViewerCommand',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-invert'
});
extraTools.push({
id: 'magnify',
title: 'Magnify',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-magnify'
});
extraTools.push({
id: 'ellipticalRoi',
title: 'Ellipse',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-elliptical-roi'
});
extraTools.push({
id: 'toggleDownloadDialog',
title: 'Download',
classes: 'imageViewerCommand',
iconClasses: 'fa fa-camera',
active: () => $('#imageDownloadDialog').is(':visible')
});
extraTools.push({
id: 'toggleCineDialog',
title: 'CINE',
classes: 'imageViewerCommand',
iconClasses: 'fa fa-youtube-play',
active: () => $('#cineDialog').is(':visible')
});
const buttonData = [];
buttonData.push({
id: 'zoom',
title: 'Zoom',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-zoom'
});
buttonData.push({
id: 'wwwc',
title: 'Levels',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-levels'
});
buttonData.push({
id: 'pan',
title: 'Pan',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-pan'
});
buttonData.push({
id: 'linkStackScroll',
title: 'Link',
classes: 'imageViewerCommand toolbarSectionButton nonAutoDisableState',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-link',
disableFunction: Viewerbase.viewportUtils.isStackScrollLinkingDisabled
});
buttonData.push({
id: 'toggleTarget',
title: 'Target',
classes: 'rm-l-3',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-measure-target',
disabled: isToolDisabled,
subTools: targetSubTools
});
buttonData.push({
id: 'nonTarget',
title: 'Non-Target',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-measure-non-target',
disabled: isToolDisabled
});
buttonData.push({
id: 'length',
title: 'Temp',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-measure-temp'
});
buttonData.push({
id: 'toggleMore',
title: 'More',
classes: 'rp-x-1 rm-l-3',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-more',
disabled: isToolDisabled,
subTools: extraTools
});
return buttonData;
}
});
Template.toolbarSection.events({
'click #toggleTarget'(event, instance) {
const $target = $(event.currentTarget);
if (!$target.hasClass('active') && $target.hasClass('expanded')) {
Viewerbase.toolManager.setActiveTool('bidirectional');
}
},
'click #toggleHUD'(event) {
const $this = $(event.currentTarget);
// Stop here if the tool is disabled
if ($this.hasClass('disabled')) {
return;
}
const state = Session.get('measurementTableHudOpen');
Session.set('measurementTableHudOpen', !state);
},
'click #toggleTrial'(event) {
if (!$(event.currentTarget).hasClass('disabled')) {
OHIF.ui.showDialog('trialOptionsModal');
}
}
});
Template.toolbarSection.onCreated( function() {
const instance = Template.instance();
instance.path = 'viewer.studyViewer.measurements';
instance.saveObserver = new Tracker.Dependency();
instance.api = {
save() {
// Clear signaled unsaved changes...
const successHandler = () => {
OHIF.ui.unsavedChanges.clear(`${instance.path}.*`);
instance.saveObserver.changed();
};
// Display the error messages
const errorHandler = data => {
OHIF.ui.showDialog('dialogInfo', Object.assign({ class: 'themed' }, data));
};
const promise = instance.data.measurementApi.storeMeasurements();
promise.then(successHandler).catch(errorHandler);
OHIF.ui.showDialog('dialogLoading', {
promise,
text: 'Saving measurement data'
});
return promise;
}
};
instance.unsavedChangesHandler = () => {
const isNotDisabled = !instance.$('.js-finish-case').hasClass('disabled');
if (isNotDisabled && instance.progressPercent.get() === 100) {
instance.api.save();
}
};
// Attach handler for unsaved changes dialog...
OHIF.ui.unsavedChanges.attachHandler(instance.path, 'save', instance.unsavedChangesHandler);
});
Template.toolbarSection.onRendered(function() {
// Set disabled/enabled tool buttons that are set in toolManager
const states = Viewerbase.toolManager.getToolDefaultStates();
const disabledToolButtons = states.disabledToolButtons;
const allToolbarButtons = $('.toolbarSection').find('.toolbarSectionButton:not(.nonAutoDisableState)');
// Additional toolbar buttons whose classes are not toolbarSectionButton
allToolbarButtons.push($('#toolbarSectionEntry')[0]);
allToolbarButtons.push($('#toggleMeasurements')[0]);
if (disabledToolButtons && disabledToolButtons.length > 0) {
for (let i = 0; i < allToolbarButtons.length; i++) {
const toolbarButton = allToolbarButtons[i];
const index = disabledToolButtons.indexOf($(toolbarButton).attr('id'));
if (index !== -1) {
$(toolbarButton).addClass('disabled');
$(toolbarButton).find('*').addClass('disabled');
} else {
$(toolbarButton).removeClass('disabled');
$(toolbarButton).find('*').removeClass('disabled');
}
}
}
});
Template.caseProgress.onDestroyed(() => {
const instance = Template.instance();
// Remove unsaved changes handler after this view has been destroyed...
OHIF.ui.unsavedChanges.removeHandler(instance.path, 'save', instance.unsavedChangesHandler);
});
@@ -1,27 +0,0 @@
@import "{ohif:design}/app"
.toolbarSection
theme('border-bottom', '%s solid $uiBorderColor' % $uiBorderThickness)
flex: 0 0 auto
height: $toolbarHeight
padding-top: 6px
position: relative
transition(height 300ms ease)
width: 100%
&.expanded
height: $toolbarHeight + $toolbarDrawerHeight
.toolbarSectionEntry
theme('color', '$defaultColor')
cursor: pointer
display: inline-block
theme('fill', '$defaultColor')
margin-top: 3px
min-width: 30px
theme('stroke', '$defaultColor')
text-align: center
.saveMeasurements
display: inline-block
margin-left: 22px
@@ -1,17 +0,0 @@
<template name="viewer">
<div class="viewerDialogs">
{{#if and Template.subscriptionsReady dataSourcesReady}}
{{>confirmDeleteDialog}}
{{>measurementTableHUD (clone this)}}
{{>cineDialog}}
{{/if}}
</div>
<div id="viewer">
{{#if and Template.subscriptionsReady dataSourcesReady}}
{{>toolbarSection (clone this state=state)}}
{{>viewerSection (clone this state=state)}}
{{else}}
{{>loadingText}}
{{/if}}
</div>
</template>
@@ -1,388 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating';
import { Tracker } from 'meteor/tracker';
import { Session } from 'meteor/session';
import { ReactiveDict } from 'meteor/reactive-dict';
import { _ } from 'meteor/underscore';
import { $ } from 'meteor/jquery';
import { OHIF } from 'meteor/ohif:core';
import 'meteor/ohif:cornerstone';
import 'meteor/ohif:viewerbase';
import 'meteor/ohif:metadata';
Meteor.startup(() => {
Session.set('TimepointsReady', false);
Session.set('MeasurementsReady', false);
OHIF.viewer.displaySeriesQuickSwitch = true;
OHIF.viewer.stackImagePositionOffsetSynchronizer = new OHIF.viewerbase.StackImagePositionOffsetSynchronizer();
// Create the synchronizer used to update reference lines
OHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('cornerstonenewimage', cornerstoneTools.updateImageSynchronizer);
OHIF.viewer.metadataProvider = new OHIF.cornerstone.MetadataProvider();
// Metadata configuration
const metadataProvider = OHIF.viewer.metadataProvider;
cornerstone.metaData.addProvider(metadataProvider.getProvider());
// Target tools configuration
OHIF.lesiontracker.configureTargetToolsHandles();
});
Template.viewer.onCreated(() => {
Session.set('ViewerReady', false);
const instance = Template.instance();
// Define the OHIF.viewer.data global object
OHIF.viewer.data = OHIF.viewer.data || Session.get('ViewerData') || {};
const { TimepointApi, MeasurementApi, ConformanceCriteria } = OHIF.measurements;
const currentTimepointId = OHIF.viewer.data.currentTimepointId;
const timepointApi = new TimepointApi(currentTimepointId);
const measurementApi = new MeasurementApi(timepointApi);
const conformanceCriteria = new ConformanceCriteria(measurementApi, timepointApi);
const apis = {
timepointApi,
measurementApi,
conformanceCriteria
};
Object.assign(OHIF.viewer, apis);
Object.assign(instance.data, apis);
instance.state = new ReactiveDict();
instance.state.set('leftSidebar', Session.get('leftSidebar'));
instance.state.set('rightSidebar', Session.get('rightSidebar'));
const viewportUtils = OHIF.viewerbase.viewportUtils;
OHIF.viewer.functionList = $.extend(OHIF.viewer.functionList, {
toggleLesionTrackerTools: OHIF.lesiontracker.toggleLesionTrackerTools,
bidirectional: () => {
// Used for hotkeys
OHIF.viewerbase.toolManager.setActiveTool('bidirectional');
},
nonTarget: () => {
// Used for hotkeys
OHIF.viewerbase.toolManager.setActiveTool('nonTarget');
},
// Viewport functions
toggleCineDialog: viewportUtils.toggleCineDialog,
clearTools: viewportUtils.clearTools,
resetViewport: viewportUtils.resetViewport,
invert: viewportUtils.invert,
flipV: viewportUtils.flipV,
flipH: viewportUtils.flipH,
rotateL: viewportUtils.rotateL,
rotateR: viewportUtils.rotateR,
linkStackScroll: viewportUtils.linkStackScroll
});
if (OHIF.viewer.data.loadedSeriesData) {
OHIF.log.info('Reloading previous loadedSeriesData');
OHIF.viewer.loadedSeriesData = OHIF.viewer.data.loadedSeriesData;
} else {
OHIF.log.info('Setting default viewer data');
OHIF.viewer.loadedSeriesData = {};
OHIF.viewer.data.loadedSeriesData = {};
}
// Store the viewer data in session for further user
Session.setPersistent('ViewerData', OHIF.viewer.data);
Session.set('activeViewport', OHIF.viewer.data.activeViewport || false);
// Set lesion tool buttons as disabled if pixel spacing is not available for active element
instance.autorun(OHIF.lesiontracker.pixelSpacingAutorunCheck);
// @TypeSafeStudies
// Clears OHIF.viewer.Studies collection
OHIF.viewer.Studies.removeAll();
// @TypeSafeStudies
// Clears OHIF.viewer.StudyMetadataList collection
OHIF.viewer.StudyMetadataList.removeAll();
instance.data.studies.forEach(study => {
const studyMetadata = new OHIF.metadata.StudyMetadata(study, study.studyInstanceUid);
let displaySets = study.displaySets;
if (!study.displaySets) {
displaySets = OHIF.viewerbase.sortingManager.getDisplaySets(studyMetadata);
study.displaySets = displaySets;
}
studyMetadata.setDisplaySets(displaySets);
study.selected = true;
OHIF.viewer.Studies.insert(study);
OHIF.viewer.StudyMetadataList.insert(studyMetadata);
});
const patientId = instance.data.studies[0].patientId;
// LT-382: Preventing HP to keep identifying studies in timepoints that might be removed
instance.data.studies.forEach(study => (delete study.timepointType));
// TODO: Consider combining the retrieval calls into one?
const timepointsPromise = timepointApi.retrieveTimepoints({ patientId });
timepointsPromise.then(() => {
const timepoints = timepointApi.all();
// Set timepointType in studies to be used in hanging protocol engine
timepoints.forEach(timepoint => {
timepoint.studyInstanceUids.forEach(studyInstanceUid => {
const study = _.find(instance.data.studies, element => {
return element.studyInstanceUid === studyInstanceUid;
});
if (!study) {
return;
}
// @TODO: Maybe this should be a setCustomAttribute?
study.timepointType = timepoint.timepointType;
});
});
Session.set('TimepointsReady', true);
const timepointIds = timepoints.map(t => t.timepointId);
const measurementsPromise = measurementApi.retrieveMeasurements(patientId, timepointIds);
measurementsPromise.then(() => {
Session.set('MeasurementsReady', true);
measurementApi.syncMeasurementsAndToolData();
});
});
// Provide the necessary data to the Measurement API and Timepoint API
const prior = timepointApi.prior();
if (prior) {
measurementApi.priorTimepointId = prior.timepointId;
}
// Enable/Disable Lesion Tracker Tools if the opened study is associated or not
OHIF.lesiontracker.toggleLesionTrackerToolsButtons(!!currentTimepointId);
let firstMeasurementActivated = false;
instance.autorun(() => {
if (!Session.get('TimepointsReady') ||
!Session.get('MeasurementsReady') ||
!Session.get('ViewerReady') ||
firstMeasurementActivated) {
return;
}
// Find and activate the first measurement by Lesion Number
// NOTE: This is inefficient, we should be using a hanging protocol
// to hang the first measurement's imageId immediately, rather
// than changing images after initial loading...
const config = OHIF.measurements.MeasurementApi.getConfiguration();
const tools = config.measurementTools[0].childTools;
const firstTool = tools[Object.keys(tools)[0]];
const measurementTypeId = firstTool.id;
const collection = measurementApi.tools[measurementTypeId];
const sorting = {
sort: {
measurementNumber: -1
}
};
const data = collection.find({}, sorting).fetch();
const current = timepointApi.current();
if (!current) {
return;
}
let timepoints = [current];
const prior = timepointApi.prior();
if (prior) {
timepoints.push(prior);
}
// TODO: Clean this up, it's probably an inefficient way to get what we need
const groupObject = _.groupBy(data, m => m.measurementNumber);
// Reformat the data
const rows = Object.keys(groupObject).map(key => ({
measurementTypeId: measurementTypeId,
measurementNumber: key,
entries: groupObject[key]
}));
const rowItem = rows[0];
// Activate the first lesion
if (rowItem) {
OHIF.measurements.jumpToRowItem(rowItem, timepoints);
}
firstMeasurementActivated = true;
});
instance.measurementModifiedHandler = _.throttle((event, instance) => {
OHIF.measurements.MeasurementHandlers.onModified(event, instance);
}, 300);
});
/**
* Sets sidebar configuration and active tool based on viewer template instance
* @param {Object} instance Template instance for viewer template
*/
const setActiveToolAndSidebar = () => {
const instance = Template.instance();
const { studies, currentTimepointId, measurementApi, timepointIds } = instance.data;
// Default actions for Associated Studies
if (currentTimepointId) {
// Follow-up studies: same as the first measurement in the table
// Baseline studies: target-tool
if (studies[0]) {
let activeTool;
// In follow-ups, get the baseline timepointId
const timepointId = timepointIds.find(id => id !== currentTimepointId);
// Follow-up studies
if (studies[0].timepointType === 'followup' && timepointId) {
const measurementTools = OHIF.measurements.MeasurementApi.getConfiguration().measurementTools;
// Create list of measurement tools
const measurementTypes = measurementTools.map(
tool => {
const { id, cornerstoneToolType } = tool;
return {
id,
cornerstoneToolType
};
}
);
// Iterate over each measurement tool to find the first baseline
// measurement. If so, stops the loop and prevent fetching from all
// collections
measurementTypes.every(({ id, cornerstoneToolType }) => {
// Get measurement
if (measurementApi[id]) {
const measurement = measurementApi[id].findOne({ timepointId });
// Found a measurement, save tool and stop loop
if (measurement) {
const isArray = Array.isArray(cornerstoneToolType);
activeTool = isArray ? cornerstoneToolType[0] : cornerstoneToolType;
return false;
}
}
return true;
});
}
// If not set, for associated studies default is target-tool
OHIF.viewerbase.toolManager.setActiveTool(activeTool || 'bidirectional');
}
// Toggle Measurement Table
if (instance.state) {
instance.state.set('rightSidebar', 'measurements');
}
}
// Hide as default for single study
else {
if (instance.state) {
instance.state.set('rightSidebar', null);
}
}
};
/**
* Inits OHIF Hanging Protocol's onReady.
* It waits for OHIF Hanging Protocol to be ready to instantiate the ProtocolEngine
* Hanging Protocol will use OHIF LayoutManager to render viewports properly
*/
const initHangingProtocol = () => {
// When Hanging Protocol is ready
HP.ProtocolStore.onReady(() => {
setActiveToolAndSidebar();
// Gets all StudyMetadata objects: necessary for Hanging Protocol to access study metadata
const studyMetadataList = OHIF.viewer.StudyMetadataList.all();
// Caches Layout Manager: Hanging Protocol uses it for layout management according to current protocol
const layoutManager = OHIF.viewerbase.layoutManager;
// Instantiate StudyMetadataSource: necessary for Hanging Protocol to get study metadata
const studyMetadataSource = new OHIF.studies.classes.OHIFStudyMetadataSource();
// Creates Protocol Engine object with required arguments
const ProtocolEngine = new HP.ProtocolEngine(layoutManager, studyMetadataList, [], studyMetadataSource);
// Sets up Hanging Protocol engine
HP.setEngine(ProtocolEngine);
Session.set('ViewerReady', true);
Session.set('activeViewport', 0);
});
};
Template.viewer.onRendered(function() {
this.autorun(() => {
// To make sure ohif viewerMain is rendered before initializing Hanging Protocols
const isOHIFViewerMainRendered = Session.get('OHIFViewerMainRendered');
// To avoid first run
if (isOHIFViewerMainRendered) {
// To run only when ViewerMainRendered dependency has changed.
// because initHangingProtocol can have other reactive components
Tracker.nonreactive(initHangingProtocol);
}
});
});
Template.viewer.helpers({
dataSourcesReady() {
// TODO: Find a better way to do this
const ready = Session.get('TimepointsReady') && Session.get('MeasurementsReady');
OHIF.log.info('dataSourcesReady? : ' + ready);
return ready;
},
state() {
return Template.instance().state;
}
});
Template.viewer.events({
'cornerstonetoolsmeasurementadded .imageViewerViewport'(event, instance) {
const originalEvent = event.originalEvent;
OHIF.measurements.MeasurementHandlers.onAdded(originalEvent, instance);
},
'cornerstonetoolsmeasurementmodified .imageViewerViewport'(event, instance) {
const originalEvent = event.originalEvent;
instance.measurementModifiedHandler(originalEvent, instance);
},
'cornerstonemeasurementremoved .imageViewerViewport'(event, instance) {
const originalEvent = event.originalEvent;
OHIF.measurements.MeasurementHandlers.onRemoved(originalEvent, instance);
}
});
Template.viewer.onDestroyed(() => {
Session.set('ViewerMainReady', false);
Session.set('TimepointsReady', false);
Session.set('MeasurementsReady', false);
OHIF.viewer.stackImagePositionOffsetSynchronizer.deactivate();
});
@@ -1,55 +0,0 @@
@import "{ohif:design}/app"
#viewer
background-color: black
height: 100%
width: 100%
#imageViewerViewports
.viewportContainer
border: none !important
outline: 0 !important // Prevent blue outline in Chrome
position: relative
&:hover
&.active
&:hover.active
border: none !important
outline: 0 !important // Prevent blue outline in Chrome
.removable
.imageViewerViewport
theme('border-bottom', '%s solid $uiBorderColor' % $uiBorderThickness)
canvas
border-color: transparent
border-style: solid
border-width: 1px
&:not(:last-child)
.removable
.imageViewerViewport
theme('border-right', '%s solid $uiBorderColor' % $uiBorderThickness)
&:first-child
.removable
.imageViewerViewport
theme('border-left', '%s solid $uiBorderColor' % $uiBorderThickness)
&.active
.removable
.imageViewerViewport
border-right: none !important
canvas
theme('border-color', '$uiBorderColorActive')
.sidebar-left-open
#layoutManagerTarget
#imageViewerViewports
.viewportContainer
&:first-child
.removable
.imageViewerViewport
border-left: none
@@ -1,21 +0,0 @@
<template name="viewerSection">
<div class="viewerSection">
<div class="sidebarMenu sidebar-left {{#if leftSidebarOpen}}sidebar-open{{/if}}">
{{#if isTimepointBrowser}}
{{>timepointBrowserSidebar (clone this)}}
{{else}}
{{#if instance.loading.get}}
{{>loadingText}}
{{else}}
{{>studyBrowserSidebar (clone this studiesInformation=instance.studiesInformation.get)}}
{{/if}}
{{/if}}
</div>
<div class="mainContent {{#if leftSidebarOpen}}sidebar-left-open{{/if}} {{#if rightSidebarOpen}}sidebar-right-open{{/if}}">
{{>viewerMain (clone this)}}
</div>
<div class="sidebarMenu sidebar-right {{#if rightSidebarOpen}}sidebar-open{{/if}}">
{{>measurementTable (clone this)}}
</div>
</div>
</template>
@@ -1,72 +0,0 @@
import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import { $ } from 'meteor/jquery';
import { OHIF } from 'meteor/ohif:core';
Template.viewerSection.onCreated(() => {
const instance = Template.instance();
instance.isTimepointBrowser = () => !!OHIF.viewer.data.currentTimepointId;
OHIF.viewer.quickSwitchStudyBrowserTemplate = 'timepointBrowserQuickSwitch';
if (!instance.isTimepointBrowser()) {
OHIF.viewer.quickSwitchStudyBrowserTemplate = 'studyBrowserQuickSwitch';
instance.loading = new ReactiveVar(true);
instance.studiesInformation = new ReactiveVar([]);
const filter = { studyInstanceUid: OHIF.viewer.data.studyInstanceUids };
OHIF.studies.searchStudies(filter).then(studiesData => {
instance.loading.set(false);
instance.studiesInformation.set(studiesData);
}).catch(error => {
instance.loading.set(false);
const text = 'An error has occurred while retrieving studies information';
OHIF.ui.notifications.danger({ text });
OHIF.log.error(error);
});
}
});
Template.viewerSection.events({
'transitionend .sidebarMenu'(event) {
if (!event.target.classList.contains('sidebarMenu')) return;
window.ResizeViewportManager.handleResize();
},
'ohif.measurements.timepoint.changeViewType .timepoint-browser-list'(event, instance, viewType) {
const $browserList = $(event.currentTarget);
const $allBrowserItems = $browserList.find('.timepoint-browser-item');
// Removes all active classes to collapse the timepoints and studies
$allBrowserItems.removeClass('active');
if (viewType === 'key') {
const { timepointIds, currentTimepointId } = OHIF.viewer.data;
timepointIds.forEach(timepointId => {
const $browserItem = $allBrowserItems.filter(`[data-id=${timepointId}]`);
$browserItem.find('.timepoint-item').trigger('ohif.measurements.timepoint.load');
});
// Show only current timepoint expanded on key timepoints tab
const $browserItem = $allBrowserItems.filter(`[data-id=${currentTimepointId}]`);
$browserItem.find('.timepoint-item').trigger('click');
}
}
});
Template.viewerSection.helpers({
leftSidebarOpen() {
return Template.instance().data.state.get('leftSidebar');
},
rightSidebarOpen() {
return Template.instance().data.state.get('rightSidebar');
},
isTimepointBrowser() {
return Template.instance().isTimepointBrowser();
},
studiesInformation() {
return Template.instance().studiesInformation.get();
}
});
@@ -1,81 +0,0 @@
@require '{ohif:design}/app'
.viewerSection
display: flex
flex: 1
flex-flow: row nowrap
align-items: stretch
height: 'calc(100% - %s)' % ($toolbarHeight + $topBarHeight)
width: 100%
.sidebarMenu
height: 100%
// required transformation to make inner fixed elements relative to this one
transform(scale(1))
transition($sidebarTransition)
.sidebar-option
height: 100%
max-width: inherit
position: absolute
transform(translateX(100%))
transition($sidebarTransition)
width: 100%
&.active
transform(translateX(0%))
.sidebar-left
theme('border-right', '%s solid $uiBorderColor' % $uiBorderThickness)
flex: 1
margin-left: - $studiesSidebarMenuWidth
max-width: $studiesSidebarMenuWidth
order: 1
visibility: hidden
&.sidebar-open
margin-left: 0
visibility: visible
.loadingTextDiv
theme('color', '$textSecondaryColor')
font-size: 32px
.mainContent
flex: 1
height: 100%
order: 2
overflow: visible
position: relative
transition($sidebarTransition)
width: 100%
.viewerMain
left: 0
position: absolute
top: 0
.sidebar-right
flex: 1
margin-right: - $rightSidebarMenuWidth
max-width: $rightSidebarMenuWidth
order: 3
position: relative
visibility: hidden
&[data-timepoints="3"]
margin-right: - ($rightSidebarMenuWidth + 135.5px)
max-width: $rightSidebarMenuWidth + 135.5px
&[data-timepoints="4"]
margin-right: - ($rightSidebarMenuWidth + 270px)
max-width: $rightSidebarMenuWidth + 270px
&.sidebar-open
margin-right: 0
visibility: visible
.studiesListedChanger
theme('border-bottom', '%s solid $uiBorderColor' % $uiBorderThickness)
padding: 20px 10px
text-align: center
-34
View File
@@ -1,34 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { Accounts } from 'meteor/accounts-base';
import { OHIF } from 'meteor/ohif:core';
import { cornerstoneWADOImageLoader } from 'meteor/ohif:cornerstone';
Meteor.startup(function() {
const maxWebWorkers = Math.max(navigator.hardwareConcurrency - 1, 1);
const config = {
maxWebWorkers: maxWebWorkers,
startWebWorkersOnDemand: true,
webWorkerPath : OHIF.utils.absoluteUrl('packages/ohif_cornerstone/public/js/cornerstoneWADOImageLoaderWebWorker.es5.js'),
taskConfiguration: {
'decodeTask' : {
loadCodecsOnStartup : true,
initializeCodecsOnStartup: false,
codecsPath: OHIF.utils.absoluteUrl('packages/ohif_cornerstone/public/js/cornerstoneWADOImageLoaderCodecs.es5.js'),
usePDFJS: false
}
}
};
cornerstoneWADOImageLoader.webWorkerManager.initialize(config);
cornerstoneWADOImageLoader.configure({
beforeSend: function(xhr) {
const userId = Meteor.userId();
const loginToken = Accounts._storedLoginToken();
if (userId && loginToken) {
xhr.setRequestHeader("x-user-id", userId);
xhr.setRequestHeader("x-auth-token", loginToken);
}
}
});
});
-17
View File
@@ -1,17 +0,0 @@
<head>
<meta charset="utf-8">
<title>Lesion Tracker</title>
<meta name="description" content="Prototype viewer application for oncology">
<!-- Prevents page zooming -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="shortcut icon" type="image/png" href="/images/logo.png" sizes="16x16 32x32 64x64">
<!--Best display for mobile devices-->
<meta http-equiv="cleartype" content="on">
<meta name="MobileOptimized" content="320">
<meta name="HandheldFriendly" content="True">
<meta name="apple-mobile-web-app-capable" content="yes">
<!-- Make SVG work on IE -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
@@ -1,111 +0,0 @@
import { Meteor } from 'meteor/meteor';
Meteor.startup(() => {
console.log('Adding Lesion Tracker Hanging Protocols');
//------------------------------------------------------------------------------
// Define Baseline protocol
const proto = new HP.Protocol('LT_Baseline');
proto.locked = true;
const isBaseline = new HP.ProtocolMatchingRule();
isBaseline.required = true;
isBaseline.weight = 1;
isBaseline.attribute = 'timepointType';
isBaseline.constraint = {
equals: {
value: 'baseline'
}
};
proto.addProtocolMatchingRule(isBaseline);
const oneByOne = new HP.ViewportStructure('grid', {
rows: 1,
columns: 1
});
// Stage 1
const single = new HP.Viewport();
const baseline = new HP.StudyMatchingRule(true);
baseline.required = true;
baseline.attribute = 'timepointType';
baseline.constraint = {
equals: {
value: 'baseline'
}
};
single.studyMatchingRules.push(baseline);
const first = new HP.Stage(oneByOne, 'oneByOne');
first.viewports.push(single);
proto.addStage(first);
HP.lesionTrackerBaselineProtocol = proto;
HP.lesionTrackerBaselineProtocol.id = 'lesionTrackerBaselineProtocol';
//------------------------------------------------------------------------------
// Define Followup Protocol
const protoFollowup = new HP.Protocol('LT_BaselineFollowup');
protoFollowup.locked = true;
const isFollowup = new HP.ProtocolMatchingRule();
isFollowup.required = true;
isFollowup.weight = 2;
isFollowup.attribute = 'timepointType';
isFollowup.constraint = {
equals: {
value: 'followup'
}
};
protoFollowup.addProtocolMatchingRule(isFollowup);
const oneByTwo = new HP.ViewportStructure('grid', {
rows: 1,
columns: 2
});
// Stage 1
const left = new HP.Viewport();
const right = new HP.Viewport();
const baseline2 = new HP.StudyMatchingRule(true);
baseline2.required = true;
baseline2.attribute = 'timepointType';
baseline2.constraint = {
equals: {
value: 'baseline'
}
};
const followup = new HP.StudyMatchingRule();
followup.required = true;
followup.attribute = 'timepointType';
followup.constraint = {
equals: {
value: 'followup'
}
};
left.studyMatchingRules.push(followup);
right.studyMatchingRules.push(baseline2);
const first2 = new HP.Stage(oneByTwo, 'oneByTwo');
first2.viewports.push(left);
first2.viewports.push(right);
protoFollowup.addStage(first2);
HP.lesionTrackerFollowupProtocol = protoFollowup;
HP.lesionTrackerFollowupProtocol.id = 'lesionTrackerFollowupProtocol';
HP.ProtocolStore.onReady(() => {
console.log('Inserting lesion tracker protocols');
HP.ProtocolStore.addProtocol(HP.lesionTrackerBaselineProtocol);
HP.ProtocolStore.addProtocol(HP.lesionTrackerFollowupProtocol);
});
});
@@ -1,53 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { _ } from 'meteor/underscore';
import { OHIF } from 'meteor/ohif:core';
Meteor.startup(() => {
const { toolManager } = OHIF.viewerbase;
const contextName = 'viewer';
// Enable the custom tools
const customTools = [{
id: 'bidirectional',
name: 'Target'
}, {
id: 'nonTarget',
name: 'Non-Target'
}, {
id: 'targetCR',
name: 'CR Target'
}, {
id: 'targetUN',
name: 'UN Target'
}];
customTools.forEach(tool => {
_.defaults(OHIF.hotkeys.defaults[contextName], { [tool.id]: '' });
OHIF.commands.register(contextName, tool.id, {
name: tool.name,
action: tool.action || (() => toolManager.setActiveTool(tool.id))
});
});
// Enable the custom commands
const customCommands = [{
id: 'linkStackScroll',
name: 'Link',
action: OHIF.viewerbase.viewportUtils.linkStackScroll
}, {
id: 'saveMeasurements',
name: 'Save measurements',
hotkey: 'CTRL+S',
action() {
const activeTimepoint = OHIF.measurements.getActiveTimepoint();
if (!activeTimepoint) return;
OHIF.measurements.saveMeasurements(OHIF.viewer.measurementApi, activeTimepoint.timepointId);
}
}];
customCommands.forEach(command => {
_.defaults(OHIF.hotkeys.defaults[contextName], { [command.id]: command.hotkey || '' });
OHIF.commands.register(contextName, command.id, {
name: command.name,
action: command.action || (() => toolManager.setActiveTool(command.id))
});
});
});
-3
View File
@@ -1,3 +0,0 @@
import loglevel from 'loglevel';
log = loglevel.getLogger('OHIFViewer');
log.setLevel('info');
-78
View File
@@ -1,78 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { Router } from 'meteor/clinical:router';
import { OHIF } from 'meteor/ohif:core';
Router.configure({
loadingTemplate: 'loading'
});
// If we are running a disconnected client similar to the StandaloneViewer
// (see https://docs.ohif.org/standalone-viewer/usage.html) we don't want
// our routes to get stuck while waiting for Pub / Sub.
//
// In this case, the developer is required to add Servers and specify
// a CurrentServer with some other approach (e.g. a separate script).
if (Meteor.settings &&
Meteor.settings.public &&
Meteor.settings.public.clientOnly !== true) {
Router.waitOn(function() {
return [
Meteor.subscribe('servers'),
Meteor.subscribe('currentServer')
];
});
}
Router.onBeforeAction('loading');
Router.onBeforeAction(function() {
// verifyEmail controls whether emailVerification template will be rendered or not
const publicSettings = Meteor.settings && Meteor.settings.public;
const verifyEmail = publicSettings && publicSettings.verifyEmail || false;
// Check if user is signed in or needs an email verification
if (!Meteor.userId() && !Meteor.loggingIn()) {
this.render('entrySignIn');
} else if (verifyEmail && Meteor.user().emails && !Meteor.user().emails[0].verified) {
this.render('emailVerification');
} else {
this.next();
}
}, {
except: ['entrySignIn', 'entrySignUp', 'forgotPassword', 'resetPassword', 'emailVerification']
});
Router.route('/', function() {
Router.go('studylist', {}, { replaceState: true });
}, { name: 'home' });
Router.route('/studylist', {
name: 'studylist',
onBeforeAction: function() {
const next = this.next;
// Retrieve the timepoints data to display in studylist
const promise = OHIF.studylist.timepointApi.retrieveTimepoints({});
promise.then(() => next());
},
action: function() {
this.render('app', { data: { template: 'studylist' } });
}
});
Router.route('/viewer/timepoints/:timepointId', function() {
const timepointId = this.params.timepointId;
OHIF.viewerbase.renderViewer(this, { timepointId });
}, { name: 'viewerTimepoint' });
Router.route('/viewer/studies/:studyInstanceUids', function() {
const studyInstanceUids = this.params.studyInstanceUids.split(';');
OHIF.viewerbase.renderViewer(this, { studyInstanceUids });
}, { name: 'viewerStudies' });
// OHIF #98 Show specific series of study
Router.route('/study/:studyInstanceUid/series/:seriesInstanceUids', function () {
const studyInstanceUid = this.params.studyInstanceUid;
const seriesInstanceUids = this.params.seriesInstanceUids.split(';');
OHIF.viewerbase.renderViewer(this, { studyInstanceUids: [studyInstanceUid], seriesInstanceUids });
}, { name: 'viewerSeries' });
-2284
View File
File diff suppressed because it is too large. Load diff
-38
View File
@@ -1,38 +0,0 @@
{
"name": "LesionTracker",
"private": true,
"scripts": {
"lint": "eslint .",
"fix": "eslint --fix .",
"pretest": "npm run lint --silent"
},
"version": "1.0.0",
"description": "",
"dependencies": {
"@babel/runtime": "7.0.0-beta.51",
"bcrypt": "^3.0.1",
"loglevel": "^1.6.1",
"url": "^0.11.0"
},
"devDependencies": {
"babel-eslint": "^10.0.1",
"eslint": "^5.6.0",
"eslint-config-airbnb": "^17.1.0",
"eslint-import-resolver-meteor": "^0.4.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^6.1.1",
"eslint-plugin-meteor": "^5.1.0",
"eslint-plugin-react": "^7.11.1"
},
"main": "index.js",
"repository": {
"type": "git",
"url": "https://github.com/OHIF/Viewers.git"
},
"author": "OHIF",
"license": "MIT",
"bugs": {
"url": "https://github.com/OHIF/Viewers/issues"
},
"homepage": "https://github.com/OHIF/Viewers"
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

-52
View File
@@ -1,52 +0,0 @@
import { OHIF } from 'meteor/ohif:core';
Meteor.startup(function () {
// Mail server settings
var username = Meteor.settings && Meteor.settings.mailServerSettings && Meteor.settings.mailServerSettings.username || null;
var password = Meteor.settings && Meteor.settings.mailServerSettings && Meteor.settings.mailServerSettings.password || null;
var server = Meteor.settings && Meteor.settings.mailServerSettings && Meteor.settings.mailServerSettings.server || null;
var port = Meteor.settings && Meteor.settings.mailServerSettings && Meteor.settings.mailServerSettings.port || null;
var verifyEmail = Meteor.settings && Meteor.settings.public && Meteor.settings.public.verifyEmail || false;
var siteName = Meteor.settings && Meteor.settings.public && Meteor.settings.public.siteName || "Lesion Tracker";
if (username && password && server && port) {
Accounts.emailTemplates.siteName = siteName;
Accounts.emailTemplates.from = siteName+' Admin <'+username+'>';
process.env.MAIL_URL = 'smtp://' +
encodeURIComponent(username) + ':' +
encodeURIComponent(password) + '@' +
encodeURIComponent(server) + ':' + port;
// Subject line of the email.
Accounts.emailTemplates.verifyEmail.subject = function(user) {
return 'Confirm Your Email Address for '+siteName;
};
// Email text
Accounts.emailTemplates.verifyEmail.text = function(user, url) {
return 'Thank you for registering. Please click on the following link to verify your email address: \r\n' + url;
};
// Reset password mail
Accounts.emailTemplates.resetPassword.subject = function() {
return 'Reset your '+siteName+' password'
};
Accounts.urls.resetPassword = function(token) {
return OHIF.utils.absoluteUrl('resetPassword/' + token);
};
Accounts.emailTemplates.resetPassword.text = function(user, url) {
return "Hello " + user.profile.fullName + ",\n\n" +
"Click the following link to set your new password:\n" +
url + "\n\n";
};
// Send email when account is created
Accounts.config({
sendVerificationEmail: verifyEmail
});
}
});
-4
View File
@@ -1,4 +0,0 @@
.idea
.meteor/local
.meteor/meteorite
node_modules
-19
View File
@@ -1,19 +0,0 @@
# This file contains information which helps Meteor properly upgrade your
# app when you run 'meteor update'. You should check it into version control
# with your project.
notices-for-0.9.0
notices-for-0.9.1
0.9.4-platform-file
notices-for-facebook-graph-api-2
1.2.0-standard-minifiers-package
1.2.0-meteor-platform-split
1.2.0-cordova-changes
1.2.0-breaking-changes
1.3.0-split-minifiers-package
1.3.5-remove-old-dev-bundle-link
1.4.0-remove-old-dev-bundle-link
1.4.1-add-shell-server-package
1.4.3-split-account-service-packages
1.5-add-dynamic-import-package
1.7-split-underscore-from-meteor-base
-2
View File
@@ -1,2 +0,0 @@
dev_bundle
local
-7
View File
@@ -1,7 +0,0 @@
# This file contains a token that is unique to your project.
# Check it into your repository along with the rest of this directory.
# It can be used for purposes such as:
# - ensuring you don't accidentally deploy one app on top of another
# - providing package authors with aggregated statistics
1jfkhvr1ljfqodmpn32m
-53
View File
@@ -1,53 +0,0 @@
# Meteor packages used by this project, one per line.
# Check this file (and the other files in this directory) into your repository.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
http@1.4.1
promise@0.11.1
stylus@2.513.13
meteor-base@1.4.0
mobile-experience@1.0.5
mongo@1.5.0
blaze-html-templates@1.0.4
session@1.1.7
jquery@1.11.10
tracker@1.2.0
logging@1.1.20
reload@1.2.0
random@1.1.0
ejson@1.1.0
spacebars@1.0.12
check@1.3.1
ecmascript@0.11.1
reactive-var@1.0.11
reactive-dict@1.2.0
standard-minifier-css@1.4.1
standard-minifier-js@2.3.4
# OHIF Packages
ohif:polyfill
ohif:design
ohif:core
ohif:commands
ohif:hotkeys
ohif:header
ohif:cornerstone
ohif:cornerstone-settings
ohif:viewerbase
ohif:study-list
ohif:hanging-protocols
ohif:metadata
ohif:user-oidc
ohif:measurement-table
fortawesome:fontawesome
momentjs:moment@2.15.1
aldeed:simple-schema # Third party package to deal with schemas
aldeed:template-extension
johdirr:meteor-git-rev
cultofcoders:persistent-session
shell-server@0.3.1
underscore
meteortesting:mocha
-2
View File
@@ -1,2 +0,0 @@
server
browser
-1
View File
@@ -1 +0,0 @@
METEOR@1.7.0.3
-131
View File
@@ -1,131 +0,0 @@
aldeed:collection2@2.10.0
aldeed:collection2-core@1.2.0
aldeed:schema-deny@1.1.0
aldeed:schema-index@1.1.1
aldeed:simple-schema@1.5.4
aldeed:template-extension@4.1.0
allow-deny@1.1.0
amplify@1.0.0
autoupdate@1.4.1
babel-compiler@7.1.1
babel-runtime@1.2.2
base64@1.0.11
binary-heap@1.0.10
blaze@2.3.2
blaze-html-templates@1.1.2
blaze-tools@1.0.10
boilerplate-generator@1.5.0
caching-compiler@1.1.12
caching-html-compiler@1.1.3
callback-hook@1.1.0
check@1.3.1
clinical:router@2.0.19
clinical:router-location@2.1.0
clinical:router-middleware-stack@2.1.2
clinical:router-url@2.1.0
cultofcoders:persistent-session@0.4.5
ddp@1.4.0
ddp-client@2.3.3
ddp-common@1.4.0
ddp-server@2.2.0
deps@1.0.12
diff-sequence@1.1.0
dynamic-import@0.4.1
ecmascript@0.11.1
ecmascript-runtime@0.7.0
ecmascript-runtime-client@0.7.1
ecmascript-runtime-server@0.7.0
ejson@1.1.0
es5-shim@4.8.0
fastclick@1.0.13
fortawesome:fontawesome@4.7.0
geojson-utils@1.0.10
hot-code-push@1.0.4
html-tools@1.0.11
htmljs@1.0.11
http@1.4.1
id-map@1.1.0
iron:controller@1.0.12
iron:core@1.0.11
iron:dynamic-template@1.0.12
iron:layout@1.0.12
johdirr:meteor-git-rev@0.0.4
jquery@1.11.11
launch-screen@1.1.1
livedata@1.0.18
lmieulet:meteor-coverage@1.1.4
logging@1.1.20
mdg:validation-error@0.5.1
meteor@1.9.2
meteor-base@1.4.0
meteor-platform@1.2.6
meteorhacks:picker@1.0.3
meteortesting:browser-tests@1.0.0
meteortesting:mocha@1.0.0
minifier-css@1.3.1
minifier-js@2.3.5
minimongo@1.4.4
mobile-experience@1.0.5
mobile-status-bar@1.0.14
modern-browsers@0.1.2
modules@0.12.2
modules-runtime@0.10.2
momentjs:moment@2.22.2
mongo@1.5.1
mongo-dev-server@1.1.0
mongo-id@1.0.7
natestrauser:select2@4.0.3
npm-mongo@3.0.7
observe-sequence@1.0.16
ohif:commands@0.0.1
ohif:core@0.0.1
ohif:cornerstone@0.0.1
ohif:cornerstone-settings@0.0.1
ohif:design@0.0.1
ohif:hanging-protocols@0.0.1
ohif:header@0.0.1
ohif:hotkeys@0.0.1
ohif:log@0.0.1
ohif:measurement-table@0.0.1
ohif:measurements@0.0.1
ohif:metadata@0.0.1
ohif:polyfill@0.0.1
ohif:select-tree@0.0.1
ohif:servers@0.0.1
ohif:studies@0.0.1
ohif:study-list@0.0.1
ohif:themes@0.0.1
ohif:themes-common@0.0.1
ohif:user-oidc@0.0.1
ohif:viewerbase@0.0.1
ohif:wadoproxy@0.0.1
ordered-dict@1.1.0
practicalmeteor:mocha-core@1.0.1
promise@0.11.1
raix:eventemitter@0.1.3
random@1.1.0
reactive-dict@1.2.0
reactive-var@1.0.11
reload@1.2.0
retry@1.1.0
routepolicy@1.0.13
session@1.1.7
shell-server@0.3.1
silentcicero:jszip@0.0.4
socket-stream-client@0.2.2
spacebars@1.0.15
spacebars-compiler@1.1.3
standard-app-packages@1.0.9
standard-minifier-css@1.4.1
standard-minifier-js@2.3.4
stylus@2.513.14
templating@1.3.2
templating-compiler@1.3.3
templating-runtime@1.3.2
templating-tools@1.1.2
tracker@1.2.0
ui@1.0.13
underscore@1.0.10
url@1.2.0
webapp@1.6.2
webapp-hashing@1.0.9
-2
View File
@@ -1,2 +0,0 @@
set METEOR_PACKAGE_DIRS=..\Packages
meteor --settings ../config/medkenOrthanc.json
-1
View File
@@ -1 +0,0 @@
METEOR_PACKAGE_DIRS="../Packages" meteor --settings ../config/medkenOrthanc.json
-13
View File
@@ -1,13 +0,0 @@
#!/bin/bash
declare config='../config/orthancDICOMWeb.json'
if [ $# -gt 0 ]; then
if [ "$1" = '--dimse' ]; then
config="${config%/*}/orthancDIMSE.json"
[ -f "$config" ] && echo "DIMSE config file selected: $config"
fi
fi
echo 'Starting Meteor server...'
METEOR_PACKAGE_DIRS="../Packages" meteor --settings "$config"
-2
View File
@@ -1,2 +0,0 @@
set METEOR_PACKAGE_DIRS=..\Packages
meteor --settings ../config/orthancDICOMWeb.json
-2
View File
@@ -1,2 +0,0 @@
echo "Starting Meteor server..."
METEOR_PACKAGE_DIRS="../Packages" meteor --settings ../config/orthancDICOMWeb.json
-2
View File
@@ -1,2 +0,0 @@
echo "Starting Meteor server..."
METEOR_PACKAGE_DIRS="../Packages" meteor --settings ../config/orthancDIMSE.json
-2
View File
@@ -1,2 +0,0 @@
echo "Starting Meteor server..."
METEOR_PACKAGE_DIRS="../Packages" meteor --settings ../config/publicOrthancDICOMWeb.json
-40
View File
@@ -1,40 +0,0 @@
#!/bin/bash
##################################################
# Runs the packages tests
##################################################
# check execution arguments
while [ "$1" != "" ]; do
PARAM=`echo $1 | awk -F= '{print $1}'`
case $PARAM in
-c | --coverage)
export RUN_COVERAGE=1
;;
-v | --verbose)
export COVERAGE_VERBOSE=1
;;
-s | --spacejam)
export RUN_SPACEJAM=1
;;
*)
esac
shift
done
if [ "$RUN_COVERAGE" == 1 ];
then
# Setting coverage variables
app_folder=$(pwd)
app_folder+="/packages/ohif-viewerbase/"
export COVERAGE_APP_FOLDER=$app_folder
export COVERAGE=1
echo 'Running meteor-coverage'
fi
if [ "$RUN_SPACEJAM" == 1 ];
then
spacejam-mocha ./packages/ohif-viewerbase/
else
meteor test-packages --driver-package='cultofcoders:mocha' ./packages/ohif-viewerbase/
fi
@@ -1,13 +0,0 @@
<template name="flexboxLayout">
<div class="viewerSection">
<div class="sidebarMenu sidebar-left {{#if leftSidebarOpen}}sidebar-open{{/if}}">
{{> studyBrowser (clone this)}}
</div>
<div class="mainContent {{#if leftSidebarOpen}}sidebar-left-open{{/if}} {{#if rightSidebarOpen}}sidebar-right-open{{/if}}">
{{> viewerMain (clone this)}}
</div>
<div class="sidebarMenu sidebar-right {{#if rightSidebarOpen}}sidebar-open{{/if}}">
{{> measurementLightTable (clone this)}}
</div>
</div>
</template>
@@ -1,19 +0,0 @@
Template.flexboxLayout.events({
'transitionend .sidebarMenu'(event) {
if (!event.target.classList.contains('sidebarMenu')) {
return;
}
window.ResizeViewportManager.handleResize();
}
});
Template.flexboxLayout.helpers({
leftSidebarOpen() {
return Template.instance().data.state.get('leftSidebar');
},
rightSidebarOpen() {
return Template.instance().data.state.get('rightSidebar');
}
});
@@ -1,67 +0,0 @@
@require '{ohif:design}/app'
.viewerSection
display: flex
flex: 1
flex-flow: row nowrap
align-items: stretch
height: 'calc(100% - %s)' % ($toolbarHeight + $topBarHeight)
width: 100%
.sidebarMenu
height: 100%
// required transformation to make inner fixed elements relative to this one
transform(scale(1))
transition($sidebarTransition)
.sidebar-option
height: 100%
max-width: inherit
position: absolute
transform(translateX(100%))
transition($sidebarTransition)
width: 100%
&.active
transform(translateX(0%))
.sidebar-left
theme('border-right', '%s solid $uiBorderColor' % $uiBorderThickness)
flex: 1
margin-left: - $studiesSidebarMenuWidth
max-width: $studiesSidebarMenuWidth
order: 1
&.sidebar-open
margin-left: 0
.mainContent
flex: 1
height: 100%
order: 2
overflow: hidden
transition($sidebarTransition)
width: 100%
.sidebar-right
flex: 1
margin-right: - $rightSidebarMenuWidth
max-width: $rightSidebarMenuWidth
order: 3
position: relative
&[data-timepoints="3"]
margin-right: - ($rightSidebarMenuWidth + 135.5px)
max-width: $rightSidebarMenuWidth + 135.5px
&[data-timepoints="4"]
margin-right: - ($rightSidebarMenuWidth + 270px)
max-width: $rightSidebarMenuWidth + 270px
&.sidebar-open
margin-right: 0
.studiesListedChanger
theme('border-bottom', '%s solid $uiBorderColor' % $uiBorderThickness)
padding: 20px 10px
text-align: center
@@ -1,28 +0,0 @@
<template name="ohifViewer">
{{#header brandHref='http://ohif.org' headerClasses=instance.headerClasses}}
{{#section 'brand'}}
<svg class="logo-image">
<use xlink:href={{absoluteUrl "packages/ohif_viewerbase/assets/icons.svg#icon-ohif-logo"}}></use>
</svg>
<div class="logo-text">Open Health Imaging Foundation</div>
{{/section}}
{{#section 'headerAfterBrand'}}
{{#if studyListToggleText}}
<a href="#" class="btn studyListLinkSection pull-left js-toggle-studyList">
{{studyListToggleText}}
</a>
{{/if}}
{{/section}}
{{#section 'headerMenu'}}
<span class="research-use pull-left m-r-1">
INVESTIGATIONAL USE ONLY
</span>
<span class="header-options pull-left m-r-1">Options</span>
<div class="menu-toggle pull-right">
<span class="caret-down"></span>
</div>
{{/section}}
{{/header}}
{{>Template.dynamic template=(choose this.template 'studylist') data=this}}
</template>
@@ -1,90 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating';
import { Session } from 'meteor/session';
import { Router } from 'meteor/clinical:router';
import { ReactiveVar } from 'meteor/reactive-var';
import { OHIF } from 'meteor/ohif:core';
Template.ohifViewer.onCreated(() => {
const instance = Template.instance();
instance.headerClasses = new ReactiveVar('');
const headerItems = [{
action: () => OHIF.ui.showDialog('serverInformationModal'),
text: 'Server Information',
icon: 'fa fa-server fa-lg',
separatorAfter: true
}, {
action: () => OHIF.ui.showDialog('themeSelectorModal'),
text: 'Themes',
iconClasses: 'theme',
iconSvgUse: 'packages/ohif_viewerbase/assets/icons.svg#theme',
separatorAfter: false
}, {
action: () => OHIF.ui.showDialog('userPreferencesDialog'),
text: 'Preferences',
icon: 'fa fa-user',
separatorAfter: true
}, {
action: () => OHIF.ui.showDialog('aboutModal'),
text: 'About',
icon: 'fa fa-info'
}];
if (OHIF.user.userLoggedIn() === true) {
headerItems.push({
action: OHIF.user.logout,
text: 'Logout',
iconClasses: 'logout',
iconSvgUse: 'packages/ohif_viewerbase/assets/user-menu-icons.svg#logout'
});
}
OHIF.header.dropdown.setItems(headerItems);
instance.autorun(() => {
const currentRoute = Router.current();
if (!currentRoute) return;
const routeName = currentRoute.route.getName();
const isViewer = routeName.indexOf('viewer') === 0;
// Add or remove the strech class from body
$(document.body)[isViewer ? 'addClass' : 'removeClass']('stretch');
// Set the header on its bigger version if the viewer is not opened
instance.headerClasses.set(isViewer ? '' : 'header-big');
// Set the viewer open state on session
Session.set('ViewerOpened', isViewer);
});
});
Template.ohifViewer.events({
'click .js-toggle-studyList'(event, instance) {
event.preventDefault();
const isViewer = Session.get('ViewerOpened');
if (isViewer) {
Router.go('studylist');
} else {
const { studyInstanceUids } = OHIF.viewer.data;
if (studyInstanceUids) {
Router.go('viewerStudies', { studyInstanceUids });
}
}
}
});
Template.ohifViewer.helpers({
studyListToggleText() {
const instance = Template.instance();
const isViewer = Session.get('ViewerOpened');
if (isViewer) {
instance.hasViewerData = true;
return 'Study list';
}
return instance.hasViewerData ? 'Back to viewer' : '';
}
});
@@ -1,80 +0,0 @@
@import "{ohif:design}/app"
body>.header
.brand
height: 30px
display: inline-block
text-decoration: none
.logo-image
display: inline-block
fill: transparent
float: left
height: 100%
margin: 0 8px 0 0
width: 30px
.logo-text
display: inline-block
font-family: $logoFontFamily
font-size: 14px
font-weight: $logoFontWeight
theme('color', '$textPrimaryColor')
line-height: 30px
a.header-menu
theme('color', '$textPrimaryColor')
.header-options
font-size: 13px
.menu-toggle
display: inline-block
height: 18px
.research-use
font-size: 13px
theme('color', '$textSecondaryColor')
font-weight: bold
.btn
theme('color', '$textSecondaryColor')
cursor: pointer
font-size: 13px
font-weight: 500
line-height: 26px
&:hover
theme('color', '$hoverColor')
&:active
theme('color', '$activeColor')
.studyListLinkSection
theme('border-left', '%s solid $uiBorderColor' % $uiBorderThickness)
margin: 3px 0 0 10px
padding: 0 0 0 10px
&.header-big
padding-left: $studyListPadding
padding-right: $studyListPadding
.brand
height: 100%
line-height: $topBarExpandedHeight - 10px
.logo-image
margin: 0 20px 0 0
width: 50px
.logo-text
font-size: 30px
.studyListLinkSection
border: none
left: 0
margin: 0
padding: 0
position: absolute
top: 0
@@ -1,13 +0,0 @@
<template name="toolbarSection">
<div class="toolbarSection noselect p-x-2">
<div class="clearfix">
<div class="pull-left m-t-1">
{{>roundedButtonGroup leftSidebarToggleButtonData}}
</div>
{{>toolbarSectionTools toolbarButtons=toolbarButtons}}
<div class="pull-right m-t-1 rm-x-1">
{{>roundedButtonGroup rightSidebarToggleButtonData}}
</div>
</div>
</div>
</template>
@@ -1,321 +0,0 @@
import { Template } from 'meteor/templating';
import { $ } from 'meteor/jquery';
import { OHIF } from 'meteor/ohif:core';
import 'meteor/ohif:viewerbase';
function isThereSeries(studies) {
if (studies.length === 1) {
const study = studies[0];
if (study.seriesList && study.seriesList.length > 1) {
return true;
}
if (study.displaySets && study.displaySets.length > 1) {
return true;
}
}
return false;
}
Template.toolbarSection.onCreated(() => {
const instance = Template.instance();
if (OHIF.uiSettings.leftSidebarOpen && isThereSeries(instance.data.studies)) {
instance.data.state.set('leftSidebar', 'studies');
}
});
Template.toolbarSection.helpers({
leftSidebarToggleButtonData() {
const instance = Template.instance();
return {
toggleable: true,
key: 'leftSidebar',
value: instance.data.state,
options: [{
value: 'studies',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-studies',
svgWidth: 15,
svgHeight: 13,
bottomLabel: 'Series'
}]
};
},
rightSidebarToggleButtonData() {
const instance = Template.instance();
// TODO: Figured out a way to handle both right panel contents
// return {
// toggleable: true,
// key: 'rightSidebar',
// value: instance.data.state,
// options: [{
// value: 'hangingprotocols',
// iconClasses: 'fa fa-cog',
// bottomLabel: 'Hanging'
// }]
// };
return {
toggleable: true,
key: 'rightSidebar',
value: instance.data.state,
options: [{
value: 'measurements',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-measurements-lesions',
svgWidth: 18,
svgHeight: 10,
bottomLabel: 'Measurements'
}]
};
},
toolbarButtons() {
const extraTools = [];
extraTools.push({
id: 'crosshairs',
title: 'Crosshairs',
classes: 'imageViewerTool',
iconClasses: 'fa fa-crosshairs'
});
extraTools.push({
id: 'magnify',
title: 'Magnify',
classes: 'imageViewerTool toolbarSectionButton',
iconClasses: 'fa fa-circle'
});
extraTools.push({
id: 'wwwcRegion',
title: 'ROI Window',
classes: 'imageViewerTool',
iconClasses: 'fa fa-square'
});
extraTools.push({
id: 'dragProbe',
title: 'Probe',
classes: 'imageViewerTool',
iconClasses: 'fa fa-dot-circle-o'
});
extraTools.push({
id: 'ellipticalRoi',
title: 'Ellipse',
classes: 'imageViewerTool',
iconClasses: 'fa fa-circle-o'
});
extraTools.push({
id: 'rectangleRoi',
title: 'Rectangle',
classes: 'imageViewerTool',
iconClasses: 'fa fa-square-o'
});
extraTools.push({
id: 'toggleDownloadDialog',
title: 'Download',
classes: 'imageViewerCommand',
iconClasses: 'fa fa-camera',
active: () => $('#downloadDialog').is(':visible')
});
extraTools.push({
id: 'invert',
title: 'Invert',
classes: 'imageViewerCommand',
iconClasses: 'fa fa-adjust'
});
extraTools.push({
id: 'rotateR',
title: 'Rotate Right',
classes: 'imageViewerCommand',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-rotate-right'
});
extraTools.push({
id: 'flipH',
title: 'Flip H',
classes: 'imageViewerCommand',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-flip-horizontal'
});
extraTools.push({
id: 'flipV',
title: 'Flip V',
classes: 'imageViewerCommand',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-flip-vertical'
});
extraTools.push({
id: 'clearTools',
title: 'Clear',
classes: 'imageViewerCommand',
iconClasses: 'fa fa-trash'
});
const buttonData = [];
buttonData.push({
id: 'stackScroll',
title: 'Stack Scroll',
classes: 'imageViewerTool',
iconClasses: 'fa fa-bars'
});
buttonData.push({
id: 'zoom',
title: 'Zoom',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-zoom'
});
buttonData.push({
id: 'wwwc',
title: 'Levels',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-levels'
});
buttonData.push({
id: 'pan',
title: 'Pan',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-pan'
});
buttonData.push({
id: 'length',
title: 'Length',
classes: 'imageViewerTool toolbarSectionButton',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-measure-temp'
});
buttonData.push({
id: 'annotate',
title: 'Annotate',
classes: 'imageViewerTool',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-measure-non-target'
});
buttonData.push({
id: 'angle',
title: 'Angle',
classes: 'imageViewerTool',
iconClasses: 'fa fa-angle-left'
});
buttonData.push({
id: 'resetViewport',
title: 'Reset',
classes: 'imageViewerCommand',
iconClasses: 'fa fa-undo'
});
if (!OHIF.uiSettings.displayEchoUltrasoundWorkflow) {
buttonData.push({
id: 'previousDisplaySet',
title: 'Previous',
classes: 'imageViewerCommand',
iconClasses: 'fa fa-toggle-up fa-fw'
});
buttonData.push({
id: 'nextDisplaySet',
title: 'Next',
classes: 'imageViewerCommand',
iconClasses: 'fa fa-toggle-down fa-fw'
});
const { isPlaying } = OHIF.viewerbase.viewportUtils;
buttonData.push({
id: 'toggleCinePlay',
title: () => isPlaying() ? 'Stop' : 'Play',
classes: 'imageViewerCommand',
iconClasses: () => ('fa fa-fw ' + (isPlaying() ? 'fa-stop' : 'fa-play')),
active: isPlaying
});
buttonData.push({
id: 'toggleCineDialog',
title: 'CINE',
classes: 'imageViewerCommand',
iconClasses: 'fa fa-youtube-play',
active: () => $('#cineDialog').is(':visible')
});
}
buttonData.push({
id: 'layout',
title: 'Layout',
iconClasses: 'fa fa-th-large',
buttonTemplateName: 'layoutButton'
});
buttonData.push({
id: 'toggleMore',
title: 'More',
classes: 'rp-x-1 rm-l-3',
svgLink: '/packages/ohif_viewerbase/assets/icons.svg#icon-tools-more',
subTools: extraTools
});
return buttonData;
},
hangingProtocolButtons() {
let buttonData = [];
buttonData.push({
id: 'previousPresentationGroup',
title: 'Prev. Stage',
iconClasses: 'fa fa-step-backward',
buttonTemplateName: 'previousPresentationGroupButton'
});
buttonData.push({
id: 'nextPresentationGroup',
title: 'Next Stage',
iconClasses: 'fa fa-step-forward',
buttonTemplateName: 'nextPresentationGroupButton'
});
return buttonData;
}
});
Template.toolbarSection.onRendered(function() {
const instance = Template.instance();
instance.$('#layout').dropdown();
if (OHIF.uiSettings.displayEchoUltrasoundWorkflow) {
OHIF.viewerbase.viewportUtils.toggleCineDialog();
}
// Set disabled/enabled tool buttons that are set in toolManager
const states = OHIF.viewerbase.toolManager.getToolDefaultStates();
const disabledToolButtons = states.disabledToolButtons;
const allToolbarButtons = $('#toolbar').find('button');
if (disabledToolButtons && disabledToolButtons.length > 0) {
for (let i = 0; i < allToolbarButtons.length; i++) {
const toolbarButton = allToolbarButtons[i];
$(toolbarButton).prop('disabled', false);
const index = disabledToolButtons.indexOf($(toolbarButton).attr('id'));
if (index !== -1) {
$(toolbarButton).prop('disabled', true);
}
}
}
});
@@ -1,13 +0,0 @@
@require '{ohif:design}/app'
.toolbarSection
theme('border-bottom', '%s solid $uiBorderColor' % $uiBorderThickness)
flex: 0 0 auto
height: $toolbarHeight
padding-top: 6px
position: relative
transition(height 300ms ease)
width: 100%
&.expanded
height: $toolbarHeight + $toolbarDrawerHeight
@@ -1,20 +0,0 @@
<template name="viewer">
{{#if and Template.subscriptionsReady}}
<div class="viewerDialogs">
{{>cineDialog}}
{{>layoutChooser}}
{{>annotationDialogs}}
<!-- Hanging Protocol dialogs -->
{{>ruleEntryDialog}}
{{>settingEntryDialog}}
{{>textEntryDialog}}
</div>
<div id="viewer">
{{>toolbarSection (clone this state=state)}}
{{>flexboxLayout (clone this state=state)}}
</div>
{{else}}
{{>loadingText}}
{{/if}}
</template>
@@ -1,184 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { Session } from 'meteor/session';
import { Template } from 'meteor/templating';
import { ReactiveDict } from 'meteor/reactive-dict';
import { Tracker } from 'meteor/tracker';
import { OHIF } from 'meteor/ohif:core';
import { MeasurementTable } from 'meteor/ohif:measurement-table';
import 'meteor/ohif:cornerstone';
import 'meteor/ohif:viewerbase';
import 'meteor/ohif:metadata';
/**
* Inits OHIF Hanging Protocol's onReady.
* It waits for OHIF Hanging Protocol to be ready to instantiate the ProtocolEngine
* Hanging Protocol will use OHIF LayoutManager to render viewports properly
*/
const initHangingProtocol = () => {
// When Hanging Protocol is ready
HP.ProtocolStore.onReady(() => {
// Gets all StudyMetadata objects: necessary for Hanging Protocol to access study metadata
const studyMetadataList = OHIF.viewer.StudyMetadataList.all();
// Caches Layout Manager: Hanging Protocol uses it for layout management according to current protocol
const layoutManager = OHIF.viewerbase.layoutManager;
// Instantiate StudyMetadataSource: necessary for Hanging Protocol to get study metadata
const studyMetadataSource = new OHIF.studies.classes.OHIFStudyMetadataSource();
// Get prior studies map
const studyPriorsMap = OHIF.studylist.functions.getStudyPriorsMap(studyMetadataList);
// Creates Protocol Engine object with required arguments
const ProtocolEngine = new HP.ProtocolEngine(layoutManager, studyMetadataList, studyPriorsMap, studyMetadataSource);
// Sets up Hanging Protocol engine
HP.setEngine(ProtocolEngine);
Session.set('ViewerReady', true);
Session.set('activeViewport', 0);
});
};
Meteor.startup(() => {
Session.setDefault('activeViewport', false);
Session.setDefault('leftSidebar', false);
Session.setDefault('rightSidebar', false);
OHIF.viewer.defaultTool = 'wwwc';
OHIF.viewer.refLinesEnabled = true;
OHIF.viewer.cine = {
framesPerSecond: 24,
loop: true
};
const viewportUtils = OHIF.viewerbase.viewportUtils;
OHIF.viewer.functionList = {
toggleCineDialog: viewportUtils.toggleCineDialog,
toggleCinePlay: viewportUtils.toggleCinePlay,
clearTools: viewportUtils.clearTools,
resetViewport: viewportUtils.resetViewport,
invert: viewportUtils.invert
};
// Create the synchronizer used to update reference lines
OHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('cornerstonenewimage', cornerstoneTools.updateImageSynchronizer);
OHIF.viewer.metadataProvider = new OHIF.cornerstone.MetadataProvider();
// Metadata configuration
const metadataProvider = OHIF.viewer.metadataProvider;
cornerstone.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));
// Instanciate viewer plugins
OHIF.viewer.measurementTable = new MeasurementTable();
});
Template.viewer.onCreated(() => {
Session.set('ViewerReady', false);
const instance = Template.instance();
// Define the OHIF.viewer.data global object
OHIF.viewer.data = OHIF.viewer.data || Session.get('ViewerData') || {};
instance.state = new ReactiveDict();
instance.state.set('leftSidebar', Session.get('leftSidebar'));
instance.state.set('rightSidebar', Session.get('rightSidebar'));
if (OHIF.viewer.data && OHIF.viewer.data.loadedSeriesData) {
OHIF.log.info('Reloading previous loadedSeriesData');
OHIF.viewer.loadedSeriesData = OHIF.viewer.data.loadedSeriesData;
} else {
OHIF.log.info('Setting default viewer data');
OHIF.viewer.loadedSeriesData = {};
OHIF.viewer.data.loadedSeriesData = OHIF.viewer.loadedSeriesData;
// Update the viewer data object
OHIF.viewer.data.viewportColumns = 1;
OHIF.viewer.data.viewportRows = 1;
OHIF.viewer.data.activeViewport = 0;
}
// Store the viewer data in session for further user
Session.setPersistent('ViewerData', OHIF.viewer.data);
Session.set('activeViewport', OHIF.viewer.data.activeViewport || 0);
// @TypeSafeStudies
// Clears OHIF.viewer.Studies collection
OHIF.viewer.Studies.removeAll();
// @TypeSafeStudies
// Clears OHIF.viewer.StudyMetadataList collection
OHIF.viewer.StudyMetadataList.removeAll();
OHIF.viewer.data.studyInstanceUids = [];
instance.data.studies.forEach(study => {
const studyMetadata = new OHIF.metadata.StudyMetadata(study, study.studyInstanceUid);
let displaySets = study.displaySets;
if (!study.displaySets) {
displaySets = OHIF.viewerbase.sortingManager.getDisplaySets(studyMetadata);
study.displaySets = displaySets;
}
studyMetadata.setDisplaySets(displaySets);
study.selected = true;
OHIF.viewer.Studies.insert(study);
OHIF.viewer.StudyMetadataList.insert(studyMetadata);
OHIF.viewer.data.studyInstanceUids.push(study.studyInstanceUid);
// Updates WADO-RS metaDataManager
OHIF.viewerbase.updateMetaDataManager(study);
});
// Call Viewer plugins onCreated functions
if(typeof OHIF.viewer.measurementTable.onCreated === 'function') {
OHIF.viewer.measurementTable.onCreated(instance);
}
});
Template.viewer.onRendered(function() {
const instance = Template.instance();
this.autorun(function() {
// To make sure ohif viewerMain is rendered before initializing Hanging Protocols
const isOHIFViewerMainRendered = Session.get('OHIFViewerMainRendered');
// To avoid first run
if (isOHIFViewerMainRendered) {
// To run only when OHIFViewerMainRendered dependency has changed.
// because initHangingProtocol can have other reactive components
Tracker.nonreactive(initHangingProtocol);
}
});
// Call Viewer plugins onRendered functions
if(typeof OHIF.viewer.measurementTable.onRendered === 'function') {
OHIF.viewer.measurementTable.onRendered(instance);
}
});
Template.viewer.events( Object.assign({
// Viewer Events
},
MeasurementTable.measurementEvents
));
Template.viewer.onDestroyed(function() {
if(typeof OHIF.viewer.measurementTable.onDestroyed === 'function') {
OHIF.viewer.measurementTable.onDestroyed();
}
});
Template.viewer.helpers({
state() {
return Template.instance().state;
}
});
@@ -1,13 +0,0 @@
@import "{ohif:design}/app"
body
background-color: black
#viewer
background-color: black
height: 100%
width: 100%
.loadingTextDiv
theme('color', '$textSecondaryColor')
font-size: 30px
-38
View File
@@ -1,38 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { OHIF } from 'meteor/ohif:core';
import { cornerstoneWADOImageLoader } from 'meteor/ohif:cornerstone';
Meteor.startup(function() {
const maxWebWorkers = Math.max(navigator.hardwareConcurrency - 1, 1);
const config = {
maxWebWorkers: maxWebWorkers,
startWebWorkersOnDemand: true,
webWorkerPath: OHIF.utils.absoluteUrl('packages/ohif_cornerstone/public/js/cornerstoneWADOImageLoaderWebWorker.es5.js'),
taskConfiguration: {
decodeTask: {
loadCodecsOnStartup: true,
initializeCodecsOnStartup: false,
codecsPath: OHIF.utils.absoluteUrl('packages/ohif_cornerstone/public/js/cornerstoneWADOImageLoaderCodecs.es5.js'),
usePDFJS: false
}
}
};
cornerstoneWADOImageLoader.webWorkerManager.initialize(config);
cornerstoneWADOImageLoader.configure({
beforeSend: function(xhr) {
const headers = OHIF.DICOMWeb.getAuthorizationHeader();
if (headers.Authorization) {
xhr.setRequestHeader("Authorization", headers.Authorization);
}
}
});
});
if (Meteor.settings &&
Meteor.settings.public &&
Meteor.settings.public.clientOnly === true) {
Meteor.disconnect();
}
-3
View File
@@ -1,3 +0,0 @@
import loglevel from 'loglevel';
log = loglevel.getLogger('OHIFViewer');
log.setLevel('info');
-69
View File
@@ -1,69 +0,0 @@
import { Meteor } from "meteor/meteor";
import { Router } from 'meteor/clinical:router';
import { OHIF } from 'meteor/ohif:core';
Router.configure({
layoutTemplate: 'layout',
});
// If we are running a disconnected client similar to the StandaloneViewer
// (see https://docs.ohif.org/standalone-viewer/usage.html) we don't want
// our routes to get stuck while waiting for Pub / Sub.
//
// In this case, the developer is required to add Servers and specify
// a CurrentServer with some other approach (e.g. a separate script).
if (Meteor.settings &&
Meteor.settings.public &&
Meteor.settings.public.clientOnly !== true) {
Router.waitOn(function() {
return [
Meteor.subscribe('servers'),
Meteor.subscribe('currentServer')
];
});
}
Router.onBeforeAction('loading');
Router.route('/', function() {
Router.go('studylist', {}, { replaceState: true });
}, { name: 'home' });
Router.route('/studylist', function() {
this.render('ohifViewer', { data: { template: 'studylist' } });
}, { name: 'studylist' });
Router.route('/viewer/:studyInstanceUids', function() {
const studyInstanceUids = this.params.studyInstanceUids.split(';');
OHIF.viewerbase.renderViewer(this, { studyInstanceUids }, 'ohifViewer');
}, { name: 'viewerStudies' });
// OHIF #98 Show specific series of study
Router.route('/study/:studyInstanceUid/series/:seriesInstanceUids', function () {
const studyInstanceUid = this.params.studyInstanceUid;
const seriesInstanceUids = this.params.seriesInstanceUids.split(';');
OHIF.viewerbase.renderViewer(this, { studyInstanceUids: [studyInstanceUid], seriesInstanceUids }, 'ohifViewer');
}, { name: 'viewerSeries' });
Router.route('/IHEInvokeImageDisplay', function() {
const requestType = this.params.query.requestType;
if (requestType === "STUDY") {
const studyInstanceUids = this.params.query.studyUID.split(';');
OHIF.viewerbase.renderViewer(this, {studyInstanceUids}, 'ohifViewer');
} else if (requestType === "STUDYBASE64") {
const uids = this.params.query.studyUID;
const decodedData = window.atob(uids);
const studyInstanceUids = decodedData.split(';');
OHIF.viewerbase.renderViewer(this, {studyInstanceUids}, 'ohifViewer');
} else if (requestType === "PATIENT") {
const patientUids = this.params.query.patientID.split(';');
Router.go('studylist', {}, {replaceState: true});
} else {
Router.go('studylist', {}, {replaceState: true});
}
});
-367
View File
@@ -1,367 +0,0 @@
{
"name": "ohifviewer",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/runtime": {
"version": "7.0.0-beta.51",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.51.tgz",
"integrity": "sha1-SLjtGDBwNMZiD2Q1FGUMoszAFlo=",
"requires": {
"core-js": "^2.5.7",
"regenerator-runtime": "^0.11.1"
}
},
"agent-base": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
"integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
"dev": true,
"requires": {
"es6-promisify": "^5.0.0"
}
},
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
"dev": true
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"buffer-from": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
"integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==",
"dev": true
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
"concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
}
},
"core-js": {
"version": "2.5.7",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
"integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"es6-promise": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
"integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
"dev": true
},
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"dev": true,
"requires": {
"es6-promise": "^4.0.3"
}
},
"extract-zip": {
"version": "1.6.7",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
"integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
"dev": true,
"requires": {
"concat-stream": "1.6.2",
"debug": "2.6.9",
"mkdirp": "0.5.1",
"yauzl": "2.4.1"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
}
}
},
"fd-slicer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
"dev": true,
"requires": {
"pend": "~1.2.0"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"https-proxy-agent": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
"dev": true,
"requires": {
"agent-base": "^4.1.0",
"debug": "^3.1.0"
}
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"loglevel": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
"integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po="
},
"mime": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
"integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
"dev": true
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
"dev": true
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true
},
"progress": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
"integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
"dev": true
},
"proxy-from-env": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
"integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=",
"dev": true
},
"puppeteer": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.5.0.tgz",
"integrity": "sha512-eELwFtFxL+uhmg4jPZOZXzSrPEYy4CaYQNbcchBbfxY+KjMpnv6XGf/aYWaQG49OTpfi2/DMziXtDM8XuJgoUA==",
"dev": true,
"requires": {
"debug": "^3.1.0",
"extract-zip": "^1.6.6",
"https-proxy-agent": "^2.2.1",
"mime": "^2.0.3",
"progress": "^2.0.0",
"proxy-from-env": "^1.0.0",
"rimraf": "^2.6.1",
"ws": "^5.1.1"
}
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"requires": {
"glob": "^7.0.5"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
},
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"ws": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
"integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
"dev": true,
"requires": {
"async-limiter": "~1.0.0"
}
},
"yauzl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
"dev": true,
"requires": {
"fd-slicer": "~1.0.1"
}
}
}
}
-18
View File
@@ -1,18 +0,0 @@
{
"name": "ohifviewer",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"@babel/runtime": "7.0.0-beta.51",
"loglevel": "^1.6.1"
},
"devDependencies": {
"puppeteer": "^1.5.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "MIT"
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

-7
View File
@@ -1,7 +0,0 @@
active-entry
hipaa-audit-log
meteor-stale-session
orthanc-remote
ohif-cornerstone
ohif-viewerbase/client/compatibility
ohif-core/client/lib/third-party/
-47
View File
@@ -1,47 +0,0 @@
{
"parser": "babel-eslint",
"parserOptions": {
"allowImportExportEverywhere": true
},
"plugins": [
"meteor"
],
"env": {
/* Allows global vars from the Meteor environment to pass and enables certain rules */
"meteor": true,
"node": true,
"browser": true
},
"extends": [
"airbnb",
"plugin:meteor/recommended"
],
"settings": {
"import/resolver": "meteor"
},
"rules": {
"meteor/no-session": 0, // We are actually using Session for now...
"meteor/eventmap-params": [2, {"eventParamName": "event"}],
"meteor/eventmap-params": [2, {"templateInstanceParamName": "instance"}],
"import/no-extraneous-dependencies": 0,
"import/no-unresolved": 0, // There are a bunch of ESLint problems with Meteor's resolver
"import/no-duplicates": 0, // So we are disabling these for now
"import/extensions": 0,
"import/no-absolute-path": 0,
"no-console": 0, // For development
"no-plusplus": ["error", { "allowForLoopAfterthoughts": true }],
"indent": ["error", 4],
"new-cap": 0, // Until Match has an exception
"func-names": 0, // This is a bit of an annoying rule
"no-underscore-dangle": 0, // Doesn't seem to mesh with _id for MongoDB Ids (or SimpleSchema)
"max-len": 0, // TODO: re-enable the rules below and fix all of the errors
"consistent-return": 0,
"no-param-reassign": 0,
"no-mixed-operators": 0,
"arrow-body-style": 0,
"valid-typeof": 0,
"import/prefer-default-export": 0
//"no-undef": 0
},
"globals": {}
}
-13
View File
@@ -1,13 +0,0 @@
language: node_js
node_js:
- "0.10"
#sudo: required
sudo: required
env:
global:
- METEOR_ENV=development
before_install:
- "curl -L http://git.io/ejPSng | /bin/sh"
-34
View File
@@ -1,34 +0,0 @@
## Contributing
**Submit your Pull Request on a Feature Branch**
- To ensure your pull-request has the greatest chance of getting merged in, please submit it on a feature branch rather than directly to master.
- Please see [A successful Git branching model](http://nvie.com/posts/a-successful-git-branching-model/) for more details.
**Quality Assurance**
- Pull Requests will be generally accepted as long as the QA tests pass on [Circle CI](https://circleci.com/gh/clinical-meteor/clinical-active-entry).
- Begin a Pull Request by logging an Issue for discussion.
- Next, clone the package into a project for local development.
- Use ``git checkout -b newfeature`` to create a new branch.
- Run the package verification tests to ensure that the test runner works.
- Add an it() clause at the bottom of the [activeEntryTests.js](https://github.com/clinical-meteor/clinical-active-entry/blob/master/tests/gagarin/activeEntryTests.js) file for each new feature you wish to implement.
- Sketch out a test script for a feature.
- Run the verification tests, and confirm that the new test fails.
- Update the package with the new feature until the new test passes.
- Push the package to the repo on GitHub.
- Submit a pull-request.
- If the PR passes tests on Circle CI, we'll merge it in!
**Reference Implementation**
- Please see the [ChecklistManifest](http://checklist-manifesto.meteor.com/) and it's [source code](https://github.com/clinical-meteor/checklist-manifesto) for a reference implementation of the ActiveEntry package. It's being built as a workqueue, and is being designed to be FDA, HIPAA, and HL7 FHIR compliant.
**Feature Toggling**
- In general, it's a best practice to implement features that can be enabled/disabled. Some people will want a feature; others will not. The best way to toggle features is adding them to a config file, which is what the [ActiveEntry](https://github.com/clinical-meteor/clinical-active-entry/blob/master/lib/ActiveEntry.js) object is for.
- It's recommended that fields be added to the ActiveEntryConfig object that can be used to enabled/disable the feature you are implementing.
- The ActiveEntryConfig object can be roughly considered as analogous to the ``props`` field that is passed into React templates.
**Theming and Styling**
- Different apps require different presentation/style layers, so Clinical Meteor has implemented a [Theme](https://github.com/clinical-meteor/clinical-theming/blob/master/objects/Theme.js) object which manages theming. Generally speaking, we're trying to avoid the inclusion of third-party component libraries, UI widgets, and CSS frameworks, and keeping the Clinical Meteor packages as close to the default HTML that Blaze produces as possible (while using line styles for animation effects).
- Generally speaking, Bootstrap HTML structure in acceptable in designing pages, but avoid including global CSS files, and keep any CSS locally scoped using LESS nested classes. This approach allows people to add the Bootstrap library if they want it, prevents cascading leaks, and allows more fine-grained control over CSS to implement animation effects.
- Pull requests that include visual integration with other projects are acceptable, but please submit an issue for discussion before submitting PRs with wholesale changes that include Jade, Material UI, React, etc.
- The ActiveEntry pages are designed to be used in an IronRouter Layout template. As such, no height/width constraints are provided. It's assumed that the layout template will take care of such things. But basic padding/margin is provided.
-130
View File
@@ -1,130 +0,0 @@
## clinical:active-entry
This package provides the SignIn, SignUp, and ForgotPassword pages.
[![Circle CI](https://circleci.com/gh/clinical-meteor/active-entry/tree/master.svg?style=svg)](https://circleci.com/gh/clinical-meteor/active-entry/tree/master)
===============================
#### Installation
````
meteor add clinical:active-entry
````
===============================
#### Entry Flowchart
The following diagram represents the entry workflow that is being implemented in this package. This package is under active development, and is about half completed. Pull requests which help implement the following workflow will be fast-tracked and accepted into the package.
![entry-workflow](https://raw.githubusercontent.com/clinical-meteor/active-entry/master/docs/Entry%20Workflow.png)
===============================
#### Routing API
````
/entrySignIn
/entrySignUp
/forgotPassword
````
===============================
#### Component API
````
{{> entrySignIn }}
{{> entrySignUp }}
{{> forgotPassword }}
````
===============================
#### ActiveEntry Configuration
````js
if(Meteor.isClient){
ActiveEntry.configure({
logo: {
url: "/mini-circles.png",
displayed: true
},
signIn: {
displayFullName: true,
destination: "/table/users"
},
signUp: {
destination: "/table/users"
},
themeColors: {
primary: ""
}
});
}
if(Meteor.isServer){
Accounts.emailTemplates.siteName = "AwesomeSite";
Accounts.emailTemplates.from = "AwesomeSite Admin <accounts@example.com>";
Accounts.emailTemplates.enrollAccount.subject = function (user) {
return "Welcome to Awesome Town, " + user.profile.name;
};
Accounts.emailTemplates.enrollAccount.text = function (user, url) {
return "You have been selected to participate in building a better future!"
+ " To activate your account, simply click the link below:\n\n"
+ url;
};
Meteor.startup(function(){
process.env.MAIL_URL = 'smtp://sandboxid.mailgun.org:mypassword@smtp.mailgun.org:587';
})
}
````
Alternatively, you may want to set the ``MAIL_URL`` via an external environment variable, particularly if you're using a SaaS hosting provider.
````sh
MAIL_URL = 'smtp://sandboxid.mailgun.org:mypassword@smtp.mailgun.org:587' meteor
````
===============================
#### Local Development
Simply clone the repository into your ``/packages`` directory. You can also specify the packages you want to develop locally in your ``.git-packages.json`` file, and use starrynight to fetch them.
````bash
# clone a single package into your application
git clone http://github.com/clinical-meteor/clinical-active-entry packages/active-entry
# fetch all the packages listed in git-packages.json
starrynight fetch
````
===============================
#### Quality Assurance Testing
There are two types of quality assurance tests you can run: verification and validation tests. Verification tests are similar to unit or integration tests; and can run either at the application or package level. Validation tests are application-wide, but often require commands exposed in packages. So you'll need to run the ``autoconfig`` command to scan the filesystem for validation commands. See [http://starrynight.meteor.com/](http://starrynight.meteor.com/) for more details.
````bash
# install the testing utility
npm install -g starrynight
# verification testing (a.k.a. package-level unit/integration testing)
starrynight run-tests --type package-verification
#to run validation tests, you'll need an ``.initializeUsers()`` function
meteor add clinical:accounts-housemd
#validation testing (a.k.a. application acceptance/end-to-end testing)
starrynight autoscan
starrynight run-tests --type validation
````
===============================
#### Contributing
See our [notes on contributing](https://github.com/clinical-meteor/clinical-active-entry/blob/master/Contributing.md).
===============================
#### Licensing
![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)
-84
View File
@@ -1,84 +0,0 @@
## Customize the test machine
machine:
node:
version: 0.10.33
# Timezone
timezone:
America/Los_Angeles # Set the timezone
# Add some environment variables
environment:
CIRCLE_ENV: test
CXX: g++-4.8
DISPLAY: :99.0
NPM_PREFIX: /home/ubuntu/nvm/v0.10.33
## Customize checkout
checkout:
post:
#- git submodule sync
#- git submodule update --init --recursive # use submodules
#general:
# build_dir: helloworld
## Customize dependencies
dependencies:
cache_directories:
- ~/.meteor # relative to the user's home directory
- ~/nvm/v0.10.33/lib/node_modules/starrynight
- ~/nvm/v0.10.33/bin/starrynight
pre:
# Install Starrynight unless it is cached
- if [ ! -e ~/nvm/v0.10.33/bin/starrynight ]; then npm install -g starrynight; else echo "Starrynight seems to be cached"; fi;
# Install Meteor
- mkdir -p ${HOME}/.meteor
# If Meteor is already cached, do not need to build it again.
- if [ ! -e ${HOME}/.meteor/meteor ]; then curl https://install.meteor.com | /bin/sh; else echo "Meteor seems to be cached"; fi;
# Link the meteor executable into /usr/bin
- sudo ln -s $HOME/.meteor/meteor /usr/bin/meteor
# Check if the helloworld directory already exists, if it doesn't, create the helloworld app
# The following doesn't work, because it should be checking ${HOME}/active-entry/helloworld
# - if [ ! -e ${HOME}/helloworld ]; then meteor create --release METEOR@1.1.0.3 helloworld; else echo "helloworld app seems to be cached"; fi;
override:
- cd ${HOME} && meteor create --release METEOR@1.1.0.3 helloworld
- cd ${HOME}/helloworld
- cd ${HOME}/helloworld && ls -la
- cd ${HOME}/helloworld && rm helloworld.*
- cd ${HOME}/helloworld && mkdir packages && mkdir packages/active-entry
- cp -R * ${HOME}/helloworld/packages/active-entry
- cd ${HOME}/helloworld && meteor add anti:gagarin@0.4.11 accounts-base accounts-password session meteor-platform clinical:user-model clinical:active-entry
- cd ${HOME}/helloworld && starrynight autoconfig
- cd ${HOME}/helloworld && meteor list
- cat tests/gagarin/activeEntryTests.js
- ls -la
- cd ~ && ls -la
- cd ${HOME} && pwd
- cd ${HOME} && ls -la
- cd ${HOME}/helloworld && ls -la
## Customize test commands
test:
pre:
- cd helloworld && meteor:
background: true
- sleep 30
override:
- cd ${HOME}/helloworld && starrynight run-tests --type package-verification
## Customize deployment commands
#deployment:
# production:
# branch: master
# commands:
# - printf "<Meteor username>\n<Meteor password>\n" | meteor deploy circlecivelocity.meteor.com
## Custom notifications
#notify:
#webhooks:
# A list of hashes representing hooks. Only the url field is supported.
#- url: https://someurl.com/hooks/circle
@@ -1,48 +0,0 @@
<template name="changePassword">
<div id="changePassword" class="page entryPage" style="{{getOpacityWithCorner}}">
<div class="content-scrollable">
<div class="wrapper-auth">
<div class="entryLogo" style="background-image: url('{{getLogoUrl}}')"></div>
<h1 id="changePasswordPageTitle" class="title-auth">Change Password</h1>
<div id="changePasswordPageMessage" class="subtitle-auth" style="{{getChangePasswordMessageColor}}">{{getChangePasswordMessage}}</div>
<form>
{{#if changePasswordErrorMessages}}
<div id="errorMessages" class="list-errors">
{{#each changePasswordErrorMessages}}
<div class="alert alert-danger list-item">{{this}}</div>
{{/each}}
</div>
{{/if}}
<div class="input-symbol">
<input id="changePasswordPageOldPasswordInput" type="password" name="oldPassword" placeholder="Old Password" style="{{getPasswordStyling}}" />
<span class="fa fa-lock" title="Password"></span>
</div>
<br>
<br>
<div class="input-symbol">
<input id="changePasswordPagePasswordInput" type="password" name="password" placeholder="Password" style="{{getPasswordStyling}}" />
<span class="fa fa-lock" title="Password"></span>
</div>
<br>
<br>
<div class="input-symbol">
<input id="changePasswordPagePasswordConfirmInput" type="password" name="confirm" placeholder="Confirm Password" style="{{getConfirmPasswordStyling}}" />
<span class="fa fa-lock" title="Confirm Password"></span>
</div>
<br><br>
<button id="changePasswordButton" type="submit" class="btn-gray btn-main btn-large" style="{{getButtonColor}}">Change Password</button>
<br><br>
</form>
</div>
</div>
</div>
</template>
@@ -1,100 +0,0 @@
//==========================================
Router.route('/changePassword', {
name: "changePassword",
template: "changePassword"
});
Template.changePassword.helpers({
getChangePasswordMessageColor: function (){
if (ActiveEntry.errorMessages.get('changePasswordError')) {
return "color: #a94442; background-color: #f2dede; border-color: #ebccd1;"
} else {
return "color: black;"
}
},
getChangePasswordMessage: function (){
if (ActiveEntry.errorMessages.get('changePasswordError')) {
return ActiveEntry.errorMessages.get('changePasswordError');
} else {
return Session.get('defaultSignInMessage');
}
},
getPasswordStyling: function () {
if (ActiveEntry.errorMessages.equals('password', "Password is required")) {
return "border: 1px solid #a94442";
} else if (ActiveEntry.errorMessages.equals('password', "Password is weak")) {
return "border: 1px solid #f2dede";
} else if (ActiveEntry.errorMessages.equals('password', "Password present")) {
return "border: 1px solid green";
} else {
return "border: 1px solid gray";
}
},
getConfirmPasswordStyling: function () {
if (ActiveEntry.errorMessages.equals('confirm', "Password is required")) {
return "border: 1px solid #a94442";
} else if (ActiveEntry.errorMessages.equals('confirm', "Passwords do not match")) {
return "border: 1px solid #a94442";
} else if (ActiveEntry.errorMessages.equals('confirm', "Password is weak")) {
return "border: 1px solid #f2dede";
} else if (ActiveEntry.errorMessages.equals('confirm', "Passwords match")) {
return "border: 1px solid green";
} else {
return "border: 1px solid gray";
}
},
changePasswordErrorMessages: function() {
var allErrorMessages = Object.keys(ActiveEntry.errorMessages.all()).filter(function(key) {
return (key === "password" || key === "confirm") && ActiveEntry.errorMessages.get(key);
});
if (allErrorMessages.length > 0) {
var errorMessage = ActiveEntry.errorMessages.get(allErrorMessages[0]);
if (errorMessage) {
return [errorMessage];
}
}
return;
}
});
Template.changePassword.events({
'change, keyup #changePasswordPagePasswordInput': function (event, template) {
var password = $('[name="password"]').val();
var confirmPassword = $('[name="confirm"]').val();
ActiveEntry.verifyPassword(password);
ActiveEntry.errorMessages.set('changePasswordError', null);
},
'change, keyup #changePasswordPagePasswordConfirmInput': function (event, template) {
var password = $('[name="password"]').val();
var confirmPassword = $('[name="confirm"]').val();
ActiveEntry.verifyConfirmPassword(password, confirmPassword);
ActiveEntry.errorMessages.set('changePasswordError', null);
},
"submit": function (event, template) {
event.preventDefault();
var oldPassword = $('[name="oldPassword"]').val();
var password = $('[name="password"]').val();
var confirmPassword = $('[name="confirm"]').val();
ActiveEntry.verifyConfirmPassword(password, confirmPassword);
ActiveEntry.errorMessages.set('changePasswordError', null);
if (ActiveEntry.errorMessages.get('password') || ActiveEntry.errorMessages.get('confirm') || !oldPassword) {
return;
}
ActiveEntry.changePassword(oldPassword, password);
}
});
@@ -1,5 +0,0 @@
#changePassword{
input{
padding-left: 40px;
}
}
@@ -1,52 +0,0 @@
/**
* @summary Determines if a block of code should be displayed based on whether the logo is set to be displayed.
* @locus Client
* @memberOf Entry
* @name {{logoIsDisplayed}}
* @version 1.2.3
* @returns {Boolean}
* @example
* ```html
* {{#if logoIsDisplayed}}
* <div class="entryLogo" style="background-image: url('{{logoUrl}}')"></div>
* {{/if}}
* ```
*/
Template.registerHelper("logoIsDisplayed", function (argument){
var config = Session.get('Photonic.ActiveEntry');
if(config && config.logo && config.logo.displayed){
return config.logo.displayed;
}else{
return false;
}
});
/**
* @summary Retruns the Url of the logo asset.
* @locus Client
* @memberOf Entry
* @name {{logoUrl}}
* @version 1.2.3
* @returns {String}
* @example
* ```html
* {{#if logoIsDisplayed}}
* <div class="entryLogo" style="background-image: url('{{logoUrl}}')"></div>
* {{/if}}
* ```
*/
Template.registerHelper("logoUrl", function (argument){
var config = Session.get('Photonic.ActiveEntry');
if(config && config.logo && config.logo.url){
return config.logo.url;
}else{
return "";
}
});
Template.registerHelper("getButtonColor", function (argument){
return "background-color: " + Theme.getPaletteColor("colorB") + "; ";
});
Loaded 100 of 1761 files, more files were not shown because too many files have changed in this diff. Show more