"use client"; import { useMemo } from "react"; import { useDistricts, usePrinzipDistricts } from "@/lib/analytics-api"; import { ChartShell } from "./ChartShell"; export function PrinzipDistrictsBar() { const districts = useDistricts(); const prinzip = usePrinzipDistricts(); const option = useMemo(() => { const dRows = districts.data ?? []; const pRows = prinzip.data ?? []; const order = [...dRows] .filter((r) => r.district_name !== "не определён") .sort((a, b) => (b.zk_count ?? 0) - (a.zk_count ?? 0)) .map((r) => r.district_name); return { tooltip: { trigger: "axis", axisPointer: { type: "shadow" }, formatter: ( params: { axisValueLabel: string; marker: string; seriesName: string; value: number; }[], ) => { const district = params[0]?.axisValueLabel ?? ""; const total = dRows.find((d) => d.district_name === district)?.zk_count ?? 0; const prinzipRow = pRows.find((p) => p.district_name === district); const share = prinzipRow?.share_in_district_pct ?? 0; return [ `${district}`, `Всего ЖК: ${total}`, `PRINZIP: ${prinzipRow?.prinzip_zk ?? 0} (${share}%)`, ].join("
"); }, }, legend: { data: ["Все девелоперы", "PRINZIP"] }, grid: { left: 120, right: 32, top: 40, bottom: 28 }, xAxis: { type: "value" }, yAxis: { type: "category", data: order, inverse: true }, series: [ { name: "Все девелоперы", type: "bar", data: order.map( (n) => dRows.find((d) => d.district_name === n)?.zk_count ?? 0, ), itemStyle: { color: "#94a3b8" }, }, { name: "PRINZIP", type: "bar", data: order.map( (n) => pRows.find((p) => p.district_name === n)?.prinzip_zk ?? 0, ), itemStyle: { color: "#1d4ed8" }, }, ], }; }, [districts.data, prinzip.data]); return ( ); }