Wizard & rules
The Wizard is the fill-in flow your end users experience. It’s a list of sections, each section assigns fields and separators, and rules drive visibility / required-if logic across sections.
Creating the wizard
- Open Captis Admin → the form → Form Wizard.
- Click + in the Sections column to add a section. Give it a name (and optional description).
- With a section selected, the right pane shows Contents on the left and Unassigned fields on the right. Click + on any unassigned field to add it to the current section.
- Reorder content rows by dragging. For repeating-group and non-repeating group fields, expand them and drag child rows with the trailing handle to reorder children inside the parent.
- Add separators (horizontal rule) by clicking the separator button at the top of the contents column. They participate in the rule system like fields.
- Wire rules by clicking the connector icon on any row. Rules can fire inside the same section, across sections (inbound / outbound), or both.
- Save to bump the wizard version. When you mark a version Active, the next form-fill session uses it.
Per-field knobs in the wizard
- Required (override) — section-level override of the field-level required flag.
- Visibility — toggle the field hidden by default in this section. Rules can flip it on.
- Group — combine consecutive fields into a layout group (horizontal, grid, etc.).
- Edit field properties — jumps back into the Field Definitions editor for that field.
Rules
Each rule has a source field, an operator, a comparison value, and a list of effects. When the source field’s current value satisfies the operator, every effect fires.
Operators
| Operator | Meaning |
|---|---|
eq | Source value equals the comparison value (string compare). |
ne | Source value is not equal to the comparison value. |
gt | Source value is greater than (numeric compare when both parse as numbers). |
gte | Source value is greater than or equal to (numeric). |
lt | Source value is less than (numeric). |
lte | Source value is less than or equal to (numeric). |
contains | Source value contains the comparison value as a substring. |
notEmpty | Source value is non-empty. |
isEmpty | Source value is empty / unset. |
isChecked | Boolean source field is true. |
isUnchecked | Boolean source field is false. |
any | Always fires (use to make an effect unconditional). |
Effects
Each effect targets either a field or a section, named by id.
| Action | Target | Result |
|---|---|---|
show | field or section | Remove from hidden set. |
hide | field or section | Add to hidden set. |
required | field | Force-require the field in this evaluation pass. |
active | field | Force-visible the field (same as show for fields, kept for clarity). |
goto | section | Reserved for future section-navigation effects. |
Where rules live
- Internal conditions — both the source and the effect target are in the same section. Reads + writes during this section only.
- Inbound conditions — the source is in a prior section, and the effect fires when this section is entered.
- Outbound conditions — the source is in this section, and the effect fires for a downstream section.
Prompt elements (full reference)
Prompt fields are the most expressive element. Each prompt has:
- Title + body — the header and descriptive paragraph shown when the inline card is expanded.
-
Answer kind — one of:
yesNo,number,pickOne,pickMany,shortText. - Per-choice branching content — each yes/no choice and each pick-one/pick-many option can override the prompt’s title + body for after-selection display.
- Per-choice populate targets — a list of (target field, value) writes that fire when that choice is selected.
Populate-target value kinds
| Kind | What gets written |
|---|---|
rawAnswer | The prompt’s saved answer verbatim (bool / num / string / list, depending on answer kind). |
literal | A constant supplied at design time. The editor type-infers from the input: "true"/"false" → bool, numeric → num, otherwise string. |
nullValue | Explicit null. Clears the target field. |
pickMany prompts, every option in the current
selection fires its populate targets. Deselecting does
NOT auto-revert previous writes — the model is additive.
Author a regular rule on the target field if you need
auto-revert behavior.
Saving and versioning
Every wizard Save bumps the patch version of the published schema. The Active pointer doc determines which version the form renders. Prior versions stay archived so you can roll back to a known-good calibration + wizard combination without losing history.