Бизнес-процессы¶
Добавление кнопки в заголовке карточки процесса¶
Точка расширения ProcessWorkflowCardAction используется для дополнительного контрола в заголовке модального окна карточки процесса.
Описание ProcessWorkflowCardAction:
type IProps = {
processStore: ProcessCardStore;
searchStore: ProcessSearchStore;
}
type Resolver = (processStore: ProcessCardStore) => boolean;
type Meta = {
order: number;
};
export type UEProcessWorkflowCardAction = UeModuleBase<Resolver, Meta> & {
component: ComponentType<IProps>;
};
Пример: кнопка удаления процесса:
type IProps = {
processStore: ProcessCardStore;
searchStore: ProcessSearchStore;
}
@observer
export class RemoveButton extends React.Component<IProps, {}> {
onDeleteProcess = () => {};
override render () {
return (
<ButtonWithConfirmation
leftIcon={'trash2'}
title={'Удалить процесс?'}
isMinimal={true}
tooltipPlacement={PLACEMENT.LEFT}
intent={INTENT.DANGER}
onConfirm={this.onDeleteProcess}
confirmationMessage={'Вы уверены?'}/>
);
}
}
export const removeProcessActionUe: UniverseUE.IUeMeta['ProcessWorkflowCardAction'] = {
moduleId: 'ProcessWorkflowCardAction',
active: true,
system: false,
meta: {
order: 1
},
resolver: (store: ProcessCardStore) => {
return true;
},
component: RemoveButton
};
ueModuleManager.addModule('ProcessWorkflowCardAction', removeProcessActionUe);
Добавление кнопки в таблице процессов¶
Точка расширения ProcessWorkflowRowAction используется для дополнительного контрола в таблице процессов (отображается при наведении на строку).
Описание ProcessWorkflowRowAction:
type IProps = {
rowActionProps: RowActionsProps<SearchHit>;
processStore: ProcessSearchStore;
}
type Resolver = (props: RowActionsProps<SearchHit>) => boolean;
type Meta = {
order: number;
};
export type UEProcessWorkflowRowAction = UeModuleBase<Resolver, Meta> & {
component: ComponentType<IProps>;
};
Пример: кнопка удаления процесса:
type IProps = {
rowActionProps: RowActionsProps<SearchHit>;
processStore: ProcessSearchStore;
}
@observer
export class RemoveButton extends React.Component<IProps, {}> {
onDeleteProcess = () => {};
override render () {
return (
<ButtonWithConfirmation
leftIcon={'trash2'}
title={'Удалить процесс?'}
isMinimal={true}
tooltipPlacement={PLACEMENT.LEFT}
intent={INTENT.DANGER}
onConfirm={this.onDeleteProcess}
confirmationMessage={'Вы уверены?'}/>
);
}
}
export const removeProcessActionUe: UniverseUE.IUeMeta['ProcessWorkflowRowAction'] = {
moduleId: 'ProcessWorkflowRowAction',
active: true,
system: false,
meta: {
order: 1
},
resolver: (hit: RowActionsProps<SearchHit>) => {
return true;
},
component: RemoveButton
};
ueModuleManager.addModule('ProcessWorkflowRowAction', removeProcessActionUe);
Добавление пунктов меню в "Создать задачу"¶
Точка расширения UETaskMenuItem предназначена для добавления пунктов меню у кнопки Создать задачу на странице задач.
Описание UETaskMenuItem:
type TaskMenuItemProps = {
taskStore: TaskSearchStore<ITreeNodeModel<any>>;
}
type Resolver = (taskStore: TaskSearchStore<ITreeNodeModel<any>>) => boolean;
type Meta = {
order: number;
};
export type UETaskMenuItem = UeModuleBase<Resolver, Meta> & {
component: ComponentType<TaskMenuItemProps>;
};
Пример: пункт меню с названием SomeDropDownItemName
, при нажатии на который появляется модальное окно.
@observer
class SomeComponent extends React.Component<IProps> {
@observable
isModalOpen = false;
@action
toggleModal = () => {
this.isModalOpen = !this.isModalOpen;
};
override render () {
const taskStore = this.props.taskStore;
return (
<>
<DropDown.Item
onClick={this.toggleModal}
>
{'SomeDropDownItemName'}
</DropDown.Item>
<Modal
isOpen={this.isModalOpen}
onClose={this.toggleModal}
>
<>
{'someModalContent'}
</>
</Modal>
</>
);
}
}
export const someNewTaskMenuItemUE: UniverseUE.IUeMeta['TaskMenuItem'] =
{
moduleId: 'exampleUeModule1',
active: true,
system: false,
meta: {
order: 2
},
component: SomeComponent,
resolver: (taskStore: TaskSearchStore<ITreeNodeModel<any>>) => {
return true;
}
};
ueModuleManager.addModule('TaskMenuItem', someNewTaskMenuItemUE);