import type { VBIChartBuilder } from '@visactor/vbi'
import { useHavingFilter, useWhereFilter } from '@visactor/vbi-react'
export function FilterDemo({ builder }: { builder: VBIChartBuilder }) {
const { whereFilter, mutateWhereFilter, clearWhereFilter } = useWhereFilter(builder)
const { havingFilter, mutateHavingFilter, clearHavingFilter } = useHavingFilter(builder)
return (
<div style={{ display: 'grid', gap: 8 }}>
<button
onClick={() =>
mutateWhereFilter((where) => {
where.add('region', (node) => node.setOperator('eq').setValue('East'))
})
}
>
添加 Where 条件
</button>
<button
onClick={() =>
mutateHavingFilter((having) => {
having.add('sales', (node) => node.setAggregate({ func: 'sum' }).setOperator('gt').setValue(1000))
})
}
>
添加 Having 条件
</button>
<button onClick={clearWhereFilter}>清空 Where</button>
<button onClick={clearHavingFilter}>清空 Having</button>
<pre>{JSON.stringify({ whereFilter, havingFilter }, null, 2)}</pre>
</div>
)
}