* 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.
104 lines
2.6 KiB
JavaScript
104 lines
2.6 KiB
JavaScript
import React, { Component } from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import cloneDeep from 'lodash.clonedeep';
|
|
|
|
import EditDescriptionDialog from './../EditDescriptionDialog/EditDescriptionDialog.js';
|
|
import LabellingFlow from './LabellingFlow.js';
|
|
import './LabellingManager.css';
|
|
|
|
export default class LabellingManager extends Component {
|
|
static propTypes = {
|
|
measurementData: PropTypes.object.isRequired,
|
|
labellingDoneCallback: PropTypes.func.isRequired,
|
|
updateLabelling: PropTypes.func.isRequired,
|
|
skipAddLabelButton: PropTypes.bool,
|
|
editLocation: PropTypes.bool,
|
|
editDescription: PropTypes.bool,
|
|
editDescriptionOnDialog: PropTypes.bool,
|
|
};
|
|
|
|
static defaultProps = {
|
|
skipAddLabelButton: false,
|
|
editLocation: false,
|
|
editDescription: false,
|
|
editDescriptionOnDialog: false,
|
|
};
|
|
|
|
constructor(props) {
|
|
super(props);
|
|
|
|
const measurementData = cloneDeep(props.measurementData);
|
|
this.treatMeasurementData(measurementData);
|
|
|
|
let editLocation = props.editLocation;
|
|
if (!props.editDescription && !props.editLocation) {
|
|
editLocation = true;
|
|
}
|
|
|
|
this.state = {
|
|
skipAddLabelButton: props.skipAddLabelButton,
|
|
editLocation: editLocation,
|
|
editDescription: props.editDescription,
|
|
editDescriptionOnDialog: props.editDescriptionOnDialog,
|
|
measurementData: measurementData,
|
|
};
|
|
}
|
|
|
|
componentDidMount = () => {
|
|
document.addEventListener('touchstart', this.onTouchStart);
|
|
};
|
|
|
|
componentWillUnmount = () => {
|
|
document.removeEventListener('touchstart', this.onTouchStart);
|
|
};
|
|
|
|
render() {
|
|
return this.getRenderComponent();
|
|
}
|
|
|
|
getRenderComponent = () => {
|
|
const {
|
|
editLocation,
|
|
editDescription,
|
|
editDescriptionOnDialog,
|
|
measurementData,
|
|
} = this.state;
|
|
|
|
if (editDescriptionOnDialog) {
|
|
return (
|
|
<EditDescriptionDialog
|
|
onCancel={this.props.labellingDoneCallback}
|
|
onUpdate={this.descriptionDialogUpdate}
|
|
measurementData={measurementData}
|
|
/>
|
|
);
|
|
}
|
|
|
|
if (editLocation || editDescription) {
|
|
return <LabellingFlow {...this.props} />;
|
|
}
|
|
};
|
|
|
|
treatMeasurementData = measurementData => {
|
|
const { editDescription, editLocation } = this.props;
|
|
|
|
if (editDescription) {
|
|
measurementData.description = undefined;
|
|
}
|
|
|
|
if (editLocation) {
|
|
measurementData.location = undefined;
|
|
}
|
|
};
|
|
|
|
responseDialogUpdate = response => {
|
|
this.props.updateLabelling({ response });
|
|
this.props.labellingDoneCallback();
|
|
};
|
|
|
|
descriptionDialogUpdate = description => {
|
|
this.props.updateLabelling({ description });
|
|
this.props.labellingDoneCallback();
|
|
};
|
|
}
|