docs: document v7.13.0 features
- Live formulas (HARDFORMULA/SOFTFORMULA) with HyperFormula in dcc-validations - Formula Rules section with column-name syntax, DC.* literals, editor behaviour - MPE_VALIDATIONS table doc: add HARDFORMULA/SOFTFORMULA to RULE_TYPE values - Roadmap: mark Frontend Formulae and Regex Rules as delivered - SAS VA Embed: document Live vs Confirm filter modes and pending-changes UX - ViewBoxes: document edge/corner drag resizing - Licensing: combined-key paste, live key preview, protocol mismatch guard - CAS Tables: REPLACE load type support and temp table cleanup - Editor: native date/time pickers, paste-validation overlay, row status indicators - Stage page: Formatted/Unformatted toggle on the approvals screen - Viya deploy: configurator overhaul, deploy checks, login page UX - Index page: add live formulas and VA embed to features list
This commit is contained in:
+51
-1
@@ -23,7 +23,7 @@ It is possible to configure a number of other rules by updating the MPE_VALIDATI
|
||||
|
||||
## Configurable Checks
|
||||
|
||||
Check back frequently as we plan to keep growing this list of checks.
|
||||
Check back frequently as we keep growing this list of checks.
|
||||
|
||||
|Rule Type|Example Value |Description|
|
||||
|---|---|---|
|
||||
@@ -35,6 +35,8 @@ Check back frequently as we plan to keep growing this list of checks.
|
||||
|HIDDEN|(defaultval) |Hides the column from the editor grid while still submitting its data. The defaultval is used when rows are added. |
|
||||
|ROUND|2 |Rounds numeric input on paste/edit. Positive digits round to number of decimal places (eg 2 rounds to 0.01) Negative digits round to the nearest ten/hundred etc. Half-away-from-zero rounding is applied so `-0.5 → -1` and `2.5 → 3`. |
|
||||
|NUMBER_FORMAT|`{"style":"currency","currency":"GBP"}` |Display-only [`Intl.NumberFormat` renderer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat). RULE_VALUE is the JSON options object passed straight to `Intl.NumberFormat`. Does not change the stored value. |
|
||||
|HARDFORMULA|`= PRICE * VOLUME`|Evaluates a live, spreadsheet-style formula in the editor using [HyperFormula](https://hyperformula.handsontable.com/). The column is rendered read-only and the computed value (not the formula text) is submitted on save. See [Formula Rules](#formula-rules) below.|
|
||||
|SOFTFORMULA|`= if( DC.ROW_STATUS != 'U', DC.USER_NAME, DC.ORIG_VALUE )`|Same as HARDFORMULA but the cell remains editable - the user can override the computed value. See [Formula Rules](#formula-rules) below.|
|
||||
|HARDREGEX|`^[A-Z]{3}$`|The cell value **must** match the regex pattern, otherwise submission is blocked and the cell is highlighted red. See [Regex Rules](#regex-rules) below.|
|
||||
|SOFTREGEX|`^[A-Z]{3}$`|A cell value that does not match the regex pattern is highlighted yellow as a warning, but submission is **not** blocked. See [Regex Rules](#regex-rules) below.|
|
||||
|HARDSELECT|sashelp.class.name|A distinct list of values (max 1000) are taken from this library.member.column reference, and the value **must** be in this list. This list may be supplemented by entries in the MPE_SELECTBOX table.|
|
||||
@@ -43,6 +45,54 @@ Check back frequently as we plan to keep growing this list of checks.
|
||||
|[SOFTSELECT_HOOK](/dynamic-cell-dropdown)|/physical/path/program.sas|A SAS service (STP or Viya Job) or a path to a SAS program on the filesystem. User-provided values may (or may not) be in this list. Cannot be used alongside a HARDSELECT_HOOK.|
|
||||
|
||||
|
||||
## Formula Rules
|
||||
|
||||
HARDFORMULA and SOFTFORMULA bring live, spreadsheet-style formula evaluation to the Data Editor using the [HyperFormula](https://hyperformula.handsontable.com/) engine (the same library that powers formula calculation in Handsontable). When a column has either rule, the editor evaluates the formula in real time and displays the computed value in each cell.
|
||||
|
||||
### How formulas are written
|
||||
|
||||
Formulas are written using column names rather than cell references, so end users do not need to know the grid layout:
|
||||
|
||||
|ITEM|PRICE|VOLUME|REVENUE|
|
||||
|---|---|---|---|
|
||||
|PAPER|4.20|100|`= PRICE * VOLUME`|
|
||||
|PEN|61.02|1,971|`= PRICE * VOLUME`|
|
||||
|
||||
At runtime the editor translates each column name to the correct cell reference for the current row (eg `PRICE` becomes `B1` in the first row, `B2` in the second, and so on).
|
||||
|
||||
!!! note
|
||||
Each named variable **must have a leading and trailing blank** so it does not clash with function names (eg `MATCH()`). Variables inside single or double quoted strings are left untouched - eg `= "hello " & ITEM & " world"` resolves `ITEM` but not the word `ITEM` inside the string literal.
|
||||
|
||||
### HARDFORMULA vs SOFTFORMULA
|
||||
|
||||
* **HARDFORMULA** - the column is read-only. The formula is always evaluated and the computed value is displayed and submitted. The user cannot override it.
|
||||
* **SOFTFORMULA** - the cell starts with the computed value but remains editable. The user can type a different value, which is then submitted instead of the formula result.
|
||||
|
||||
### Formula-aware behaviour across the editor
|
||||
|
||||
Live formulas are evaluated for any character column, not just those with explicit HARDFORMULA / SOFTFORMULA rules. Several editor behaviours have been extended to be formula-aware:
|
||||
|
||||
* When you paste a formula, column names are automatically translated to the correct cell references.
|
||||
* A cell overwritten by a formula is flagged so you can revert it; cell revert has been generalised to any overwritten value, not just formulas.
|
||||
* The primary key and numeric columns resolve a live formula to its computed value (not the raw formula text) when submitted.
|
||||
* Formula-looking values pasted from Excel are auto-escaped so they are treated as data, not evaluated as formulas, unless you explicitly choose "Apply as formula".
|
||||
* A dedicated `DC.ROW_STATUS` column is driven live by formulas, and has been hardened against collisions with real columns of that name.
|
||||
|
||||
### Special formula literals
|
||||
|
||||
The following literals are available for use in formula rules:
|
||||
|
||||
* `DC.ROW_STATUS` - replaced at runtime with the cell reference (eg `A1`). Values are `M` (Modified), `A` (Added), `D` (Deleted), or `U` (Unchanged).
|
||||
* `DC.USER_NAME` - replaced at runtime with the logged-in user id.
|
||||
* `DC.ORIG_VALUE` - replaced at runtime with the original cell value before the current edit.
|
||||
|
||||
Example - show the current user id if the row has been changed, otherwise keep the original value:
|
||||
|
||||
```
|
||||
RULE_VALUE = if( DC.ROW_STATUS != 'U', DC.USER_NAME, DC.ORIG_VALUE )
|
||||
```
|
||||
|
||||
|
||||
## Regex Rules
|
||||
|
||||
HARDREGEX and SOFTREGEX validate cell values against a SAS (Perl-style) regular expression provided in `RULE_VALUE` - the same syntax accepted by [PRXPARSE](https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/lefunctionsref/p0s9ilagexmjl8n1u7e1t1jfnzlk.htm).
|
||||
|
||||
Reference in New Issue
Block a user