54 lines
2.9 KiB
TypeScript
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[];
|
|
}
|