Cube.js QueryBuilder не рендерится, когда предоставляются новые timeDimensions
Я пытаюсь получить клиент cube.js, показывающий данные, отфильтрованные с данными, предоставленными в timeDimensions
реквизит.
Я пробую все последние версии.
я пытался QueryBuilder
метод рендеринга реквизита updateTimeDimensions
( коды и коробка). Попробовал обновить время измерения и перейти к query
реквизит ( коды и коробка).
Вот проходящая версия реквизита:
const App = () => {
const [dateRange, updateDateRange] = useState([
moment("2019-01-01").format(defaultFormat),
moment('2019-04-01').format(defaultFormat)
]);
const query = {
timeDimensions: [
{
dimension: "LineItems.createdAt",
granularity: "month",
dateRange
}
]
}
console.log(query)
console.log(dateRange)
return (
<>
<RangePicker
defaultValue={[moment("2019-01-01"), moment('2019-04-01').startOf("day")]}
onChange={([startDate, endDate]) => {
updateDateRange([
startDate.format(defaultFormat),
endDate.format(defaultFormat)
]);
}}
/>
{dateRange && <QueryBuilder
query={query}
cubejsApi={cubejsApi}
render={({
resultSet,
measures,
availableMeasures,
updateMeasures
}) => (
<Layout.Content style={{ padding: "20px" }}>
<Select
mode="multiple"
style={{ width: "100%" }}
placeholder="Please select"
onSelect={m =>
updateMeasures.add(find(propEq("name", m))(availableMeasures))
}
onDeselect={m =>
updateMeasures.remove(
find(propEq("name", m))(availableMeasures)
)
}
>
{availableMeasures.map(measure => (
<Select.Option key={measure.name} value={measure.name}>
{measure.title}
</Select.Option>
))}
</Select>
<Divider />
{measures.length > 0 ? (
<ChartRenderer resultSet={resultSet} />
) : (
<Empty description="Select a measure and date range to get started" />
)}
</Layout.Content>
)}
/>}
</>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
Журнал шоу dateRange
при изменении даты ярости, как и ожидалось. Но переопределение компонента cube.js не срабатывает при изменении диапазона дат.
Object {timeDimensions: Array[1]}
["2019-01-01", "2019-04-01"]
Object {timeDimensions: Array[1]}
["2019-01-01", "2019-04-30"]
Object {timeDimensions: Array[1]}
["2019-01-01", "2019-05-31"]
1 ответ
Когда updateDateRange
называется это переписывает весь query
состояние QueryBuilder
который удаляет любой measures
установить раньше. Когда вы поддерживаете query
состояние за пределами QueryBuilder
ты должен пройти setQuery
обновить свое собственное состояние, когда оно изменяется QueryBuilder
: https://cube.dev/docs/@cubejs-client-react