Expanding extensions docs

This commit is contained in:
dannyrb 2019-06-18 15:19:04 -04:00
parent 32b420087b
commit 8112c569e8

View File

@ -8,34 +8,58 @@ toolbar, or as complex as a new viewport capable of rendering volumes in 3D.
- [Overview](#overview) - [Overview](#overview)
- [Modules](#modules) - [Modules](#modules)
- [Viewport](#viewport) - [Commands](#commands)
- [Toolbar](#toolbar) - [Toolbar](#toolbar)
- [SOP Class Handler](#sopclasshandler) - [SOP Class Handler](#sopclasshandler)
- [Panel](#panel) - [Panel](#panel)
- [Commands](#commands)
- [Hotkeys](#hotkeys) - [Hotkeys](#hotkeys)
- [Viewport](#viewport)
## Overview ## Overview
At a glance, an extension is a class or object that has a `getExtensionId()` At a glance, an extension is a javascript object that has an `id` property, and
method, and one or more "module" methods. You can find an abbreviated extension one or more "module" methods. You can find an abbreviated extension below, or
below, or [view the source][example-ext-src] of our example extension.
[view the source](https://github.com/OHIF/Viewers/blob/react/extensions/ohif-cornerstone-extension/src/OHIFCornerstoneExtension.js#L32-L65)
of our `cornerstone` viewport extension.
```js ```js
class myCustomExtension { export default {
/**
* Only required property. Should be a unique value across all extensions.
*/
id: 'example-extension',
/** Required */ /**
getExtensionId: () => 'my-extension-id'; *
*/
getCommandsModule() {
return {
actions: {
// Store Contexts + Options
exampleAction: ({ viewports, param1 }) => {
console.log(`There are ${viewports.length} viewports`);
console.log(`param1's value is: ${param1}`);
},
},
definitions: {
exampleActionDef: {
commandFn: this.actions.exampleAction,
storeContexts: ['viewports'],
options: { param1: 'hello world' },
},
},
}
},
/** React component that receives props from ConnectLayoutManager /**
* If more than one viewport module is registered, SopClassHandler * Registers a ReactComponent that should be used to render data in a
* is used to help determine which component is used */ * Viewport. The first registered viewport is our "default viewport". If
getViewportModule: () => reactViewportComponent; * more than one viewport is registered, we use `SopClassHandlers` to
* determine which viewport should be used.
*/
getViewportModule: () => reactViewportComponent,
/** React component that adds buttons/behavior to the viewer Toolbar */ /** React component that adds buttons/behavior to the viewer Toolbar */
getToolbarModule: () => reactToolbarComponent; getToolbarModule: () => reactToolbarComponent,
/** Provides a whitelist of SOPClassUIDs the viewport is capable of rendering. /** Provides a whitelist of SOPClassUIDs the viewport is capable of rendering.
* Can modify default behavior for methods like `getDisplaySetFromSeries` */ * Can modify default behavior for methods like `getDisplaySetFromSeries` */
@ -44,7 +68,7 @@ class myCustomExtension {
type: PLUGIN_TYPES.SOP_CLASS_HANDLER, type: PLUGIN_TYPES.SOP_CLASS_HANDLER,
sopClassUids: ['string'], sopClassUids: ['string'],
getDisplaySetFromSeries: (series, study, dicomWebClient, authorizationHeaders) => ... getDisplaySetFromSeries: (series, study, dicomWebClient, authorizationHeaders) => ...
}; },
// Not yet used // Not yet used
getPanelModule: () => null; getPanelModule: () => null;
@ -159,3 +183,11 @@ top level [`extensions/`](https://github.com/OHIF/Viewers/tree/react/extensions)
directory. directory.
{% include "./_maintained-extensions-table.md" %} {% include "./_maintained-extensions-table.md" %}
<!--
Links
-->
<!-- prettier-ignore-start -->
[example-ext-src]: https://github.com/OHIF/Viewers/blob/master/extensions/_ohif-example-extension/src/index.js)
<!-- prettier-ignore-end -->