* 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.
110 lines
2.3 KiB
JavaScript
110 lines
2.3 KiB
JavaScript
/**
|
|
*
|
|
*/
|
|
export default {
|
|
/**
|
|
* Only required property. Should be a unique value across all extensions.
|
|
*/
|
|
id: 'example-extension',
|
|
|
|
/**
|
|
* LIFECYCLE HOOKS
|
|
*/
|
|
|
|
preRegistration({
|
|
servicesManager = {},
|
|
commandsManager = {},
|
|
configuration = {},
|
|
}) {},
|
|
|
|
/**
|
|
* MODULE GETTERS
|
|
*/
|
|
|
|
getViewportModule() {
|
|
return '... react component ...';
|
|
},
|
|
getSopClassHandlerModule() {
|
|
return sopClassHandlerModule;
|
|
},
|
|
getPanelModule() {
|
|
return panelModule;
|
|
},
|
|
getToolbarModule() {
|
|
return panelModule;
|
|
},
|
|
getCommandsModule(/* store */) {
|
|
return commandsModule;
|
|
},
|
|
};
|
|
|
|
/**
|
|
*
|
|
*/
|
|
const commandsModule = {
|
|
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' },
|
|
},
|
|
},
|
|
};
|
|
|
|
/**
|
|
*
|
|
*/
|
|
const sopClassHandlerModule = {
|
|
id: 'OHIFDicomHtmlSopClassHandler',
|
|
sopClassUids: Object.values({
|
|
BASIC_TEXT_SR: '1.2.840.10008.5.1.4.1.1.88.11',
|
|
ENHANCED_SR: '1.2.840.10008.5.1.4.1.1.88.22',
|
|
COMPREHENSIVE_SR: '1.2.840.10008.5.1.4.1.1.88.33',
|
|
PROCEDURE_LOG_STORAGE: '1.2.840.10008.5.1.4.1.1.88.40',
|
|
MAMMOGRAPHY_CAD_SR: '1.2.840.10008.5.1.4.1.1.88.50',
|
|
CHEST_CAD_SR: '1.2.840.10008.5.1.4.1.1.88.65',
|
|
X_RAY_RADIATION_DOSE_SR: '1.2.840.10008.5.1.4.1.1.88.67',
|
|
}),
|
|
getDisplaySetFromSeries(series, study, dicomWebClient, authorizationHeaders) {
|
|
const instance = series.getFirstInstance();
|
|
|
|
return {
|
|
plugin: 'html',
|
|
displaySetInstanceUid: 0, //utils.guid(),
|
|
wadoRoot: study.getData().wadoRoot,
|
|
wadoUri: instance.getData().wadouri,
|
|
sopInstanceUid: instance.getSOPInstanceUID(),
|
|
seriesInstanceUid: series.getSeriesInstanceUID(),
|
|
studyInstanceUid: study.getStudyInstanceUID(),
|
|
authorizationHeaders,
|
|
};
|
|
},
|
|
};
|
|
|
|
/**
|
|
*
|
|
*/
|
|
const panelModule = {
|
|
menuOptions: [
|
|
{
|
|
icon: 'th-list',
|
|
label: 'Segments',
|
|
target: 'segment-panel',
|
|
},
|
|
],
|
|
components: [
|
|
{
|
|
id: 'segment-panel',
|
|
component: '... react component ...',
|
|
},
|
|
],
|
|
defaultContext: ['VIEWER'],
|
|
};
|