fix(ui): подключить фильтры статистики с проверкой срезов

This commit is contained in:
Denozordec committed 2026-09-14 22:27:12 +07:00
1 parent 52af82af42
commit 4fd844f977
5 files changed
+72 -37

No files matched your search

@@ -0,0 +1,27 @@
"use client"
import { useState } from "react"
import { QueryFilters } from "@/components/data-grids/query-filters"
import { Button } from "@/components/ui/button"
import { STATISTICS_FILTER_FIELDS } from "@/lib/data-filters/statistics-filter-fields"
import { filterQueryToSlices, slicesToFilterQuery, type StatisticsSlices } from "@/lib/data-filters/statistics-filter-query"
/** Parent keys this editor by URL slices so external navigation resets drafts. */
export function StatisticsFilters({ slices, onApply }: {
slices: StatisticsSlices
onApply: (slices: StatisticsSlices) => void
}) {
const [query, setQuery] = useState(() => slicesToFilterQuery(slices))
const result = filterQueryToSlices(query)
return <div className="flex flex-col gap-2">
<div className="flex flex-wrap items-center gap-2">
<QueryFilters fields={STATISTICS_FILTER_FIELDS} query={query} onQueryChange={setQuery} />
<Button size="sm" variant="outline" disabled={result.status !== "valid"}
onClick={() => { if (result.status === "valid") onApply(result.slices) }}>
Применить срез
</Button>
</div>
{result.status === "invalid" && <p role="alert" className="text-xs text-destructive">{result.error}</p>}
{result.status === "draft" && <p role="status" className="text-xs text-muted-foreground">Завершите условие. Текущий срез сохранён.</p>}
</div>
}