// Типы элементов интерфейса // Импортируем ElementType из interface.ts import type { ElementType } from '@/entity/element/model/interface' export interface ElementOption { value: string label: string } // Реэкспортируем ElementType для удобства export type { ElementType } // Расширенный тип для ячейки с указанием листа export interface CellTarget { sheet: string // название листа, например "L" или "R" cell: string // адрес ячейки, например "A2" или "B4" displayName?: string // отображаемое имя для пользователя } // Позиция и размеры элемента в визуальном редакторе export interface ElementLayout { x: number // позиция по X в пикселях y: number // позиция по Y в пикселях width: number // ширина в пикселях height: number // высота в пикселях zIndex?: number // Z-index для наложения элементов } // Настройки отображения элементов в форме export interface FormLayoutSettings { gridSize: number // размер сетки для привязки (в пикселях) showGrid: boolean // показывать сетку snapToGrid: boolean // привязывать элементы к сетке } export interface TemplateElement { id: string type: ElementType name: string label: string targetCells: CellTarget[] // множественные ячейки вместо одной targetCell options?: ElementOption[] // для select и radio required?: boolean defaultValue?: string placeholder?: string order?: number // порядок отображения в форме layout?: ElementLayout // позиция и размеры в визуальном редакторе } // Информация об объединенных ячейках export interface MergedCell { from: string // начальная ячейка (например, "A1") to: string // конечная ячейка (например, "C3") value: any // значение объединенной ячейки // Координаты диапазона (0-based), необходимые для рендера startRow: number startCol: number endRow: number endCol: number } // Определение атрибута (глобальный атрибут из API) export interface Attribute { id: string name: string is_required: boolean created_at: string updated_at: string deleted_at?: string | null } // Детальная информация об атрибуте шаблона (из API) export interface TemplateAttributeDetail { attribute_id: string attribute_name: string is_required: boolean value: string | null created_at: string updated_at: string } // Группа шаблонов export interface Group { id: string name: string order: number created_at: string updated_at: string deleted_at?: string | null } // Типы шаблонов export interface Template { id: string name: string description?: string excelFile?: File excelData?: Record // данные из Excel mergedCells?: MergedCell[] // информация об объединенных ячейках elements: TemplateElement[] layoutSettings?: FormLayoutSettings // настройки отображения формы group_id?: string | null // ID группы к которой принадлежит шаблон order?: number // порядок сортировки (float для гибкости) createdAt: Date updatedAt: Date }