import { kintonePrettyFields } from './fields.js'; import { getGuestSpaceId, createFieldWithTooltips, createFieldLabels, getColumnWidths } from './dom.js'; import { KintoneRestAPIClient } from '@kintone/rest-api-client'; export async function runKintoneHelper() { const guestSpaceId = getGuestSpaceId(); const client = new KintoneRestAPIClient({ guestSpaceId: guestSpaceId, }); const appId = kintone.app.getId(); if (appId === null) return; const language = kintone.getLoginUser().language; const isPreview = false; const { properties: formFields } = await client.app.getFormFields({ app: appId, lang: language, preview: isPreview, }); const { layout: layout } = await client.app.getFormLayout({ app: appId, preview: isPreview, }); const { fields: fieldsWithLabels, spacers: spacerElements } = kintonePrettyFields.generateFields(formFields, layout); for (const field of fieldsWithLabels) { const fieldElement = kintone.app.record.getFieldElement(field.code); if (fieldElement) { if (kintonePrettyFields.isSubtable(field)) { fieldElement.before( createFieldWithTooltips({ code: field.code, type: field.type, }) ); const fieldNames = Object.keys(field.fields); const columnWidths = getColumnWidths(fieldElement, field.type); fieldElement.after( createFieldLabels(fieldNames, columnWidths, field.type) ); continue; } if (kintonePrettyFields.isReferenceTable(field)) { fieldElement.before( createFieldWithTooltips({ code: field.code, type: field.type, }) ); if (field.referenceTable) { const displayFields = field.referenceTable.displayFields; const columnWidths = getColumnWidths(fieldElement, field.type); fieldElement.appendChild( createFieldLabels(displayFields, columnWidths, field.type) ); } continue; } if (kintonePrettyFields.isGroup(field)) { fieldElement.parentElement?.before( createFieldWithTooltips({ code: field.code, type: field.type, }), ); continue; } fieldElement.before( createFieldWithTooltips({ code: field.code, type: field.type, }), ); } } for (const spacer of spacerElements) { const spacerElement = kintone.app.record.getSpaceElement(spacer.elementId); if (spacerElement) { spacerElement.appendChild( createFieldWithTooltips({ code: spacer.elementId, }), ); spacerElement.style.border = "1px dotted blue"; } } } // Execute immediately upon injection runKintoneHelper().catch(console.error);