* Fix ExtensionManager bug and add test to bandaid * Add tools configuration to extension manager preinit * Fix reducing of configs * Merge internal with external configs * Merge internal with external configs * Remove dialog from init in measurementstable * Testing injected configuration * New way to set config * Add new prop to dialog provider to allow disabling last position * Remove code from preinit in cornerstone * Add new prop to dialog provider to allow disabling last position * Add centralize to dialogs * Reorder dialogs when adding them * Fix draggable styles (cursor) * Remove repositioning methods from labelling flow and remove overlay from labelling manager * Fix empty array being set in bringToFront * Add new command to update table and pass commands manager to modules/preinit hook * Ad UIContextMenu service / factory * Use new contextmenu service in measurementspanel extension * Use dialogs for arrow annotate in default * Remove positioning funcionality from tool context menu * Add context menu service * Pass commandsModule to extension * Update edit description dialog and simple dialog to position relative * Remove style code from labelling flow and manager * Remove eventdata from labelling * Remove labelling code from measurement init * Add commandsmanager to provider * Update contextmenu provider and service * Add touchstart and mouseclick to hide contextmenu * Hide labelling if click/touch * Remove labelling and context menu dead code * Fix undefined bug if ViewerMain grid has no children * Fix broken prop on context menu * Update commandsmodule based on master * Fix broken configuration * Update script tag config * Remove cornerstone from toolcontextmenu * Remove cornerstone from toolcontextmenu * Split labelling and context menu providers * Split labelling and context menu providers * Update test * Destructure extensions into new array * CR Update: Move default arrow config to cornerstone instead of default * CR Update: Fix app configuration props structure * CR Update: Fix app configuration prop in script tag and extract commands manager from providers * CR Update: Create custom providers to use commandsManager * CR Update: Use services directly in measurementspanel * CR Update: Pass components to providers * CR Update: Remove position from dialog * CR Update: fix dialog prop check * CR Update: Fix comments * CR Update: Update documentation * CR Update: Add test default configuration * CR Update: Add default empy array to extensions * CR Update: Update i18n configuration all ot match current function configuration * CR Update: Add defaults to injected dependencies in configuration and extension configuration * CR Update: Add defaults to configuration with no args * Update documentation * CR Update: Add default for tools * CR Update: Update config object to i18n * CR Update: spread defaults * CR Update: Add tool configuration example to cornerstone extension * CR Update: Add tool configuration to netlify (testing) * CR Update: Remove netlify config for tools * CR Update: Rollback changes to i18n to be fixed later * CR Update: Update documentation and pass whole cornerstone config object instead of tools key SEE: https://www.conventionalcommits.org/en/v1.0.0/#commit-message-with-both-and-breaking-change-footer BREAKING CHANGE: modifies the exposed react <App /> components props. The contract for providing configuration for the app has changed. Please reference updated documentation for guidance.
127 lines
5.2 KiB
Markdown
127 lines
5.2 KiB
Markdown
# Configuration
|
|
|
|
> This step assumes you have an imaging archive. If you need assistance setting
|
|
> one up, check out the [`Data Source` Guide](./data-source.md) or a deployment
|
|
> recipe that contains an open Image Archive
|
|
|
|
- [Overview](#overview)
|
|
- [Configuration Files](#configuration-files)
|
|
- [Environment Variables](#environment-variables)
|
|
- [How do I configure my project?](#how-do-i-configure-my-project)
|
|
|
|
## Overview
|
|
|
|
### Configuration Files
|
|
|
|
The configuration for our viewer is in the `<root>platform/viewer/public/config`
|
|
directory. Our build process knows which configuration file to use based on the
|
|
`APP_CONFIG` environment variable. By default, its value is
|
|
[`config/default.js`][default-config]. The majority of the viewer's features,
|
|
and registered extension's features, are configured using this file.
|
|
|
|
**Embedded Use Note:**
|
|
|
|
Alternatively, when using the `umd` bundle for embedded use cases, these same
|
|
values are what you'll pass to `installViewer` method:
|
|
|
|
`OHIFStandaloneViewer.installViewer(window.config)`
|
|
|
|
### Environment Variables
|
|
|
|
We use environment variables at build and dev time to change the Viewer's
|
|
behavior. We can update the `HTML_TEMPLATE` to easily change which extensions
|
|
are registered, and specify a different `APP_CONFIG` to connect to an
|
|
alternative data source (or even specify different default hotkeys).
|
|
|
|
| Environment Variable | Description | Default |
|
|
| -------------------- | -------------------------------------------------------------------------------------------------- | ------------------- |
|
|
| `HTML_TEMPLATE` | Which [HTML template][html-templates] to use as our web app's entry point. Specific to PWA builds. | `index.html` |
|
|
| `PUBLIC_URL` | The route relative to the host that the app will be served from. Specific to PWA builds. | `/` |
|
|
| `APP_CONFIG` | Which [configuration file][config-file] to copy to output as `app-config.js` | `config/default.js` |
|
|
| `PROXY_TARGET` | When developing, proxy requests that match this pattern to `PROXY_DOMAIN` | `undefined` |
|
|
| `PROXY_DOMAIN` | When developing, proxy requests from `PROXY_TARGET` to `PROXY_DOMAIN` | `undefined` |
|
|
|
|
## How do I configure my project?
|
|
|
|
The simplest way is to update the existing default config:
|
|
|
|
_/platform/viewer/public/config/default.js_
|
|
|
|
```js
|
|
window.config = {
|
|
routerBasename: '/',
|
|
servers: {
|
|
dicomWeb: [
|
|
{
|
|
name: 'DCM4CHEE',
|
|
wadoUriRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado',
|
|
qidoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
|
|
wadoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
|
|
qidoSupportsIncludeField: true,
|
|
imageRendering: 'wadors',
|
|
thumbnailRendering: 'wadors',
|
|
},
|
|
],
|
|
},
|
|
};
|
|
```
|
|
|
|
The configuration can also be written as a JS Function in case you need to inject dependencies like external services:
|
|
|
|
```js
|
|
window.config = ({ servicesManager } = {}) => {
|
|
const { UIDialogService } = servicesManager.services;
|
|
return {
|
|
cornerstoneExtensionConfig: {
|
|
tools: {
|
|
ArrowAnnotate: {
|
|
configuration: {
|
|
getTextCallback: (callback, eventDetails) => UIDialogService.create({...
|
|
}
|
|
}
|
|
},
|
|
},
|
|
routerBasename: '/',
|
|
servers: {
|
|
dicomWeb: [
|
|
{
|
|
name: 'DCM4CHEE',
|
|
wadoUriRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/wado',
|
|
qidoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
|
|
wadoRoot: 'https://server.dcmjs.org/dcm4chee-arc/aets/DCM4CHEE/rs',
|
|
qidoSupportsIncludeField: true,
|
|
imageRendering: 'wadors',
|
|
thumbnailRendering: 'wadors',
|
|
},
|
|
],
|
|
},
|
|
};
|
|
};
|
|
```
|
|
|
|
You can also create a new config file and specify its path relative to the build
|
|
output's root by setting the `APP_CONFIG` environment variable. You can set the
|
|
value of this environment variable a few different ways:
|
|
|
|
- ~[Add a temporary environment variable in your shell](https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#adding-temporary-environment-variables-in-your-shell)~
|
|
- Previous `react-scripts` functionality that we need to duplicate with
|
|
`dotenv-webpack`
|
|
- ~[Add environment specific variables in `.env` file(s)](https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#adding-development-environment-variables-in-env)~
|
|
- Previous `react-scripts` functionality that we need to duplicate with
|
|
`dotenv-webpack`
|
|
- Using the `cross-env` package in an npm script:
|
|
- `"build": "cross-env APP_CONFIG=config/my-config.js react-scripts build"`
|
|
|
|
After updating the configuration, `yarn run build` to generate updated build
|
|
output.
|
|
|
|
<!--
|
|
Links
|
|
-->
|
|
|
|
<!-- prettier-ignore-start -->
|
|
[default-config]: https://github.com/OHIF/Viewers/blob/master/platform/viewer/public/config/default.js
|
|
[html-templates]: https://github.com/OHIF/Viewers/tree/master/platform/viewer/public/html-templates
|
|
[config-files]: https://github.com/OHIF/Viewers/tree/master/platform/viewer/public/config
|
|
<!-- prettier-ignore-end -->
|