mirror of
https://github.com/status-im/spiff-arena.git
synced 2025-02-01 12:45:15 +00:00
187 lines
4.2 KiB
JavaScript
187 lines
4.2 KiB
JavaScript
import { ListGroup, isTextFieldEntryEdited } from '@bpmn-io/properties-panel';
|
|
import { is } from 'bpmn-js/lib/util/ModelUtil';
|
|
import { CorrelationKeysArray } from './CorrelationKeysArray';
|
|
import { MessageSelect } from './MessageSelect';
|
|
import { MessagePayload } from './MessagePayload';
|
|
import { MessageVariable } from './MessageVariable';
|
|
import { CorrelationPropertiesArray } from './CorrelationPropertiesArray';
|
|
import { MessageCorrelationPropertiesArray } from './MessageCorrelationPropertiesArray';
|
|
import { MessageArray } from './MessageArray';
|
|
import { isMessageElement, canReceiveMessage } from '../MessageHelpers';
|
|
|
|
const LOW_PRIORITY = 500;
|
|
|
|
export default function MessagesPropertiesProvider(
|
|
propertiesPanel,
|
|
translate,
|
|
moddle,
|
|
commandStack,
|
|
elementRegistry
|
|
) {
|
|
this.getGroups = function getGroupsCallback(element) {
|
|
return function pushGroup(groups) {
|
|
if (is(element, 'bpmn:Collaboration')) {
|
|
groups.push(
|
|
...createCollaborationGroup(
|
|
element,
|
|
translate,
|
|
moddle,
|
|
commandStack,
|
|
elementRegistry
|
|
)
|
|
);
|
|
} else if (isMessageElement(element)) {
|
|
const messageIndex = findEntry(groups, 'message');
|
|
if (messageIndex) {
|
|
groups.splice(messageIndex, 1);
|
|
}
|
|
groups.push(
|
|
createMessageGroup(
|
|
element,
|
|
translate,
|
|
moddle,
|
|
commandStack,
|
|
elementRegistry
|
|
)
|
|
);
|
|
}
|
|
return groups;
|
|
};
|
|
};
|
|
|
|
function findEntry(entries, entryId) {
|
|
let entryIndex = null;
|
|
entries.forEach(function (value, index) {
|
|
if (value.id === entryId) {
|
|
entryIndex = index;
|
|
}
|
|
});
|
|
return entryIndex;
|
|
}
|
|
propertiesPanel.registerProvider(LOW_PRIORITY, this);
|
|
}
|
|
|
|
MessagesPropertiesProvider.$inject = [
|
|
'propertiesPanel',
|
|
'translate',
|
|
'moddle',
|
|
'commandStack',
|
|
'elementRegistry',
|
|
];
|
|
|
|
/**
|
|
* Adds a group to the properties panel for the script task that allows you
|
|
* to set the script.
|
|
* @param element
|
|
* @param translate
|
|
* @returns The components to add to the properties panel. */
|
|
function createCollaborationGroup(
|
|
element,
|
|
translate,
|
|
moddle,
|
|
commandStack,
|
|
elementRegistry
|
|
) {
|
|
return [
|
|
{
|
|
id: 'correlation_keys',
|
|
label: translate('Correlation Keys'),
|
|
component: ListGroup,
|
|
...CorrelationKeysArray({
|
|
element,
|
|
moddle,
|
|
commandStack,
|
|
elementRegistry,
|
|
translate,
|
|
}),
|
|
},
|
|
{
|
|
id: 'correlation_properties',
|
|
label: translate('Correlation Properties'),
|
|
component: ListGroup,
|
|
...CorrelationPropertiesArray({
|
|
element,
|
|
moddle,
|
|
commandStack,
|
|
elementRegistry,
|
|
translate,
|
|
}),
|
|
},
|
|
{
|
|
id: 'messages',
|
|
label: translate('Messages'),
|
|
component: ListGroup,
|
|
...MessageArray({
|
|
element,
|
|
moddle,
|
|
commandStack,
|
|
elementRegistry,
|
|
translate,
|
|
}),
|
|
},
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Adds a group to the properties panel for editing messages for the SendTask
|
|
* @param element
|
|
* @param translate
|
|
* @returns The components to add to the properties panel. */
|
|
function createMessageGroup(
|
|
element,
|
|
translate,
|
|
moddle,
|
|
commandStack,
|
|
elementRegistry
|
|
) {
|
|
const entries = [
|
|
{
|
|
id: 'selectMessage',
|
|
element,
|
|
component: MessageSelect,
|
|
isEdited: isTextFieldEntryEdited,
|
|
moddle,
|
|
commandStack,
|
|
},
|
|
];
|
|
|
|
if (canReceiveMessage(element)) {
|
|
entries.push({
|
|
id: 'messageVariable',
|
|
element,
|
|
component: MessageVariable,
|
|
isEdited: isTextFieldEntryEdited,
|
|
moddle,
|
|
commandStack,
|
|
});
|
|
} else {
|
|
entries.push({
|
|
id: 'messagePayload',
|
|
element,
|
|
component: MessagePayload,
|
|
isEdited: isTextFieldEntryEdited,
|
|
moddle,
|
|
commandStack,
|
|
});
|
|
}
|
|
|
|
entries.push({
|
|
id: 'correlationProperties',
|
|
label: translate('Correlation'),
|
|
component: ListGroup,
|
|
...MessageCorrelationPropertiesArray({
|
|
element,
|
|
moddle,
|
|
commandStack,
|
|
elementRegistry,
|
|
translate,
|
|
}),
|
|
});
|
|
|
|
return {
|
|
id: 'messages',
|
|
label: translate('Message'),
|
|
entries,
|
|
};
|
|
}
|