Initial commit MKD fixes
This commit is contained in:
89
inspectionElementTemplates.ts
Executable file
89
inspectionElementTemplates.ts
Executable file
@@ -0,0 +1,89 @@
|
||||
import type { InspectionMKDElement } from './types';
|
||||
|
||||
function createElement(id: string, name: string): InspectionMKDElement {
|
||||
return {
|
||||
id,
|
||||
name,
|
||||
generalStatus: 'NOT_SELECTED',
|
||||
electroStatus: 'NOT_SELECTED',
|
||||
weldingStatus: 'NOT_SELECTED',
|
||||
repairType: '',
|
||||
mainPhoto: undefined,
|
||||
additionalPhotos: []
|
||||
};
|
||||
}
|
||||
|
||||
/** Типовые наименования элементов по этажу подъезда (поэтажный осмотр). */
|
||||
export const FLOOR_ELEMENT_NAMES = [
|
||||
'Стены и потолок',
|
||||
'Напольное покрытие',
|
||||
'Лестничный марш',
|
||||
'Перила',
|
||||
'Окна и подоконники',
|
||||
'Освещение',
|
||||
'Почтовые ящики',
|
||||
'Двери в квартиры (состояние коробок)',
|
||||
'Колясочная (при наличии)'
|
||||
] as const;
|
||||
|
||||
/** Типовые элементы для секции «Парадная» (входная группа). */
|
||||
export const ENTRANCE_ELEMENT_NAMES = [
|
||||
'Входная дверь',
|
||||
'Козырьки',
|
||||
'Домофон / видеодомофон',
|
||||
'Освещение',
|
||||
'Уборка / состояние вестибюля'
|
||||
] as const;
|
||||
|
||||
/** Элементы по общим секциям (ключ — title секции). */
|
||||
export const COMMON_SECTION_ELEMENTS: Record<string, readonly string[]> = {
|
||||
'Кровля': ['Покрытие', 'Примыкания', 'Водосточная система', 'Выходы на кровлю', 'Ограждения'],
|
||||
'Подвал': ['Несущие конструкции', 'Коммуникации', 'Освещение', 'Вентиляция', 'Отсутствие протечек / затоплений', 'Двери и люки'],
|
||||
'Фундамент': ['Видимая часть фундамента', 'Отмостка', 'Гидроизоляция', 'Вентиляционные продухи'],
|
||||
'Фасад': ['Стены', 'Швы', 'Окна общего пользования', 'Отливы', 'Балконы (общие конструкции)'],
|
||||
'Благоустройство': [
|
||||
'Дорожки и проезды, тротуары',
|
||||
'Освещение дворовой территории',
|
||||
'Урны и контейнеры для мусора',
|
||||
'Контейнерная площадка',
|
||||
'Озеленение (газоны, кустарники)',
|
||||
'Детская / спортивная площадки',
|
||||
'Парковочные места',
|
||||
'Ограждение территории',
|
||||
'Крыльца и входные группы (со стороны двора)',
|
||||
'Ливневая канализация'
|
||||
],
|
||||
'Общий паркинг': ['Покрытие', 'Разметка', 'Освещение', 'Ограждение', 'Вентиляция (если подземный)'],
|
||||
'Технический этаж': ['Конструкции', 'Инженерное оборудование', 'Освещение', 'Доступ'],
|
||||
'Чердак': ['Конструкции', 'Утепление', 'Вентиляция', 'Освещение', 'Люки'],
|
||||
'Цоколь': ['Видимая часть цоколя', 'Отмостка', 'Гидроизоляция', 'Вентиляционные продухи']
|
||||
};
|
||||
|
||||
/** Создать массив элементов МКД из списка названий (с уникальными id). */
|
||||
export function buildElementsFromNames(
|
||||
names: readonly string[],
|
||||
prefix: string
|
||||
): InspectionMKDElement[] {
|
||||
return names.map((name, idx) =>
|
||||
createElement(`${prefix}-${idx}-${Date.now()}`, name)
|
||||
);
|
||||
}
|
||||
|
||||
/** Создать элементы этажа по шаблону. */
|
||||
export function buildFloorElements(entranceNumber: number, floorNumber: number): InspectionMKDElement[] {
|
||||
const prefix = `entrance-${entranceNumber}-floor-${floorNumber}`;
|
||||
return buildElementsFromNames(FLOOR_ELEMENT_NAMES, prefix);
|
||||
}
|
||||
|
||||
/** Создать элементы парадной по шаблону. */
|
||||
export function buildEntranceElements(entranceNumber: number): InspectionMKDElement[] {
|
||||
const prefix = `entrance-${entranceNumber}`;
|
||||
return buildElementsFromNames(ENTRANCE_ELEMENT_NAMES, prefix);
|
||||
}
|
||||
|
||||
/** Создать элементы для общей секции по title. */
|
||||
export function buildCommonSectionElements(sectionTitle: string, sectionId: string): InspectionMKDElement[] {
|
||||
const names = COMMON_SECTION_ELEMENTS[sectionTitle];
|
||||
if (!names || names.length === 0) return [];
|
||||
return buildElementsFromNames(names, sectionId);
|
||||
}
|
||||
Reference in New Issue
Block a user