stone-kit
Version:
uikit for redesign
389 lines (388 loc) • 13.6 kB
TypeScript
interface LotPromo {
/** Промо текст */
val: string;
/** Идентификатор */
slug: string;
/** Категория */
category: string;
/** Ссылка на иконку */
icoImg: string | null;
/** hex цвет */
color: string;
}
export interface ILot {
/** id Лота */
id: number;
/** Название проекта */
name?: string | null;
/** Квартал сдачи */
buildingQuarter?: number | null;
/** Какие-то там условия для вывода синей строчки в лоте про рассрочку */
hasBestPurchasingConditions?: boolean | null;
/** Какие-то там условия для вывода синей строчки в лоте про рассрочку */
bestPurchasingConditions?: number | null;
cornerKitchenLiving?: boolean | null;
/** uuid Лота из 1с */
lotUuid: string;
/** TODO: убрать */
projectUuid?: string | null;
/** Скидка */
discount: string | null;
/** Стоимость объекта недвижимости до скидки */
sellingPriceBeforeDiscount: string | null;
/** Стоимость объекта недвижимости */
sellingPrice: string | null;
/**id проекта */
projectId: number | null;
/** Показывать цену или "цена по запросу" */
showPriceFlg?: boolean | null;
/** Цена за квм */
sellingPricePerMeter?: string | null;
/** цена за метра квадратный за год за аренду */
rentPricePerMeterPerYear: string | null;
/** аренда за месяц */
rentPricePerMonth: string | null;
/** стороны света */
cardinalDirections?: string[] | null;
/** Размер скидки */
discountVolume: number | null;
/** Цена со скидкой */
discountedPrice: number | null;
/** дата освобождения лота */
availableFrom: string | null;
/** дата, до которой должны быть выданы ключи */
handoverKeys: string | null;
/** состояние лота: свободен, зарезервирован, продан, сдан в аренду, заблокирован, деактивирован */
status?: number | null;
/** Статус аренды лота */
rentStatus: number | null;
/** название лота в 1С */
number: string | null | undefined;
/** полный адрес лота (с корпусом) */
address: string | null;
/** коммерческие программы рассрочки */
termsOfPurchase: string[] | null;
/** Тип помещения => Квартиры/Пентхаусы/Келлеры/Паркинг Офисы/Ритейл/Офисные Блоки/Паркинг */
type: number | null;
/** Название помещения => Квартиры/Пентхаусы/Келлеры/Паркинг Офисы/Ритейл/Офисные Блоки/Паркинг */
typeName: string | null;
/** направления, по которым продвигается этот лот */
direction: number | null;
/** Размерность спален S/M/L */
typeSizeCode: string | null;
/** номер подъезда/секции */
entrance: string | null;
/** Номер квартиры / офиса */
doorNumber: string | null;
/** Площадь квартиры */
area: string | null;
/** площадь кухни */
kitchenArea: number | null;
/** Жилая площадь */
livingArea: number | null;
/** Кол-во этажей */
floorsNumber: number | null;
/** Этаж */
floor: number | null;
/** Высота потолков */
ceiling: string | null;
/** Этаж, с которого начинаются продаваемые лоты */
saleFloorMin: number | null;
/** Этаж, на котором заканчиваются продаваемые лоты */
saleFloorMax: number | null;
/** Первый этаж большого лота/здания */
beginFloor: number | null;
/** Последний этаж большого лота/здания */
endFloor: number | null;
/** Ежемясячный платеж */
mortgageMonthlyPayment?: string;
/** Количество комнат */
roomsCount: number | null;
/** Количество спален */
bedroomsCount?: number | null;
/** Корпус */
housing: string | null;
/** Секция */
section: string | null;
/** Очередь строительства */
buildStage: number | null;
/** угловое? */
isCorner: boolean | null;
/** Квартира с террасой */
terrace?: boolean | null;
/** общепит? */
isCatering: boolean | null;
/** pdf презентация*/
pdfPresentation: string | null | undefined;
/** является ли лот отдельно стоящим зданием */
isDetachedBuilding: boolean | null;
/** Наличие телефона */
isPhone: boolean | null;
/** в ипотеку */
isMortgage: boolean | null;
/** мусоропровод */
isGarbageTube: boolean | null;
/** Является ли лот пентхаусом */
isPenthouse?: boolean | null;
/** Является ли лот апартаментом */
isApart: boolean | null;
/** Является ли лот двухуровневым */
isDoubleLevel?: boolean | null;
/** Есть ли пандус */
isRamp: boolean | null;
/** Близко ли вход к лифтовой группе */
isCloseToLift: boolean | null;
/** Занят ли лот */
isOccupied: boolean | null;
/** Является ли лот ГАБ */
isGab: boolean | null;
/** Есть ли отделка */
isFacing: boolean | null;
/** Особенности квартиры */
features: LotFeature[] | null;
/** Количество пассажирских лифтов */
liftPassenger: number | null;
/** Количество грузовых лифтов */
liftService?: number | null;
/** Количество балконов */
balcony: number | null;
/** Ванная с окном */
bathroomWithWindow: boolean | null;
/** Гардеробная */
dressingRoom: boolean | null;
/** Мастер спальня */
masterBedroom: boolean | null;
/** Хз что это */
workroom: boolean | null;
objectId: string;
/** Хз что это */
reservations?: unknown[];
/** Хз что это */
businessType: string | null;
/** Количество лоджий */
loggia?: number | null;
/** Состояние помещения */
condition: string | null;
/** Тип входа в помещений */
inputType?: string | null;
/** Отделка */
decoration?: string | null;
/** Тип планировки */
layout: string | null;
/** Тип ремонта */
repairType: string | null;
/** Слаг лота */
slug: string;
/** количество стояков с водой */
waterPipesCount?: number[] | null;
/** количество рабочих мест */
workPlacesCount: number | null;
/** Количество совместных санузлов */
combinedWcsCount: number | null;
/** Возможное назначение */
speciality: number | null;
/** Куда выходят витрины */
showcaseWindows: string | null;
/** Вид из окна */
windowView: string | null;
/** Вид из окна для ритейла*/
windowViews: string[];
/** Promo метки */
promo: LotPromo[] | null;
/** Promo текст */
promoText?: string | null;
/** Ссылка на картинку */
interiorPlanImg?: string | null;
/** Ссылка на картинку */
floorPlanImg: string | null;
/** Ссылка на картинку */
sitPlanImg: string | null;
/** Дата создания */
createdAt?: string;
/** Дата обновления */
updatedAt?: string;
/** Первоначальный взнос */
firstPaymentSum?: string | null;
/** Массив с лотами в фоисных блоках */
childLots?: {
id: number;
floor: number;
floorPlanImg: string;
interiorPlanImg: string;
}[];
/** Массив с лотами рекоммендованными */
recommended?: ILot[] | null;
parking?: ILot[] | null;
/** Проект со страпи */
project?: LotProject | null;
/** Мокрая точка */
isWaterPipes?: boolean | null;
/** Для компаса */
azimuthAngle?: number | null;
/** Декор? хз */
isDecoration?: boolean | null;
/** Название подтипа */
subTypeName?: string | null;
/** Подтип */
subType: number | null;
additionFeatures?: {
val: string;
slug: string;
icoImg: string;
category?: string;
}[];
}
export interface LotFeature {
/** Текст */
val: string;
/** Категория */
category: string | null;
/** Ссылка на иконку */
icoImg: {
id: number;
attributes: IDefaultImg[] | null;
} | null | string;
/** Идентификатор */
slug: string;
isSearchable?: boolean | null;
}
export interface LotCardFeature {
/** Текст */
val: string;
/** Категория */
category: string;
/** Ссылка на иконку */
icoImg: {
attributes: IDefaultImg;
id: number;
} | null;
/** Идентификатор */
slug: string;
}
export interface LotProject {
/** Массив направлений */
directions: number[];
discount: string;
/** id */
id: number;
/** Название проекта */
name: string;
/** адрес */
address: string;
/** особенности, набор строк */
features: LotFeature[] | null;
frontFeatures: unknown;
geo: {
lat: string;
long: string;
};
logoImg: unknown;
minimalLotPrice: {
[key: number]: string;
};
retailLotsCount: {
[key: number]: number;
};
salesOffice: unknown;
shortDesc: string;
showCatalog: boolean;
showDetailPage: boolean;
showPdfBtn: boolean;
/** условия для больших лотов */
bigLotFeatures: LotCardFeature[];
/** условия для каталога */
catalogFeatures: LotCardFeature[];
/** квартал сдачи */
buildingQuarter?: number | null;
/** Локация */
location?: string | null;
/** год сдачи */
buildingYear?: number;
/** широта */
lat?: string;
/** долгота */
long?: string;
/** сортровка */
sort: number | null;
/** Показывать ежемесячный платеж */
isShowPayment: boolean | null;
/** Дата создания */
createdAt: string;
/** Дата обновления */
updatedAt: string;
/** Расстояние до метро */
metro: Metro[];
/** Показывать цену лотов */
showPriceFlg?: boolean;
/** uuid */
uuid?: string;
/** Статус проекта */
status: string;
/** Количество лотов проекта в продаже */
lotsCount?: number | null;
/** SitPlan проекта */
sitPlanImg: string;
strapiSlug?: string;
sortOffice?: number;
sortRetail?: number;
showPriceSubType?: {
value: string;
filter: string;
}[];
}
export interface Metro {
/** Цвет ветки */
color: string;
/** Широта */
lat?: number;
/** Долгота */
long?: number;
/** Название станции */
name: string;
station?: string | null;
/** Время до станции в минутах */
timeTo: number;
mode: null | string;
/** Иконка */
icon?: {
data?: IDefaultImg;
} | null;
}
export interface ILotCard {
lot: ILot;
/** Скрывать финансовые параметры */
hidFinParam?: boolean;
btnName?: string;
btnDisabled?: boolean;
handleBtnForm: (e?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
handleFullScreenBtn?: () => void;
addClassname?: string;
addClassnameLotImage?: string;
imgNode?: React.ReactNode;
rowConditions?: boolean;
isFavorite?: boolean;
favoriteClickHandler?: (lot: ILot) => void;
}
export interface IDefaultImg extends IDefaultAttributes {
id: number | null;
alternativeText: string | null;
caption: string | null;
ext: string;
formats: unknown;
hash: string;
height: number;
mime: string;
name: string;
previewUrl: unknown;
provider: string;
provider_metadata?: unknown;
size: number;
url: string;
width?: number;
}
export interface IDefaultAttributes {
createdAt: string;
updatedAt: string;
publishedAt: string;
}
export {};