This commit is contained in:
mario
2025-03-07 13:47:44 +07:00
commit c4efec5a14
3358 changed files with 303774 additions and 0 deletions

View File

@@ -0,0 +1,142 @@
---
sidebar_position: 1
sidebar_label: 3.7 -> 3.8
---
# Migration Guide
There are two main things that need to be taken care of.
## New Toolbar Button definitions
### Update Active Tool Handling
The concept of `activeTool` and its associated getter and setter has been removed. The active tool should now be derived from the toolGroup and the viewport.
**Action Needed**
Remove any code that sets the default tool using `toolbarService.setDefaultTool()` and activates the tool using
`toolbarService.recordInteraction()`. For example, the following code should be removed:
```javascript
let unsubscribe;
toolbarService.setDefaultTool({
groupId: "WindowLevel",
itemId: "WindowLevel",
interactionType: "tool",
commands: [
{
commandName: "setToolActive",
commandOptions: {
toolName: "WindowLevel",
},
context: "CORNERSTONE",
},
],
});
const activateTool = () => {
toolbarService.recordInteraction(toolbarService.getDefaultTool());
unsubscribe();
};
({ unsubscribe } = toolGroupService.subscribe(
toolGroupService.EVENTS.VIEWPORT_ADDED,
activateTool
));
```
Instead, focus on defining the buttons and their placement in the toolbar using `toolbarService.addButtons()` and `toolbarService.createButtonSection()`. For example:
```javascript
toolbarService.addButtons([...toolbarButtons, ...moreTools]);
toolbarService.createButtonSection("primary", [
"MeasurementTools",
"Zoom",
"WindowLevel",
"Pan",
"Capture",
"Layout",
"MPR",
"Crosshairs",
"MoreTools",
]);
```
### Update Button Definitions
The concept of button types (toggle, action, tool) has been removed. Buttons are now defined using a simplified object-based definition.
**Action Needed**
Update your button definitions to use the new object-based format and remove the `type` property. Use the `uiType` property for the top-level UI type definition. For example:
```javascript
// Old Implementation
{
id: 'Capture',
type: 'ohif.action',
props: {
icon: 'tool-capture',
label: 'Capture',
type: 'action',
commands: [
{
commandName: 'showDownloadViewportModal',
commandOptions: {},
context: 'CORNERSTONE',
},
],
},
},
```
is now
```javascript
// New Implementation
{
id: 'Capture',
uiType: 'ohif.radioGroup',
props: {
icon: 'tool-capture',
label: 'Capture',
commands: [
{
commandName: 'showDownloadViewportModal',
context: 'CORNERSTONE',
},
],
evaluate: 'evaluate.action',
},
},
```
### Add Evaluators to Button Definitions
Introduce the evaluate property in your button definitions to determine the state of the button based on the app context.
**Action Needed**
Add the appropriate `evaluate` property to each button definition. For example:
- Use `evaluate.cornerstoneTool` if the button should be highlighted only when it is the active primary tool (left mouse).
- Use `evaluate.cornerstoneTool.toggle` if the tool is a toggle tool (like reference lines or image overlay).
Refer to the `modes/longitudinal/src/toolbarButtons.ts` file for examples of using the `evaluate` property.
Additional Resources
- For more information on the new toolbar module and its usage, refer to the [Toolbar documentation](../platform/extensions/modules/toolbar.md).
- Consult the updated button definitions in `modes/longitudinal/src/toolbarButtons.ts` for examples of the new object-based button definition format and the usage of evaluators.
## leftPanelDefaultClosed and rightPanelDefaultClosed
Now they are renamed to `leftPanelClosed` and `rightPanelClosed` respectively.
## StudyInstanceUID in the URL param
Previously there were two params that you could choose: seriesInstanceUID and seriesInstanceUIDs, they have been replaced with seriesInstanceUIDs so even if you would like to filter one series use ``seriesInstanceUIDs`