Files
request-portal/src/webparts/requestPortal/models/columnDef.ts
T
2026-08-03 09:35:14 +05:00

54 lines
2.9 KiB
TypeScript

/**
* Описание одной колонки списка SharePoint — единый источник правды.
* Из этих описаний провижинер создаёт колонки в списке (см. provisioning/),
* а позже те же описания будут питать чтение/запись данных формы.
*
* ВАЖНО про имена: internalName — латиница без пробелов, ≤32 символов
* (иначе SharePoint закодирует пробелы в "_x0020_" и обращения к полю сломаются).
* title — отображаемое имя, может быть на русском и с пробелами.
*/
export type SpFieldType =
| 'Text' // однострочный текст
| 'Note' // многострочный текст
| 'Number' // число
| 'Choice' // выбор из вариантов
| 'DateTime' // дата/время
| 'Boolean' // да/нет
| 'User' // пользователь
| 'Lookup'; // подстановка (связь с другим списком)
export interface IColumnDef {
/** Внутреннее имя в SharePoint: латиница, без пробелов, ≤32 символов. */
internalName: string;
/** Отображаемое имя колонки (можно рус., с пробелами). */
title: string;
/** Тип колонки. */
type: SpFieldType;
/** Обязательная ли колонка. По умолчанию — нет. */
required?: boolean;
/** Варианты для type === 'Choice'. */
choices?: string[];
/** Знаков после запятой для type === 'Number'. По умолчанию — авто. */
decimals?: number;
/** Для type === 'DateTime': только дата, без времени. */
dateOnly?: boolean;
/** Заголовок списка-источника для type === 'Lookup'. */
lookupList?: string;
/** Какое поле источника показывать в подстановке. По умолчанию — 'Title'. */
lookupShowField?: string;
/** Для type === 'User': кого можно выбирать. По умолчанию — как в SharePoint. */
userSelectionMode?: 'PeopleOnly' | 'PeopleAndGroups';
/** Для type === 'User': разрешить выбор нескольких (создаётся колонка UserMulti). */
allowMultiple?: boolean;
}
/** Манифест провижининга формы: список данных + его колонки. */
export interface IFormProvisioning {
/** Отображаемое имя списка данных формы. */
dataListTitle: string;
/** Переименовать стандартную колонку Title (если задано). */
titleColumnName?: string;
/** Колонки списка данных. */
columns: IColumnDef[];
}