import type { FieldReadSource, FieldScope, FieldVersionStatus } from '#/api/x/eln/fields';
|
|
export type FieldAction = 'disable' | 'enable' | 'promoteGlobal' | 'versions';
|
export type VersionAction = 'cancel' | 'copy' | 'edit' | 'preRelease' | 'publish' | 'setCurrent';
|
|
export function versionActions(input: { current: boolean; enabled: boolean; status: FieldVersionStatus }): VersionAction[] {
|
if (!input.enabled) return input.status === 'DRAFT' || input.status === 'PRE_RELEASE' ? ['cancel'] : [];
|
if (input.status === 'DRAFT') return ['edit', 'preRelease', 'cancel'];
|
if (input.status === 'PRE_RELEASE') return ['publish', 'cancel', 'copy'];
|
if (input.status === 'PUBLISHED') return input.current ? ['copy'] : ['setCurrent', 'copy'];
|
return [];
|
}
|
|
export function fieldActions(input: { enabled: boolean; scope: FieldScope }): FieldAction[] {
|
if (!input.enabled) return ['versions', 'enable'];
|
const actions: FieldAction[] = ['versions'];
|
if (input.scope === 'TEMPLATE') actions.push('promoteGlobal');
|
actions.push('disable');
|
return actions;
|
}
|
|
export function canUseBatchShared(input: { readSource: FieldReadSource }): boolean {
|
return input.readSource === 'NONE';
|
}
|