dmn-js-decision-table
Version:
A decision table view for dmn-js
42 lines (40 loc) • 1.48 kB
JavaScript
import InputDurationEdit from './components/InputDurationEdit';
import OutputDurationEdit from './components/OutputDurationEdit';
import { isInput, isOutput } from 'dmn-js-shared/lib/util/ModelUtil';
export default class SimpleDurationEdit {
constructor(components, simpleMode) {
simpleMode.registerProvider(element => {
const typeRef = getTypeRef(element);
return (isInput(element.col) || isOutput(element.col)) && isDuration(typeRef);
});
components.onGetComponent('context-menu', (context = {}) => {
if (context.contextMenuType && context.contextMenuType === 'simple-mode-edit') {
if (!context.element) {
return;
}
const typeRef = getTypeRef(context.element);
if (isDuration(typeRef)) {
if (isInput(context.element.col)) {
return InputDurationEdit;
} else if (isOutput(context.element.col)) {
return OutputDurationEdit;
}
}
}
});
}
}
SimpleDurationEdit.$inject = ['components', 'simpleMode'];
// helpers //////////////////////
function getTypeRef(element) {
if (isInput(element.col)) {
return element.col && element.col.businessObject.inputExpression.typeRef;
} else {
return element.col && element.col.businessObject.typeRef;
}
}
const durations = ['yearMonthDuration', 'dayTimeDuration'];
function isDuration(typeRef) {
return durations.includes(typeRef);
}
//# sourceMappingURL=SimpleDurationEdit.js.map