Compare commits
80 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ba2916cf5 | ||
|
|
4736ad5620 | ||
|
|
44f562e24c | ||
|
|
8683e1e8ff | ||
|
|
f86eb5e8f2 | ||
|
|
64fd724455 | ||
|
|
b2dfb6e0f7 | ||
|
|
7c043b46b4 | ||
|
|
62932b3e80 | ||
|
|
7a7b2774e6 | ||
|
|
1556b3bbf8 | ||
|
|
199db68674 | ||
|
|
d74b6fb826 | ||
|
|
aeac900496 | ||
|
|
835fec7f32 | ||
|
|
4c202ed064 | ||
|
|
e751e8fab8 | ||
|
|
ae795ea97d | ||
|
|
d90c70cab5 | ||
|
|
1a8fd13896 | ||
|
|
0026801b62 | ||
|
|
395315ea4c | ||
|
|
4664f673d6 | ||
|
|
a8c4534b33 | ||
|
|
e4a3510c86 | ||
|
|
d28f332312 | ||
|
|
37f60ba0af | ||
|
|
d64cdc429e | ||
|
|
e06e8304d3 | ||
|
|
0e862c69db | ||
|
|
fbdb61bcb2 | ||
|
|
3acea218fb | ||
|
|
a521ce31ce | ||
|
|
67e2fd39a3 | ||
|
|
253620650b | ||
|
|
31357ea9b5 | ||
|
|
b8baae7c25 | ||
|
|
5544c57c37 | ||
|
|
6b523cb50d | ||
|
|
579c2b41d1 | ||
|
|
9449ae4314 | ||
|
|
4386b5c960 | ||
|
|
fe3ee3010f | ||
|
|
ee5530183e | ||
|
|
413214786d | ||
|
|
0b62b720c5 | ||
|
|
c3fead1ca9 | ||
|
|
bc8d505a0a | ||
|
|
ab4067144f | ||
|
|
575d11ac5b | ||
|
|
aa53d3258c | ||
|
|
dc672bf38d | ||
|
|
65a855d99b | ||
|
|
99c1d0220d | ||
|
|
dab0b5e0e3 | ||
|
|
ea3f7d5657 | ||
|
|
3c812792bb | ||
|
|
ff21408440 | ||
|
|
fd720bd4d7 | ||
|
|
2279e555a3 | ||
|
|
91ee615aee | ||
|
|
f8d9bbef8a | ||
|
|
4fcf544abe | ||
|
|
2ba0e95fe8 | ||
|
|
91564bfa06 | ||
|
|
83e627e5c9 | ||
|
|
2fbbb4a8e2 | ||
|
|
c05058a0f5 | ||
|
|
2429294dda | ||
|
|
2234869b11 | ||
|
|
96686850cb | ||
|
|
35dc82e120 | ||
|
|
f5d6674b62 | ||
|
|
f3009c7a45 | ||
|
|
e8969fba11 | ||
|
|
f175d4b96b | ||
|
|
e250ac0c50 | ||
|
|
3e1e456cc2 | ||
|
|
e58ba39a60 | ||
|
|
b73ea99971 |
19
.babelrc
19
.babelrc
@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
version: 2
|
version: 2.1
|
||||||
|
|
||||||
### ABOUT
|
### ABOUT
|
||||||
#
|
#
|
||||||
@ -9,17 +9,26 @@ version: 2
|
|||||||
# create pull request previews and to update `https://docs.ohif.org`
|
# create pull request previews and to update `https://docs.ohif.org`
|
||||||
###
|
###
|
||||||
|
|
||||||
|
orbs:
|
||||||
|
codecov: codecov/codecov@1.0.5
|
||||||
|
|
||||||
defaults: &defaults
|
defaults: &defaults
|
||||||
working_directory: ~/repo
|
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/node:10.15.1
|
- image: circleci/node:10.16.0
|
||||||
|
working_directory: ~/repo
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_and_test:
|
PR_UNIT_TESTS:
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# Download and cache dependencies
|
# Enable yarn workspaces
|
||||||
- checkout
|
- run: yarn config set workspaces-experimental true
|
||||||
|
|
||||||
|
# Checkout code and ALL Git Tags
|
||||||
|
- checkout:
|
||||||
|
post:
|
||||||
|
- git fetch --all
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
name: Restore Yarn and Cypress Package Cache
|
name: Restore Yarn and Cypress Package Cache
|
||||||
keys:
|
keys:
|
||||||
@ -35,19 +44,100 @@ jobs:
|
|||||||
paths:
|
paths:
|
||||||
- ~/.cache ## Cache yarn and Cypress
|
- ~/.cache ## Cache yarn and Cypress
|
||||||
key: yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
|
key: yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
|
||||||
# Build & Test
|
|
||||||
- run: yarn build:package:ci
|
# RUN TESTS
|
||||||
# https://www.viget.com/articles/using-junit-on-circleci-2-0-with-jest-and-eslint/
|
|
||||||
- run:
|
- run:
|
||||||
name: 'JavaScript Test Suite'
|
name: "JavaScript Test Suite"
|
||||||
command: yarn test:unit:ci
|
command: yarn run test:unit:ci
|
||||||
environment:
|
|
||||||
JEST_JUNIT_OUTPUT: 'reports/junit/js-test-results.xml'
|
# PLATFORM/VIEWER
|
||||||
# Store result
|
- run:
|
||||||
- store_test_results:
|
name: "VIEWER: Combine report output"
|
||||||
path: reports/junit
|
command: |
|
||||||
- store_artifacts:
|
viewerCov="/home/circleci/repo/platform/viewer/coverage"
|
||||||
path: reports/junit
|
touch "${viewerCov}/reports"
|
||||||
|
cat "${viewerCov}/clover.xml" >> "${viewerCov}/reports"
|
||||||
|
echo "\<<\<<\<< EOF" >> "${viewerCov}/reports"
|
||||||
|
cat "${viewerCov}/lcov.info" >>"${viewerCov}/reports"
|
||||||
|
echo "\<<\<<\<< EOF" >> "${viewerCov}/reports"
|
||||||
|
- codecov/upload:
|
||||||
|
file: "/home/circleci/repo/platform/viewer/coverage/reports"
|
||||||
|
flags: "viewer"
|
||||||
|
|
||||||
|
# PLATFORM/CORE
|
||||||
|
- run:
|
||||||
|
name: "CORE: Combine report output"
|
||||||
|
command: |
|
||||||
|
coreCov="/home/circleci/repo/platform/core/coverage"
|
||||||
|
touch "${coreCov}/reports"
|
||||||
|
cat "${coreCov}/clover.xml" >> "${coreCov}/reports"
|
||||||
|
echo "\<<\<<\<< EOF" >> "${coreCov}/reports"
|
||||||
|
cat "${coreCov}/lcov.info" >> "${coreCov}/reports"
|
||||||
|
echo "\<<\<<\<< EOF" >> "${coreCov}/reports"
|
||||||
|
- codecov/upload:
|
||||||
|
file: "/home/circleci/repo/platform/core/coverage/reports"
|
||||||
|
flags: "core"
|
||||||
|
|
||||||
|
MERGE_UNIT_TESTS:
|
||||||
|
<<: *defaults
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# Enable yarn workspaces
|
||||||
|
- run: yarn config set workspaces-experimental true
|
||||||
|
|
||||||
|
# Checkout code and ALL Git Tags
|
||||||
|
- checkout:
|
||||||
|
post:
|
||||||
|
- git fetch --all
|
||||||
|
- restore_cache:
|
||||||
|
name: Restore Yarn and Cypress Package Cache
|
||||||
|
keys:
|
||||||
|
# when lock file changes, use increasingly general patterns to restore cache
|
||||||
|
- yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
|
||||||
|
- yarn-packages-v1-{{ .Branch }}-
|
||||||
|
- yarn-packages-v1-
|
||||||
|
- run:
|
||||||
|
name: Install Dependencies
|
||||||
|
command: yarn install --frozen-lockfile
|
||||||
|
- save_cache:
|
||||||
|
name: Save Yarn Package Cache
|
||||||
|
paths:
|
||||||
|
- ~/.cache ## Cache yarn and Cypress
|
||||||
|
key: yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
|
||||||
|
|
||||||
|
# RUN TESTS
|
||||||
|
- run:
|
||||||
|
name: "JavaScript Test Suite"
|
||||||
|
command: yarn run test:unit:ci
|
||||||
|
|
||||||
|
# PLATFORM/VIEWER
|
||||||
|
- run:
|
||||||
|
name: "VIEWER: Combine report output"
|
||||||
|
command: |
|
||||||
|
viewerCov="/home/circleci/repo/platform/viewer/coverage"
|
||||||
|
touch "${viewerCov}/reports"
|
||||||
|
cat "${viewerCov}/clover.xml" >> "${viewerCov}/reports"
|
||||||
|
echo "\<<\<<\<< EOF" >> "${viewerCov}/reports"
|
||||||
|
cat "${viewerCov}/lcov.info" >>"${viewerCov}/reports"
|
||||||
|
echo "\<<\<<\<< EOF" >> "${viewerCov}/reports"
|
||||||
|
- codecov/upload:
|
||||||
|
file: "/home/circleci/repo/platform/viewer/coverage/reports"
|
||||||
|
flags: "viewer"
|
||||||
|
|
||||||
|
# PLATFORM/CORE
|
||||||
|
- run:
|
||||||
|
name: "CORE: Combine report output"
|
||||||
|
command: |
|
||||||
|
coreCov="/home/circleci/repo/platform/core/coverage"
|
||||||
|
touch "${coreCov}/reports"
|
||||||
|
cat "${coreCov}/clover.xml" >> "${coreCov}/reports"
|
||||||
|
echo "\<<\<<\<< EOF" >> "${coreCov}/reports"
|
||||||
|
cat "${coreCov}/lcov.info" >> "${coreCov}/reports"
|
||||||
|
echo "\<<\<<\<< EOF" >> "${coreCov}/reports"
|
||||||
|
- codecov/upload:
|
||||||
|
file: "/home/circleci/repo/platform/core/coverage/reports"
|
||||||
|
flags: "core"
|
||||||
|
|
||||||
# Persist :+1:
|
# Persist :+1:
|
||||||
- persist_to_workspace:
|
- persist_to_workspace:
|
||||||
root: ~/repo
|
root: ~/repo
|
||||||
@ -167,7 +257,7 @@ jobs:
|
|||||||
key: yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
|
key: yarn-packages-v1-{{ .Branch }}-{{ checksum "yarn.lock" }}
|
||||||
# Build & Test
|
# Build & Test
|
||||||
- run:
|
- run:
|
||||||
name: 'Build Demo Site, Upload SourceMaps, Send Deploy Notification'
|
name: "Build Demo Site, Upload SourceMaps, Send Deploy Notification"
|
||||||
command: |
|
command: |
|
||||||
yarn build:demo:ci
|
yarn build:demo:ci
|
||||||
perl -i -pe 's#</head>#`cat .circleci/rollbar.html` #e' build/index.html
|
perl -i -pe 's#</head>#`cat .circleci/rollbar.html` #e' build/index.html
|
||||||
@ -214,7 +304,7 @@ workflows:
|
|||||||
# PULL REQUESTS
|
# PULL REQUESTS
|
||||||
pull_requests:
|
pull_requests:
|
||||||
jobs:
|
jobs:
|
||||||
- build_and_test:
|
- PR_UNIT_TESTS:
|
||||||
filters:
|
filters:
|
||||||
branches:
|
branches:
|
||||||
ignore:
|
ignore:
|
||||||
@ -225,13 +315,13 @@ workflows:
|
|||||||
# MERGE TO MASTER
|
# MERGE TO MASTER
|
||||||
cut_release:
|
cut_release:
|
||||||
jobs:
|
jobs:
|
||||||
- build_and_test:
|
- MERGE_UNIT_TESTS:
|
||||||
filters:
|
filters:
|
||||||
branches:
|
branches:
|
||||||
only: master
|
only: master
|
||||||
- e2e_test:
|
- e2e_test:
|
||||||
requires:
|
requires:
|
||||||
- build_and_test
|
- MERGE_UNIT_TESTS
|
||||||
# Update NPM
|
# Update NPM
|
||||||
- npm_publish:
|
- npm_publish:
|
||||||
requires:
|
requires:
|
||||||
|
|||||||
11
.codecov.yml
11
.codecov.yml
@ -9,4 +9,15 @@ coverage:
|
|||||||
project:
|
project:
|
||||||
default:
|
default:
|
||||||
threshold: 0.10%
|
threshold: 0.10%
|
||||||
|
core:
|
||||||
|
flags: core
|
||||||
|
viewer:
|
||||||
|
flags: viewer
|
||||||
patch: off
|
patch: off
|
||||||
|
flags:
|
||||||
|
core:
|
||||||
|
paths:
|
||||||
|
- platform/core
|
||||||
|
viewer:
|
||||||
|
paths:
|
||||||
|
- platform/viewer
|
||||||
|
|||||||
@ -1,5 +1,10 @@
|
|||||||
{
|
{
|
||||||
"extends": ["react-app", "eslint:recommended", "plugin:react/recommended"],
|
"extends": [
|
||||||
|
"react-app",
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:react/recommended",
|
||||||
|
"plugin:prettier/recommended"
|
||||||
|
],
|
||||||
"parser": "babel-eslint",
|
"parser": "babel-eslint",
|
||||||
"env": {
|
"env": {
|
||||||
"jest": true
|
"jest": true
|
||||||
|
|||||||
39
.gitattributes
vendored
39
.gitattributes
vendored
@ -1,39 +0,0 @@
|
|||||||
# These settings are for any web project
|
|
||||||
|
|
||||||
# Handle line endings automatically for files detected as text
|
|
||||||
# and leave all files detected as binary untouched.
|
|
||||||
* text=auto
|
|
||||||
|
|
||||||
# Force the following filetypes to have unix eols, so Windows does not break them
|
|
||||||
*.* text eol=lf
|
|
||||||
|
|
||||||
# Windows forced line-endings
|
|
||||||
/.idea/* text eol=crlf
|
|
||||||
|
|
||||||
#
|
|
||||||
## These files are binary and should be left untouched
|
|
||||||
#
|
|
||||||
|
|
||||||
# (binary is a macro for -text -diff)
|
|
||||||
*.png binary
|
|
||||||
*.jpg binary
|
|
||||||
*.jpeg binary
|
|
||||||
*.gif binary
|
|
||||||
*.ico binary
|
|
||||||
*.mov binary
|
|
||||||
*.mp4 binary
|
|
||||||
*.mp3 binary
|
|
||||||
*.flv binary
|
|
||||||
*.fla binary
|
|
||||||
*.swf binary
|
|
||||||
*.gz binary
|
|
||||||
*.zip binary
|
|
||||||
*.7z binary
|
|
||||||
*.ttf binary
|
|
||||||
*.eot binary
|
|
||||||
*.woff binary
|
|
||||||
*.pyc binary
|
|
||||||
*.pdf binary
|
|
||||||
*.ez binary
|
|
||||||
*.bz2 binary
|
|
||||||
*.swp binary
|
|
||||||
45
.jscsrc
45
.jscsrc
@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
"requireCurlyBraces": {
|
|
||||||
"keywords": [ "if", "else", "for", "while", "do" ],
|
|
||||||
"allExcept" : ["return" , "continue", "break"]
|
|
||||||
},
|
|
||||||
"requireSpaceAfterKeywords": [ "if", "else", "for", "while", "do", "switch", "return" ],
|
|
||||||
"requireSpacesInFunctionExpression": {
|
|
||||||
"beforeOpeningCurlyBrace": true
|
|
||||||
},
|
|
||||||
"disallowSpacesInFunctionExpression": {
|
|
||||||
"beforeOpeningRoundBrace": true
|
|
||||||
},
|
|
||||||
"disallowSpacesInsideParentheses": true,
|
|
||||||
"disallowKeywordsOnNewLine": ["else"],
|
|
||||||
"disallowNewlineBeforeBlockStatements": true,
|
|
||||||
"requirePaddingNewLinesAfterUseStrict": true,
|
|
||||||
"requirePaddingNewLinesAfterBlocks": {
|
|
||||||
"allExcept": ["inCallExpressions", "inArrayExpressions", "inProperties"]
|
|
||||||
},
|
|
||||||
"requireObjectKeysOnNewLine": true,
|
|
||||||
"requireSemicolons": true,
|
|
||||||
"requireSpaceAfterBinaryOperators": true,
|
|
||||||
"requireSpaceAfterComma": true,
|
|
||||||
"requireSpaceBeforeObjectValues": true,
|
|
||||||
"requireSpacesInsideObjectBrackets": "all",
|
|
||||||
"requireLineBreakAfterVariableAssignment": true,
|
|
||||||
"requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
|
|
||||||
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-"],
|
|
||||||
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
|
|
||||||
"disallowKeywords": [ "with" ],
|
|
||||||
"disallowMultipleLineBreaks": true,
|
|
||||||
"requireLineFeedAtFileEnd": true,
|
|
||||||
"disallowSpaceAfterObjectKeys": true,
|
|
||||||
"disallowQuotedKeysInObjects": true,
|
|
||||||
"disallowMultipleSpaces": true,
|
|
||||||
"disallowVar": true,
|
|
||||||
"validateLineBreaks": "LF",
|
|
||||||
"validateIndentation": 4,
|
|
||||||
"validateQuoteMarks": {
|
|
||||||
"mark": "'",
|
|
||||||
"escape": true
|
|
||||||
},
|
|
||||||
"validateParameterSeparator": ", ",
|
|
||||||
"requireDollarBeforejQueryAssignment": true
|
|
||||||
}
|
|
||||||
93
.jshintrc
93
.jshintrc
@ -1,93 +0,0 @@
|
|||||||
{
|
|
||||||
// JSHint Default Configuration File (as on JSHint website)
|
|
||||||
// See http://jshint.com/docs/ for more details
|
|
||||||
|
|
||||||
"maxerr" : 50, // {int} Maximum error before stopping
|
|
||||||
|
|
||||||
// Enforcing
|
|
||||||
"bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
|
|
||||||
"camelcase" : false, // true: Identifiers must be in camelCase
|
|
||||||
"curly" : false, // true: Require {} for every new block or scope
|
|
||||||
"eqeqeq" : true, // true: Require triple equals (===) for comparison
|
|
||||||
"forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty()
|
|
||||||
"freeze" : true, // true: prohibits overwriting prototypes of native objects such as Array, Date etc.
|
|
||||||
"immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`
|
|
||||||
"latedef" : false, // true: Require variables/functions to be defined before being used
|
|
||||||
"newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()`
|
|
||||||
"noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee`
|
|
||||||
"noempty" : true, // true: Prohibit use of empty blocks
|
|
||||||
"nonbsp" : true, // true: Prohibit "non-breaking whitespace" characters.
|
|
||||||
"nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment)
|
|
||||||
"plusplus" : false, // true: Prohibit use of `++` and `--`
|
|
||||||
"quotmark" : false, // Quotation mark consistency:
|
|
||||||
// false : do nothing (default)
|
|
||||||
// true : ensure whatever is used is consistent
|
|
||||||
// "single" : require single quotes
|
|
||||||
// "double" : require double quotes
|
|
||||||
"undef" : true, // true: Require all non-global variables to be declared (prevents global leaks)
|
|
||||||
"unused" : "vars", // Unused variables:
|
|
||||||
// true : all variables, last function parameter
|
|
||||||
// "vars" : all variables only
|
|
||||||
// "strict" : all variables, all function parameters
|
|
||||||
"strict" : false, // true: Requires all functions run in ES5 Strict Mode
|
|
||||||
"maxparams" : false, // {int} Max number of formal params allowed per function
|
|
||||||
"maxdepth" : false, // {int} Max depth of nested blocks (within functions)
|
|
||||||
"maxstatements" : false, // {int} Max number statements per function
|
|
||||||
"maxcomplexity" : false, // {int} Max cyclomatic complexity per function
|
|
||||||
"maxlen" : false, // {int} Max number of characters per line
|
|
||||||
"varstmt" : false, // true: Disallow any var statements. Only `let` and `const` are allowed.
|
|
||||||
|
|
||||||
// Relaxing
|
|
||||||
"asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
|
|
||||||
"boss" : false, // true: Tolerate assignments where comparisons would be expected
|
|
||||||
"debug" : false, // true: Allow debugger statements e.g. browser breakpoints.
|
|
||||||
"eqnull" : false, // true: Tolerate use of `== null`
|
|
||||||
"es5" : true, // true: Allow ES5 syntax (ex: getters and setters)
|
|
||||||
"esnext" : true, // true: Allow ES.next (ES6) syntax (ex: `const`)
|
|
||||||
"moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features)
|
|
||||||
// (ex: `for each`, multiple try/catch, function expression…)
|
|
||||||
"evil" : false, // true: Tolerate use of `eval` and `new Function()`
|
|
||||||
"expr" : false, // true: Tolerate `ExpressionStatement` as Programs
|
|
||||||
"funcscope" : false, // true: Tolerate defining variables inside control statements
|
|
||||||
"globalstrict" : false, // true: Allow global "use strict" (also enables 'strict')
|
|
||||||
"iterator" : false, // true: Tolerate using the `__iterator__` property
|
|
||||||
"lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
|
|
||||||
"laxbreak" : false, // true: Tolerate possibly unsafe line breakings
|
|
||||||
"laxcomma" : false, // true: Tolerate comma-first style coding
|
|
||||||
"loopfunc" : false, // true: Tolerate functions being defined in loops
|
|
||||||
"multistr" : false, // true: Tolerate multi-line strings
|
|
||||||
"noyield" : false, // true: Tolerate generator functions with no yield statement in them.
|
|
||||||
"notypeof" : false, // true: Tolerate invalid typeof operator values
|
|
||||||
"proto" : false, // true: Tolerate using the `__proto__` property
|
|
||||||
"scripturl" : false, // true: Tolerate script-targeted URLs
|
|
||||||
"shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
|
|
||||||
"sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation
|
|
||||||
"supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;`
|
|
||||||
"validthis" : false, // true: Tolerate using this in a non-constructor function
|
|
||||||
|
|
||||||
// Environments
|
|
||||||
"browser" : true, // Web Browser (window, document, etc)
|
|
||||||
"browserify" : false, // Browserify (node.js code in the browser)
|
|
||||||
"couch" : false, // CouchDB
|
|
||||||
"devel" : false, // Development/debugging (alert, confirm, etc)
|
|
||||||
"dojo" : false, // Dojo Toolkit
|
|
||||||
"jasmine" : false, // Jasmine
|
|
||||||
"jquery" : true, // jQuery
|
|
||||||
"mocha" : false, // Mocha
|
|
||||||
"mootools" : false, // MooTools
|
|
||||||
"node" : false, // Node.js
|
|
||||||
"nonstandard" : false, // Widely adopted globals (escape, unescape, etc)
|
|
||||||
"phantom" : false, // PhantomJS
|
|
||||||
"prototypejs" : false, // Prototype and Scriptaculous
|
|
||||||
"qunit" : false, // QUnit
|
|
||||||
"rhino" : false, // Rhino
|
|
||||||
"shelljs" : false, // ShellJS
|
|
||||||
"typed" : false, // Globals for typed array constructions
|
|
||||||
"worker" : false, // Web Workers
|
|
||||||
"wsh" : false, // Windows Scripting Host
|
|
||||||
"yui" : false, // Yahoo User Interface
|
|
||||||
"globals" : {
|
|
||||||
"require": true,
|
|
||||||
"Package": true // Meteor Package definition
|
|
||||||
}
|
|
||||||
}
|
|
||||||
81
.netlify/build-deploy-preview.sh
Normal file
81
.netlify/build-deploy-preview.sh
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Set directory to location of this script
|
||||||
|
# https://stackoverflow.com/a/3355423/1867984
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
# Helpful to verify which versions we're using
|
||||||
|
yarn -v
|
||||||
|
node -v
|
||||||
|
|
||||||
|
# Install GitBook CLI
|
||||||
|
echo 'Installing Gitbook CLI'
|
||||||
|
yarn global add gitbook-cli
|
||||||
|
npm install -g gitbook-cli
|
||||||
|
|
||||||
|
echo 'Running Gitbook installation'
|
||||||
|
# Generate all version's GitBook output
|
||||||
|
# For each directory in /docs ...
|
||||||
|
cd ./../docs/
|
||||||
|
for D in *; do
|
||||||
|
if [ -d "${D}" ]; then
|
||||||
|
|
||||||
|
echo "Generating output for: ${D}"
|
||||||
|
cd "${D}"
|
||||||
|
|
||||||
|
# Clear previous output, generate new
|
||||||
|
rm -rf _book
|
||||||
|
node /opt/buildhome/.nvm/versions/node/v10.16.0/lib/node_modules/gitbook-cli/bin/gitbook.js install
|
||||||
|
node /opt/buildhome/.nvm/versions/node/v10.16.0/lib/node_modules/gitbook-cli/bin/gitbook.js build
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Move CNAME File into `latest`
|
||||||
|
cp CNAME ./latest/_book/CNAME
|
||||||
|
|
||||||
|
# Create a history folder in our latest version's output
|
||||||
|
mkdir ./latest/_book/history
|
||||||
|
|
||||||
|
# Move each version's files to latest's history folder
|
||||||
|
for D in *; do
|
||||||
|
# If it's a directory
|
||||||
|
if [ -d "${D}" ]; then
|
||||||
|
# If the directory name starts with `v` (v1, v2, etc.)
|
||||||
|
if [ "${D}" == v* ] ; then
|
||||||
|
|
||||||
|
echo "Moving ${D} to the latest version's history folder"
|
||||||
|
|
||||||
|
mkdir "./latest/_book/history/${D}"
|
||||||
|
cp -v -r "./${D}/_book"/* "./latest/_book/history/${D}"
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Build and copy the PWA Viewer into the demo directory
|
||||||
|
mkdir ./docs/latest/_book/demo/
|
||||||
|
|
||||||
|
# Install build deps and all monorepo package dependencies. Yarn Workspaces
|
||||||
|
# should also symlink all projects appropriately
|
||||||
|
yarn install --no-ignore-optional --pure-lockfile
|
||||||
|
|
||||||
|
# Navigate to our Viewer project
|
||||||
|
cd ./platform/viewer/
|
||||||
|
|
||||||
|
# Create a Versions File
|
||||||
|
# node -p -e '"export default "' + require(\"./../package.json\").version + '";"' > src/version.js
|
||||||
|
yarn run version
|
||||||
|
# Copy over wado-image-loader codecs and worker file
|
||||||
|
cp ./../../node_modules/cornerstone-wado-image-loader/dist/*.min.js* public -v
|
||||||
|
# Build using react-scripts
|
||||||
|
# npx cross-env PUBLIC_URL=/demo REACT_APP_CONFIG=config/netlify.js react-scripts --max_old_space_size=4096 build
|
||||||
|
# Build using WebPack
|
||||||
|
# TODO: consume public/config correctly instead of hardcode
|
||||||
|
npx webpack --config config/webpack.prod.js --mode production --env.production
|
||||||
|
# Copy output to the folder that is our publish target
|
||||||
|
npx cpx "dist/**/*" ./../../docs/latest/_book/demo --verbose
|
||||||
|
|
||||||
|
echo 'Nothing left to see here. Go home, folks.'
|
||||||
0
publishStaticSite.sh → .netlify/publishStaticSite.sh
Executable file → Normal file
0
publishStaticSite.sh → .netlify/publishStaticSite.sh
Executable file → Normal file
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"trailingComma": "es5",
|
|
||||||
"printWidth": 80,
|
|
||||||
"proseWrap": "always",
|
|
||||||
"tabWidth": 2,
|
|
||||||
"semi": true,
|
|
||||||
"singleQuote": true,
|
|
||||||
"endOfLine": "lf"
|
|
||||||
}
|
|
||||||
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -25,6 +25,6 @@
|
|||||||
{ "language": "javascriptreact", "autoFix": true }
|
{ "language": "javascriptreact", "autoFix": true }
|
||||||
],
|
],
|
||||||
"prettier.disableLanguages": [],
|
"prettier.disableLanguages": [],
|
||||||
"prettier.endOfLine": "lf"
|
"prettier.endOfLine": "lf",
|
||||||
|
"workbench.colorCustomizations": {}
|
||||||
}
|
}
|
||||||
|
|
||||||
90
.webpack/webpack.common.js
Normal file
90
.webpack/webpack.common.js
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
const path = require("path");
|
||||||
|
const ExtractCssChunks = require("extract-css-chunks-webpack-plugin");
|
||||||
|
|
||||||
|
const SRC_DIR = path.join(__dirname, "../src");
|
||||||
|
const PUBLIC_DIR = path.join(__dirname, "../public");
|
||||||
|
const DIST_DIR = path.join(__dirname, "../dist");
|
||||||
|
|
||||||
|
module.exports = (env, argv, { SRC_DIR, DIST_DIR }) => {
|
||||||
|
return {
|
||||||
|
entry: {
|
||||||
|
app: `${SRC_DIR}/index.js`
|
||||||
|
},
|
||||||
|
context: SRC_DIR,
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.jsx?$/,
|
||||||
|
exclude: [/node_modules/, /packages\\extension/],
|
||||||
|
loader: "babel-loader",
|
||||||
|
options: {
|
||||||
|
// Find babel.config.js in monorepo root
|
||||||
|
// https://babeljs.io/docs/en/options#rootmode
|
||||||
|
rootMode: "upward",
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
"@babel/preset-env",
|
||||||
|
{
|
||||||
|
// Do not transform ES6 modules to another format.
|
||||||
|
// Webpack will take care of that.
|
||||||
|
modules: false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.css$/,
|
||||||
|
use: [
|
||||||
|
"style-loader",
|
||||||
|
ExtractCssChunks.loader,
|
||||||
|
{ loader: "css-loader", options: { importLoaders: 1 } },
|
||||||
|
{
|
||||||
|
loader: "postcss-loader",
|
||||||
|
options: {
|
||||||
|
config: {
|
||||||
|
path: "./postcss.config.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* This allows us to include web workers in our bundle, and VTK.js
|
||||||
|
* web workers in our bundle. While this increases bundle size, it
|
||||||
|
* cuts down on the number of includes we need for `script tag` usage.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
test: /\.worker\.js$/,
|
||||||
|
include: /vtk\.js[\/\\]Sources/,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: "worker-loader",
|
||||||
|
options: { inline: true, fallback: false }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* This is exclusively used by `vtk.js` to bundle glsl files.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
test: /\.glsl$/i,
|
||||||
|
include: /vtk\.js[\/\\]Sources/,
|
||||||
|
loader: "shader-loader"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
// Which directories to search when resolving modules
|
||||||
|
modules: [
|
||||||
|
path.resolve(__dirname, "../node_modules"),
|
||||||
|
path.resolve(__dirname, "../../../node_modules"),
|
||||||
|
SRC_DIR
|
||||||
|
],
|
||||||
|
// Attempt to resolve these extensions in order.
|
||||||
|
extensions: [".js", ".jsx", ".json", "*"],
|
||||||
|
// symlinked resources are resolved to their real path, not their symlinked location
|
||||||
|
symlinks: true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
355
README.md
355
README.md
@ -1,295 +1,148 @@
|
|||||||
<!-- prettier-ignore-start -->
|
# OHIF Medical Imaging Platform
|
||||||
<!-- markdownlint-disable -->
|
|
||||||
<div align="center">
|
|
||||||
<h1>ohif-viewer</h1>
|
|
||||||
<p><strong>ohif-viewer</strong> is a zero-footprint medical image viewer provided by the <a href="http://ohif.org/">Open Health Imaging Foundation (OHIF)</a>. It is a configurable and extensible progressive web application with out-of-the-box support for image archives which support <a href="https://www.dicomstandard.org/dicomweb/">DICOMweb</a>.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
[![lerna][lerna-image]][lerna-url]
|
||||||
|
[![Netlify Status][netlify-image]][netlify-url]
|
||||||
|
|
||||||
<div align="center">
|
## The Problem
|
||||||
<a href="https://docs.ohif.org/"><strong>Read The Docs</strong></a> |
|
|
||||||
<a href="https://github.com/OHIF/Viewers/tree/master/docs/latest">Edit the docs</a>
|
|
||||||
</div>
|
|
||||||
<div align="center">
|
|
||||||
<a href="https://docs.ohif.org/demo">Demo</a> |
|
|
||||||
<a href="https://ohif.canny.io/">Roadmap</a> |
|
|
||||||
<a href="https://react.ohif.org/">Component Library</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
<hr />
|
## Why Choose Us
|
||||||
|
|
||||||
[![CircleCI][circleci-image]][circleci-url]
|
...
|
||||||
[![codecov][codecov-image]][codecov-url]
|
|
||||||
[](#contributors)
|
|
||||||
[![code style: prettier][prettier-image]][prettier-url]
|
|
||||||
[![semantic-release][semantic-image]][semantic-url]
|
|
||||||
|
|
||||||
[![NPM version][npm-version-image]][npm-url]
|
## Quick Start
|
||||||
[![NPM downloads][npm-downloads-image]][npm-url]
|
|
||||||
[![Pulls][docker-pulls-img]][docker-image-url]
|
|
||||||
[![MIT License][license-image]][license-url]
|
|
||||||
<!-- markdownlint-enable -->
|
|
||||||
<!-- prettier-ignore-end -->
|
|
||||||
|
|
||||||
> ATTENTION: If you are looking for Version 1 (the Meteor Version) of this
|
...
|
||||||
> repository, it lives on
|
|
||||||
> [the `v1.x` branch](https://github.com/OHIF/Viewers/tree/v1.x)
|
|
||||||
|
|
||||||
## Why?
|
## Commands
|
||||||
|
|
||||||
Building a web based medical imaging viewer from scratch is time intensive, hard
|
### Global
|
||||||
to get right, and expensive. Instead of re-inventing the wheel, you can use the
|
|
||||||
OHIF Viewer as a rock solid platform to build on top of. The Viewer is a
|
|
||||||
[React][react-url] [Progressive Web Application][pwa-url] that can be embedded
|
|
||||||
in existing applications via it's [packaged source
|
|
||||||
(ohif-viewer)][ohif-viewer-url] or hosted stand-alone. The Viewer exposes
|
|
||||||
[configuration][configuration-url] and [extensions][extensions-url] to support
|
|
||||||
workflow customization and advanced functionality at common integration points.
|
|
||||||
|
|
||||||
If you're interested in using the OHIF Viewer, but you're not sure it supports
|
| Commands | | |
|
||||||
your use case [check out our docs](https://docs.ohif.org/). Still not sure, or
|
| --------------- | --- | ----------------------------------------------------- |
|
||||||
you would like to propose new features? Don't hesitate to
|
| `build:package` | | Builds commonjs bundles for all projects |
|
||||||
[create an issue](https://github.com/OHIF/Viewers/issues) or open a pull
|
| `test:unit` | | Jest multi-project test runner; overall coverage |
|
||||||
request.
|
| `test:unit:ci` | | Runs tests in parallel. Reports coverage per project. |
|
||||||
|
|
||||||
## Getting Started
|
### Local
|
||||||
|
|
||||||
This readme is specific to testing and developing locally. If you're more
|
| Commands | | |
|
||||||
interested in production deployment strategies,
|
| -------------- | --- | ------------------------------------------------- |
|
||||||
[you can check out our documentation on publishing](https://docs.ohif.org/).
|
| `test:unit` | | Runs tests while watching for changes |
|
||||||
|
| `test:unit:ci` | | Runs tests, collects coverage, reports to codecov |
|
||||||
|
|
||||||
Want to play around before you dig in?
|
## Developing
|
||||||
[Check out our LIVE Demo](https://viewer.ohif.org/)
|
|
||||||
|
|
||||||
### Setup
|
The OHIF Medical Image Viewing Platform is maintained as a
|
||||||
|
[`monorepo`][monorepo]. This means that this repository, instead of containing a
|
||||||
|
single project, contains many projects. If you explore our project structure,
|
||||||
|
you'll see the following:
|
||||||
|
|
||||||
_Requirements:_
|
```bash
|
||||||
|
.
|
||||||
- [NodeJS & NPM](https://nodejs.org/en/download/)
|
├── extensions #
|
||||||
- [Yarn](https://yarnpkg.com/lang/en/docs/install/)
|
│ ├── _example # Skeleton of example extension
|
||||||
|
│ ├── cornerstone # 2D images w/ Cornerstone.js
|
||||||
_Steps:_
|
│ ├── dicom-html # Structured Reports as HTML in viewport
|
||||||
|
│ ├── dicom-microscopy # Whole slide microscopy viewing
|
||||||
1. Fork this repository
|
│ ├── dicom-pdf # View DICOM wrapped PDFs in viewport
|
||||||
2. Clone your forked repository (your `origin`)
|
│ └── vtk # MPR and Volume support w/ VTK.js
|
||||||
|
│
|
||||||
- `git clone git@github.com:YOUR_GITHUB_USERNAME/Viewers.git`
|
├── platform #
|
||||||
|
│ ├── core # Business Logic
|
||||||
3. Add `OHIF/Viewers` as a `remote` repository (the `upstream`)
|
│ ├── i18n # Internationalization Support
|
||||||
|
│ ├── ui # React component library
|
||||||
- `git remote add upstream git@github.com:OHIF/Viewers.git`
|
│ └── viewer # Connects platform and extension projects
|
||||||
|
│
|
||||||
### Developing Locally
|
├── ... # misc. shared configuration
|
||||||
|
├── lerna.json # MonoRepo (Lerna) settings
|
||||||
In your cloned repository's root folder, run:
|
├── package.json # Shared devDependencies and commands
|
||||||
|
└── README.md # This file
|
||||||
```js
|
|
||||||
// Restore dependencies
|
|
||||||
yarn install
|
|
||||||
|
|
||||||
// Stands up local server to host Viewer.
|
|
||||||
// Viewer connects to our public cloud PACS by default
|
|
||||||
yarn start
|
|
||||||
```
|
```
|
||||||
|
|
||||||
For more advanced local development scenarios, like using your own locally
|
Want to better understand why and how we've structured this repository? Read
|
||||||
hosted PACS and test data,
|
more about it in our [Architecture Documentation](#todo).
|
||||||
[check out our Essential: Getting Started](https://docs.ohif.org/essentials/getting-started.html)
|
|
||||||
guide.
|
|
||||||
|
|
||||||
### E2E Tests
|
### Requirements
|
||||||
|
|
||||||
Using [Cypress](https://www.cypress.io/) to create End-to-End tests and check whether the application flow is performing correctly, ensuring that the integrated components are working as expected.
|
- [Yarn 1.17.3+](https://yarnpkg.com/en/docs/install)
|
||||||
|
- [Node 8+](https://nodejs.org/en/)
|
||||||
|
- Yarn Workspaces should be enabled on your machine:
|
||||||
|
- `yarn config set workspaces-experimental true`
|
||||||
|
|
||||||
#### Why Cypress?
|
### Getting Started
|
||||||
|
|
||||||
Cypress is a next generation front end testing tool built for the modern web.
|
1. [Fork this repository][how-to-fork]
|
||||||
With Cypress is easy to set up, write, run and debug tests
|
2. [Clone your forked repository][how-to-clone]
|
||||||
|
- `git clone https://github.com/YOUR-USERNAME/Viewers.git`
|
||||||
|
3. Navigate to the cloned project's directory
|
||||||
|
4. Add this repo as a `remote` named `upstream`
|
||||||
|
- `git remote add upstream https://github.com/OHIF/Viewers.git`
|
||||||
|
5. `yarn install` to restore dependencies and link projects
|
||||||
|
|
||||||
It allow us to write different types of tests:
|
#### To Develop
|
||||||
|
|
||||||
- End-to-End tests
|
```bash
|
||||||
- Integration tests
|
# Force install
|
||||||
- Unit tets
|
yarn install --force
|
||||||
|
|
||||||
All tests must be in `./cypress/integration` folder.
|
# Link
|
||||||
|
# Redundent with yarn workspaces
|
||||||
Commands to run the tests:
|
npx lerna bootstrap
|
||||||
|
|
||||||
```js
|
|
||||||
// Open Cypress Dashboard that provides insight into what happened when your tests ran
|
|
||||||
yarn run cy
|
|
||||||
|
|
||||||
// Run all tests using Electron browser headless
|
|
||||||
yarn run cy:run
|
|
||||||
|
|
||||||
// Run all tests in CI mode
|
|
||||||
yarn run cy:run:ci
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Contributing
|
```bash
|
||||||
|
# Link for local dev
|
||||||
> Large portions of the Viewer's functionality are maintained in other
|
cd ./extensions/my-package
|
||||||
> repositories. To get a better understanding of the Viewer's architecture and
|
npx lerna add @ohif/my-package --scope=@ohif/my-package-consumer
|
||||||
> "where things live", read
|
|
||||||
> [our docs on the Viewer's architecture](https://docs.ohif.org/advanced/architecture.html#diagram)
|
|
||||||
|
|
||||||
It is notoriously difficult to setup multiple dependent repositories for
|
|
||||||
end-to-end testing and development. That's why we recommend writing and running
|
|
||||||
unit tests when adding and modifying features. This allows us to program in
|
|
||||||
isolation without a complex setup, and has the added benefit of producing
|
|
||||||
well-tested business logic.
|
|
||||||
|
|
||||||
1. Clone this repository
|
|
||||||
2. Navigate to the project directory, and `yarn install`
|
|
||||||
3. To begin making changes, `yarn run dev`
|
|
||||||
4. To commit changes, run `yarn run cm`
|
|
||||||
|
|
||||||
When creating tests, place the test file "next to" the file you're testing.
|
|
||||||
[For example](https://github.com/OHIF/Viewers/blob/master/src/utils/index.test.js):
|
|
||||||
|
|
||||||
```js
|
|
||||||
// File
|
|
||||||
index.js
|
|
||||||
|
|
||||||
// Test for file
|
|
||||||
index.test.js
|
|
||||||
```
|
```
|
||||||
|
|
||||||
As you add and modify code, `jest` will watch for uncommitted changes and run
|
```bash
|
||||||
your tests, reporting the results to your terminal. Make a pull request with
|
# Add shared dev dependency for workspace
|
||||||
your changes to `master`, and a core team member will review your work. If you
|
yarn add --dev -W package-name
|
||||||
have any questions, please don't hesitate to reach out via a GitHub issue.
|
```
|
||||||
|
|
||||||
## Issues
|
// module vs main vs jsnext:main vs browser
|
||||||
|
https://babeljs.io/blog/2018/06/26/on-consuming-and-publishing-es2015+-packages
|
||||||
|
|
||||||
_Looking to contribute? Look for the [Good First Issue][good-first-issue]
|
Webpack: https://webpack.js.org/configuration/resolve/
|
||||||
label._
|
|
||||||
|
|
||||||
### 🐛 Bugs
|
UMD builds go through
|
||||||
|
|
||||||
Please file an issue for bugs, missing documentation, or unexpected behavior.
|
- index.umd.js
|
||||||
|
- Extensions passed in via window config
|
||||||
|
|
||||||
[**See Bugs**][bugs]
|
PWA builds go through
|
||||||
|
|
||||||
### 💡 Feature Requests
|
- index.js
|
||||||
|
- Extensions specified in file or by window config
|
||||||
|
|
||||||
Please file an issue to suggest new features. Vote on feature requests by adding
|
> The module property should point to a script that utilizes ES2015 module
|
||||||
a 👍. This helps maintainers prioritize what to work on.
|
> syntax but no other syntax features that aren't yet supported by browsers or
|
||||||
|
> node. This enables webpack to parse the module syntax itself, allowing for
|
||||||
|
> lighter bundles via tree shaking if users are only consuming certain parts of
|
||||||
|
> the library.
|
||||||
|
|
||||||
[**See Feature Requests**][requests-feature]
|
## Notes
|
||||||
|
|
||||||
### ❓ Questions
|
Lerna requires `GH_TOKEN` for GitHub authentication token
|
||||||
|
`git remote update` 1st call, need to verify host key
|
||||||
For questions related to using the library, please visit our support community,
|
|
||||||
or file an issue on GitHub.
|
|
||||||
|
|
||||||
[Google Group][google-group]
|
|
||||||
|
|
||||||
## Roadmap
|
|
||||||
|
|
||||||
If you want to know what's planned for the very near future,
|
|
||||||
[check out our roadmap](https://ohif.canny.io/). The best way to influence when
|
|
||||||
and what is worked on is to contribute to the conversation by creating GitHub
|
|
||||||
issues, and contributing code through pull requests. OHIF's high level
|
|
||||||
priorities for the near future are:
|
|
||||||
|
|
||||||
- Feature parity with version 1
|
|
||||||
- Extension and configuration improvements with key integration partners
|
|
||||||
- Continued Developer Experience Improvements
|
|
||||||
- Segmentation Tools, and improved VTK.js support
|
|
||||||
|
|
||||||
More granular information will make it's way to the backlog as these items
|
|
||||||
become scoped for development by core maintainers.
|
|
||||||
|
|
||||||
> Don't hesitate to ask questions, propose features, or create pull requests.
|
|
||||||
> We're here, we're listening, and we're ready to build the best open source
|
|
||||||
> medical imaging viewer on the web.
|
|
||||||
|
|
||||||
#### Roadmap Generously Powered by Canny.io
|
|
||||||
|
|
||||||
<a href="https://ohif.canny.io/">
|
|
||||||
<img height="30" src="docs/latest/assets/img/canny-full.png" />
|
|
||||||
</a>
|
|
||||||
|
|
||||||
## Contributors
|
|
||||||
|
|
||||||
Thanks goes to these wonderful people
|
|
||||||
([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
||||||
<!-- prettier-ignore -->
|
|
||||||
<table><tr><td align="center"><a href="https://github.com/swederik"><img src="https://avatars3.githubusercontent.com/u/607793?v=4" width="100px;" alt="Erik Ziegler"/><br /><sub><b>Erik Ziegler</b></sub></a><br /><a href="https://github.com/OHIF/Viewers/commits?author=swederik" title="Code">💻</a> <a href="#infra-swederik" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td><td align="center"><a href="https://github.com/evren217"><img src="https://avatars1.githubusercontent.com/u/4920551?v=4" width="100px;" alt="Evren Ozkan"/><br /><sub><b>Evren Ozkan</b></sub></a><br /><a href="https://github.com/OHIF/Viewers/commits?author=evren217" title="Code">💻</a></td><td align="center"><a href="https://github.com/galelis"><img src="https://avatars3.githubusercontent.com/u/2378326?v=4" width="100px;" alt="Gustavo André Lelis"/><br /><sub><b>Gustavo André Lelis</b></sub></a><br /><a href="https://github.com/OHIF/Viewers/commits?author=galelis" title="Code">💻</a></td><td align="center"><a href="http://dannyrb.com/"><img src="https://avatars1.githubusercontent.com/u/5797588?v=4" width="100px;" alt="Danny Brown"/><br /><sub><b>Danny Brown</b></sub></a><br /><a href="https://github.com/OHIF/Viewers/commits?author=dannyrb" title="Code">💻</a> <a href="#infra-dannyrb" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td><td align="center"><a href="https://github.com/all-contributors/all-contributors-bot"><img src="https://avatars3.githubusercontent.com/u/46843839?v=4" width="100px;" alt="allcontributors[bot]"/><br /><sub><b>allcontributors[bot]</b></sub></a><br /><a href="https://github.com/OHIF/Viewers/commits?author=allcontributors" title="Documentation">📖</a></td><td align="center"><a href="https://www.linkedin.com/in/siliconvalleynextgeneration/"><img src="https://avatars0.githubusercontent.com/u/1230575?v=4" width="100px;" alt="Esref Durna"/><br /><sub><b>Esref Durna</b></sub></a><br /><a href="#question-EsrefDurna" title="Answering Questions">💬</a></td><td align="center"><a href="https://github.com/diego0020"><img src="https://avatars3.githubusercontent.com/u/7297450?v=4" width="100px;" alt="diego0020"/><br /><sub><b>diego0020</b></sub></a><br /><a href="https://github.com/OHIF/Viewers/commits?author=diego0020" title="Code">💻</a></td></tr><tr><td align="center"><a href="https://github.com/dlwire"><img src="https://avatars3.githubusercontent.com/u/1167291?v=4" width="100px;" alt="David Wire"/><br /><sub><b>David Wire</b></sub></a><br /><a href="https://github.com/OHIF/Viewers/commits?author=dlwire" title="Code">💻</a></td><td align="center"><a href="https://github.com/jfmedeiros1820"><img src="https://avatars1.githubusercontent.com/u/2211708?v=4" width="100px;" alt="João Felipe de Medeiros Moreira"/><br /><sub><b>João Felipe de Medeiros Moreira</b></sub></a><br /><a href="https://github.com/OHIF/Viewers/commits?author=jfmedeiros1820" title="Tests">⚠️</a></td></tr></table>
|
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
||||||
|
|
||||||
This project follows the
|
|
||||||
[all-contributors](https://github.com/all-contributors/all-contributors)
|
|
||||||
specification. Contributions of any kind welcome!
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT © [OHIF](https://github.com/OHIF)
|
|
||||||
|
|
||||||
## Acknowledgments
|
|
||||||
|
|
||||||
To acknowledge the OHIF Viewer in an academic publication, please cite
|
|
||||||
|
|
||||||
> _LesionTracker: Extensible Open-Source Zero-Footprint Web Viewer for Cancer
|
|
||||||
> Imaging Research and Clinical Trials_
|
|
||||||
>
|
|
||||||
> Trinity Urban, Erik Ziegler, Rob Lewis, Chris Hafey, Cheryl Sadow, Annick D.
|
|
||||||
> Van den Abbeele and Gordon J. Harris
|
|
||||||
>
|
|
||||||
> _Cancer Research_, November 1 2017 (77) (21) e119-e122 DOI:
|
|
||||||
> [10.1158/0008-5472.CAN-17-0334](https://www.doi.org/10.1158/0008-5472.CAN-17-0334)
|
|
||||||
|
|
||||||
**Note:** If you use or find this repository helpful, please take the time to
|
|
||||||
star this repository on Github. This is an easy way for us to assess adoption
|
|
||||||
and it can help us obtain future funding for the project.
|
|
||||||
|
|
||||||
This work is supported primarily by the National Institutes of Health, National
|
|
||||||
Cancer Institute, Informatics Technology for Cancer Research (ITCR) program,
|
|
||||||
under a
|
|
||||||
[grant to Dr. Gordon Harris at Massachusetts General Hospital (U24 CA199460)](https://projectreporter.nih.gov/project_info_description.cfm?aid=8971104).
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Links:
|
Links
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
<!-- ROW -->
|
<!-- Badges -->
|
||||||
[all-contributors-image]: https://img.shields.io/badge/all_contributors-0-orange.svg?style=flat-square
|
[lerna-image]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
|
||||||
[contributing-url]: https://github.com/OHIF/Viewers/blob/react/CONTRIBUTING.md
|
[lerna-url]: https://lerna.js.org/
|
||||||
[circleci-image]: https://circleci.com/gh/OHIF/Viewers.svg?style=svg
|
[netlify-image]: https://api.netlify.com/api/v1/badges/a5d369ab-18a6-41c3-bcde-83805205ac7f/deploy-status
|
||||||
[circleci-url]: https://circleci.com/gh/OHIF/Viewers
|
[netlify-url]: https://app.netlify.com/sites/ohif/deploys
|
||||||
[codecov-image]: https://codecov.io/gh/OHIF/Viewers/branch/react/graph/badge.svg
|
<!-- Links -->
|
||||||
[codecov-url]: https://codecov.io/gh/OHIF/Viewers/branch/react
|
[monorepo]: https://en.wikipedia.org/wiki/Monorepo
|
||||||
[prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
|
[how-to-fork]: https://help.github.com/en/articles/fork-a-repo
|
||||||
[prettier-url]: https://github.com/prettier/prettier
|
[how-to-clone]: https://help.github.com/en/articles/fork-a-repo#step-2-create-a-local-clone-of-your-fork
|
||||||
[semantic-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
|
|
||||||
[semantic-url]: https://github.com/semantic-release/semantic-release
|
|
||||||
<!-- ROW -->
|
|
||||||
[npm-url]: https://npmjs.org/package/ohif-viewer
|
|
||||||
[npm-downloads-image]: https://img.shields.io/npm/dm/ohif-viewer.svg?style=flat-square
|
|
||||||
[npm-version-image]: https://img.shields.io/npm/v/ohif-viewer.svg?style=flat-square
|
|
||||||
[docker-pulls-img]: https://img.shields.io/docker/pulls/ohif/viewer.svg?style=flat-square
|
|
||||||
[docker-image-url]: https://hub.docker.com/r/ohif/viewer
|
|
||||||
[license-image]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square
|
|
||||||
[license-url]: LICENSE
|
|
||||||
<!-- DOCS -->
|
|
||||||
[react-url]: https://reactjs.org/
|
|
||||||
[pwa-url]: https://developers.google.com/web/progressive-web-apps/
|
|
||||||
[ohif-viewer-url]: https://www.npmjs.com/package/ohif-viewer
|
|
||||||
[configuration-url]: https://docs.ohif.org/essentials/configuration.html
|
|
||||||
[extensions-url]: https://docs.ohif.org/advanced/extensions.html
|
|
||||||
<!-- Misc. -->
|
|
||||||
[react-viewer]: https://github.com/OHIF/Viewers/tree/react
|
|
||||||
<!-- Issue Boilerplate -->
|
|
||||||
[bugs]: https://github.com/OHIF/Viewers/labels/bug
|
|
||||||
[requests-feature]: https://github.com/OHIF/Viewers/labels/enhancement
|
|
||||||
[good-first-issue]: https://github.com/OHIF/Viewers/labels/good%20first%20issue
|
|
||||||
[google-group]: https://groups.google.com/forum/#!forum/cornerstone-platform
|
|
||||||
|
|
||||||
<!-- prettier-ignore-end -->
|
<!-- prettier-ignore-end -->
|
||||||
|
|||||||
8
aliases.config.js
Normal file
8
aliases.config.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* Used by webpack, babel and eslint */
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
'@codinsky/parse-js': path.resolve(__dirname, 'packages/parse/src'),
|
||||||
|
'@codinsky/curate': path.resolve(__dirname, 'packages/curate/src'),
|
||||||
|
};
|
||||||
50
babel.config.js
Normal file
50
babel.config.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
const aliases = require("./aliases.config");
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
// https://babeljs.io/docs/en/options#babelrcroots
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
"@babel/preset-env",
|
||||||
|
{
|
||||||
|
targets: {
|
||||||
|
ie: "11"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"@babel/preset-react"
|
||||||
|
],
|
||||||
|
babelrcRoots: ["./platform/*", "./extensions/*"],
|
||||||
|
plugins: [
|
||||||
|
"inline-react-svg",
|
||||||
|
"@babel/plugin-proposal-class-properties",
|
||||||
|
"@babel/plugin-proposal-object-rest-spread",
|
||||||
|
"@babel/plugin-syntax-dynamic-import",
|
||||||
|
"@babel/plugin-transform-regenerator",
|
||||||
|
"@babel/plugin-transform-runtime",
|
||||||
|
[
|
||||||
|
"module-resolver",
|
||||||
|
{
|
||||||
|
// https://github.com/tleunen/babel-plugin-module-resolver/issues/338
|
||||||
|
// There seem to be a bug with module-resolver with a mono-repo setup:
|
||||||
|
// It doesn't resolve paths correctly when using root/alias combo, so we
|
||||||
|
// use this function instead.
|
||||||
|
resolvePath(sourcePath, currentFile, opts) {
|
||||||
|
// This will return undefined if aliases has no key for the sourcePath,
|
||||||
|
// in which case module-resolver will fallback on its default behaviour.
|
||||||
|
return aliases[sourcePath];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
env: {
|
||||||
|
debug: {
|
||||||
|
sourceMaps: "inline",
|
||||||
|
retainLines: true
|
||||||
|
},
|
||||||
|
build: {
|
||||||
|
ignore: ["**/*.test.jsx", "**/*.test.js", "__snapshots__", "__tests__"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ignore: ["node_modules"]
|
||||||
|
};
|
||||||
@ -12,17 +12,13 @@ architected, and the role each of it's dependent libraries plays.
|
|||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
The [`OHIF/Viewers`](https://github.com/OHIF/Viewers/tree/react) repository
|
The [`OHIF/Viewers`][viewers-project] project contains the source code for the
|
||||||
contains the source code for the OHIF Medical Imaging Viewer. It is effectively
|
OHIF Medical Imaging Viewer. It is effectively a React [progressive web
|
||||||
a React
|
app][pwa] (PWA) that combines the business logic housed in
|
||||||
[progressive web app](https://developers.google.com/web/progressive-web-apps/)
|
[`OHIF/ohif-core`][core] and the components in our React Component library
|
||||||
(PWA) that combines the business logic housed in
|
[`OHIF/react-viewerbase`][component-library]. It provides customization for
|
||||||
[`OHIF/ohif-core`](https://github.com/OHIF/ohif-core) and the components in our
|
common use cases through [configuration][configuration] and for adding
|
||||||
React Component library
|
functionality via [extensions][extensions].
|
||||||
[`OHIF/react-viewerbase`](https://github.com/OHIF/react-viewerbase). It provides
|
|
||||||
customization for common use cases through
|
|
||||||
[configuration](../essentials/configuration.md) and for adding functionality via
|
|
||||||
[extensions](./extensions.md).
|
|
||||||
|
|
||||||
### Business Logic
|
### Business Logic
|
||||||
|
|
||||||
@ -71,13 +67,13 @@ looking for ways to improve our extensibility ^\_^
|
|||||||
|
|
||||||
This diagram is a conceptual illustration of how the Viewer is architected.
|
This diagram is a conceptual illustration of how the Viewer is architected.
|
||||||
|
|
||||||
0. (optional) `extensions` can be registered with `ohif-core`'s extension
|
1. (optional) `extensions` can be registered with `ohif-core`'s extension
|
||||||
manager
|
manager
|
||||||
1. `ohif-core` provides bussiness logic and a way for `viewer` to access
|
2. `ohif-core` provides bussiness logic and a way for `viewer` to access
|
||||||
registered extensions
|
registered extensions
|
||||||
1. The `viewer` composes and provides data to components from our component
|
3. The `viewer` composes and provides data to components from our component
|
||||||
library (`react-viewerbase`)
|
library (`react-viewerbase`)
|
||||||
1. The `viewer` can be built and served as a stand-alone PWA, or as an
|
4. The `viewer` can be built and served as a stand-alone PWA, or as an
|
||||||
embeddable package
|
embeddable package
|
||||||
([`ohif-viewer`](https://www.npmjs.com/package/ohif-viewer))
|
([`ohif-viewer`](https://www.npmjs.com/package/ohif-viewer))
|
||||||
|
|
||||||
@ -98,3 +94,16 @@ You can, but you will not be able to leverage as much of the existing code and
|
|||||||
components. `ohif-core` could still be used for business logic, and to provide a
|
components. `ohif-core` could still be used for business logic, and to provide a
|
||||||
model for extensions. `react-viewerbase` would then become a guide for the
|
model for extensions. `react-viewerbase` would then become a guide for the
|
||||||
components you would need to recreate.
|
components you would need to recreate.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Links
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
[viewers-project]: https://github.com/OHIF/Viewers
|
||||||
|
[pwa]: https://developers.google.com/web/progressive-web-apps/
|
||||||
|
[core]: https://github.com/OHIF/ohif-core
|
||||||
|
[component-library]: https://github.com/OHIF/react-viewerbase
|
||||||
|
[configuration]: ../essentials/configuration.md
|
||||||
|
[extensions]: ./extensions.m
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
|||||||
23
docs/latest/advanced/monorepos-a-crash-courese.md
Normal file
23
docs/latest/advanced/monorepos-a-crash-courese.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# MonoRepos: A Crash Course
|
||||||
|
|
||||||
|
- [Lerna][lerna]
|
||||||
|
|
||||||
|
Solutions:
|
||||||
|
|
||||||
|
## Semantic-Release
|
||||||
|
|
||||||
|
- [Semantic-Release](https://github.com/semantic-release/semantic-release/issues/193#issuecomment-462063871)
|
||||||
|
- [Multi-semantic-release](https://github.com/dhoulb/multi-semantic-release)
|
||||||
|
- [semantic-release-monorepo](https://github.com/Updater/semantic-release-monorepo)
|
||||||
|
|
||||||
|
# Netlify
|
||||||
|
|
||||||
|
- https://community.netlify.com/t/best-practices-for-deploying-sites-from-monorepos/818
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Links
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
[lerna]: https://github.com/lerna/lerna
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
8
eslintAliasesResolver.js
Normal file
8
eslintAliasesResolver.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
module.exports.interfaceVersion = 2;
|
||||||
|
|
||||||
|
module.exports.resolve = (source, file, aliases) => {
|
||||||
|
if (aliases[source]) {
|
||||||
|
return { found: true, path: aliases[source] };
|
||||||
|
}
|
||||||
|
return { found: false };
|
||||||
|
};
|
||||||
8
extensions/cornerstone/CHANGELOG.md
Normal file
8
extensions/cornerstone/CHANGELOG.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Change Log
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## 0.0.39-alpha.0 (2019-08-05)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-cornerstone
|
||||||
67
extensions/cornerstone/config/webpack.common.js
Normal file
67
extensions/cornerstone/config/webpack.common.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
const path = require('path');
|
||||||
|
const webpack = require('webpack');
|
||||||
|
const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');
|
||||||
|
|
||||||
|
const SRC_DIR = path.join(__dirname, '../src');
|
||||||
|
const DIST_DIR = path.join(__dirname, '../dist');
|
||||||
|
|
||||||
|
module.exports = (env, argv) => {
|
||||||
|
return {
|
||||||
|
entry: {
|
||||||
|
app: `${SRC_DIR}/index.js`,
|
||||||
|
},
|
||||||
|
context: SRC_DIR,
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.js', '.jsx', '.json', '*'],
|
||||||
|
symlinks: true,
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.(js|jsx)$/,
|
||||||
|
exclude: [/node_modules/],
|
||||||
|
loader: 'babel-loader',
|
||||||
|
options: {
|
||||||
|
// Find babel.config.js in monorepo root
|
||||||
|
// https://babeljs.io/docs/en/options#rootmode
|
||||||
|
rootMode: 'upward',
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
'@babel/preset-env',
|
||||||
|
{
|
||||||
|
// Do not transform ES6 modules to another format.
|
||||||
|
// Webpack will take care of that.
|
||||||
|
modules: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.css$/,
|
||||||
|
use: [
|
||||||
|
'style-loader',
|
||||||
|
ExtractCssChunks.loader,
|
||||||
|
{ loader: 'css-loader', options: { importLoaders: 1 } },
|
||||||
|
{
|
||||||
|
loader: 'postcss-loader',
|
||||||
|
options: {
|
||||||
|
config: {
|
||||||
|
path: './postcss.config.js',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new webpack.EnvironmentPlugin(['NODE_ENV']),
|
||||||
|
new ExtractCssChunks({
|
||||||
|
filename: '[name].css',
|
||||||
|
chunkFilename: '[id].css',
|
||||||
|
// hot: true /* only necessary if hot reloading not function*/
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
};
|
||||||
|
};
|
||||||
64
extensions/cornerstone/config/webpack.prod.js
Normal file
64
extensions/cornerstone/config/webpack.prod.js
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
const merge = require('webpack-merge');
|
||||||
|
const path = require('path');
|
||||||
|
const common = require('./webpack.common');
|
||||||
|
const pkg = require('./../package.json');
|
||||||
|
|
||||||
|
const ROOT_DIR = path.join(__dirname, './..');
|
||||||
|
const SRC_DIR = path.join(__dirname, '../src');
|
||||||
|
const DIST_DIR = path.join(__dirname, '../dist');
|
||||||
|
|
||||||
|
module.exports = (env, argv) => {
|
||||||
|
const commonConfig = common(env, argv);
|
||||||
|
|
||||||
|
return merge(commonConfig, {
|
||||||
|
mode: 'production',
|
||||||
|
stats: {
|
||||||
|
colors: false,
|
||||||
|
hash: true,
|
||||||
|
timings: true,
|
||||||
|
assets: true,
|
||||||
|
chunks: true,
|
||||||
|
chunkModules: true,
|
||||||
|
modules: true,
|
||||||
|
children: true,
|
||||||
|
warnings: true,
|
||||||
|
},
|
||||||
|
optimization: {
|
||||||
|
minimize: true,
|
||||||
|
sideEffects: true,
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
path: ROOT_DIR,
|
||||||
|
library: 'ohifCornerstoneExtension',
|
||||||
|
libraryTarget: 'umd',
|
||||||
|
filename: pkg.main,
|
||||||
|
auxiliaryComment: 'Test Comment',
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.(gif|jpe?g|png|svg)$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: 'url-loader',
|
||||||
|
options: {
|
||||||
|
limit: 8192,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.(ttf|eot|woff|woff2)$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: 'url-loader',
|
||||||
|
options: {
|
||||||
|
limit: 50000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
54
extensions/cornerstone/package.json
Normal file
54
extensions/cornerstone/package.json
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"name": "@ohif/extension-cornerstone",
|
||||||
|
"version": "0.0.39-alpha.0",
|
||||||
|
"description": "OHIF extension for Cornerstone",
|
||||||
|
"author": "OHIF",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "OHIF/Viewers",
|
||||||
|
"main": "dist/index.umd.js",
|
||||||
|
"module": "src/index.js",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8",
|
||||||
|
"npm": ">=5"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist",
|
||||||
|
"README.md"
|
||||||
|
],
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "rollup -c",
|
||||||
|
"lerna:build": "webpack --config config/webpack.prod.js -w -d",
|
||||||
|
"prepublishOnly": "yarn run build",
|
||||||
|
"start": "rollup -c -w"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@ohif/core": "^0.6.0",
|
||||||
|
"@ohif/ui": "^0.6.0",
|
||||||
|
"cornerstone-core": "^2.2.8",
|
||||||
|
"cornerstone-math": "^0.1.8",
|
||||||
|
"cornerstone-tools": "^3.1.0",
|
||||||
|
"cornerstone-wado-image-loader": "^2.2.3",
|
||||||
|
"dcmjs": "^0.3.8",
|
||||||
|
"dicom-parser": "^1.8.3",
|
||||||
|
"hammerjs": "^2.0.8",
|
||||||
|
"prop-types": "^15.6.2",
|
||||||
|
"react": "^15.0.0 || ^16.0.0",
|
||||||
|
"react-dom": "^15.0.0 || ^16.0.0",
|
||||||
|
"react-redux": "^6.0.0",
|
||||||
|
"react-resize-detector": "^3.4.0",
|
||||||
|
"redux": "^4.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/runtime": "^7.2.0",
|
||||||
|
"classnames": "^2.2.6",
|
||||||
|
"lodash.throttle": "^4.1.1",
|
||||||
|
"react-cornerstone-viewport": "0.1.30"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"gh-pages": "^2.0.1",
|
||||||
|
"lodash.clonedeep": "^4.5.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
8
extensions/dicom-html/CHANGELOG.md
Normal file
8
extensions/dicom-html/CHANGELOG.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Change Log
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## 0.0.4-alpha.0 (2019-08-05)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-dicom-html
|
||||||
67
extensions/dicom-html/config/webpack.common.js
Normal file
67
extensions/dicom-html/config/webpack.common.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
const path = require('path');
|
||||||
|
const webpack = require('webpack');
|
||||||
|
const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');
|
||||||
|
|
||||||
|
const SRC_DIR = path.join(__dirname, '../src');
|
||||||
|
const DIST_DIR = path.join(__dirname, '../dist');
|
||||||
|
|
||||||
|
module.exports = (env, argv) => {
|
||||||
|
return {
|
||||||
|
entry: {
|
||||||
|
app: `${SRC_DIR}/index.js`,
|
||||||
|
},
|
||||||
|
context: SRC_DIR,
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.js', '.jsx', '.json', '*'],
|
||||||
|
symlinks: true,
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.jsx?$/,
|
||||||
|
exclude: [/node_modules/],
|
||||||
|
loader: 'babel-loader',
|
||||||
|
options: {
|
||||||
|
// Find babel.config.js in monorepo root
|
||||||
|
// https://babeljs.io/docs/en/options#rootmode
|
||||||
|
rootMode: 'upward',
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
'@babel/preset-env',
|
||||||
|
{
|
||||||
|
// Do not transform ES6 modules to another format.
|
||||||
|
// Webpack will take care of that.
|
||||||
|
modules: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.css$/,
|
||||||
|
use: [
|
||||||
|
'style-loader',
|
||||||
|
ExtractCssChunks.loader,
|
||||||
|
{ loader: 'css-loader', options: { importLoaders: 1 } },
|
||||||
|
{
|
||||||
|
loader: 'postcss-loader',
|
||||||
|
options: {
|
||||||
|
config: {
|
||||||
|
path: './postcss.config.js',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new webpack.EnvironmentPlugin(['NODE_ENV']),
|
||||||
|
new ExtractCssChunks({
|
||||||
|
filename: '[name].css',
|
||||||
|
chunkFilename: '[id].css',
|
||||||
|
// hot: true /* only necessary if hot reloading not function*/
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
};
|
||||||
|
};
|
||||||
64
extensions/dicom-html/config/webpack.prod.js
Normal file
64
extensions/dicom-html/config/webpack.prod.js
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
const merge = require('webpack-merge');
|
||||||
|
const path = require('path');
|
||||||
|
const common = require('./webpack.common');
|
||||||
|
const pkg = require('./../package.json');
|
||||||
|
|
||||||
|
const ROOT_DIR = path.join(__dirname, './..');
|
||||||
|
const SRC_DIR = path.join(__dirname, '../src');
|
||||||
|
const DIST_DIR = path.join(__dirname, '../dist');
|
||||||
|
|
||||||
|
module.exports = (env, argv) => {
|
||||||
|
const commonConfig = common(env, argv);
|
||||||
|
|
||||||
|
return merge(commonConfig, {
|
||||||
|
mode: 'production',
|
||||||
|
stats: {
|
||||||
|
colors: false,
|
||||||
|
hash: true,
|
||||||
|
timings: true,
|
||||||
|
assets: true,
|
||||||
|
chunks: true,
|
||||||
|
chunkModules: true,
|
||||||
|
modules: true,
|
||||||
|
children: true,
|
||||||
|
warnings: true,
|
||||||
|
},
|
||||||
|
optimization: {
|
||||||
|
minimize: true,
|
||||||
|
sideEffects: true,
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
path: ROOT_DIR,
|
||||||
|
library: 'ohifCornerstoneExtension',
|
||||||
|
libraryTarget: 'umd',
|
||||||
|
filename: pkg.main,
|
||||||
|
auxiliaryComment: 'Test Comment',
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.(gif|jpe?g|png|svg)$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: 'url-loader',
|
||||||
|
options: {
|
||||||
|
limit: 8192,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.(ttf|eot|woff|woff2)$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: 'url-loader',
|
||||||
|
options: {
|
||||||
|
limit: 50000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
39
extensions/dicom-html/package.json
Normal file
39
extensions/dicom-html/package.json
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"name": "@ohif/extension-dicom-html",
|
||||||
|
"version": "0.0.4-alpha.0",
|
||||||
|
"description": "OHIF extension for rendering structured reports to HTML",
|
||||||
|
"author": "OHIF",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "OHIF/Viewers",
|
||||||
|
"main": "dist/index.umd.js",
|
||||||
|
"module": "src/index.js",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8",
|
||||||
|
"npm": ">=5"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"lerna:build": "webpack --config config/webpack.prod.js -w -d",
|
||||||
|
"prepublishOnly": "npm run build",
|
||||||
|
"start": "rollup -c -w"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@ohif/core": "^0.6.0",
|
||||||
|
"dcmjs": "^0.3.3",
|
||||||
|
"prop-types": "^15.6.2",
|
||||||
|
"react": "^15.0.0 || ^16.0.0",
|
||||||
|
"react-dom": "^15.0.0 || ^16.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/runtime": "^7.2.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"gh-pages": "^2.0.1",
|
||||||
|
"lodash.clonedeep": "^4.5.0"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
}
|
||||||
|
}
|
||||||
8
extensions/dicom-microscopy/CHANGELOG.md
Normal file
8
extensions/dicom-microscopy/CHANGELOG.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Change Log
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## 0.0.9-alpha.0 (2019-08-05)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||||
67
extensions/dicom-microscopy/config/webpack.common.js
Normal file
67
extensions/dicom-microscopy/config/webpack.common.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
const path = require('path');
|
||||||
|
const webpack = require('webpack');
|
||||||
|
const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');
|
||||||
|
|
||||||
|
const SRC_DIR = path.join(__dirname, '../src');
|
||||||
|
const DIST_DIR = path.join(__dirname, '../dist');
|
||||||
|
|
||||||
|
module.exports = (env, argv) => {
|
||||||
|
return {
|
||||||
|
entry: {
|
||||||
|
app: `${SRC_DIR}/index.js`,
|
||||||
|
},
|
||||||
|
context: SRC_DIR,
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.js', '.jsx', '.json', '*'],
|
||||||
|
symlinks: true,
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.jsx?$/,
|
||||||
|
exclude: [/node_modules/],
|
||||||
|
loader: 'babel-loader',
|
||||||
|
options: {
|
||||||
|
// Find babel.config.js in monorepo root
|
||||||
|
// https://babeljs.io/docs/en/options#rootmode
|
||||||
|
rootMode: 'upward',
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
'@babel/preset-env',
|
||||||
|
{
|
||||||
|
// Do not transform ES6 modules to another format.
|
||||||
|
// Webpack will take care of that.
|
||||||
|
modules: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.css$/,
|
||||||
|
use: [
|
||||||
|
'style-loader',
|
||||||
|
ExtractCssChunks.loader,
|
||||||
|
{ loader: 'css-loader', options: { importLoaders: 1 } },
|
||||||
|
{
|
||||||
|
loader: 'postcss-loader',
|
||||||
|
options: {
|
||||||
|
config: {
|
||||||
|
path: './postcss.config.js',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new webpack.EnvironmentPlugin(['NODE_ENV']),
|
||||||
|
new ExtractCssChunks({
|
||||||
|
filename: '[name].css',
|
||||||
|
chunkFilename: '[id].css',
|
||||||
|
// hot: true /* only necessary if hot reloading not function*/
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
};
|
||||||
|
};
|
||||||
64
extensions/dicom-microscopy/config/webpack.prod.js
Normal file
64
extensions/dicom-microscopy/config/webpack.prod.js
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
const merge = require('webpack-merge');
|
||||||
|
const path = require('path');
|
||||||
|
const common = require('./webpack.common');
|
||||||
|
const pkg = require('./../package.json');
|
||||||
|
|
||||||
|
const ROOT_DIR = path.join(__dirname, './..');
|
||||||
|
const SRC_DIR = path.join(__dirname, '../src');
|
||||||
|
const DIST_DIR = path.join(__dirname, '../dist');
|
||||||
|
|
||||||
|
module.exports = (env, argv) => {
|
||||||
|
const commonConfig = common(env, argv);
|
||||||
|
|
||||||
|
return merge(commonConfig, {
|
||||||
|
mode: 'production',
|
||||||
|
stats: {
|
||||||
|
colors: false,
|
||||||
|
hash: true,
|
||||||
|
timings: true,
|
||||||
|
assets: true,
|
||||||
|
chunks: true,
|
||||||
|
chunkModules: true,
|
||||||
|
modules: true,
|
||||||
|
children: true,
|
||||||
|
warnings: true,
|
||||||
|
},
|
||||||
|
optimization: {
|
||||||
|
minimize: true,
|
||||||
|
sideEffects: true,
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
path: ROOT_DIR,
|
||||||
|
library: 'ohifCornerstoneExtension',
|
||||||
|
libraryTarget: 'umd',
|
||||||
|
filename: pkg.main,
|
||||||
|
auxiliaryComment: 'Test Comment',
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.(gif|jpe?g|png|svg)$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: 'url-loader',
|
||||||
|
options: {
|
||||||
|
limit: 8192,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.(ttf|eot|woff|woff2)$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: 'url-loader',
|
||||||
|
options: {
|
||||||
|
limit: 50000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
38
extensions/dicom-microscopy/package.json
Normal file
38
extensions/dicom-microscopy/package.json
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"name": "@ohif/extension-dicom-microscopy",
|
||||||
|
"version": "0.0.9-alpha.0",
|
||||||
|
"description": "OHIF extension for Dicom Microscopy",
|
||||||
|
"author": "OHIF",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "OHIF/Viewers",
|
||||||
|
"main": "dist/index.umd.js",
|
||||||
|
"module": "src/index.js",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8",
|
||||||
|
"npm": ">=5"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"lerna:build": "webpack --config config/webpack.prod.js -w -d",
|
||||||
|
"prepublishOnly": "npm run build",
|
||||||
|
"start": "rollup -c -w"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@ohif/core": "^0.6.0",
|
||||||
|
"react": "^15.0.0 || ^16.0.0",
|
||||||
|
"react-dom": "^15.0.0 || ^16.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"gh-pages": "^2.0.1"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/runtime": "^7.2.0",
|
||||||
|
"classnames": "^2.2.6",
|
||||||
|
"dicom-microscopy-viewer": "^0.4.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
8
extensions/dicom-pdf/CHANGELOG.md
Normal file
8
extensions/dicom-pdf/CHANGELOG.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Change Log
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## 0.0.8-alpha.0 (2019-08-05)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||||
67
extensions/dicom-pdf/config/webpack.common.js
Normal file
67
extensions/dicom-pdf/config/webpack.common.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
const path = require('path');
|
||||||
|
const webpack = require('webpack');
|
||||||
|
const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');
|
||||||
|
|
||||||
|
const SRC_DIR = path.join(__dirname, '../src');
|
||||||
|
const DIST_DIR = path.join(__dirname, '../dist');
|
||||||
|
|
||||||
|
module.exports = (env, argv) => {
|
||||||
|
return {
|
||||||
|
entry: {
|
||||||
|
app: `${SRC_DIR}/index.js`,
|
||||||
|
},
|
||||||
|
context: SRC_DIR,
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.js', '.jsx', '.json', '*'],
|
||||||
|
symlinks: true,
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.jsx?$/,
|
||||||
|
exclude: [/node_modules/],
|
||||||
|
loader: 'babel-loader',
|
||||||
|
options: {
|
||||||
|
// Find babel.config.js in monorepo root
|
||||||
|
// https://babeljs.io/docs/en/options#rootmode
|
||||||
|
rootMode: 'upward',
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
'@babel/preset-env',
|
||||||
|
{
|
||||||
|
// Do not transform ES6 modules to another format.
|
||||||
|
// Webpack will take care of that.
|
||||||
|
modules: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.css$/,
|
||||||
|
use: [
|
||||||
|
'style-loader',
|
||||||
|
ExtractCssChunks.loader,
|
||||||
|
{ loader: 'css-loader', options: { importLoaders: 1 } },
|
||||||
|
{
|
||||||
|
loader: 'postcss-loader',
|
||||||
|
options: {
|
||||||
|
config: {
|
||||||
|
path: './postcss.config.js',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new webpack.EnvironmentPlugin(['NODE_ENV']),
|
||||||
|
new ExtractCssChunks({
|
||||||
|
filename: '[name].css',
|
||||||
|
chunkFilename: '[id].css',
|
||||||
|
// hot: true /* only necessary if hot reloading not function*/
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
};
|
||||||
|
};
|
||||||
64
extensions/dicom-pdf/config/webpack.prod.js
Normal file
64
extensions/dicom-pdf/config/webpack.prod.js
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
const merge = require('webpack-merge');
|
||||||
|
const path = require('path');
|
||||||
|
const common = require('./webpack.common');
|
||||||
|
const pkg = require('./../package.json');
|
||||||
|
|
||||||
|
const ROOT_DIR = path.join(__dirname, './..');
|
||||||
|
const SRC_DIR = path.join(__dirname, '../src');
|
||||||
|
const DIST_DIR = path.join(__dirname, '../dist');
|
||||||
|
|
||||||
|
module.exports = (env, argv) => {
|
||||||
|
const commonConfig = common(env, argv);
|
||||||
|
|
||||||
|
return merge(commonConfig, {
|
||||||
|
mode: 'production',
|
||||||
|
stats: {
|
||||||
|
colors: false,
|
||||||
|
hash: true,
|
||||||
|
timings: true,
|
||||||
|
assets: true,
|
||||||
|
chunks: true,
|
||||||
|
chunkModules: true,
|
||||||
|
modules: true,
|
||||||
|
children: true,
|
||||||
|
warnings: true,
|
||||||
|
},
|
||||||
|
optimization: {
|
||||||
|
minimize: true,
|
||||||
|
sideEffects: true,
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
path: ROOT_DIR,
|
||||||
|
library: 'ohifCornerstoneExtension',
|
||||||
|
libraryTarget: 'umd',
|
||||||
|
filename: pkg.main,
|
||||||
|
auxiliaryComment: 'Test Comment',
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.(gif|jpe?g|png|svg)$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: 'url-loader',
|
||||||
|
options: {
|
||||||
|
limit: 8192,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.(ttf|eot|woff|woff2)$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: 'url-loader',
|
||||||
|
options: {
|
||||||
|
limit: 50000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
41
extensions/dicom-pdf/package.json
Normal file
41
extensions/dicom-pdf/package.json
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"name": "@ohif/extension-dicom-pdf",
|
||||||
|
"version": "0.0.8-alpha.0",
|
||||||
|
"description": "OHIF extension for Dicom PDF",
|
||||||
|
"author": "OHIF",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "OHIF/Viewers",
|
||||||
|
"main": "dist/index.umd.js",
|
||||||
|
"module": "src/index.js",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8",
|
||||||
|
"npm": ">=5"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"lerna:build": "webpack --config config/webpack.prod.js -w -d",
|
||||||
|
"prepublishOnly": "yarn run build",
|
||||||
|
"start": "rollup -c -w"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@ohif/core": "^0.6.0",
|
||||||
|
"dicom-parser": "^1.8.3",
|
||||||
|
"prop-types": "^15.6.2",
|
||||||
|
"react": "^15.0.0 || ^16.0.0",
|
||||||
|
"react-dom": "^15.0.0 || ^16.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/runtime": "^7.2.0",
|
||||||
|
"classnames": "^2.2.6",
|
||||||
|
"lodash.isequal": "^4.5.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"gh-pages": "^2.0.1",
|
||||||
|
"lodash.clonedeep": "^4.5.0"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"presets": [
|
|
||||||
["@babel/preset-env", {
|
|
||||||
"targets": {
|
|
||||||
"ie": "11"
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
"@babel/preset-react"
|
|
||||||
],
|
|
||||||
"plugins": [
|
|
||||||
"@babel/plugin-proposal-class-properties",
|
|
||||||
"@babel/plugin-transform-runtime"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"trailingComma": "es5",
|
|
||||||
"printWidth": 80,
|
|
||||||
"proseWrap": "always",
|
|
||||||
"tabWidth": 2,
|
|
||||||
"semi": true,
|
|
||||||
"singleQuote": true,
|
|
||||||
"endOfLine": "lf"
|
|
||||||
}
|
|
||||||
@ -1,101 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@ohif/extension-cornerstone",
|
|
||||||
"version": "0.0.38",
|
|
||||||
"description": "OHIF extension for Cornerstone",
|
|
||||||
"author": "OHIF",
|
|
||||||
"license": "MIT",
|
|
||||||
"repository": "OHIF/Viewers",
|
|
||||||
"main": "dist/index.umd.js",
|
|
||||||
"module": "dist/index.es.js",
|
|
||||||
"jsnext:main": "dist/index.es.js",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8",
|
|
||||||
"npm": ">=5"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"build": "rollup -c",
|
|
||||||
"prepublishOnly": "npm run build",
|
|
||||||
"start": "rollup -c -w",
|
|
||||||
"lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"cornerstone-core": "^2.2.8",
|
|
||||||
"cornerstone-math": "^0.1.8",
|
|
||||||
"cornerstone-tools": "^3.1.0",
|
|
||||||
"cornerstone-wado-image-loader": "^2.2.3",
|
|
||||||
"dcmjs": "^0.3.8",
|
|
||||||
"dicom-parser": "^1.8.3",
|
|
||||||
"hammerjs": "^2.0.8",
|
|
||||||
"ohif-core": "^0.6.0",
|
|
||||||
"prop-types": "^15.6.2",
|
|
||||||
"react": "^15.0.0 || ^16.0.0",
|
|
||||||
"react-dom": "^15.0.0 || ^16.0.0",
|
|
||||||
"react-redux": "^6.0.0",
|
|
||||||
"react-resize-detector": "^3.4.0",
|
|
||||||
"react-viewerbase": "^0.6.0",
|
|
||||||
"redux": "^4.0.1"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/runtime": "^7.2.0",
|
|
||||||
"classnames": "^2.2.6",
|
|
||||||
"lodash.throttle": "^4.1.1",
|
|
||||||
"react-cornerstone-viewport": "0.1.30"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.2.2",
|
|
||||||
"@babel/plugin-external-helpers": "^7.2.0",
|
|
||||||
"@babel/plugin-proposal-class-properties": "^7.2.3",
|
|
||||||
"@babel/plugin-transform-runtime": "^7.2.0",
|
|
||||||
"@babel/preset-env": "^7.2.3",
|
|
||||||
"@babel/preset-react": "^7.0.0",
|
|
||||||
"babel-eslint": "^10.0.1",
|
|
||||||
"cross-env": "^5.2.0",
|
|
||||||
"eslint": "5.13.0",
|
|
||||||
"eslint-plugin-import": "^2.14.0",
|
|
||||||
"eslint-plugin-node": "^8.0.0",
|
|
||||||
"eslint-plugin-promise": "^4.0.1",
|
|
||||||
"eslint-plugin-react": "^7.11.1",
|
|
||||||
"gh-pages": "^2.0.1",
|
|
||||||
"husky": "^1.3.1",
|
|
||||||
"lint-staged": "^8.1.0",
|
|
||||||
"lodash.clonedeep": "^4.5.0",
|
|
||||||
"prettier": "^1.15.3",
|
|
||||||
"react": "^16.6.3",
|
|
||||||
"react-dom": "^16.6.3",
|
|
||||||
"rollup": "^1.1.2",
|
|
||||||
"rollup-plugin-babel": "^4.2.0",
|
|
||||||
"rollup-plugin-commonjs": "^9.2.0",
|
|
||||||
"rollup-plugin-node-builtins": "^2.1.2",
|
|
||||||
"rollup-plugin-node-resolve": "^4.0.0",
|
|
||||||
"rollup-plugin-peer-deps-external": "^2.2.0",
|
|
||||||
"rollup-plugin-postcss": "^2.0.3",
|
|
||||||
"rollup-plugin-url": "^2.1.0",
|
|
||||||
"stylelint": "^9.9.0",
|
|
||||||
"stylelint-config-recommended": "^2.1.0",
|
|
||||||
"stylus": "^0.54.5"
|
|
||||||
},
|
|
||||||
"husky": {
|
|
||||||
"hooks": {
|
|
||||||
"pre-commit": "lint-staged"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lint-staged": {
|
|
||||||
"src/**/*.{js,jsx,json,css}": [
|
|
||||||
"prettier --single-quote --write",
|
|
||||||
"git add"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"browserslist": [
|
|
||||||
">0.2%",
|
|
||||||
"not dead",
|
|
||||||
"not ie <= 11",
|
|
||||||
"not op_mini all"
|
|
||||||
],
|
|
||||||
"files": [
|
|
||||||
"dist",
|
|
||||||
"README.md"
|
|
||||||
],
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"presets": [
|
|
||||||
["@babel/preset-env", {
|
|
||||||
"targets": {
|
|
||||||
"ie": "11"
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
"@babel/preset-react"
|
|
||||||
],
|
|
||||||
"plugins": [
|
|
||||||
"@babel/plugin-proposal-class-properties",
|
|
||||||
"@babel/plugin-transform-runtime"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"trailingComma": "es5",
|
|
||||||
"printWidth": 80,
|
|
||||||
"proseWrap": "always",
|
|
||||||
"tabWidth": 2,
|
|
||||||
"semi": true,
|
|
||||||
"singleQuote": true,
|
|
||||||
"endOfLine": "lf"
|
|
||||||
}
|
|
||||||
@ -1,89 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@ohif/extension-dicom-html",
|
|
||||||
"version": "0.0.3",
|
|
||||||
"description": "OHIF extension for rendering structured reports to HTML",
|
|
||||||
"author": "OHIF",
|
|
||||||
"license": "MIT",
|
|
||||||
"repository": "OHIF/Viewers",
|
|
||||||
"main": "dist/index.umd.js",
|
|
||||||
"module": "dist/index.es.js",
|
|
||||||
"jsnext:main": "dist/index.es.js",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8",
|
|
||||||
"npm": ">=5"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"build": "rollup -c",
|
|
||||||
"prepublishOnly": "npm run build",
|
|
||||||
"start": "rollup -c -w",
|
|
||||||
"lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"dcmjs": "^0.3.3",
|
|
||||||
"ohif-core": "^0.6.0",
|
|
||||||
"prop-types": "^15.6.2",
|
|
||||||
"react": "^15.0.0 || ^16.0.0",
|
|
||||||
"react-dom": "^15.0.0 || ^16.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/runtime": "^7.2.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.2.2",
|
|
||||||
"@babel/plugin-external-helpers": "^7.2.0",
|
|
||||||
"@babel/plugin-proposal-class-properties": "^7.2.3",
|
|
||||||
"@babel/plugin-transform-runtime": "^7.2.0",
|
|
||||||
"@babel/preset-env": "^7.2.3",
|
|
||||||
"@babel/preset-react": "^7.0.0",
|
|
||||||
"@svgr/rollup": "^4.1.0",
|
|
||||||
"babel-eslint": "^9.0.0",
|
|
||||||
"cross-env": "^5.2.0",
|
|
||||||
"eslint": "5.6.0",
|
|
||||||
"eslint-plugin-import": "^2.14.0",
|
|
||||||
"eslint-plugin-node": "^8.0.0",
|
|
||||||
"eslint-plugin-promise": "^4.0.1",
|
|
||||||
"eslint-plugin-react": "^7.11.1",
|
|
||||||
"gh-pages": "^2.0.1",
|
|
||||||
"husky": "^1.3.1",
|
|
||||||
"lint-staged": "^8.1.0",
|
|
||||||
"lodash.clonedeep": "^4.5.0",
|
|
||||||
"prettier": "^1.15.3",
|
|
||||||
"react": "^16.6.3",
|
|
||||||
"react-dom": "^16.6.3",
|
|
||||||
"react-scripts": "^2.1.2",
|
|
||||||
"rollup": "^0.68.2",
|
|
||||||
"rollup-plugin-babel": "^4.2.0",
|
|
||||||
"rollup-plugin-commonjs": "^9.2.0",
|
|
||||||
"rollup-plugin-node-builtins": "^2.1.2",
|
|
||||||
"rollup-plugin-node-resolve": "^4.0.0",
|
|
||||||
"rollup-plugin-peer-deps-external": "^2.2.0",
|
|
||||||
"rollup-plugin-postcss": "^1.6.3",
|
|
||||||
"rollup-plugin-url": "^2.1.0",
|
|
||||||
"stylelint": "^9.9.0",
|
|
||||||
"stylelint-config-recommended": "^2.1.0",
|
|
||||||
"stylus": "^0.54.5"
|
|
||||||
},
|
|
||||||
"husky": {
|
|
||||||
"hooks": {
|
|
||||||
"pre-commit": "lint-staged"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lint-staged": {
|
|
||||||
"src/**/*.{js,jsx,json,css}": [
|
|
||||||
"prettier --single-quote --write",
|
|
||||||
"git add"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"browserslist": [
|
|
||||||
">0.2%",
|
|
||||||
"not dead",
|
|
||||||
"not ie <= 11",
|
|
||||||
"not op_mini all"
|
|
||||||
],
|
|
||||||
"files": [
|
|
||||||
"dist"
|
|
||||||
],
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"presets": [
|
|
||||||
["@babel/preset-env", {
|
|
||||||
"targets": {
|
|
||||||
"ie": "11"
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
"@babel/preset-react"
|
|
||||||
],
|
|
||||||
"plugins": [
|
|
||||||
"@babel/plugin-proposal-class-properties",
|
|
||||||
"@babel/plugin-transform-runtime"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": [
|
|
||||||
"react-app",
|
|
||||||
"eslint:recommended",
|
|
||||||
"plugin:react/recommended"
|
|
||||||
],
|
|
||||||
"parser": "babel-eslint",
|
|
||||||
"env": {
|
|
||||||
"jest": true
|
|
||||||
},
|
|
||||||
"settings": {
|
|
||||||
"react": {
|
|
||||||
"version": "detect",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"trailingComma": "es5",
|
|
||||||
"printWidth": 80,
|
|
||||||
"proseWrap": "always",
|
|
||||||
"tabWidth": 2,
|
|
||||||
"semi": true,
|
|
||||||
"singleQuote": true,
|
|
||||||
"endOfLine": "lf"
|
|
||||||
}
|
|
||||||
@ -1,86 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@ohif/extension-dicom-microscopy",
|
|
||||||
"version": "0.0.8",
|
|
||||||
"description": "OHIF extension for Dicom Microscopy",
|
|
||||||
"author": "OHIF",
|
|
||||||
"license": "MIT",
|
|
||||||
"repository": "OHIF/Viewers",
|
|
||||||
"main": "dist/index.js",
|
|
||||||
"module": "dist/index.es.js",
|
|
||||||
"jsnext:main": "dist/index.es.js",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8",
|
|
||||||
"npm": ">=5"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"build": "rollup -c",
|
|
||||||
"prepublishOnly": "npm run build",
|
|
||||||
"start": "rollup -c -w",
|
|
||||||
"lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"react": "^15.0.0 || ^16.0.0",
|
|
||||||
"react-dom": "^15.0.0 || ^16.0.0",
|
|
||||||
"ohif-core": "^0.6.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.2.2",
|
|
||||||
"@babel/plugin-external-helpers": "^7.2.0",
|
|
||||||
"@babel/plugin-proposal-class-properties": "^7.2.3",
|
|
||||||
"@babel/plugin-transform-runtime": "^7.2.0",
|
|
||||||
"@babel/preset-env": "^7.2.3",
|
|
||||||
"@babel/preset-react": "^7.0.0",
|
|
||||||
"babel-eslint": "^9.0.0",
|
|
||||||
"cross-env": "^5.2.0",
|
|
||||||
"eslint": "5.6.0",
|
|
||||||
"eslint-plugin-import": "^2.14.0",
|
|
||||||
"eslint-plugin-node": "^8.0.0",
|
|
||||||
"eslint-plugin-promise": "^4.0.1",
|
|
||||||
"eslint-plugin-react": "^7.11.1",
|
|
||||||
"gh-pages": "^2.0.1",
|
|
||||||
"husky": "^1.3.1",
|
|
||||||
"lint-staged": "^8.1.0",
|
|
||||||
"prettier": "^1.15.3",
|
|
||||||
"react": "^16.6.3",
|
|
||||||
"react-dom": "^16.6.3",
|
|
||||||
"rollup": "^0.68.2",
|
|
||||||
"rollup-plugin-babel": "^4.2.0",
|
|
||||||
"rollup-plugin-commonjs": "^9.2.0",
|
|
||||||
"rollup-plugin-node-builtins": "^2.1.2",
|
|
||||||
"rollup-plugin-node-resolve": "^4.0.0",
|
|
||||||
"rollup-plugin-peer-deps-external": "^2.2.0",
|
|
||||||
"rollup-plugin-postcss": "^1.6.3",
|
|
||||||
"rollup-plugin-url": "^2.1.0",
|
|
||||||
"stylelint": "^9.9.0",
|
|
||||||
"stylelint-config-recommended": "^2.1.0",
|
|
||||||
"stylus": "^0.54.5"
|
|
||||||
},
|
|
||||||
"husky": {
|
|
||||||
"hooks": {
|
|
||||||
"pre-commit": "lint-staged"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lint-staged": {
|
|
||||||
"src/**/*.{js,jsx,json,css}": [
|
|
||||||
"prettier --single-quote --write",
|
|
||||||
"git add"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"browserslist": [
|
|
||||||
">0.2%",
|
|
||||||
"not dead",
|
|
||||||
"not ie <= 11",
|
|
||||||
"not op_mini all"
|
|
||||||
],
|
|
||||||
"files": [
|
|
||||||
"dist"
|
|
||||||
],
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/runtime": "^7.2.0",
|
|
||||||
"classnames": "^2.2.6",
|
|
||||||
"dicom-microscopy-viewer": "^0.4.3"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"presets": [
|
|
||||||
["@babel/preset-env", {
|
|
||||||
"targets": {
|
|
||||||
"ie": "11"
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
"@babel/preset-react"
|
|
||||||
],
|
|
||||||
"plugins": [
|
|
||||||
"@babel/plugin-proposal-class-properties",
|
|
||||||
"@babel/plugin-transform-runtime"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": [
|
|
||||||
"react-app",
|
|
||||||
"eslint:recommended",
|
|
||||||
"plugin:react/recommended"
|
|
||||||
],
|
|
||||||
"parser": "babel-eslint",
|
|
||||||
"env": {
|
|
||||||
"jest": true
|
|
||||||
},
|
|
||||||
"settings": {
|
|
||||||
"react": {
|
|
||||||
"version": "detect",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
23
extensions/ohif-dicom-pdf-extension/.gitignore
vendored
23
extensions/ohif-dicom-pdf-extension/.gitignore
vendored
@ -1,23 +0,0 @@
|
|||||||
|
|
||||||
# See https://help.github.com/ignore-files/ for more about ignoring files.
|
|
||||||
|
|
||||||
# dependencies
|
|
||||||
node_modules
|
|
||||||
|
|
||||||
# builds
|
|
||||||
build
|
|
||||||
dist
|
|
||||||
.rpt2_cache
|
|
||||||
|
|
||||||
# misc
|
|
||||||
.DS_Store
|
|
||||||
.env
|
|
||||||
.env.local
|
|
||||||
.env.development.local
|
|
||||||
.env.test.local
|
|
||||||
.env.production.local
|
|
||||||
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
.idea
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"trailingComma": "es5",
|
|
||||||
"printWidth": 80,
|
|
||||||
"proseWrap": "always",
|
|
||||||
"tabWidth": 2,
|
|
||||||
"semi": true,
|
|
||||||
"singleQuote": true,
|
|
||||||
"endOfLine": "lf"
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user