feat(virtualFields): add baseline support for virtualFields #4

Merged
darinkelkhoff merged 2 commits from feature/virtual-field-support into develop 2026-03-09 17:05:44 +00:00
darinkelkhoff commented 2026-03-09 14:07:41 +00:00 (Migrated from github.com)

Summary

  • Add support for virtual fields (QVirtualFieldMetaData) across the customizable table views qbit
  • The table personalizer now filters virtual fields based on the user's table view, similar to regular fields but without "always keep" rules
  • Virtual fields are included in the field possible value source (for search and lookup), allowing them to be added to table views
  • FieldAccessLevel.validateForField treats virtual fields as read-only, preventing them from being assigned editable access levels
  • TableViewFieldCustomizer resolves virtual fields via getFieldOrVirtualField so they can be validated during insert/update

Test plan

  • FieldAccessLevelTest.testValidateForVirtualField — virtual fields (editable or not) only accept READ_ONLY
  • TableViewFieldCustomizerTest.testVirtualField — virtual fields resolve and validate correctly
  • CustomizableTableFieldPVSTest.testWithVirtualFields — virtual fields appear in PVS search/lookup, hidden ones excluded
  • CustomizableTableViewsTablePersonalizerTest.testApplyViewToTableWithVirtualFields — virtual fields filtered by view; empty view keeps none; null virtual fields handled

🤖 Generated with Claude Code

## Summary - Add support for virtual fields (`QVirtualFieldMetaData`) across the customizable table views qbit - The table personalizer now filters virtual fields based on the user's table view, similar to regular fields but without "always keep" rules - Virtual fields are included in the field possible value source (for search and lookup), allowing them to be added to table views - `FieldAccessLevel.validateForField` treats virtual fields as read-only, preventing them from being assigned editable access levels - `TableViewFieldCustomizer` resolves virtual fields via `getFieldOrVirtualField` so they can be validated during insert/update ## Test plan - [x] `FieldAccessLevelTest.testValidateForVirtualField` — virtual fields (editable or not) only accept `READ_ONLY` - [x] `TableViewFieldCustomizerTest.testVirtualField` — virtual fields resolve and validate correctly - [x] `CustomizableTableFieldPVSTest.testWithVirtualFields` — virtual fields appear in PVS search/lookup, hidden ones excluded - [x] `CustomizableTableViewsTablePersonalizerTest.testApplyViewToTableWithVirtualFields` — virtual fields filtered by view; empty view keeps none; null virtual fields handled 🤖 Generated with [Claude Code](https://claude.com/claude-code)
tim-chamberlain (Migrated from github.com) reviewed 2026-03-09 16:38:15 +00:00
@@ -96,6 +96,12 @@ public class CustomizableTableFieldPVS implements QCustomPossibleValueProvider<S
{
tim-chamberlain (Migrated from github.com) commented 2026-03-09 16:38:15 +00:00

Possible NPE: table.getVirtualFields() can be null for tables without virtual fields, so this line will throw instead of returning null for unknown ids (e.g., "tableName.doesNotExist"). Please null-check before .get(fieldName).

Possible NPE: `table.getVirtualFields()` can be null for tables without virtual fields, so this line will throw instead of returning null for unknown ids (e.g., `"tableName.doesNotExist"`). Please null-check before `.get(fieldName)`.
Sign in to join this conversation.