AmCharts4: изменить групповой интервал после инициализации - PullRequest
0 голосов
/ 28 февраля 2020

На моей диаграмме у меня включена группировка данных для столбца. Серии:

series = entry.chart.series.push(new am4charts.ColumnSeries());
dateAxis.groupData = true;
dateAxis.groupCount = 40;
dateAxis.groupIntervals.setAll([
{ timeUnit: "hour", count: 1 },
{ timeUnit: "day", count: 1 },
{ timeUnit: "month", count: 1 },
{ timeUnit: "year", count: 1 },
{ timeUnit: "year", count: 10 }
]);
series.groupFields.valueY = "sum";

Это дает мне что-то вроде этого (сгруппировано по месяцам): enter image description here

Должна быть возможность нажать кнопку и добиться следующего (сгруппированного по дням):

enter image description here

Пока я только что написал простой метод, который должно изменить внешний вид диаграммы:

$(document).on("keypress", (e) => {
   if (e.key == "2") {
      graph.entries.forEach(entry => {//I have multiple charts, entry.chart is the AmCharts instance
         //What to do here?
         entry.chart.xAxes.values[0].groupIntervals.setAll = ([
         { timeUnit: "day", count: 1 },
         ]);
       })
    }
})

Как видите, я пытаюсь изменить groupIntervals после отрисовки всего на диаграмме. Однако это ничего не делает. Я перепробовал целый ряд функций, таких как «invalidate», «invalidateSeries», «deepInvalidate», «reinit», и ничто не делает группу диаграмм по дням, а не по месяцам.

Если я установлю groupInterval, как в этом Пример перед рендерингом графика, он работает. Однако это решение неосуществимо, так как я не могу изменить его впоследствии.

Редактировать: Я обнаружил некоторое другое странное поведение. У меня есть выпадающий список, из которого вы можете выбрать:

  • Этот час
  • Этот день
  • На этой неделе
  • В этом месяце
  • В этом году
  • ....

Если я выберу «этот год», все будет в порядке.

Если я выберу «этот час», потом Я выбираю «этот месяц», он будет группироваться не по дням, а по месяцам. Однако следует сгруппировать по «дням».

Если я увеличу и уменьшу масштаб, он будет выглядеть хорошо. Мне это кажется ошибкой.

Если я выберу «этот год», а потом выберу «этот месяц», он также сгруппируется по месяцам.

Кроме того, если я выберу « в этот день "или" на этой неделе ", а потом я выбираю" этот месяц ", он работает просто отлично Я не могу точно сказать, откуда происходит это поведение.

Изменение интервалов работает путем изменения моей "метки-заполнителя", которая имеет только две точки данных: начало и конец. Они устанавливаются в соответствии с выбранным периодом времени.

...