@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,340 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkList = checkList;
|
|
4
|
+
exports.checkRelated = checkRelated;
|
|
5
|
+
const bulk_edit_1 = require("./bulk-edit");
|
|
6
|
+
const import_fields_1 = require("./import-fields");
|
|
7
|
+
/** The kinds of field a list's filter bar can list the values of. */
|
|
8
|
+
const LISTS_ITS_VALUES = new Set(['selection', 'many2one', 'many2many', 'boolean', 'char', 'integer']);
|
|
9
|
+
/** The kinds of field a list's filter bar filters by their range, From and To: a whole number where the page says so. */
|
|
10
|
+
const HAS_A_RANGE = new Set(['integer', 'float', 'monetary', 'date', 'datetime']);
|
|
11
|
+
/** The kinds whose range is all a filter can take of them: no list of their values. */
|
|
12
|
+
const RANGE_ONLY = new Set(['float', 'monetary', 'date', 'datetime']);
|
|
13
|
+
/** What a calendar's start and end can be: a day, or a day and a time. */
|
|
14
|
+
const CALENDAR_TIMES = new Set(['date', 'datetime']);
|
|
15
|
+
/** What a record's words on a calendar can be. */
|
|
16
|
+
const CALENDAR_WORDS = new Set(['char', 'text', 'selection', 'many2one', 'integer', 'float', 'monetary', 'date', 'datetime']);
|
|
17
|
+
/** What a calendar's columns come from: a value that repeats. */
|
|
18
|
+
const CALENDAR_COLUMNS = new Set(['many2one', 'selection', 'char', 'integer']);
|
|
19
|
+
/** What a record's colour comes from. */
|
|
20
|
+
const CALENDAR_COLOURS = new Set(['many2one', 'selection', 'char', 'integer', 'boolean']);
|
|
21
|
+
function checkList(list, path, tools) {
|
|
22
|
+
if (tools.page.data.kind !== 'record')
|
|
23
|
+
tools.report('data', 'a list shows records: its data needs kind "record" and a model');
|
|
24
|
+
checkListed(list, tools.page.fields, path, tools);
|
|
25
|
+
list.groupBy?.forEach((name, i) => tools.need(name, `${path}.groupBy[${i}]`));
|
|
26
|
+
// A list's filters are about its own records: their fields are the page's, and there is no record to take a value from.
|
|
27
|
+
const walk = (item, at) => {
|
|
28
|
+
if ('any' in item)
|
|
29
|
+
return item.any.forEach((inner, i) => walk(inner, `${at}.any[${i}]`));
|
|
30
|
+
if ('all' in item)
|
|
31
|
+
return item.all.forEach((inner, i) => walk(inner, `${at}.all[${i}]`));
|
|
32
|
+
tools.need(item.field, `${at}.field`);
|
|
33
|
+
if (item.valueFrom !== undefined)
|
|
34
|
+
tools.report(`${at}.valueFrom`, "a list's filter compares with values, not with another field");
|
|
35
|
+
};
|
|
36
|
+
const named = new Set();
|
|
37
|
+
list.filters?.forEach((filter, i) => {
|
|
38
|
+
tools.claim(filter.id, `${path}.filters[${i}]`);
|
|
39
|
+
named.add(filter.id);
|
|
40
|
+
filter.filter?.forEach((item, j) => walk(item, `${path}.filters[${i}].filter[${j}]`));
|
|
41
|
+
// A period is of a date, or a date and time.
|
|
42
|
+
const dated = filter.period ? tools.need(filter.period.field, `${path}.filters[${i}].period.field`) : undefined;
|
|
43
|
+
if (dated && dated.type !== 'date' && dated.type !== 'datetime')
|
|
44
|
+
tools.report(`${path}.filters[${i}].period.field`, `"${filter.period?.field}" is a ${dated.type}; a period is of a date, or a date and time`);
|
|
45
|
+
});
|
|
46
|
+
list.defaultFilters?.forEach((id, i) => {
|
|
47
|
+
if (!named.has(id))
|
|
48
|
+
tools.report(`${path}.defaultFilters[${i}]`, `no filter "${id}" in this list`);
|
|
49
|
+
});
|
|
50
|
+
list.actions?.forEach((button, i) => {
|
|
51
|
+
tools.claim(button.id, `${path}.actions[${i}]`);
|
|
52
|
+
tools.checkPress(button, `${path}.actions[${i}]`);
|
|
53
|
+
});
|
|
54
|
+
if (list.map)
|
|
55
|
+
checkListMap(list.map, `${path}.map`, tools);
|
|
56
|
+
if (list.calendar)
|
|
57
|
+
checkListCalendar(list, `${path}.calendar`, tools);
|
|
58
|
+
checkListCells(list, path, tools);
|
|
59
|
+
checkListRows(list, path, tools);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* A list's cards, gallery, columns people choose and rows' own rules: a
|
|
63
|
+
* card's fields the page's, its picture one that can hold a picture; the
|
|
64
|
+
* optional columns among the columns; a row's tones, bold and buttons
|
|
65
|
+
* reading the list's record (its fields, `id`, `user`); and the list
|
|
66
|
+
* opening on one thing.
|
|
67
|
+
*/
|
|
68
|
+
function checkListRows(list, path, tools) {
|
|
69
|
+
if (list.card)
|
|
70
|
+
checkListCard(list.card, `${path}.card`, tools.page.fields, tools);
|
|
71
|
+
for (const column of Object.keys(list.optionalColumns ?? {})) {
|
|
72
|
+
if (!list.columns.includes(column))
|
|
73
|
+
tools.report(`${path}.optionalColumns.${column}`, `"${column}" is no column of this list: a person shows or hides its columns`);
|
|
74
|
+
}
|
|
75
|
+
// A column a person may hide, every one hidden at first: the list would open with no column but its own.
|
|
76
|
+
if (list.optionalColumns && list.columns.every((column) => list.optionalColumns?.[column] === 'hide'))
|
|
77
|
+
tools.report(`${path}.optionalColumns`, 'every column starts hidden: show one at least, as the list opens');
|
|
78
|
+
if (list.gallery?.opens === 'gallery') {
|
|
79
|
+
if (list.map?.view && list.map.view !== 'list')
|
|
80
|
+
tools.report(`${path}.gallery.opens`, 'the list opens on its map (map.view) and on its gallery: say one');
|
|
81
|
+
if (list.calendar?.opens === 'calendar')
|
|
82
|
+
tools.report(`${path}.gallery.opens`, 'the list opens on its calendar and on its gallery: say one');
|
|
83
|
+
}
|
|
84
|
+
list.rowTones?.forEach((tone, i) => tools.checkModifiers(tone, `${path}.rowTones[${i}]`, ['when']));
|
|
85
|
+
tools.checkModifiers(list, path, ['rowBold']);
|
|
86
|
+
list.rowButtons?.forEach((button, i) => {
|
|
87
|
+
tools.claim(button.id, `${path}.rowButtons[${i}]`);
|
|
88
|
+
tools.checkPress(button, `${path}.rowButtons[${i}]`);
|
|
89
|
+
// Shown by a condition on each row's record.
|
|
90
|
+
tools.checkModifiers(button, `${path}.rowButtons[${i}]`, ['invisible']);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* A list's calendar: when each record starts (a date, or a date and time)
|
|
95
|
+
* and ends (the same kind), its words, its colour and its columns, each
|
|
96
|
+
* from a field that can; the view it opens on is one it offers, its hours
|
|
97
|
+
* run forward, and the list opens on one thing.
|
|
98
|
+
*/
|
|
99
|
+
function checkListCalendar(list, path, tools) {
|
|
100
|
+
const calendar = list.calendar;
|
|
101
|
+
const typed = (name, key, ok, says) => {
|
|
102
|
+
if (name === undefined)
|
|
103
|
+
return undefined;
|
|
104
|
+
const def = tools.need(name, `${path}.${key}`);
|
|
105
|
+
if (def && !ok.has(def.type))
|
|
106
|
+
tools.report(`${path}.${key}`, `"${name}" is a ${def.type}; ${says}`);
|
|
107
|
+
return def;
|
|
108
|
+
};
|
|
109
|
+
const start = typed(calendar.start, 'start', CALENDAR_TIMES, "a calendar's start is a date, or a date and time");
|
|
110
|
+
const end = typed(calendar.end, 'end', CALENDAR_TIMES, "a calendar's end is a date, or a date and time");
|
|
111
|
+
if (start && end && CALENDAR_TIMES.has(start.type) && CALENDAR_TIMES.has(end.type) && start.type !== end.type) {
|
|
112
|
+
tools.report(`${path}.end`, `"${calendar.end}" is a ${end.type}; an end is the same kind of field as its start, a ${start.type}`);
|
|
113
|
+
}
|
|
114
|
+
typed(calendar.title, 'title', CALENDAR_WORDS, "a record's words on a calendar are a field that can be said");
|
|
115
|
+
typed(calendar.colour, 'colour', CALENDAR_COLOURS, 'a colour comes from a link, a choice, text, a whole number or a yes or no');
|
|
116
|
+
typed(calendar.resource, 'resource', CALENDAR_COLUMNS, 'a column for each comes from a link, a choice, text or a whole number');
|
|
117
|
+
const views = calendar.views ?? ['day', 'week', 'month', 'agenda'];
|
|
118
|
+
views.forEach((view, i) => {
|
|
119
|
+
if (views.indexOf(view) !== i)
|
|
120
|
+
tools.report(`${path}.views[${i}]`, `"${view}" is offered twice`);
|
|
121
|
+
});
|
|
122
|
+
if (calendar.view && !views.includes(calendar.view))
|
|
123
|
+
tools.report(`${path}.view`, `"${calendar.view}" is not one of its views (${views.join(', ')})`);
|
|
124
|
+
if (calendar.hours && calendar.hours.end <= calendar.hours.start)
|
|
125
|
+
tools.report(`${path}.hours`, `the hours end at ${calendar.hours.end}, before they start at ${calendar.hours.start}`);
|
|
126
|
+
if (calendar.opens === 'calendar' && list.map?.view && list.map.view !== 'list')
|
|
127
|
+
tools.report(`${path}.opens`, 'the list opens on its map (map.view) and on its calendar: say one');
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* A list drawn as a backlog: each column's cells are a column's, a lead's
|
|
131
|
+
* icon is by a field's values; the filter bar's fields can list their
|
|
132
|
+
* values; rows nest under a link to the list's own records; and buttons for
|
|
133
|
+
* the rows chosen need a box to choose one.
|
|
134
|
+
*/
|
|
135
|
+
function checkListCells(list, path, tools) {
|
|
136
|
+
if (list.filterFields && list.search !== 'fields')
|
|
137
|
+
tools.report(`${path}.filterFields`, 'the filter fields are for the "fields" search: add "search": "fields"');
|
|
138
|
+
list.filterFields?.forEach((name, i) => {
|
|
139
|
+
const def = tools.need(name, `${path}.filterFields[${i}]`);
|
|
140
|
+
if (def && !LISTS_ITS_VALUES.has(def.type) && !RANGE_ONLY.has(def.type)) {
|
|
141
|
+
tools.report(`${path}.filterFields[${i}]`, `"${name}" is a ${def.type}; a filter lists the values of a choice, a link, links, a yes or no, text or a whole number, or takes the range of a number or a date`);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
// A filter's own name is for a filter the bar offers.
|
|
145
|
+
for (const name of Object.keys(list.filterLabels ?? {})) {
|
|
146
|
+
if (!list.filterFields?.includes(name))
|
|
147
|
+
tools.report(`${path}.filterLabels.${name}`, `"${name}" is no field of filterFields: its name is for a filter the bar offers`);
|
|
148
|
+
}
|
|
149
|
+
// A range is a number's or a date's the bar offers; the presses for its least values are a number's, in order.
|
|
150
|
+
for (const [name, range] of Object.entries(list.filterRanges ?? {})) {
|
|
151
|
+
const at = `${path}.filterRanges.${name}`;
|
|
152
|
+
if (!list.filterFields?.includes(name)) {
|
|
153
|
+
tools.report(at, `"${name}" is no field of filterFields: a range is for a filter the bar offers`);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
const def = tools.page.fields[name];
|
|
157
|
+
if (!def)
|
|
158
|
+
continue;
|
|
159
|
+
if (!HAS_A_RANGE.has(def.type)) {
|
|
160
|
+
tools.report(at, `"${name}" is a ${def.type}; a range is a number's or a date's`);
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
const least = range.atLeast ?? [];
|
|
164
|
+
if (least.length && (def.type === 'date' || def.type === 'datetime'))
|
|
165
|
+
tools.report(`${at}.atLeast`, `"${name}" is a ${def.type}; the presses for a least value are a number's`);
|
|
166
|
+
else if (def.type === 'integer' && least.some((n) => !Number.isInteger(n)))
|
|
167
|
+
tools.report(`${at}.atLeast`, `"${name}" holds whole numbers: each least value is one`);
|
|
168
|
+
else if (least.some((n, i) => i > 0 && n <= least[i - 1]))
|
|
169
|
+
tools.report(`${at}.atLeast`, 'the least values go from the smallest to the largest, each once');
|
|
170
|
+
}
|
|
171
|
+
if (list.filterSheet && list.search !== 'fields')
|
|
172
|
+
tools.report(`${path}.filterSheet`, 'the filter sheet is the filter bar\'s on a phone: add "search": "fields"');
|
|
173
|
+
if (list.parentField !== undefined) {
|
|
174
|
+
const def = tools.need(list.parentField, `${path}.parentField`);
|
|
175
|
+
const model = tools.page.data.kind === 'record' ? tools.page.data.model : '';
|
|
176
|
+
if (def && (def.type !== 'many2one' || def.relation !== model)) {
|
|
177
|
+
tools.report(`${path}.parentField`, `"${list.parentField}" ${def.type === 'many2one' ? `links to ${def.relation}` : `is a ${def.type}`}; a parent is a many2one to the list’s own model, ${model}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (list.choose === false && list.actions?.length)
|
|
181
|
+
tools.report(`${path}.actions`, 'a list’s buttons act on the rows chosen: with "choose": false there is no way to choose one');
|
|
182
|
+
checkBulkEdit(list, path, tools);
|
|
183
|
+
checkImport(list, path, tools);
|
|
184
|
+
}
|
|
185
|
+
/** A list's Edit: each field it names one value can set in many records, and rows to choose to set it on. */
|
|
186
|
+
function checkBulkEdit(list, path, tools) {
|
|
187
|
+
if (!list.bulkEdit)
|
|
188
|
+
return;
|
|
189
|
+
if (list.choose === false)
|
|
190
|
+
tools.report(`${path}.bulkEdit`, 'Edit changes the rows chosen: with "choose": false there is no way to choose one');
|
|
191
|
+
if (list.bulkEdit === true) {
|
|
192
|
+
if (!list.columns.some((name) => (0, bulk_edit_1.bulkSettable)(tools.page.fields[name])))
|
|
193
|
+
tools.report(`${path}.bulkEdit`, 'Edit offers the columns one value can set, and none of these can: name the fields it offers');
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const named = list.bulkEdit;
|
|
197
|
+
named.forEach((name, i) => {
|
|
198
|
+
const at = `${path}.bulkEdit[${i}]`;
|
|
199
|
+
if (named.indexOf(name) !== i)
|
|
200
|
+
tools.report(at, `"${name}" is offered twice`);
|
|
201
|
+
const def = tools.need(name, at);
|
|
202
|
+
if (!def)
|
|
203
|
+
return;
|
|
204
|
+
if (!bulk_edit_1.BULK_KINDS.has(def.type))
|
|
205
|
+
tools.report(at, `"${name}" is a ${def.type}; one value set in many records is words, a number, money, a yes or no, a date, a choice or a link`);
|
|
206
|
+
else if (def.readonly === true || def.compute)
|
|
207
|
+
tools.report(at, `"${name}" is ${def.compute ? 'worked out from other fields' : 'read-only'}; Edit sets a field people can change`);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/** A list's Import: each field it names one a file's cell can fill, and at least one such field on the page. */
|
|
211
|
+
function checkImport(list, path, tools) {
|
|
212
|
+
if (!list.import)
|
|
213
|
+
return;
|
|
214
|
+
if (list.import === true) {
|
|
215
|
+
if (!Object.values(tools.page.fields).some((def) => (0, import_fields_1.importable)(def)))
|
|
216
|
+
tools.report(`${path}.import`, 'Import fills the fields a file’s cell can, and this page has none: words, a number, money, yes or no, a date, a choice or a link people can change');
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const named = list.import;
|
|
220
|
+
named.forEach((name, i) => {
|
|
221
|
+
const at = `${path}.import[${i}]`;
|
|
222
|
+
if (named.indexOf(name) !== i)
|
|
223
|
+
tools.report(at, `"${name}" is offered twice`);
|
|
224
|
+
const def = tools.need(name, at);
|
|
225
|
+
if (!def)
|
|
226
|
+
return;
|
|
227
|
+
if (!import_fields_1.IMPORT_KINDS.has(def.type))
|
|
228
|
+
tools.report(at, `"${name}" is a ${def.type}; a file's cell fills words, a number, money, a yes or no, a date, a choice, or a link or links by name`);
|
|
229
|
+
else if (def.readonly === true || def.compute)
|
|
230
|
+
tools.report(at, `"${name}" is ${def.compute ? 'worked out from other fields' : 'read-only'}; Import fills a field people can change`);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
/** A list's map: where each record is, and the fields its pin and its card show, each of a type that can. */
|
|
234
|
+
function checkListMap(map, path, tools) {
|
|
235
|
+
const pair = map.latitude !== undefined || map.longitude !== undefined;
|
|
236
|
+
if (map.point !== undefined && pair)
|
|
237
|
+
tools.report(path, 'a map takes point, or latitude and longitude, not both');
|
|
238
|
+
else if (map.point === undefined && (map.latitude === undefined || map.longitude === undefined))
|
|
239
|
+
tools.report(path, 'a map needs where each record is: point, or latitude and longitude');
|
|
240
|
+
tools.checkPlace(map, path, tools.here(), map.pin, map.card);
|
|
241
|
+
if (map.regions)
|
|
242
|
+
tools.need(map.regions.field, `${path}.regions.field`);
|
|
243
|
+
if (typeof map.heat === 'object' && map.heat.weight !== undefined) {
|
|
244
|
+
const def = tools.need(map.heat.weight, `${path}.heat.weight`);
|
|
245
|
+
if (def && def.type !== 'float' && def.type !== 'integer' && def.type !== 'monetary')
|
|
246
|
+
tools.report(`${path}.heat.weight`, `"${map.heat.weight}" is a ${def.type}; a weight is a number field`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/** Whether a record holds a key of its own. */
|
|
250
|
+
const has = (record, key) => Object.prototype.hasOwnProperty.call(record, key);
|
|
251
|
+
/**
|
|
252
|
+
* A related list: on a record's page, its columns, order, search, cells, card and rows' rules of its own records'
|
|
253
|
+
* fields, its link to this record a link of theirs to this model where its fields name it, and its filter's
|
|
254
|
+
* `valueFrom` this record's.
|
|
255
|
+
*/
|
|
256
|
+
function checkRelated(node, path, tools) {
|
|
257
|
+
// The quick check reads no shapes: a part with nothing to go by is said here.
|
|
258
|
+
if (typeof node.model !== 'string' || typeof node.field !== 'string' || !Array.isArray(node.columns) || !node.fields || typeof node.fields !== 'object') {
|
|
259
|
+
return tools.report(path, 'a related list needs the model of its records, their link to this record (field), their fields and its columns');
|
|
260
|
+
}
|
|
261
|
+
const model = tools.page.data.kind === 'record' ? tools.page.data.model : null;
|
|
262
|
+
if (!model || tools.onLine)
|
|
263
|
+
tools.report(path, 'a related list shows the records that point at a record: it belongs on a record’s page');
|
|
264
|
+
const fields = node.fields;
|
|
265
|
+
checkListed(node, fields, path, tools);
|
|
266
|
+
// On a phone its rows are cards, as a list's: of its own records' fields.
|
|
267
|
+
if (node.card)
|
|
268
|
+
checkListCard(node.card, `${path}.card`, fields, tools);
|
|
269
|
+
// Its rows' own rules, as a list's, each read on the row's record: its own fields, its id, the person, the context.
|
|
270
|
+
const row = { fields };
|
|
271
|
+
node.rowTones?.forEach((tone, i) => tools.checkModifiers(tone, `${path}.rowTones[${i}]`, ['when'], row));
|
|
272
|
+
tools.checkModifiers(node, path, ['rowBold'], row);
|
|
273
|
+
node.rowButtons?.forEach((button, i) => {
|
|
274
|
+
tools.claim(button.id, `${path}.rowButtons[${i}]`);
|
|
275
|
+
tools.checkPress(button, `${path}.rowButtons[${i}]`);
|
|
276
|
+
tools.checkModifiers(button, `${path}.rowButtons[${i}]`, ['invisible'], row);
|
|
277
|
+
});
|
|
278
|
+
const link = has(fields, node.field) ? fields[node.field] : undefined;
|
|
279
|
+
if (link && model && (link.type !== 'many2one' || link.relation !== model)) {
|
|
280
|
+
tools.report(`${path}.field`, `"${node.field}" ${link.type === 'many2one' ? `links to ${link.relation}` : `is a ${link.type}`}; the records listed point at this one by a many2one to ${model}`);
|
|
281
|
+
}
|
|
282
|
+
for (const [name, def] of Object.entries(fields)) {
|
|
283
|
+
if (def.type === 'monetary' && def.currencyField !== undefined)
|
|
284
|
+
tools.checkCurrency(def.currencyField, `${path}.fields.${name}.currencyField`, fields, undefined, fields);
|
|
285
|
+
if (def.type === 'datetime' && def.timeZone !== undefined)
|
|
286
|
+
tools.checkZone(def.timeZone, `${path}.fields.${name}.timeZone`);
|
|
287
|
+
}
|
|
288
|
+
// Its filter is about its records, by their fields; what it compares with may be read from this record.
|
|
289
|
+
node.filter?.forEach((item, i) => tools.checkFilterItem(item, `${path}.filter[${i}]`, tools.here()));
|
|
290
|
+
if (node.viewAll && node.viewAll.page === tools.page.id)
|
|
291
|
+
tools.report(`${path}.viewAll.page`, 'View all opens a list of the records related: this page is the record they point at');
|
|
292
|
+
}
|
|
293
|
+
/** Kinds of field a list's card shows as its picture: a picture held, or text holding a picture's address. */
|
|
294
|
+
const PICTURES = new Set(['image', 'binary', 'char']);
|
|
295
|
+
/**
|
|
296
|
+
* What a list shows of its records — a list page's, or a related list's of its own records' fields: its columns, its
|
|
297
|
+
* order and the fields its search looks in, each a field; each column's cells for a column of it, a sum, an average,
|
|
298
|
+
* the lowest and the highest of a number column (any column's count), a lead's icon by a field's values.
|
|
299
|
+
*/
|
|
300
|
+
function checkListed(list, fields, path, tools) {
|
|
301
|
+
list.columns.forEach((name, i) => tools.need(name, `${path}.columns[${i}]`, fields));
|
|
302
|
+
list.sort?.forEach((order, i) => tools.need(order.field, `${path}.sort[${i}].field`, fields));
|
|
303
|
+
list.searchFields?.forEach((name, i) => tools.need(name, `${path}.searchFields[${i}]`, fields));
|
|
304
|
+
for (const [column, cell] of Object.entries(list.cells ?? {})) {
|
|
305
|
+
const at = `${path}.cells.${column}`;
|
|
306
|
+
if (!list.columns.includes(column)) {
|
|
307
|
+
tools.report(at, `"${column}" is no column of this list: its cells are for its columns`);
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
const kind = has(fields, column) ? fields[column].type : undefined;
|
|
311
|
+
if (cell.total && cell.total !== 'count' && kind && kind !== 'integer' && kind !== 'float' && kind !== 'monetary') {
|
|
312
|
+
tools.report(`${at}.total`, `"${column}" is a ${kind}; its total "${cell.total}" is of numbers — an integer, a float or an amount — and any column's is "count"`);
|
|
313
|
+
}
|
|
314
|
+
if (!cell.lead)
|
|
315
|
+
continue;
|
|
316
|
+
const def = tools.need(cell.lead.field, `${at}.lead.field`, fields);
|
|
317
|
+
if (def?.type !== 'selection')
|
|
318
|
+
continue;
|
|
319
|
+
const values = new Set(def.options.map((option) => String(option.value)));
|
|
320
|
+
for (const value of Object.keys(cell.lead.looks))
|
|
321
|
+
if (!values.has(value))
|
|
322
|
+
tools.report(`${at}.lead.looks.${value}`, `"${value}" is no value of "${cell.lead.field}"`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* What a list's card shows — a list page's, or a related list's of its own records' fields: its title, subtitle,
|
|
327
|
+
* status and lines each a field, its picture one that can hold a picture.
|
|
328
|
+
*/
|
|
329
|
+
function checkListCard(card, at, fields, tools) {
|
|
330
|
+
for (const key of ['title', 'subtitle', 'status'])
|
|
331
|
+
if (card[key] !== undefined)
|
|
332
|
+
tools.need(card[key], `${at}.${key}`, fields);
|
|
333
|
+
if (card.image !== undefined) {
|
|
334
|
+
const def = tools.need(card.image, `${at}.image`, fields);
|
|
335
|
+
if (def && !PICTURES.has(def.type))
|
|
336
|
+
tools.report(`${at}.image`, `"${card.image}" is a ${def.type}; a card's picture is an image or binary field, or text holding a picture's address`);
|
|
337
|
+
}
|
|
338
|
+
card.fields?.forEach((line, i) => (Array.isArray(line) ? line : [line]).forEach((part, j) => tools.need(typeof part === 'string' ? part : part.field, `${at}.fields[${i}]${Array.isArray(line) ? `[${j}]` : ''}${typeof part === 'string' ? '' : '.field'}`, fields)));
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=list-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-checks.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/list-checks.ts"],"names":[],"mappings":"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"}
|