fixes
This commit is contained in:
@@ -51,7 +51,11 @@ export default function GenericForm({
|
||||
return Array.from(new Set(relations));
|
||||
};
|
||||
|
||||
const allRelations = React.useMemo(() => getRelationFields(config.fields), [config.fields]);
|
||||
const allRelations = React.useMemo(() => {
|
||||
const rels = getRelationFields(config.fields);
|
||||
console.log('Form resource', config.name, 'relations discovered:', rels);
|
||||
return rels;
|
||||
}, [config.fields]);
|
||||
|
||||
// 2. Parallel fetch for all related resource lists
|
||||
const queries = useQueries({
|
||||
@@ -59,10 +63,12 @@ export default function GenericForm({
|
||||
const relatedRes = appConfig?.resources.find(r => r.name === relName);
|
||||
// eslint-disable-next-line react-hooks/rules-of-hooks
|
||||
const { getListQueryOptions } = useResource(relatedRes!, { fieldComponents });
|
||||
return {
|
||||
const queryOpts = {
|
||||
...getListQueryOptions(),
|
||||
enabled: !!relatedRes,
|
||||
};
|
||||
console.log('Query for relation', relName, 'resource', relatedRes?.name, 'enabled', !!relatedRes);
|
||||
return queryOpts;
|
||||
}),
|
||||
});
|
||||
|
||||
|
||||
@@ -195,22 +195,22 @@ export async function loadConfigFromOpenApi(baseUrl: string, configuration: Reco
|
||||
for (const [name, info] of Object.entries(resourcePaths)) {
|
||||
const listPath = info.listPath || `/${name}`;
|
||||
const listOp = paths[listPath]?.get;
|
||||
if (!listOp || !info.schemaObj) continue;
|
||||
|
||||
// Always create a resource entry even if the list operation or schema is missing.
|
||||
// This enables relation look‑ups for resources that only have overrides (e.g., accounts, tags).
|
||||
// If we lack a schema we fall back to an empty field map.
|
||||
const hasList = !!listOp;
|
||||
const schema = info.schemaObj;
|
||||
const label = name.charAt(0).toUpperCase() + name.slice(1, -1);
|
||||
const pluralLabel = name.charAt(0).toUpperCase() + name.slice(1);
|
||||
|
||||
console.log('before parseSchemaFields configuration...', configuration['accounts']['referenceOptions'])
|
||||
const fields = parseSchemaFields(schema, name, schemaToResourceMap, configuration);
|
||||
const fields = schema ? parseSchemaFields(schema, name, schemaToResourceMap, configuration) : {};
|
||||
|
||||
const resourceOverride = configuration[name] || {};
|
||||
|
||||
const fo = resourceOverride.filterOptions || {};
|
||||
|
||||
resources.push({
|
||||
name,
|
||||
label: schema.title || label,
|
||||
label: schema?.title || label,
|
||||
pluralLabel: pluralLabel,
|
||||
endpoint: listPath,
|
||||
primaryKey: "id",
|
||||
@@ -222,8 +222,8 @@ export async function loadConfigFromOpenApi(baseUrl: string, configuration: Reco
|
||||
fields: fo.fields,
|
||||
},
|
||||
});
|
||||
console.log('Loaded resource:', name, 'endpoint:', listPath, 'fields count:', Object.keys(fields).length);
|
||||
}
|
||||
|
||||
// Collect standalone enum schemas (e.g. FetchRequestStatus, AccountType, etc.)
|
||||
const enums: Record<string, string[]> = {};
|
||||
const apiDoc = api as any;
|
||||
|
||||
@@ -17,6 +17,7 @@ export function getFieldOptions(field: ResourceField, relationData?: any[]): Sel
|
||||
|
||||
if (field.relation) {
|
||||
const data = Array.isArray(relationData) ? relationData : [];
|
||||
console.log('Getting options for relation', field.relation, 'data count:', data.length);
|
||||
if (data.length === 0) {
|
||||
throw new Error(`Relation data for "${field.relation}" is missing or empty – cannot build options for field "${field.label}"`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user