29 lines
903 B
TypeScript
29 lines
903 B
TypeScript
import { ResourceField, SelectOption } from "../types/config";
|
|
|
|
export function getFieldOptions(field: ResourceField, relationData?: any[]): SelectOption[] {
|
|
if (field.type === 'enum' && field.options) {
|
|
return field.options.map(opt => ({
|
|
key: opt,
|
|
value: field.enumLabels?.[opt] ?? opt,
|
|
}));
|
|
}
|
|
|
|
if (field.relation) {
|
|
const data = relationData ?? [];
|
|
const enumOption = field.enumOption ?? { key: 'id', value: 'name' };
|
|
|
|
return data.map(item => ({
|
|
key: String(item[enumOption.key] ?? ''),
|
|
value: Array.isArray(enumOption.value)
|
|
? enumOption.value.map(k => item[k]).filter(v => v != null).join(' ')
|
|
: String(item[enumOption.value] ?? ''),
|
|
}));
|
|
}
|
|
|
|
return [];
|
|
}
|
|
|
|
export function toGridValueOptions(options: SelectOption[]): { value: string; label: string }[] {
|
|
return options.map(opt => ({ value: opt.key, label: opt.value }));
|
|
}
|