Юниверс MDM SDK UI
v6.15.0

Интерфейс UECloneRecord

Точка расширения, предназначенная для добавления фрагмента к запросу операции клонирования записи и вывода в мастере операции интерфейса для изменения передаваемых во фрагменте параметров.

import {Universe} from '@universe-ee/sdk';

const {Mobx} = Universe.Vendor;

export const CLONE_RECORD_ADDITIONAL_PAYLOAD_KEY = 'clone_record_additional_fragment_v1' as const;

export interface ICloneRecordAdditionalPayload {
cleanUnique: boolean;
}

declare global {
namespace UniverseUE {
export interface ICloneAtomicPayload {
[CLONE_RECORD_ADDITIONAL_PAYLOAD_KEY]: ICloneRecordAdditionalPayload;
}
}
}

export class CloneRecordAdditionalFragmentStore implements Universe.MDM.EE.EeData.ICloneInnerStore {
@Mobx.observable
cleanUnique: boolean = false;

@Mobx.action
setCleanUnique (cleanUnique: boolean) {
this.cleanUnique = cleanUnique;
}

get payloadContent () {
return {
key: CLONE_RECORD_ADDITIONAL_PAYLOAD_KEY,
content: {
cleanUnique: this.cleanUnique
}
}
}

get hasErrors () {
return false;
}

}
import {Universe} from '@universe-ee/sdk';
import {
CLONE_RECORD_ADDITIONAL_PAYLOAD_KEY,
CloneRecordAdditionalFragmentStore
} from './CloneRecordAdditionalFragmentStore';

const {MobxReact, React} = Universe.Vendor;
const {Uikit} = Universe.Platform;

@MobxReact.observer
export class CloneRecordUserExit extends React.Component<Universe.MDM.EE.EeData.ICloneRecordParametersProps> {
get store () {
return this.props.store.getStore(CLONE_RECORD_ADDITIONAL_PAYLOAD_KEY) as CloneRecordAdditionalFragmentStore;
}

override render () {
return (
<Uikit.CardPanel
internal={true}
title={'Дополнительные параметры клонирования'}
>
<span>
<Uikit.Button
intent={Uikit.INTENT.DANGER}
onClick={() => Universe.Platform.Toast.Dialog.showError('HI HI UE', 'I am UE')}
>
Go to enumerations!
</Uikit.Button>
</span>
</Uikit.CardPanel>
);
}
}

export class CloneInnerStore implements Universe.MDM.EE.EeData.ICloneInnerStore {
private readonly cloneStore: Universe.MDM.EE.EeData.AbstractCloneStore<any, any> | null = null;

public cleanUnique: boolean = false;

public readonly dateFromField = new Universe.Platform.Model.DateField('');

public readonly dateToField = new Universe.Platform.Model.DateField('');

constructor (key?: string, cloneStore?: Universe.MDM.EE.EeData.AbstractCloneStore<any, any>) {
}

private get content (): Universe.MDM.EE.EeData.CloneRecordPayload {
const {
cloneStore,
cleanUnique,
validFrom,
validTo
} = this;

return {
...cloneStore?.commonPayload,
draftId: this.cloneStore?.parentDraftId,
cleanUnique,
validFrom,
validTo
};
}

private get validFrom () {
return this.dateFromField.getISOString();
}

private get validTo () {
return this.dateToField.getISOString();
}

public get hasErrors () {
return false;
}

public get payloadContent () {
return {
key: Universe.MDM.EE.EeData.CLONE_RECORD_PAYLOAD_KEY,
content: this.content
};
}
}

Подключение точки расширения:

import {Universe} from '@universe-ee/sdk';
import {CloneRecordUserExit, CloneInnerStore} from './CloneRecordUserExit';

export default {
type: 'CloneRecord',
moduleId: 'CloneRecordCustomID',
active: true,
system: false,
component: CloneRecordUserExit,
meta: {
key: 'CLONE_RECORD_ADDITIONAL_PAYLOAD_KEY',
getStore: () => {
return new CloneInnerStore();
}
},
resolver: (cloneStore: Universe.MDM.EE.EeData.AbstractCloneStore<any, any>) => {
return true
}
} satisfies Universe.Platform.UserExit.UserExitDeclaration;
interface UECloneRecord {
    active: boolean;
    component: ComponentType<ICloneRecordParametersProps>;
    meta: UECloneRecordMeta;
    moduleId: string;
    resolver: UECloneRecordResolver;
    system: boolean;
}

Иерархия (Просмотр сводки)

Индекс

Свойства

active: boolean

Является ли экземпляр точки расширения активным

Мета-информация точки расширения

moduleId: string

Уникальный идентификатор экземпляра точки расширения

Функция указывает, следует ли применять данный экземпляр точки расширения

system: boolean

Является ли системным экземпляром