enumOptions and enum reader used everywhere
This commit is contained in:
@@ -1,5 +1,12 @@
|
||||
import { ResourceField, SelectOption } from "../types/config";
|
||||
|
||||
export function resolveTemplate(template: string, item: any): string {
|
||||
if (/\{(\w+)\}/.test(template)) {
|
||||
return template.replace(/\{(\w+)\}/g, (_, field: string) => String(item[field] ?? ''));
|
||||
}
|
||||
return String(item[template] ?? '');
|
||||
}
|
||||
|
||||
export function getFieldOptions(field: ResourceField, relationData?: any[]): SelectOption[] {
|
||||
if (field.type === 'enum' && field.options) {
|
||||
return field.options.map(opt => ({
|
||||
@@ -14,9 +21,7 @@ export function getFieldOptions(field: ResourceField, relationData?: any[]): Sel
|
||||
|
||||
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] ?? ''),
|
||||
value: resolveTemplate(enumOption.value, item),
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user