@fieldia/core 0.26.1 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +307 -3
- package/package.json +1 -1
- package/schema/page.schema.json +227 -23
- package/src/index.d.mts +8 -2
- package/src/index.d.ts +8 -2
- package/src/index.js +22 -1
- package/src/index.js.map +1 -1
- package/src/index.mjs +9 -2
- package/src/index.mjs.map +1 -1
- package/src/lib/expression/app-functions.d.mts +47 -0
- package/src/lib/expression/app-functions.d.ts +47 -0
- package/src/lib/expression/app-functions.js +64 -0
- package/src/lib/expression/app-functions.js.map +1 -0
- package/src/lib/expression/app-functions.mjs +58 -0
- package/src/lib/expression/app-functions.mjs.map +1 -0
- package/src/lib/expression/dates.d.mts +21 -0
- package/src/lib/expression/dates.d.ts +21 -0
- package/src/lib/expression/dates.js +73 -0
- package/src/lib/expression/dates.js.map +1 -0
- package/src/lib/expression/dates.mjs +67 -0
- package/src/lib/expression/dates.mjs.map +1 -0
- package/src/lib/expression/evaluator.js +12 -6
- package/src/lib/expression/evaluator.js.map +1 -1
- package/src/lib/expression/evaluator.mjs +12 -6
- package/src/lib/expression/evaluator.mjs.map +1 -1
- package/src/lib/expression/expression.d.mts +7 -3
- package/src/lib/expression/expression.d.ts +7 -3
- package/src/lib/expression/expression.js +8 -2
- package/src/lib/expression/expression.js.map +1 -1
- package/src/lib/expression/expression.mjs +7 -2
- package/src/lib/expression/expression.mjs.map +1 -1
- package/src/lib/expression/functions-part.d.mts +7 -0
- package/src/lib/expression/functions-part.d.ts +7 -0
- package/src/lib/expression/functions-part.js +13 -0
- package/src/lib/expression/functions-part.js.map +1 -0
- package/src/lib/expression/functions-part.mjs +8 -0
- package/src/lib/expression/functions-part.mjs.map +1 -0
- package/src/lib/expression/functions.d.mts +60 -3
- package/src/lib/expression/functions.d.ts +60 -3
- package/src/lib/expression/functions.js +109 -15
- package/src/lib/expression/functions.js.map +1 -1
- package/src/lib/expression/functions.mjs +103 -16
- package/src/lib/expression/functions.mjs.map +1 -1
- package/src/lib/expression/kinds.d.mts +31 -0
- package/src/lib/expression/kinds.d.ts +31 -0
- package/src/lib/expression/kinds.js +159 -0
- package/src/lib/expression/kinds.js.map +1 -0
- package/src/lib/expression/kinds.mjs +151 -0
- package/src/lib/expression/kinds.mjs.map +1 -0
- package/src/lib/expression/modifier.d.mts +4 -3
- package/src/lib/expression/modifier.d.ts +4 -3
- package/src/lib/expression/modifier.js +4 -3
- package/src/lib/expression/modifier.js.map +1 -1
- package/src/lib/expression/modifier.mjs +4 -3
- package/src/lib/expression/modifier.mjs.map +1 -1
- package/src/lib/expression/more-functions.d.mts +8 -0
- package/src/lib/expression/more-functions.d.ts +8 -0
- package/src/lib/expression/more-functions.js +235 -0
- package/src/lib/expression/more-functions.js.map +1 -0
- package/src/lib/expression/more-functions.mjs +230 -0
- package/src/lib/expression/more-functions.mjs.map +1 -0
- package/src/lib/expression/parser.d.mts +4 -1
- package/src/lib/expression/parser.d.ts +4 -1
- package/src/lib/expression/parser.js +6 -3
- package/src/lib/expression/parser.js.map +1 -1
- package/src/lib/expression/parser.mjs +6 -3
- package/src/lib/expression/parser.mjs.map +1 -1
- package/src/lib/expression/reads.d.mts +2 -2
- package/src/lib/expression/reads.d.ts +2 -2
- package/src/lib/expression/reads.js +6 -4
- package/src/lib/expression/reads.js.map +1 -1
- package/src/lib/expression/reads.mjs +6 -4
- package/src/lib/expression/reads.mjs.map +1 -1
- package/src/lib/format/actions.d.mts +16 -16
- package/src/lib/format/actions.d.ts +16 -16
- package/src/lib/format/check-page.d.mts +7 -2
- package/src/lib/format/check-page.d.ts +7 -2
- package/src/lib/format/check-page.js +10 -4
- package/src/lib/format/check-page.js.map +1 -1
- package/src/lib/format/check-page.mjs +10 -4
- package/src/lib/format/check-page.mjs.map +1 -1
- package/src/lib/format/choice-options.d.mts +34 -0
- package/src/lib/format/choice-options.d.ts +34 -0
- package/src/lib/format/choice-options.js +60 -0
- package/src/lib/format/choice-options.js.map +1 -0
- package/src/lib/format/choice-options.mjs +51 -0
- package/src/lib/format/choice-options.mjs.map +1 -0
- package/src/lib/format/endings-checks.d.mts +8 -0
- package/src/lib/format/endings-checks.d.ts +8 -0
- package/src/lib/format/endings-checks.js +23 -0
- package/src/lib/format/endings-checks.js.map +1 -0
- package/src/lib/format/endings-checks.mjs +20 -0
- package/src/lib/format/endings-checks.mjs.map +1 -0
- package/src/lib/format/endings.d.mts +40 -0
- package/src/lib/format/endings.d.ts +40 -0
- package/src/lib/format/endings.js +15 -0
- package/src/lib/format/endings.js.map +1 -0
- package/src/lib/format/endings.mjs +12 -0
- package/src/lib/format/endings.mjs.map +1 -0
- package/src/lib/format/field.d.mts +151 -16
- package/src/lib/format/field.d.ts +151 -16
- package/src/lib/format/field.js +64 -11
- package/src/lib/format/field.js.map +1 -1
- package/src/lib/format/field.mjs +63 -10
- package/src/lib/format/field.mjs.map +1 -1
- package/src/lib/format/head-checks.d.mts +2 -0
- package/src/lib/format/head-checks.d.ts +2 -0
- package/src/lib/format/head-checks.js +2 -59
- package/src/lib/format/head-checks.js.map +1 -1
- package/src/lib/format/head-checks.mjs +1 -58
- package/src/lib/format/head-checks.mjs.map +1 -1
- package/src/lib/format/later-checks.d.mts +17 -0
- package/src/lib/format/later-checks.d.ts +17 -0
- package/src/lib/format/later-checks.js +20 -0
- package/src/lib/format/later-checks.js.map +1 -0
- package/src/lib/format/later-checks.mjs +17 -0
- package/src/lib/format/later-checks.mjs.map +1 -0
- package/src/lib/format/layout.d.mts +241 -188
- package/src/lib/format/layout.d.ts +241 -188
- package/src/lib/format/layout.js +33 -28
- package/src/lib/format/layout.js.map +1 -1
- package/src/lib/format/layout.mjs +13 -3
- package/src/lib/format/layout.mjs.map +1 -1
- package/src/lib/format/layout.types.d.mts +2 -1
- package/src/lib/format/layout.types.d.ts +2 -1
- package/src/lib/format/limits-checks.d.mts +14 -0
- package/src/lib/format/limits-checks.d.ts +14 -0
- package/src/lib/format/limits-checks.js +36 -0
- package/src/lib/format/limits-checks.js.map +1 -0
- package/src/lib/format/limits-checks.mjs +33 -0
- package/src/lib/format/limits-checks.mjs.map +1 -0
- package/src/lib/format/limits.d.mts +24 -0
- package/src/lib/format/limits.d.ts +24 -0
- package/src/lib/format/limits.js +35 -0
- package/src/lib/format/limits.js.map +1 -0
- package/src/lib/format/limits.mjs +32 -0
- package/src/lib/format/limits.mjs.map +1 -0
- package/src/lib/format/list-checks.d.mts +44 -0
- package/src/lib/format/list-checks.d.ts +44 -0
- package/src/lib/format/list-checks.js +340 -0
- package/src/lib/format/list-checks.js.map +1 -0
- package/src/lib/format/list-checks.mjs +336 -0
- package/src/lib/format/list-checks.mjs.map +1 -0
- package/src/lib/format/map-checks.d.mts +33 -0
- package/src/lib/format/map-checks.d.ts +33 -0
- package/src/lib/format/map-checks.js +180 -0
- package/src/lib/format/map-checks.js.map +1 -0
- package/src/lib/format/map-checks.mjs +175 -0
- package/src/lib/format/map-checks.mjs.map +1 -0
- package/src/lib/format/mapchecks-part.d.mts +5 -0
- package/src/lib/format/mapchecks-part.d.ts +5 -0
- package/src/lib/format/mapchecks-part.js +11 -0
- package/src/lib/format/mapchecks-part.js.map +1 -0
- package/src/lib/format/mapchecks-part.mjs +6 -0
- package/src/lib/format/mapchecks-part.mjs.map +1 -0
- package/src/lib/format/option-checks.d.mts +16 -0
- package/src/lib/format/option-checks.d.ts +16 -0
- package/src/lib/format/option-checks.js +39 -0
- package/src/lib/format/option-checks.js.map +1 -0
- package/src/lib/format/option-checks.mjs +36 -0
- package/src/lib/format/option-checks.mjs.map +1 -0
- package/src/lib/format/options-part.d.mts +6 -0
- package/src/lib/format/options-part.d.ts +6 -0
- package/src/lib/format/options-part.js +11 -0
- package/src/lib/format/options-part.js.map +1 -0
- package/src/lib/format/options-part.mjs +7 -0
- package/src/lib/format/options-part.mjs.map +1 -0
- package/src/lib/format/page.d.mts +147 -71
- package/src/lib/format/page.d.ts +147 -71
- package/src/lib/format/page.js +5 -0
- package/src/lib/format/page.js.map +1 -1
- package/src/lib/format/page.mjs +5 -0
- package/src/lib/format/page.mjs.map +1 -1
- package/src/lib/format/part-checks.d.mts +20 -0
- package/src/lib/format/part-checks.d.ts +20 -0
- package/src/lib/format/part-checks.js +3 -0
- package/src/lib/format/part-checks.js.map +1 -0
- package/src/lib/format/part-checks.mjs +2 -0
- package/src/lib/format/part-checks.mjs.map +1 -0
- package/src/lib/format/references.d.mts +71 -65
- package/src/lib/format/references.d.ts +71 -65
- package/src/lib/format/references.js +194 -631
- package/src/lib/format/references.js.map +1 -1
- package/src/lib/format/references.mjs +194 -631
- package/src/lib/format/references.mjs.map +1 -1
- package/src/lib/format/seats-checks.d.mts +3 -0
- package/src/lib/format/seats-checks.d.ts +3 -0
- package/src/lib/format/seats-checks.js +13 -0
- package/src/lib/format/seats-checks.js.map +1 -0
- package/src/lib/format/seats-checks.mjs +10 -0
- package/src/lib/format/seats-checks.mjs.map +1 -0
- package/src/lib/format/sheet-head-checks.d.mts +4 -0
- package/src/lib/format/sheet-head-checks.d.ts +4 -0
- package/src/lib/format/sheet-head-checks.js +68 -0
- package/src/lib/format/sheet-head-checks.js.map +1 -0
- package/src/lib/format/sheet-head-checks.mjs +65 -0
- package/src/lib/format/sheet-head-checks.mjs.map +1 -0
- package/src/lib/format/signature-checks.d.mts +7 -0
- package/src/lib/format/signature-checks.d.ts +7 -0
- package/src/lib/format/signature-checks.js +32 -0
- package/src/lib/format/signature-checks.js.map +1 -0
- package/src/lib/format/signature-checks.mjs +29 -0
- package/src/lib/format/signature-checks.mjs.map +1 -0
- package/src/lib/format/signature-options.d.mts +24 -0
- package/src/lib/format/signature-options.d.ts +24 -0
- package/src/lib/format/signature-options.js +30 -0
- package/src/lib/format/signature-options.js.map +1 -0
- package/src/lib/format/signature-options.mjs +26 -0
- package/src/lib/format/signature-options.mjs.map +1 -0
- package/src/lib/format/slots-checks.d.mts +4 -0
- package/src/lib/format/slots-checks.d.ts +4 -0
- package/src/lib/format/slots-checks.js +21 -0
- package/src/lib/format/slots-checks.js.map +1 -0
- package/src/lib/format/slots-checks.mjs +18 -0
- package/src/lib/format/slots-checks.mjs.map +1 -0
- package/src/lib/format/statusbar-checks.d.mts +8 -0
- package/src/lib/format/statusbar-checks.d.ts +8 -0
- package/src/lib/format/statusbar-checks.js +35 -0
- package/src/lib/format/statusbar-checks.js.map +1 -0
- package/src/lib/format/statusbar-checks.mjs +32 -0
- package/src/lib/format/statusbar-checks.mjs.map +1 -0
- package/src/lib/format/table-checks.d.mts +21 -0
- package/src/lib/format/table-checks.d.ts +21 -0
- package/src/lib/format/table-checks.js +86 -0
- package/src/lib/format/table-checks.js.map +1 -0
- package/src/lib/format/table-checks.mjs +82 -0
- package/src/lib/format/table-checks.mjs.map +1 -0
- package/src/lib/format/translate.js +2 -2
- package/src/lib/format/translate.js.map +1 -1
- package/src/lib/format/translate.mjs +2 -2
- package/src/lib/format/translate.mjs.map +1 -1
- package/src/lib/format/upgrade.d.mts +6 -3
- package/src/lib/format/upgrade.d.ts +6 -3
- package/src/lib/format/upgrade.js +6 -3
- package/src/lib/format/upgrade.js.map +1 -1
- package/src/lib/format/upgrade.mjs +6 -3
- package/src/lib/format/upgrade.mjs.map +1 -1
- package/src/lib/format/validate.d.mts +18 -2
- package/src/lib/format/validate.d.ts +18 -2
- package/src/lib/format/validate.js +36 -3
- package/src/lib/format/validate.js.map +1 -1
- package/src/lib/format/validate.mjs +35 -3
- package/src/lib/format/validate.mjs.map +1 -1
- package/src/lib/format/version.d.mts +2 -2
- package/src/lib/format/version.d.ts +2 -2
- package/src/lib/format/version.js +2 -2
- package/src/lib/format/version.js.map +1 -1
- package/src/lib/format/version.mjs +2 -2
- package/src/lib/format/version.mjs.map +1 -1
- package/src/lib/format/words.d.mts +6 -2
- package/src/lib/format/words.d.ts +6 -2
- package/src/lib/format/words.js +13 -7
- package/src/lib/format/words.js.map +1 -1
- package/src/lib/format/words.mjs +13 -7
- package/src/lib/format/words.mjs.map +1 -1
- package/src/lib/parts.d.mts +45 -0
- package/src/lib/parts.d.ts +45 -0
- package/src/lib/parts.js +60 -0
- package/src/lib/parts.js.map +1 -0
- package/src/lib/parts.mjs +53 -0
- package/src/lib/parts.mjs.map +1 -0
- package/src/lib/record/cells.d.mts +3 -3
- package/src/lib/record/cells.d.ts +3 -3
- package/src/lib/record/cells.js +16 -15
- package/src/lib/record/cells.js.map +1 -1
- package/src/lib/record/cells.mjs +16 -15
- package/src/lib/record/cells.mjs.map +1 -1
- package/src/lib/record/compute.d.mts +16 -5
- package/src/lib/record/compute.d.ts +16 -5
- package/src/lib/record/compute.js +57 -16
- package/src/lib/record/compute.js.map +1 -1
- package/src/lib/record/compute.mjs +57 -16
- package/src/lib/record/compute.mjs.map +1 -1
- package/src/lib/record/data-source.d.mts +140 -3
- package/src/lib/record/data-source.d.ts +140 -3
- package/src/lib/record/data-source.js.map +1 -1
- package/src/lib/record/data-source.mjs.map +1 -1
- package/src/lib/record/drafts.d.mts +19 -0
- package/src/lib/record/drafts.d.ts +19 -0
- package/src/lib/record/drafts.js +35 -0
- package/src/lib/record/drafts.js.map +1 -0
- package/src/lib/record/drafts.mjs +31 -0
- package/src/lib/record/drafts.mjs.map +1 -0
- package/src/lib/record/env.d.mts +5 -1
- package/src/lib/record/env.d.ts +5 -1
- package/src/lib/record/env.js +9 -1
- package/src/lib/record/env.js.map +1 -1
- package/src/lib/record/env.mjs +8 -1
- package/src/lib/record/env.mjs.map +1 -1
- package/src/lib/record/form-limits.d.mts +81 -0
- package/src/lib/record/form-limits.d.ts +81 -0
- package/src/lib/record/form-limits.js +231 -0
- package/src/lib/record/form-limits.js.map +1 -0
- package/src/lib/record/form-limits.mjs +224 -0
- package/src/lib/record/form-limits.mjs.map +1 -0
- package/src/lib/record/form.d.mts +173 -4
- package/src/lib/record/form.d.ts +173 -4
- package/src/lib/record/form.js +792 -88
- package/src/lib/record/form.js.map +1 -1
- package/src/lib/record/form.mjs +792 -88
- package/src/lib/record/form.mjs.map +1 -1
- package/src/lib/record/limits-part.d.mts +6 -0
- package/src/lib/record/limits-part.d.ts +6 -0
- package/src/lib/record/limits-part.js +12 -0
- package/src/lib/record/limits-part.js.map +1 -0
- package/src/lib/record/limits-part.mjs +7 -0
- package/src/lib/record/limits-part.mjs.map +1 -0
- package/src/lib/record/line-choices.d.mts +30 -0
- package/src/lib/record/line-choices.d.ts +30 -0
- package/src/lib/record/line-choices.js +42 -0
- package/src/lib/record/line-choices.js.map +1 -0
- package/src/lib/record/line-choices.mjs +36 -0
- package/src/lib/record/line-choices.mjs.map +1 -0
- package/src/lib/record/locales/ar.js +10 -0
- package/src/lib/record/locales/ar.js.map +1 -1
- package/src/lib/record/locales/ar.mjs +10 -0
- package/src/lib/record/locales/ar.mjs.map +1 -1
- package/src/lib/record/locales/de.js +10 -0
- package/src/lib/record/locales/de.js.map +1 -1
- package/src/lib/record/locales/de.mjs +10 -0
- package/src/lib/record/locales/de.mjs.map +1 -1
- package/src/lib/record/locales/fr.js +10 -0
- package/src/lib/record/locales/fr.js.map +1 -1
- package/src/lib/record/locales/fr.mjs +10 -0
- package/src/lib/record/locales/fr.mjs.map +1 -1
- package/src/lib/record/memory-data-source.d.mts +44 -3
- package/src/lib/record/memory-data-source.d.ts +44 -3
- package/src/lib/record/memory-data-source.js +102 -40
- package/src/lib/record/memory-data-source.js.map +1 -1
- package/src/lib/record/memory-data-source.mjs +101 -40
- package/src/lib/record/memory-data-source.mjs.map +1 -1
- package/src/lib/record/memory-kept.d.mts +20 -0
- package/src/lib/record/memory-kept.d.ts +20 -0
- package/src/lib/record/memory-kept.js +46 -0
- package/src/lib/record/memory-kept.js.map +1 -0
- package/src/lib/record/memory-kept.mjs +43 -0
- package/src/lib/record/memory-kept.mjs.map +1 -0
- package/src/lib/record/memory-later.d.mts +19 -0
- package/src/lib/record/memory-later.d.ts +19 -0
- package/src/lib/record/memory-later.js +39 -0
- package/src/lib/record/memory-later.js.map +1 -0
- package/src/lib/record/memory-later.mjs +35 -0
- package/src/lib/record/memory-later.mjs.map +1 -0
- package/src/lib/record/memory-part.d.mts +7 -0
- package/src/lib/record/memory-part.d.ts +7 -0
- package/src/lib/record/memory-part.js +13 -0
- package/src/lib/record/memory-part.js.map +1 -0
- package/src/lib/record/memory-part.mjs +8 -0
- package/src/lib/record/memory-part.mjs.map +1 -0
- package/src/lib/record/messages.d.mts +17 -0
- package/src/lib/record/messages.d.ts +17 -0
- package/src/lib/record/messages.js +10 -0
- package/src/lib/record/messages.js.map +1 -1
- package/src/lib/record/messages.mjs +10 -0
- package/src/lib/record/messages.mjs.map +1 -1
- package/src/lib/record/option-rules.d.mts +50 -0
- package/src/lib/record/option-rules.d.ts +50 -0
- package/src/lib/record/option-rules.js +137 -0
- package/src/lib/record/option-rules.js.map +1 -0
- package/src/lib/record/option-rules.mjs +134 -0
- package/src/lib/record/option-rules.mjs.map +1 -0
- package/src/lib/record/rules.d.mts +2 -2
- package/src/lib/record/rules.d.ts +2 -2
- package/src/lib/record/rules.js +3 -3
- package/src/lib/record/rules.js.map +1 -1
- package/src/lib/record/rules.mjs +3 -3
- package/src/lib/record/rules.mjs.map +1 -1
- package/src/lib/record/run.js +9 -7
- package/src/lib/record/run.js.map +1 -1
- package/src/lib/record/run.mjs +9 -7
- package/src/lib/record/run.mjs.map +1 -1
- package/src/lib/record/search.d.mts +12 -2
- package/src/lib/record/search.d.ts +12 -2
- package/src/lib/record/search.js +29 -4
- package/src/lib/record/search.js.map +1 -1
- package/src/lib/record/search.mjs +29 -4
- package/src/lib/record/search.mjs.map +1 -1
- package/src/lib/record/set-when.d.mts +3 -3
- package/src/lib/record/set-when.d.ts +3 -3
- package/src/lib/record/set-when.js +9 -9
- package/src/lib/record/set-when.js.map +1 -1
- package/src/lib/record/set-when.mjs +9 -9
- package/src/lib/record/set-when.mjs.map +1 -1
- package/src/lib/record/signed.d.mts +21 -0
- package/src/lib/record/signed.d.ts +21 -0
- package/src/lib/record/signed.js +62 -0
- package/src/lib/record/signed.js.map +1 -0
- package/src/lib/record/signed.mjs +57 -0
- package/src/lib/record/signed.mjs.map +1 -0
- package/src/lib/record/taking.d.mts +60 -0
- package/src/lib/record/taking.d.ts +60 -0
- package/src/lib/record/taking.js +58 -0
- package/src/lib/record/taking.js.map +1 -0
- package/src/lib/record/taking.mjs +50 -0
- package/src/lib/record/taking.mjs.map +1 -0
- package/src/lib/record/value-map.js +11 -4
- package/src/lib/record/value-map.js.map +1 -1
- package/src/lib/record/value-map.mjs +11 -4
- package/src/lib/record/value-map.mjs.map +1 -1
- package/src/lib/record/values.d.mts +20 -0
- package/src/lib/record/values.d.ts +20 -0
- package/src/lib/record/values.js.map +1 -1
- package/src/lib/record/values.mjs.map +1 -1
- package/src/lib/record/waits.d.mts +6 -1
- package/src/lib/record/waits.d.ts +6 -1
- package/src/lib/record/waits.js +2 -2
- package/src/lib/record/waits.js.map +1 -1
- package/src/lib/record/waits.mjs +2 -2
- package/src/lib/record/waits.mjs.map +1 -1
- package/src/runtime.d.mts +16 -5
- package/src/runtime.d.ts +16 -5
- package/src/runtime.js +41 -3
- package/src/runtime.js.map +1 -1
- package/src/runtime.mjs +13 -0
- package/src/runtime.mjs.map +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* A signature that signs answers (`"widget": "signature"` on a binary field): its settings in the node's `options`,
|
|
4
|
+
* beside its pen's. `signs` names the answers it signs — `"form"`, every answer shown on the page; or the fields, by
|
|
5
|
+
* name — and the signature then keeps who signed, when, and a fingerprint (SHA-256) of those answers beside its
|
|
6
|
+
* picture (`FileValue.signed`), and locks them while it is kept: a person changes one by taking the signature away,
|
|
7
|
+
* and signs again. `signerField` names the field holding the signer's name ("patient_name"); left out, the name typed
|
|
8
|
+
* on the pad, else the person using the form. Left out, a signature is a picture, as before.
|
|
9
|
+
*
|
|
10
|
+
* { "field": "signature", "widget": "signature", "options": { "signs": "form", "signerField": "patient_name" } }
|
|
11
|
+
*/
|
|
12
|
+
export declare const SignatureOptionsSchema: z.ZodObject<{
|
|
13
|
+
signs: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"form">, z.ZodArray<z.ZodString>]>>;
|
|
14
|
+
signerField: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
export type SignatureOptions = z.infer<typeof SignatureOptionsSchema>;
|
|
17
|
+
/** The issues of a signature's settings, each at its path under `options`. */
|
|
18
|
+
export declare function signatureOptionIssues(node: {
|
|
19
|
+
widget?: string;
|
|
20
|
+
options?: Record<string, unknown>;
|
|
21
|
+
}): {
|
|
22
|
+
message: string;
|
|
23
|
+
path: (string | number)[];
|
|
24
|
+
}[];
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* A signature that signs answers (`"widget": "signature"` on a binary field): its settings in the node's `options`,
|
|
4
|
+
* beside its pen's. `signs` names the answers it signs — `"form"`, every answer shown on the page; or the fields, by
|
|
5
|
+
* name — and the signature then keeps who signed, when, and a fingerprint (SHA-256) of those answers beside its
|
|
6
|
+
* picture (`FileValue.signed`), and locks them while it is kept: a person changes one by taking the signature away,
|
|
7
|
+
* and signs again. `signerField` names the field holding the signer's name ("patient_name"); left out, the name typed
|
|
8
|
+
* on the pad, else the person using the form. Left out, a signature is a picture, as before.
|
|
9
|
+
*
|
|
10
|
+
* { "field": "signature", "widget": "signature", "options": { "signs": "form", "signerField": "patient_name" } }
|
|
11
|
+
*/
|
|
12
|
+
export declare const SignatureOptionsSchema: z.ZodObject<{
|
|
13
|
+
signs: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"form">, z.ZodArray<z.ZodString>]>>;
|
|
14
|
+
signerField: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.z.core.$strip>;
|
|
16
|
+
export type SignatureOptions = z.infer<typeof SignatureOptionsSchema>;
|
|
17
|
+
/** The issues of a signature's settings, each at its path under `options`. */
|
|
18
|
+
export declare function signatureOptionIssues(node: {
|
|
19
|
+
widget?: string;
|
|
20
|
+
options?: Record<string, unknown>;
|
|
21
|
+
}): {
|
|
22
|
+
message: string;
|
|
23
|
+
path: (string | number)[];
|
|
24
|
+
}[];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SignatureOptionsSchema = void 0;
|
|
4
|
+
exports.signatureOptionIssues = signatureOptionIssues;
|
|
5
|
+
const z = require("zod");
|
|
6
|
+
/**
|
|
7
|
+
* A signature that signs answers (`"widget": "signature"` on a binary field): its settings in the node's `options`,
|
|
8
|
+
* beside its pen's. `signs` names the answers it signs — `"form"`, every answer shown on the page; or the fields, by
|
|
9
|
+
* name — and the signature then keeps who signed, when, and a fingerprint (SHA-256) of those answers beside its
|
|
10
|
+
* picture (`FileValue.signed`), and locks them while it is kept: a person changes one by taking the signature away,
|
|
11
|
+
* and signs again. `signerField` names the field holding the signer's name ("patient_name"); left out, the name typed
|
|
12
|
+
* on the pad, else the person using the form. Left out, a signature is a picture, as before.
|
|
13
|
+
*
|
|
14
|
+
* { "field": "signature", "widget": "signature", "options": { "signs": "form", "signerField": "patient_name" } }
|
|
15
|
+
*/
|
|
16
|
+
exports.SignatureOptionsSchema = z
|
|
17
|
+
.object({
|
|
18
|
+
signs: z
|
|
19
|
+
.union([z.literal('form'), z.array(z.string().min(1)).min(1)], { error: 'signs is "form" (every answer shown) or the fields it signs, by name: ["treatment", "consent"]' })
|
|
20
|
+
.optional(),
|
|
21
|
+
signerField: z.string().min(1).optional(),
|
|
22
|
+
})
|
|
23
|
+
.meta({ id: 'SignatureOptions' });
|
|
24
|
+
/** The issues of a signature's settings, each at its path under `options`. */
|
|
25
|
+
function signatureOptionIssues(node) {
|
|
26
|
+
if (node.widget !== 'signature')
|
|
27
|
+
return [];
|
|
28
|
+
return (exports.SignatureOptionsSchema.safeParse(node.options ?? {}).error?.issues ?? []).map((issue) => ({ message: issue.message, path: ['options', ...issue.path] }));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=signature-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature-options.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/signature-options.ts"],"names":[],"mappings":";;;AAwBA,sDAGC;AA3BD,yBAAyB;AAEzB;;;;;;;;;GASG;AACU,QAAA,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,gGAAgG,EAAE,CAAC;SAC1K,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAIpC,8EAA8E;AAC9E,SAAgB,qBAAqB,CAAC,IAA4D;IAChG,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,CAAC,8BAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,IAAI,CAAwB,EAAE,CAAC,CAAC,CAAC;AAC1L,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* A signature that signs answers (`"widget": "signature"` on a binary field): its settings in the node's `options`,
|
|
4
|
+
* beside its pen's. `signs` names the answers it signs — `"form"`, every answer shown on the page; or the fields, by
|
|
5
|
+
* name — and the signature then keeps who signed, when, and a fingerprint (SHA-256) of those answers beside its
|
|
6
|
+
* picture (`FileValue.signed`), and locks them while it is kept: a person changes one by taking the signature away,
|
|
7
|
+
* and signs again. `signerField` names the field holding the signer's name ("patient_name"); left out, the name typed
|
|
8
|
+
* on the pad, else the person using the form. Left out, a signature is a picture, as before.
|
|
9
|
+
*
|
|
10
|
+
* { "field": "signature", "widget": "signature", "options": { "signs": "form", "signerField": "patient_name" } }
|
|
11
|
+
*/
|
|
12
|
+
export const SignatureOptionsSchema = z
|
|
13
|
+
.object({
|
|
14
|
+
signs: z
|
|
15
|
+
.union([z.literal('form'), z.array(z.string().min(1)).min(1)], { error: 'signs is "form" (every answer shown) or the fields it signs, by name: ["treatment", "consent"]' })
|
|
16
|
+
.optional(),
|
|
17
|
+
signerField: z.string().min(1).optional(),
|
|
18
|
+
})
|
|
19
|
+
.meta({ id: 'SignatureOptions' });
|
|
20
|
+
/** The issues of a signature's settings, each at its path under `options`. */
|
|
21
|
+
export function signatureOptionIssues(node) {
|
|
22
|
+
if (node.widget !== 'signature')
|
|
23
|
+
return [];
|
|
24
|
+
return (SignatureOptionsSchema.safeParse(node.options ?? {}).error?.issues ?? []).map((issue) => ({ message: issue.message, path: ['options', ...issue.path] }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=signature-options.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature-options.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/signature-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,gGAAgG,EAAE,CAAC;SAC1K,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAIpC,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAC,IAA4D;IAChG,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,IAAI,CAAwB,EAAE,CAAC,CAAC,CAAC;AAC1L,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FieldNode } from './layout.mjs';
|
|
2
|
+
import type { FieldTools } from './part-checks.mjs';
|
|
3
|
+
/** Booking slots on a date and time: its end written in another, asked again as the fields it depends on change. */
|
|
4
|
+
export declare function checkSlots(node: FieldNode, path: string, tools: FieldTools): void;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FieldNode } from './layout';
|
|
2
|
+
import type { FieldTools } from './part-checks';
|
|
3
|
+
/** Booking slots on a date and time: its end written in another, asked again as the fields it depends on change. */
|
|
4
|
+
export declare function checkSlots(node: FieldNode, path: string, tools: FieldTools): void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkSlots = checkSlots;
|
|
4
|
+
/** Whether a record holds a key of its own. */
|
|
5
|
+
const has = (record, key) => Object.prototype.hasOwnProperty.call(record, key);
|
|
6
|
+
/** Booking slots on a date and time: its end written in another, asked again as the fields it depends on change. */
|
|
7
|
+
function checkSlots(node, path, tools) {
|
|
8
|
+
const options = node.options ?? {};
|
|
9
|
+
const end = options['endField'];
|
|
10
|
+
if (typeof end === 'string' && has(tools.page.fields, end)) {
|
|
11
|
+
const type = tools.page.fields[end].type;
|
|
12
|
+
if (end === node.field)
|
|
13
|
+
tools.report(`${path}.options.endField`, 'a booking ends in another field than the one it starts in');
|
|
14
|
+
else if (type !== 'datetime')
|
|
15
|
+
tools.report(`${path}.options.endField`, `"${end}" is a ${type}; a booking's end is kept in a datetime field`);
|
|
16
|
+
}
|
|
17
|
+
const on = options['dependsOn'];
|
|
18
|
+
if (Array.isArray(on))
|
|
19
|
+
on.forEach((name, i) => typeof name === 'string' && tools.need(name, `${path}.options.dependsOn[${i}]`));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=slots-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slots-checks.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/slots-checks.ts"],"names":[],"mappings":";;AAOA,gCAUC;AAdD,+CAA+C;AAC/C,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/F,oHAAoH;AACpH,SAAgB,UAAU,CAAC,IAAe,EAAE,IAAY,EAAE,KAAiB;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACzC,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,mBAAmB,EAAE,2DAA2D,CAAC,CAAC;aACzH,IAAI,IAAI,KAAK,UAAU;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,mBAAmB,EAAE,IAAI,GAAG,UAAU,IAAI,+CAA+C,CAAC,CAAC;IAC/I,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;AAClI,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Whether a record holds a key of its own. */
|
|
2
|
+
const has = (record, key) => Object.prototype.hasOwnProperty.call(record, key);
|
|
3
|
+
/** Booking slots on a date and time: its end written in another, asked again as the fields it depends on change. */
|
|
4
|
+
export function checkSlots(node, path, tools) {
|
|
5
|
+
const options = node.options ?? {};
|
|
6
|
+
const end = options['endField'];
|
|
7
|
+
if (typeof end === 'string' && has(tools.page.fields, end)) {
|
|
8
|
+
const type = tools.page.fields[end].type;
|
|
9
|
+
if (end === node.field)
|
|
10
|
+
tools.report(`${path}.options.endField`, 'a booking ends in another field than the one it starts in');
|
|
11
|
+
else if (type !== 'datetime')
|
|
12
|
+
tools.report(`${path}.options.endField`, `"${end}" is a ${type}; a booking's end is kept in a datetime field`);
|
|
13
|
+
}
|
|
14
|
+
const on = options['dependsOn'];
|
|
15
|
+
if (Array.isArray(on))
|
|
16
|
+
on.forEach((name, i) => typeof name === 'string' && tools.need(name, `${path}.options.dependsOn[${i}]`));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=slots-checks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slots-checks.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/slots-checks.ts"],"names":[],"mappings":"AAGA,+CAA+C;AAC/C,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/F,oHAAoH;AACpH,MAAM,UAAU,UAAU,CAAC,IAAe,EAAE,IAAY,EAAE,KAAiB;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACzC,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,mBAAmB,EAAE,2DAA2D,CAAC,CAAC;aACzH,IAAI,IAAI,KAAK,UAAU;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,mBAAmB,EAAE,IAAI,GAAG,UAAU,IAAI,+CAA+C,CAAC,CAAC;IAC/I,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;AAClI,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Statusbar } from './layout.mjs';
|
|
2
|
+
import type { EndingTools } from './part-checks.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* A sheet's statusbar (`statusbar`): a choice's or a link's steps, its time per step from a json field, the steps it
|
|
5
|
+
* shows of a choice, a click that saves where a step can be clicked. Drawn by the business part, which carries these
|
|
6
|
+
* in the one-tag script, run once it came (later-checks.ts); the packages' checks run them at once.
|
|
7
|
+
*/
|
|
8
|
+
export declare function checkStatusbar(statusbar: Statusbar, path: string, tools: Pick<EndingTools, 'need' | 'report' | 'checkModifiers' | 'owe' | 'page'>): void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Statusbar } from './layout';
|
|
2
|
+
import type { EndingTools } from './part-checks';
|
|
3
|
+
/**
|
|
4
|
+
* A sheet's statusbar (`statusbar`): a choice's or a link's steps, its time per step from a json field, the steps it
|
|
5
|
+
* shows of a choice, a click that saves where a step can be clicked. Drawn by the business part, which carries these
|
|
6
|
+
* in the one-tag script, run once it came (later-checks.ts); the packages' checks run them at once.
|
|
7
|
+
*/
|
|
8
|
+
export declare function checkStatusbar(statusbar: Statusbar, path: string, tools: Pick<EndingTools, 'need' | 'report' | 'checkModifiers' | 'owe' | 'page'>): void;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkStatusbar = checkStatusbar;
|
|
4
|
+
/**
|
|
5
|
+
* A sheet's statusbar (`statusbar`): a choice's or a link's steps, its time per step from a json field, the steps it
|
|
6
|
+
* shows of a choice, a click that saves where a step can be clicked. Drawn by the business part, which carries these
|
|
7
|
+
* in the one-tag script, run once it came (later-checks.ts); the packages' checks run them at once.
|
|
8
|
+
*/
|
|
9
|
+
function checkStatusbar(statusbar, path, tools) {
|
|
10
|
+
const { field, visibleStates, durationsField, fold, saves, clickable } = statusbar;
|
|
11
|
+
const at = `${path}.statusbar`;
|
|
12
|
+
tools.checkModifiers(statusbar, at);
|
|
13
|
+
if (durationsField !== undefined) {
|
|
14
|
+
const times = tools.need(durationsField, `${at}.durationsField`);
|
|
15
|
+
if (times && times.type !== 'json')
|
|
16
|
+
tools.report(`${at}.durationsField`, `"${durationsField}" is a ${times.type}; time per step comes from a json field`);
|
|
17
|
+
}
|
|
18
|
+
if (saves && !clickable)
|
|
19
|
+
tools.report(`${at}.saves`, 'a click saves only where a step can be clicked (clickable)');
|
|
20
|
+
const def = tools.need(field, `${path}.statusbar.field`);
|
|
21
|
+
if (fold && def && def.type !== 'many2one')
|
|
22
|
+
tools.report(`${at}.fold`, 'steps fold by their record (a stage), so only a link’s steps fold; a choice keeps the steps it shows with visibleStates');
|
|
23
|
+
if (def && def.type !== 'selection' && def.type !== 'many2one') {
|
|
24
|
+
tools.report(`${path}.statusbar.field`, `"${field}" is a ${def.type}; a statusbar needs a selection or many2one`);
|
|
25
|
+
}
|
|
26
|
+
if (def?.type === 'selection' && visibleStates) {
|
|
27
|
+
const values = new Set(def.options.map((o) => o.value));
|
|
28
|
+
visibleStates.forEach((state, i) => {
|
|
29
|
+
if (!values.has(state)) {
|
|
30
|
+
tools.report(`${path}.statusbar.visibleStates[${i}]`, `"${state}" is not an option of "${field}"`);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=statusbar-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusbar-checks.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/statusbar-checks.ts"],"names":[],"mappings":";;AAQA,wCAsBC;AA3BD;;;;GAIG;AACH,SAAgB,cAAc,CAAC,SAAoB,EAAE,IAAY,EAAE,KAA+E;IAChJ,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACnF,MAAM,EAAE,GAAG,GAAG,IAAI,YAAY,CAAC;IAC/B,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACjE,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,cAAc,UAAU,KAAK,CAAC,IAAI,yCAAyC,CAAC,CAAC;IAC5J,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,SAAS;QAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,4DAA4D,CAAC,CAAC;IACnH,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,kBAAkB,CAAC,CAAC;IACzD,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;QAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,yHAAyH,CAAC,CAAC;IAClM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/D,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,kBAAkB,EAAE,IAAI,KAAK,UAAU,GAAG,CAAC,IAAI,6CAA6C,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,GAAG,EAAE,IAAI,KAAK,WAAW,IAAI,aAAa,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,4BAA4B,CAAC,GAAG,EAAE,IAAI,KAAK,0BAA0B,KAAK,GAAG,CAAC,CAAC;YACrG,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A sheet's statusbar (`statusbar`): a choice's or a link's steps, its time per step from a json field, the steps it
|
|
3
|
+
* shows of a choice, a click that saves where a step can be clicked. Drawn by the business part, which carries these
|
|
4
|
+
* in the one-tag script, run once it came (later-checks.ts); the packages' checks run them at once.
|
|
5
|
+
*/
|
|
6
|
+
export function checkStatusbar(statusbar, path, tools) {
|
|
7
|
+
const { field, visibleStates, durationsField, fold, saves, clickable } = statusbar;
|
|
8
|
+
const at = `${path}.statusbar`;
|
|
9
|
+
tools.checkModifiers(statusbar, at);
|
|
10
|
+
if (durationsField !== undefined) {
|
|
11
|
+
const times = tools.need(durationsField, `${at}.durationsField`);
|
|
12
|
+
if (times && times.type !== 'json')
|
|
13
|
+
tools.report(`${at}.durationsField`, `"${durationsField}" is a ${times.type}; time per step comes from a json field`);
|
|
14
|
+
}
|
|
15
|
+
if (saves && !clickable)
|
|
16
|
+
tools.report(`${at}.saves`, 'a click saves only where a step can be clicked (clickable)');
|
|
17
|
+
const def = tools.need(field, `${path}.statusbar.field`);
|
|
18
|
+
if (fold && def && def.type !== 'many2one')
|
|
19
|
+
tools.report(`${at}.fold`, 'steps fold by their record (a stage), so only a link’s steps fold; a choice keeps the steps it shows with visibleStates');
|
|
20
|
+
if (def && def.type !== 'selection' && def.type !== 'many2one') {
|
|
21
|
+
tools.report(`${path}.statusbar.field`, `"${field}" is a ${def.type}; a statusbar needs a selection or many2one`);
|
|
22
|
+
}
|
|
23
|
+
if (def?.type === 'selection' && visibleStates) {
|
|
24
|
+
const values = new Set(def.options.map((o) => o.value));
|
|
25
|
+
visibleStates.forEach((state, i) => {
|
|
26
|
+
if (!values.has(state)) {
|
|
27
|
+
tools.report(`${path}.statusbar.visibleStates[${i}]`, `"${state}" is not an option of "${field}"`);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=statusbar-checks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusbar-checks.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/statusbar-checks.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAAoB,EAAE,IAAY,EAAE,KAA+E;IAChJ,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACnF,MAAM,EAAE,GAAG,GAAG,IAAI,YAAY,CAAC;IAC/B,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACjE,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,cAAc,UAAU,KAAK,CAAC,IAAI,yCAAyC,CAAC,CAAC;IAC5J,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,SAAS;QAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,4DAA4D,CAAC,CAAC;IACnH,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,kBAAkB,CAAC,CAAC;IACzD,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;QAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,yHAAyH,CAAC,CAAC;IAClM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/D,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,kBAAkB,EAAE,IAAI,KAAK,UAAU,GAAG,CAAC,IAAI,6CAA6C,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,GAAG,EAAE,IAAI,KAAK,WAAW,IAAI,aAAa,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,4BAA4B,CAAC,GAAG,EAAE,IAAI,KAAK,0BAA0B,KAAK,GAAG,CAAC,CAAC;YACrG,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Field, LineField, LineKinds } from './field.mjs';
|
|
2
|
+
import type { ButtonNode, FieldNode, StatButton } from './layout.mjs';
|
|
3
|
+
import type { FieldTools } from './part-checks.mjs';
|
|
4
|
+
import type { Scope } from './references.mjs';
|
|
5
|
+
/** What a table of lines' checks are handed: a field's tools, and the reference check's own for rules and buttons. */
|
|
6
|
+
export interface TableTools extends FieldTools {
|
|
7
|
+
claim(id: string, path: string): void;
|
|
8
|
+
checkModifiers(owner: object, path: string, keys?: readonly string[], scope?: Scope): void;
|
|
9
|
+
checkPress(button: ButtonNode | StatButton, path: string): void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A table of lines' own settings (a one2many's field node): its columns fields of its lines, its totals of number
|
|
13
|
+
* columns, its order by fields of its lines, its cells' rules read on their line (a column's `hidden` on the record),
|
|
14
|
+
* its rows' tones, bold, delete and buttons, the columns a person may hide among those it shows. Drawn by the lines
|
|
15
|
+
* part, which carries them in the one-tag script, run once it came (later-checks.ts); the packages' checks run them at
|
|
16
|
+
* once. (What is wrong for a field that is no table is the reference check's to say.)
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkTable(node: FieldNode, def: Extract<Field, {
|
|
19
|
+
type: 'one2many';
|
|
20
|
+
}>, path: string, tools: TableTools): void;
|
|
21
|
+
export declare function checkLineKinds(field: string, kinds: LineKinds, lineFields: Record<string, LineField>, path: string, tools: FieldTools): void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Field, LineField, LineKinds } from './field';
|
|
2
|
+
import type { ButtonNode, FieldNode, StatButton } from './layout';
|
|
3
|
+
import type { FieldTools } from './part-checks';
|
|
4
|
+
import type { Scope } from './references';
|
|
5
|
+
/** What a table of lines' checks are handed: a field's tools, and the reference check's own for rules and buttons. */
|
|
6
|
+
export interface TableTools extends FieldTools {
|
|
7
|
+
claim(id: string, path: string): void;
|
|
8
|
+
checkModifiers(owner: object, path: string, keys?: readonly string[], scope?: Scope): void;
|
|
9
|
+
checkPress(button: ButtonNode | StatButton, path: string): void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A table of lines' own settings (a one2many's field node): its columns fields of its lines, its totals of number
|
|
13
|
+
* columns, its order by fields of its lines, its cells' rules read on their line (a column's `hidden` on the record),
|
|
14
|
+
* its rows' tones, bold, delete and buttons, the columns a person may hide among those it shows. Drawn by the lines
|
|
15
|
+
* part, which carries them in the one-tag script, run once it came (later-checks.ts); the packages' checks run them at
|
|
16
|
+
* once. (What is wrong for a field that is no table is the reference check's to say.)
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkTable(node: FieldNode, def: Extract<Field, {
|
|
19
|
+
type: 'one2many';
|
|
20
|
+
}>, path: string, tools: TableTools): void;
|
|
21
|
+
export declare function checkLineKinds(field: string, kinds: LineKinds, lineFields: Record<string, LineField>, path: string, tools: FieldTools): void;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkTable = checkTable;
|
|
4
|
+
exports.checkLineKinds = checkLineKinds;
|
|
5
|
+
/** Whether a record holds a key of its own. */
|
|
6
|
+
const has = (record, key) => Object.prototype.hasOwnProperty.call(record, key);
|
|
7
|
+
/**
|
|
8
|
+
* A table of lines' own settings (a one2many's field node): its columns fields of its lines, its totals of number
|
|
9
|
+
* columns, its order by fields of its lines, its cells' rules read on their line (a column's `hidden` on the record),
|
|
10
|
+
* its rows' tones, bold, delete and buttons, the columns a person may hide among those it shows. Drawn by the lines
|
|
11
|
+
* part, which carries them in the one-tag script, run once it came (later-checks.ts); the packages' checks run them at
|
|
12
|
+
* once. (What is wrong for a field that is no table is the reference check's to say.)
|
|
13
|
+
*/
|
|
14
|
+
function checkTable(node, def, path, tools) {
|
|
15
|
+
node.columns?.forEach((column, i) => {
|
|
16
|
+
if (!has(def.fields, column)) {
|
|
17
|
+
tools.report(`${path}.columns[${i}]`, `"${column}" is not a field of the lines of "${node.field}"`);
|
|
18
|
+
}
|
|
19
|
+
else if (def.fields[column].type === 'one2many') {
|
|
20
|
+
tools.report(`${path}.columns[${i}]`, `"${column}" holds lines of its own: they are edited in the line's form (lineForm), not drawn in its row`);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
node.totals?.forEach((column, i) => {
|
|
24
|
+
const sub = has(def.fields, column) ? def.fields[column] : undefined;
|
|
25
|
+
if (!sub)
|
|
26
|
+
tools.report(`${path}.totals[${i}]`, `"${column}" is not a field of the lines of "${node.field}"`);
|
|
27
|
+
else if (!['integer', 'float', 'monetary'].includes(sub.type)) {
|
|
28
|
+
tools.report(`${path}.totals[${i}]`, `"${column}" is a ${sub.type}; only integer, float and monetary columns add up`);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
node.order?.forEach((item, i) => !has(def.fields, item.field) && tools.report(`${path}.order[${i}].field`, `"${item.field}" is not a field of the lines of "${node.field}"`));
|
|
32
|
+
if (node.cells || node.rowTones || node.rowBold !== undefined || node.rowButtons || node.lineDelete !== undefined) {
|
|
33
|
+
const line = { fields: def.fields, lines: node.field };
|
|
34
|
+
for (const [column, rules] of Object.entries(node.cells ?? {})) {
|
|
35
|
+
if (!has(def.fields, column)) {
|
|
36
|
+
tools.report(`${path}.cells.${column}`, `"${column}" is not a field of the lines of "${node.field}"`);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
tools.checkModifiers(rules, `${path}.cells.${column}`, ['invisible', 'readonly', 'required', 'bold'], line);
|
|
40
|
+
tools.checkModifiers(rules, `${path}.cells.${column}`, ['hidden']);
|
|
41
|
+
rules.tones?.forEach((tone, i) => tools.checkModifiers(tone, `${path}.cells.${column}.tones[${i}]`, ['when'], line));
|
|
42
|
+
// Its widget's options that point at a field: one of the line's.
|
|
43
|
+
for (const [key, value] of Object.entries(rules.options ?? {})) {
|
|
44
|
+
if (key.endsWith('Field') && typeof value === 'string')
|
|
45
|
+
tools.need(value, `${path}.cells.${column}.options.${key}`, def.fields);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
node.rowTones?.forEach((tone, i) => tools.checkModifiers(tone, `${path}.rowTones[${i}]`, ['when'], line));
|
|
49
|
+
tools.checkModifiers(node, path, ['rowBold', 'lineDelete'], line);
|
|
50
|
+
node.rowButtons?.forEach((button, i) => {
|
|
51
|
+
tools.claim(button.id, `${path}.rowButtons[${i}]`);
|
|
52
|
+
tools.checkModifiers(button, `${path}.rowButtons[${i}]`, ['invisible'], line);
|
|
53
|
+
tools.checkPress(button, `${path}.rowButtons[${i}]`);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
if (node.optionalColumns) {
|
|
57
|
+
// The columns the table shows: those named, or every line field but the structural ones.
|
|
58
|
+
const shown = node.columns ?? Object.keys(def.fields).filter((c) => c !== ('lineKinds' in def ? def.lineKinds?.field : undefined) && c !== def.sequenceField);
|
|
59
|
+
for (const column of Object.keys(node.optionalColumns)) {
|
|
60
|
+
if (!shown.includes(column))
|
|
61
|
+
tools.report(`${path}.optionalColumns.${column}`, `"${column}" is not a column of "${node.field}"`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function checkLineKinds(field, kinds, lineFields, path, tools) {
|
|
66
|
+
const kindField = lineFields[kinds.field];
|
|
67
|
+
if (!kindField)
|
|
68
|
+
tools.report(`${path}.field`, `"${kinds.field}" is not a field of the lines of "${field}"`);
|
|
69
|
+
else if (kindField.type !== 'selection' && kindField.type !== 'char') {
|
|
70
|
+
tools.report(`${path}.field`, `"${kinds.field}" is a ${kindField.type}; the field that says what a line is must be a selection or char`);
|
|
71
|
+
}
|
|
72
|
+
else if (kindField.type === 'selection') {
|
|
73
|
+
for (const which of ['section', 'note']) {
|
|
74
|
+
const value = kinds[which] ?? which;
|
|
75
|
+
if (!kindField.options.some((o) => o.value === value))
|
|
76
|
+
tools.report(`${path}.${which}`, `"${kinds.field}" has no option "${value}"`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const text = lineFields[kinds.text];
|
|
80
|
+
if (!text)
|
|
81
|
+
tools.report(`${path}.text`, `"${kinds.text}" is not a field of the lines of "${field}"`);
|
|
82
|
+
else if (text.type !== 'char' && text.type !== 'text') {
|
|
83
|
+
tools.report(`${path}.text`, `"${kinds.text}" is a ${text.type}; a section's or note's text must be a char or text field`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=table-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-checks.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/table-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/** Whether a record holds a key of its own. */
|
|
2
|
+
const has = (record, key) => Object.prototype.hasOwnProperty.call(record, key);
|
|
3
|
+
/**
|
|
4
|
+
* A table of lines' own settings (a one2many's field node): its columns fields of its lines, its totals of number
|
|
5
|
+
* columns, its order by fields of its lines, its cells' rules read on their line (a column's `hidden` on the record),
|
|
6
|
+
* its rows' tones, bold, delete and buttons, the columns a person may hide among those it shows. Drawn by the lines
|
|
7
|
+
* part, which carries them in the one-tag script, run once it came (later-checks.ts); the packages' checks run them at
|
|
8
|
+
* once. (What is wrong for a field that is no table is the reference check's to say.)
|
|
9
|
+
*/
|
|
10
|
+
export function checkTable(node, def, path, tools) {
|
|
11
|
+
node.columns?.forEach((column, i) => {
|
|
12
|
+
if (!has(def.fields, column)) {
|
|
13
|
+
tools.report(`${path}.columns[${i}]`, `"${column}" is not a field of the lines of "${node.field}"`);
|
|
14
|
+
}
|
|
15
|
+
else if (def.fields[column].type === 'one2many') {
|
|
16
|
+
tools.report(`${path}.columns[${i}]`, `"${column}" holds lines of its own: they are edited in the line's form (lineForm), not drawn in its row`);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
node.totals?.forEach((column, i) => {
|
|
20
|
+
const sub = has(def.fields, column) ? def.fields[column] : undefined;
|
|
21
|
+
if (!sub)
|
|
22
|
+
tools.report(`${path}.totals[${i}]`, `"${column}" is not a field of the lines of "${node.field}"`);
|
|
23
|
+
else if (!['integer', 'float', 'monetary'].includes(sub.type)) {
|
|
24
|
+
tools.report(`${path}.totals[${i}]`, `"${column}" is a ${sub.type}; only integer, float and monetary columns add up`);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
node.order?.forEach((item, i) => !has(def.fields, item.field) && tools.report(`${path}.order[${i}].field`, `"${item.field}" is not a field of the lines of "${node.field}"`));
|
|
28
|
+
if (node.cells || node.rowTones || node.rowBold !== undefined || node.rowButtons || node.lineDelete !== undefined) {
|
|
29
|
+
const line = { fields: def.fields, lines: node.field };
|
|
30
|
+
for (const [column, rules] of Object.entries(node.cells ?? {})) {
|
|
31
|
+
if (!has(def.fields, column)) {
|
|
32
|
+
tools.report(`${path}.cells.${column}`, `"${column}" is not a field of the lines of "${node.field}"`);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
tools.checkModifiers(rules, `${path}.cells.${column}`, ['invisible', 'readonly', 'required', 'bold'], line);
|
|
36
|
+
tools.checkModifiers(rules, `${path}.cells.${column}`, ['hidden']);
|
|
37
|
+
rules.tones?.forEach((tone, i) => tools.checkModifiers(tone, `${path}.cells.${column}.tones[${i}]`, ['when'], line));
|
|
38
|
+
// Its widget's options that point at a field: one of the line's.
|
|
39
|
+
for (const [key, value] of Object.entries(rules.options ?? {})) {
|
|
40
|
+
if (key.endsWith('Field') && typeof value === 'string')
|
|
41
|
+
tools.need(value, `${path}.cells.${column}.options.${key}`, def.fields);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
node.rowTones?.forEach((tone, i) => tools.checkModifiers(tone, `${path}.rowTones[${i}]`, ['when'], line));
|
|
45
|
+
tools.checkModifiers(node, path, ['rowBold', 'lineDelete'], line);
|
|
46
|
+
node.rowButtons?.forEach((button, i) => {
|
|
47
|
+
tools.claim(button.id, `${path}.rowButtons[${i}]`);
|
|
48
|
+
tools.checkModifiers(button, `${path}.rowButtons[${i}]`, ['invisible'], line);
|
|
49
|
+
tools.checkPress(button, `${path}.rowButtons[${i}]`);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
if (node.optionalColumns) {
|
|
53
|
+
// The columns the table shows: those named, or every line field but the structural ones.
|
|
54
|
+
const shown = node.columns ?? Object.keys(def.fields).filter((c) => c !== ('lineKinds' in def ? def.lineKinds?.field : undefined) && c !== def.sequenceField);
|
|
55
|
+
for (const column of Object.keys(node.optionalColumns)) {
|
|
56
|
+
if (!shown.includes(column))
|
|
57
|
+
tools.report(`${path}.optionalColumns.${column}`, `"${column}" is not a column of "${node.field}"`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export function checkLineKinds(field, kinds, lineFields, path, tools) {
|
|
62
|
+
const kindField = lineFields[kinds.field];
|
|
63
|
+
if (!kindField)
|
|
64
|
+
tools.report(`${path}.field`, `"${kinds.field}" is not a field of the lines of "${field}"`);
|
|
65
|
+
else if (kindField.type !== 'selection' && kindField.type !== 'char') {
|
|
66
|
+
tools.report(`${path}.field`, `"${kinds.field}" is a ${kindField.type}; the field that says what a line is must be a selection or char`);
|
|
67
|
+
}
|
|
68
|
+
else if (kindField.type === 'selection') {
|
|
69
|
+
for (const which of ['section', 'note']) {
|
|
70
|
+
const value = kinds[which] ?? which;
|
|
71
|
+
if (!kindField.options.some((o) => o.value === value))
|
|
72
|
+
tools.report(`${path}.${which}`, `"${kinds.field}" has no option "${value}"`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const text = lineFields[kinds.text];
|
|
76
|
+
if (!text)
|
|
77
|
+
tools.report(`${path}.text`, `"${kinds.text}" is not a field of the lines of "${field}"`);
|
|
78
|
+
else if (text.type !== 'char' && text.type !== 'text') {
|
|
79
|
+
tools.report(`${path}.text`, `"${kinds.text}" is a ${text.type}; a section's or note's text must be a char or text field`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=table-checks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-checks.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/table-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,12 @@ exports.localizePage = localizePage;
|
|
|
6
6
|
exports.isRightToLeft = isRightToLeft;
|
|
7
7
|
/**
|
|
8
8
|
* Keys whose text a person reads: titles, labels, help, prompts, messages, a printout's header and footer, why a
|
|
9
|
-
* field is locked and why an answer does not fit its pattern. (What a page's records are called, `records`, is read
|
|
9
|
+
* field is locked and why an answer does not fit its pattern, an ending's button (`again`). (What a page's records are called, `records`, is read
|
|
10
10
|
* too: see `walk`.)
|
|
11
11
|
* Any key ending in `Label` is read too — a wizard's `nextLabel`, and in a
|
|
12
12
|
* widget's settings the words at a scale's ends.
|
|
13
13
|
*/
|
|
14
|
-
const TEXT_KEYS = new Set(['title', 'description', 'label', 'help', 'header', 'footer', 'placeholder', 'message', 'text', 'confirm', 'alt', 'caption', 'tooltip', 'unit', 'readonlyReason', 'patternHint']);
|
|
14
|
+
const TEXT_KEYS = new Set(['title', 'description', 'label', 'help', 'header', 'footer', 'placeholder', 'message', 'text', 'confirm', 'alt', 'caption', 'tooltip', 'unit', 'readonlyReason', 'patternHint', 'again']);
|
|
15
15
|
/** In a widget's settings, words besides those ending in `Label`: a links box's help and its empty box's link. */
|
|
16
16
|
const WIDGET_TEXT_KEYS = new Set(['help', 'emptyLink']);
|
|
17
17
|
/** A formatted text's kinds of record to link (`references`): each one's name is words; its key, model and icon stay. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/translate.ts"],"names":[],"mappings":";;AAwFA,sCAEC;AAUD,8BAoBC;AAOD,oCAIC;AAMD,sCAIC;AA3ID;;;;;;GAMG;AACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/translate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Keys whose text a person reads: titles, labels, help, prompts, messages, a printout's header and footer, why a
|
|
3
|
-
* field is locked and why an answer does not fit its pattern. (What a page's records are called, `records`, is read
|
|
3
|
+
* field is locked and why an answer does not fit its pattern, an ending's button (`again`). (What a page's records are called, `records`, is read
|
|
4
4
|
* too: see `walk`.)
|
|
5
5
|
* Any key ending in `Label` is read too — a wizard's `nextLabel`, and in a
|
|
6
6
|
* widget's settings the words at a scale's ends.
|
|
7
7
|
*/
|
|
8
|
-
const TEXT_KEYS = new Set(['title', 'description', 'label', 'help', 'header', 'footer', 'placeholder', 'message', 'text', 'confirm', 'alt', 'caption', 'tooltip', 'unit', 'readonlyReason', 'patternHint']);
|
|
8
|
+
const TEXT_KEYS = new Set(['title', 'description', 'label', 'help', 'header', 'footer', 'placeholder', 'message', 'text', 'confirm', 'alt', 'caption', 'tooltip', 'unit', 'readonlyReason', 'patternHint', 'again']);
|
|
9
9
|
/** In a widget's settings, words besides those ending in `Label`: a links box's help and its empty box's link. */
|
|
10
10
|
const WIDGET_TEXT_KEYS = new Set(['help', 'emptyLink']);
|
|
11
11
|
/** A formatted text's kinds of record to link (`references`): each one's name is words; its key, model and icon stay. */
|