1 Commits

Author SHA1 Message Date
2ea8cf1f8a fixes 2026-06-13 21:37:17 +05:30
4 changed files with 16 additions and 16 deletions

View File

@@ -53,7 +53,7 @@ export default function GenericForm({
const allRelations = React.useMemo(() => { const allRelations = React.useMemo(() => {
const rels = getRelationFields(config.fields); const rels = getRelationFields(config.fields);
console.log('Form resource', config.name, 'relations discovered:', rels); // console.log('Form resource', config.name, 'relations discovered:', rels);
return rels; return rels;
}, [config.fields]); }, [config.fields]);
@@ -67,7 +67,7 @@ export default function GenericForm({
...getListQueryOptions(), ...getListQueryOptions(),
enabled: !!relatedRes, enabled: !!relatedRes,
}; };
console.log('Query for relation', relName, 'resource', relatedRes?.name, 'enabled', !!relatedRes); // console.log('Query for relation', relName, 'resource', relatedRes?.name, 'enabled', !!relatedRes);
return queryOpts; return queryOpts;
}), }),
}); });
@@ -79,8 +79,8 @@ export default function GenericForm({
allRelations.forEach((relName, index) => { allRelations.forEach((relName, index) => {
const queryResult = queries[index]; const queryResult = queries[index];
const dataArray = queryResult?.data && Array.isArray(queryResult.data) ? queryResult.data : (queryResult?.data?.data ?? []); const dataArray = queryResult?.data && Array.isArray(queryResult.data) ? queryResult.data : (queryResult?.data?.data ?? []);
console.log('Relation query result for', relName, 'raw:', queryResult?.data); // console.log('Relation query result for', relName, 'raw:', queryResult?.data);
console.log('Relation data for', relName, ':', dataArray.slice(0, 1)); // console.log('Relation data for', relName, ':', dataArray.slice(0, 1));
map[relName] = dataArray; map[relName] = dataArray;
}); });
return map; return map;

View File

@@ -3,7 +3,7 @@ import { getFieldOptions } from '../../utils/options';
import { FieldComponentProps } from '../../types/overrides'; import { FieldComponentProps } from '../../types/overrides';
export default function RelationField({ field, value, onChange, disabled, relationDataMap = {} }: FieldComponentProps) { export default function RelationField({ field, value, onChange, disabled, relationDataMap = {} }: FieldComponentProps) {
console.log('RelationField render', field.label, 'enumOption:', field.enumOption, 'value prop:', value); // console.log('RelationField render', field.label, 'enumOption:', field.enumOption, 'value prop:', value);
const relationName = field.relation ?? (field as any).refers; const relationName = field.relation ?? (field as any).refers;
if (!relationName || !relationDataMap[relationName]) { if (!relationName || !relationDataMap[relationName]) {
throw new Error(`Relation data for "${relationName}" is missing cannot render options for field "${field.label}"`); throw new Error(`Relation data for "${relationName}" is missing cannot render options for field "${field.label}"`);
@@ -13,7 +13,7 @@ if (!relationName || !relationDataMap[relationName]) {
const relationData = relationDataMap[relationName]; const relationData = relationDataMap[relationName];
const isArrayRelation = field.type === 'array'; const isArrayRelation = field.type === 'array';
const options = getFieldOptions(field, relationData); const options = getFieldOptions(field, relationData);
console.log('Options for', field.label, 'keys:', options.map(o=>o.key)); // console.log('Options for', field.label, 'keys:', options.map(o=>o.key));
if (options.length === 0) { if (options.length === 0) {
throw new Error(`No selectable options available for field "${field.label}" (relation "${relationName}")`); throw new Error(`No selectable options available for field "${field.label}" (relation "${relationName}")`);
} }
@@ -47,12 +47,12 @@ if (!relationName || !relationDataMap[relationName]) {
onChange={(e) => onChange(e.target.value)} onChange={(e) => onChange(e.target.value)}
disabled={disabled} disabled={disabled}
renderValue={(selected: any) => { renderValue={(selected: any) => {
console.log('Select renderValue for', field.label, 'selected:', selected); // console.log('Select renderValue for', field.label, 'selected:', selected);
if (isArrayRelation) { if (isArrayRelation) {
return (selected as string[]).map(k => options.find(o => o.key === k)?.value ?? k).join(', '); return (selected as string[]).map(k => options.find(o => o.key === k)?.value ?? k).join(', ');
} }
const display = options.find(o => o.key === selected)?.value ?? selected; const display = options.find(o => o.key === selected)?.value ?? selected;
console.log('Display value for', field.label, ':', display); // console.log('Display value for', field.label, ':', display);
return display; return display;
}} }}
> >

View File

@@ -65,7 +65,7 @@ function parseSchemaFields(
const fields: Record<string, ResourceField> = {}; const fields: Record<string, ResourceField> = {};
const { properties, required } = mergeProperties(schema); const { properties, required } = mergeProperties(schema);
const overrides = configuration[resourceName]?.fields || {}; const overrides = configuration[resourceName]?.fields || {};
console.log('inside parseSchemaFields configuration...', configuration['accounts']['referenceOptions']) // console.log('inside parseSchemaFields configuration...', configuration['accounts']['referenceOptions'])
for (const [key, prop] of Object.entries(properties) as [string, any]) { for (const [key, prop] of Object.entries(properties) as [string, any]) {
// Resolve oneOf/anyOf by merging all branch properties // Resolve oneOf/anyOf by merging all branch properties
@@ -117,7 +117,7 @@ function parseSchemaFields(
// Propagate enumOption from target resource config, or derive from target schema // Propagate enumOption from target resource config, or derive from target schema
const explicitEnumOption = configuration[relation].referenceOptions.enumOption; const explicitEnumOption = configuration[relation].referenceOptions.enumOption;
console.log('if relation configuration...', configuration['accounts']['referenceOptions']) // console.log('if relation configuration...', configuration['accounts']['referenceOptions'])
if (explicitEnumOption) { if (explicitEnumOption) {
fields[key].enumOption = explicitEnumOption; fields[key].enumOption = explicitEnumOption;
} else { } else {
@@ -133,7 +133,7 @@ function parseSchemaFields(
// Recursively parse nested objects (only if not a relation) // Recursively parse nested objects (only if not a relation)
if (fields[key].type === "object" && resolvedProp.properties && !relation) { if (fields[key].type === "object" && resolvedProp.properties && !relation) {
console.log('recursive configuration...', configuration['accounts']['referenceOptions']) // console.log('recursive configuration...', configuration['accounts']['referenceOptions'])
fields[key].schema = parseSchemaFields(resolvedProp, resourceName, schemaToResourceMap, configuration); fields[key].schema = parseSchemaFields(resolvedProp, resourceName, schemaToResourceMap, configuration);
} }
} }
@@ -145,7 +145,7 @@ function parseSchemaFields(
* Scans paths to identify resources and their basic configuration * Scans paths to identify resources and their basic configuration
*/ */
export async function loadConfigFromOpenApi(baseUrl: string, configuration: Record<string, any> = {}, profileConfiguration: any = {}): Promise<AppConfig> { export async function loadConfigFromOpenApi(baseUrl: string, configuration: Record<string, any> = {}, profileConfiguration: any = {}): Promise<AppConfig> {
console.log('init configuration...', configuration['accounts']['referenceOptions']) // console.log('init configuration...', configuration['accounts']['referenceOptions'])
// Use SwaggerParser to dereference the spec. // Use SwaggerParser to dereference the spec.
// Dereferencing preserves object identity for $ref targets. // Dereferencing preserves object identity for $ref targets.
const api = await SwaggerParser.dereference( const api = await SwaggerParser.dereference(
@@ -222,7 +222,7 @@ export async function loadConfigFromOpenApi(baseUrl: string, configuration: Reco
fields: fo.fields, fields: fo.fields,
}, },
}); });
console.log('Loaded resource:', name, 'endpoint:', listPath, 'fields count:', Object.keys(fields).length); // console.log('Loaded resource:', name, 'endpoint:', listPath, 'fields count:', Object.keys(fields).length);
} }
// Collect standalone enum schemas (e.g. FetchRequestStatus, AccountType, etc.) // Collect standalone enum schemas (e.g. FetchRequestStatus, AccountType, etc.)
const enums: Record<string, string[]> = {}; const enums: Record<string, string[]> = {};

View File

@@ -8,7 +8,7 @@ export function resolveTemplate(template: string, item: any): string {
} }
export function getFieldOptions(field: ResourceField, relationData?: any[]): SelectOption[] { export function getFieldOptions(field: ResourceField, relationData?: any[]): SelectOption[] {
console.log('getFieldOptions called for field', field.label, 'type', field.type, 'enumOption', field.enumOption); // console.log('getFieldOptions called for field', field.label, 'type', field.type, 'enumOption', field.enumOption);
if (field.type === 'enum') { if (field.type === 'enum') {
return (field.options ?? []).map(opt => ({ return (field.options ?? []).map(opt => ({
key: opt, key: opt,
@@ -18,7 +18,7 @@ export function getFieldOptions(field: ResourceField, relationData?: any[]): Sel
if (field.relation) { if (field.relation) {
const data = Array.isArray(relationData) ? relationData : []; const data = Array.isArray(relationData) ? relationData : [];
console.log('Getting options for relation', field.relation, 'data count:', data.length); // console.log('Getting options for relation', field.relation, 'data count:', data.length);
if (data.length === 0) { if (data.length === 0) {
throw new Error(`Relation data for "${field.relation}" is missing or empty cannot build options for field "${field.label}"`); throw new Error(`Relation data for "${field.relation}" is missing or empty cannot build options for field "${field.label}"`);
} }
@@ -33,7 +33,7 @@ export function getFieldOptions(field: ResourceField, relationData?: any[]): Sel
key: String(item[enumOption.key] ?? item.id ?? item._id), key: String(item[enumOption.key] ?? item.id ?? item._id),
value: resolveTemplate(enumOption.value, item), value: resolveTemplate(enumOption.value, item),
})); }));
console.log('Option map for', field.relation, 'first entry:', data[0], 'result key:', result[0]?.key); // console.log('Option map for', field.relation, 'first entry:', data[0], 'result key:', result[0]?.key);
return result; return result;
} }