Declaring edit on any field of a layer is what obliges that layer to declare
both its editability and its write target — a schema-level rule, not a property
of this object.
⚠️ It carried required ALONE until task 7.2, and that made it a stunted twin of
AttributeDisplay, which has overridden its presentation since Sprint 2. The
measurement that reopened it: AttributeWidgetOptions is indexed BY WIDGET, so
one widget slot admits exactly one typed options bag. BadgeOptions is
{placeholder?} and has nowhere to hold a choice list; DropdownOptions carries
options. Two projections needing two widgets therefore need two pairs — deriving the
capture widget from the display one by a hard-coded table could not have supplied
sites_rosario.statut's three choices at all.
Both members are OVERRIDES: absent, the capture reuses the field-level pair. That is
the case for 10 of the 11 fields migrated at 7.2, which is why they are optional.
The two forms are disjoint on purpose — options without widget would be typed by
the READING widget, that is, by something other than what it configures. The JSON
schema states the same thing as dependencies: { options: ["widget"] }.
The capture projection of a field.
Declaring
editon any field of a layer is what obliges that layer to declare both its editability and its write target — a schema-level rule, not a property of this object.⚠️ It carried
requiredALONE until task 7.2, and that made it a stunted twin of AttributeDisplay, which has overridden its presentation since Sprint 2. The measurement that reopened it: AttributeWidgetOptions is indexed BY WIDGET, so onewidgetslot admits exactly one typed options bag.BadgeOptionsis{placeholder?}and has nowhere to hold a choice list;DropdownOptionscarriesoptions. Two projections needing two widgets therefore need two pairs — deriving the capture widget from the display one by a hard-coded table could not have suppliedsites_rosario.statut's three choices at all.Both members are OVERRIDES: absent, the capture reuses the field-level pair. That is the case for 10 of the 11 fields migrated at 7.2, which is why they are optional.
The two forms are disjoint on purpose —
optionswithoutwidgetwould be typed by the READING widget, that is, by something other than what it configures. The JSON schema states the same thing asdependencies: { options: ["widget"] }.