54 lines
1.9 KiB
TypeScript
54 lines
1.9 KiB
TypeScript
import { SaleShareControls } from 'tradein-mvp-frontend';
|
||
|
||
// Панель «Порог и фильтры» страницы /trade-in/sale-share. Controlled-компонент:
|
||
// состояние живёт в page.tsx и приходит через props. Сводка (гистограмма
|
||
// распределения sale_share_pct) — реалистичные значения по покрытию ЕКБ
|
||
// (view v_building_sale_share ≈ 6.7k домов вторички, знаменатель ГАР у ~92%).
|
||
const summary = {
|
||
total_secondary_buildings: 6667,
|
||
buildings_with_denominator: 6143,
|
||
coverage_pct: 92.1,
|
||
max_pct: 42.0,
|
||
p95_pct: 11.3,
|
||
histogram: [
|
||
{ bucket: '0-5', count: 4980 },
|
||
{ bucket: '5-10', count: 642 },
|
||
{ bucket: '10-20', count: 298 },
|
||
{ bucket: '20-30', count: 121 },
|
||
{ bucket: '30-50', count: 57 },
|
||
{ bucket: '50-100', count: 18 },
|
||
{ bucket: '100+', count: 6 },
|
||
],
|
||
};
|
||
|
||
const HOUSE_TYPES = ['panel', 'brick', 'monolith', 'monolith_brick', 'block', 'stalin'];
|
||
|
||
/** Порог 8% на слайдере: корзины ниже порога приглушены (opacity), тепловая
|
||
* окраска столбцов green→red повторяет цвет маркеров карты. Фильтры: город,
|
||
* цена, год постройки, тип дома, мин. объявлений, сортировка. */
|
||
export const Default = () => (
|
||
<SaleShareControls
|
||
summary={summary}
|
||
minPct={8}
|
||
onMinPct={() => {}}
|
||
city="Екатеринбург"
|
||
onCity={() => {}}
|
||
priceMin=""
|
||
onPriceMin={() => {}}
|
||
priceMax=""
|
||
onPriceMax={() => {}}
|
||
yearMin=""
|
||
onYearMin={() => {}}
|
||
yearMax=""
|
||
onYearMax={() => {}}
|
||
houseType=""
|
||
onHouseType={() => {}}
|
||
houseTypeOptions={HOUSE_TYPES}
|
||
sort="share_desc"
|
||
onSort={() => {}}
|
||
window="now"
|
||
onWindow={() => {}}
|
||
minCount={3}
|
||
onMinCount={() => {}}
|
||
/>
|
||
);
|