50 lines
4.1 KiB
TypeScript
50 lines
4.1 KiB
TypeScript
import { SaleShareList } from 'tradein-mvp-frontend';
|
||
|
||
// Список домов /trade-in/sale-share, отсортирован по доле в продаже (server-side
|
||
// share_desc). Реалистичные дома ЕКБ (view v_building_sale_share): адрес,
|
||
// тепловой бейдж доли, «N из M квартир», медиана + ₽/м², экспозиция,
|
||
// год/тип/этажность/серия. Включены оба edge-бейджа: «аварийный» и
|
||
// «возможно, несколько корпусов» (over_100 — ГАР-коллизия адреса).
|
||
const buildings = [
|
||
{ house_id: 4212, address: 'ул. Космонавтов, 52', lat: 56.8890, lon: 60.6132, sale_share_pct: 128.0, sale_share_pct_45d: 131.5, listings_45d: 46, over_100: true, active_secondary: 32, flat_count_effective: 25, gar_match_method: 'address', median_price_rub: 3_650_000, median_price_per_m2: 121_700, avg_days_on_market: 96, year_built: 1961, house_type: 'brick', total_floors: 5, series_name: null, is_emergency: false },
|
||
{ house_id: 3387, address: 'пер. Сапёров, 5', lat: 56.8271, lon: 60.6198, sale_share_pct: 48.9, sale_share_pct_45d: 52.4, listings_45d: 24, over_100: false, active_secondary: 22, flat_count_effective: 45, gar_match_method: 'cadastre', median_price_rub: 2_990_000, median_price_per_m2: 98_400, avg_days_on_market: 148, year_built: 1957, house_type: 'brick', total_floors: 3, series_name: null, is_emergency: true },
|
||
{ house_id: 3101, address: 'ул. Викулова, 46', lat: 56.8412, lon: 60.5556, sale_share_pct: 34.6, sale_share_pct_45d: 41.2, listings_45d: 33, over_100: false, active_secondary: 27, flat_count_effective: 78, gar_match_method: 'cadastre', median_price_rub: 4_950_000, median_price_per_m2: 158_500, avg_days_on_market: 74, year_built: 1972, house_type: 'panel', total_floors: 9, series_name: '1-468', is_emergency: false },
|
||
{ house_id: 2874, address: 'ул. Бебеля, 138', lat: 56.8664, lon: 60.5721, sale_share_pct: 22.4, sale_share_pct_45d: 25.0, listings_45d: 20, over_100: false, active_secondary: 17, flat_count_effective: 76, gar_match_method: 'cadastre', median_price_rub: 5_400_000, median_price_per_m2: 149_200, avg_days_on_market: 61, year_built: 1978, house_type: 'panel', total_floors: 9, series_name: '141', is_emergency: false },
|
||
{ house_id: 5530, address: 'ул. Малышева, 84', lat: 56.8380, lon: 60.6203, sale_share_pct: 12.1, sale_share_pct_45d: 13.8, listings_45d: 16, over_100: false, active_secondary: 14, flat_count_effective: 116, gar_match_method: 'cadastre', median_price_rub: 7_850_000, median_price_per_m2: 172_300, avg_days_on_market: 47, year_built: 1954, house_type: 'stalin', total_floors: 6, series_name: null, is_emergency: false },
|
||
{ house_id: 6119, address: 'ул. Щербакова, 20', lat: 56.7791, lon: 60.6120, sale_share_pct: 6.8, sale_share_pct_45d: 8.1, listings_45d: 22, over_100: false, active_secondary: 18, flat_count_effective: 264, gar_match_method: 'cadastre', median_price_rub: 8_900_000, median_price_per_m2: 164_800, avg_days_on_market: 38, year_built: 2016, house_type: 'monolith', total_floors: 25, series_name: null, is_emergency: false },
|
||
];
|
||
|
||
/** Полная таблица (6 домов, выбран «ул. Викулова, 46» — строка is-selected),
|
||
* сортировка по доле, кнопка «Объявления →» ведёт в drawer. */
|
||
export const Default = () => (
|
||
<SaleShareList
|
||
buildings={buildings}
|
||
sort="share_desc"
|
||
onSort={() => {}}
|
||
selectedHouseId={3101}
|
||
hoveredHouseId={null}
|
||
onSelect={() => {}}
|
||
onHover={() => {}}
|
||
isLoading={false}
|
||
isError={false}
|
||
minPct={5}
|
||
window="now"
|
||
/>
|
||
);
|
||
|
||
/** Пустой результат — фильтры отсекли все дома (честный empty-state). */
|
||
export const Empty = () => (
|
||
<SaleShareList
|
||
buildings={[]}
|
||
sort="share_desc"
|
||
onSort={() => {}}
|
||
selectedHouseId={null}
|
||
hoveredHouseId={null}
|
||
onSelect={() => {}}
|
||
onHover={() => {}}
|
||
isLoading={false}
|
||
isError={false}
|
||
minPct={25}
|
||
window="now"
|
||
/>
|
||
);
|