94 lines
2.8 KiB
JavaScript
94 lines
2.8 KiB
JavaScript
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);
|