77 lines
2.0 KiB
JavaScript
77 lines
2.0 KiB
JavaScript
import {useService } from 'bpmn-js-properties-panel';
|
|
import { SelectEntry } from '@bpmn-io/properties-panel';
|
|
|
|
/**
|
|
* Finds the value of the given type within the extensionElements
|
|
* given a type of "spiff:preScript", would find it in this, and return
|
|
* the object.
|
|
*
|
|
* <bpmn:
|
|
<bpmn:userTask id="123" name="My User Task!">
|
|
<bpmn:extensionElements>
|
|
<spiffworkflow:preScript>
|
|
me = "100% awesome"
|
|
</spiffworkflow:preScript>
|
|
</bpmn:extensionElements>
|
|
...
|
|
</bpmn:userTask>
|
|
*
|
|
* @returns {string|null|*}
|
|
*/
|
|
export function DataObjectSelect(props) {
|
|
const element = props.element;
|
|
const commandStack = props.commandStack;
|
|
const debounce = useService('debounceInput');
|
|
|
|
|
|
const getValue = () => {
|
|
return element.businessObject.dataObjectRef.id
|
|
}
|
|
|
|
const setValue = value => {
|
|
const businessObject = element.businessObject;
|
|
for (const flowElem of businessObject.$parent.flowElements) {
|
|
if (flowElem.$type === 'bpmn:DataObject' && flowElem.id === value) {
|
|
commandStack.execute('element.updateModdleProperties', {
|
|
element,
|
|
moddleElement: businessObject,
|
|
properties: {
|
|
dataObjectRef: flowElem
|
|
}
|
|
});
|
|
commandStack.execute('element.updateProperties', {
|
|
element,
|
|
moddleElement: businessObject,
|
|
properties: {
|
|
'name': flowElem.id
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
const getOptions = value => {
|
|
const businessObject = element.businessObject;
|
|
const parent = businessObject.$parent;
|
|
let options = []
|
|
for (const element of parent.flowElements) {
|
|
if (element.$type === 'bpmn:DataObject') {
|
|
options.push({label: element.id, value: element.id})
|
|
}
|
|
}
|
|
return options
|
|
}
|
|
|
|
return <SelectEntry
|
|
id={'selectDataObject'}
|
|
element={element}
|
|
description={"Select the Data Object this represents."}
|
|
label={"Which Data Object does this reference?"}
|
|
getValue={ getValue }
|
|
setValue={ setValue }
|
|
getOptions={ getOptions }
|
|
debounce={debounce}
|
|
/>;
|
|
|
|
}
|