first commit

This commit is contained in:
2025-10-17 14:39:33 +08:00
commit 28bbc3691b
9 changed files with 6388 additions and 0 deletions

93
main.js Normal file
View File

@@ -0,0 +1,93 @@
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);