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

Другие вопросы по тегам