openapi-spec-reader #10

Merged
aetos merged 3 commits from openapi-spec-reader into main 2026-06-04 17:23:45 +00:00
Owner

Summary of Changes:

  1. Spec-Driven Enums:
    • Updated openapi_loader.ts to collect all standalone enum schemas (e.g., FetchRequestStatus) into the AppConfig.enums map.
    • Implemented mergeProperties and oneOf/anyOf resolution in openapi_loader.ts to ensure complex schemas like FetchRequest (using allOf) and source (using oneOf) are correctly parsed.
  2. Customizable Labeling:
    • Added enumOption (template-based) and enumLabels (mapping-based) to the config and field types.
    • Implemented resolveTemplate in utils/options.ts to handle placeholders like '{name} {number}' or plain field names.
  3. UI Integration:
    • FormField.tsx: Updated relation and enum selects to use getFieldOptions() for correct key/value pairs and labels. Added value normalization to extract keys from API objects.
    • EnhancedTable.tsx: Updated valueOptions to use key/value pairs for singleSelect and updated FieldRenderer to show the human-readable label for enums.
    • FilterBar.tsx: Updated extractOptions to use spec-driven labels for enum filters.
    • ResourceView.tsx: Centralized filter matching logic into a getDisplayString helper, ensuring filter comparisons use the same templates as the UI labels.
  4. App Fixes:
    • FetchRequests.tsx and FetchRequestDetail.tsx now derive status and format options from the OpenAPI spec via useConfig() instead of using hardcoded arrays.
### Summary of Changes: 1. **Spec-Driven Enums**: - Updated `openapi_loader.ts` to collect all standalone enum schemas (e.g., `FetchRequestStatus`) into the `AppConfig.enums` map. - Implemented `mergeProperties` and `oneOf`/`anyOf` resolution in `openapi_loader.ts` to ensure complex schemas like `FetchRequest` (using `allOf`) and `source` (using `oneOf`) are correctly parsed. 2. **Customizable Labeling**: - Added `enumOption` (template-based) and `enumLabels` (mapping-based) to the config and field types. - Implemented `resolveTemplate` in `utils/options.ts` to handle placeholders like `'{name} {number}'` or plain field names. 3. **UI Integration**: - **`FormField.tsx`**: Updated relation and enum selects to use `getFieldOptions()` for correct key/value pairs and labels. Added value normalization to extract keys from API objects. - **`EnhancedTable.tsx`**: Updated `valueOptions` to use key/value pairs for `singleSelect` and updated `FieldRenderer` to show the human-readable label for enums. - **`FilterBar.tsx`**: Updated `extractOptions` to use spec-driven labels for enum filters. - **`ResourceView.tsx`**: Centralized filter matching logic into a `getDisplayString` helper, ensuring filter comparisons use the same templates as the UI labels. 4. **App Fixes**: - `FetchRequests.tsx` and `FetchRequestDetail.tsx` now derive status and format options from the OpenAPI spec via `useConfig()` instead of using hardcoded arrays.
aetos added 3 commits 2026-06-04 17:23:33 +00:00
aetos merged commit e6ce62a166 into main 2026-06-04 17:23:45 +00:00
aetos deleted branch openapi-spec-reader 2026-06-04 17:23:45 +00:00
aetos referenced this issue from a commit 2026-06-04 17:23:47 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: apps/khata-ui#10
No description provided.