Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | 3x 66x 24x 24x 40x 3x 52x 37x 32x 5x 9x 7x 14x 7x 7x 7x 7x 43x 4x 6x 4x 43x 43x 4x 3x 1x 2x 2x 40x 40x 5x 5x 3x | const { randomUUID } = require('crypto')
function getFieldId(field) {
if (!field || typeof field.fieldId !== 'string') return null
const trimmed = field.fieldId.trim()
return trimmed || null
}
function createDefaultForm(fields) {
if (!Array.isArray(fields) || fields.length === 0) {
return undefined
}
const fieldIds = fields.map((field) => getFieldId(field)).filter(Boolean)
if (fieldIds.length === 0) {
return undefined
}
return [
{
id: randomUUID(),
name: {
en: 'Default display',
fr: 'Affichage par defaut'
},
fields: fieldIds.map((fieldId, index) => ({
fieldId,
order: index,
x: 0,
y: index,
w: 12,
h: 1
}))
}
]
}
function createShortForm(fields) {
Iif (!Array.isArray(fields) || fields.length === 0) {
return undefined
}
const fieldIds = fields.map((field) => getFieldId(field)).filter(Boolean)
Iif (fieldIds.length === 0) {
return undefined
}
// Up to 2 fields shown side-by-side for compact FK display
const shortFieldIds = fieldIds.slice(0, 2)
const formFields =
shortFieldIds.length === 1
? [{ fieldId: shortFieldIds[0], order: 0, x: 0, y: 0, w: 12, h: 1 }]
: [
{ fieldId: shortFieldIds[0], order: 0, x: 0, y: 0, w: 6, h: 1 },
{ fieldId: shortFieldIds[1], order: 1, x: 6, y: 0, w: 6, h: 1 }
]
return {
id: randomUUID(),
name: {
en: 'Short display',
fr: 'Affichage compact'
},
purpose: 'short',
fields: formFields
}
}
function getValidForms(forms) {
if (!Array.isArray(forms)) return undefined
const validForms = forms.filter(
(form) => form?.id && Array.isArray(form.fields) && form.fields.length > 0
)
return validForms.length > 0 ? validForms : undefined
}
function resolveForms({ fields, forms }) {
const validForms = getValidForms(forms)
if (validForms) {
// If a short form already exists, return forms as-is
const hasShortForm = validForms.some((form) => form.purpose === 'short')
if (hasShortForm) {
return validForms
}
// Auto-append a short form when none is present
const shortForm = createShortForm(fields)
return shortForm ? [...validForms, shortForm] : validForms
}
// No valid forms: auto-create both the default form and the short form
const defaultForms = createDefaultForm(fields)
if (!defaultForms) return undefined
const shortForm = createShortForm(fields)
return shortForm ? [...defaultForms, shortForm] : defaultForms
}
module.exports = {
resolveForms
}
|