Я хочу динамически скрывать серию из диаграммы, если значение этой серии равно 0 для этого конкретного года

#javascript #angular #typescript #syncfusion

#javascript #угловой #typescript #syncfusion

Вопрос:

Я хочу динамически скрывать серию из диаграммы, если значение этой серии равно 0 для этого конкретного года.

Итак, из приведенной ниже диаграммы вы можете видеть, что в 2020 году и выше у меня нет фактического значения, поэтому я не хочу показывать разрыв между обеими сериями

введите описание изображения здесь

Я попробовал приведенный ниже код, но он скрывает все фактические значения за год. По сути, он скрывает фактическое значение в целом. Я хочу только, если фактическое значение равно 0, тогда не оставляйте пробел между андеррайтингом и грилями

  public seriesRender(args: ISeriesRenderEventArgs ): void {
     for (const key in args.data) {
       if (Object.prototype.hasOwnProperty.call(args.data, key)) {
         const element = args.data[key];         
         if(element.actual == 0 amp;amp; args.series.name == 'Actual'){
          args.series.chart.visibleSeries.forEach(element => {
            if(element.name == 'Actual')
            element.visible = false;
          });
         }
       }
     }
  }
 

HTML :

 <e-series-collection>
      <e-series [animation]="animation" [dataSource]='chartData' type='Column' xName='year' yName='underwriting' [name]='underwritingLabel' [marker]='marker'></e-series>
      <e-series [animation]="animation" [dataSource]='chartData' type='Column' xName='year' yName='actual' name='Actual' == 0" [marker]='marker'></e-series>
      <e-series [animation]="animation" [dataSource]='chartData' type='Column' xName='year' yName='grills' name='Grills' [marker]='marker'></e-series>
    </e-series-collection>
 

Комментарии:

1. visible = false все равно будет занимать место в dom. У меня недостаточно кода, чтобы действительно дать точный ответ. Но попробуйте свернуть (скрыть также для dom) или удалить объект, когда он равен 0. (Это можно сделать с помощью «удалить элемент»)

2. @LotteLemmens Я пробовал visible = false, но он скрывает все серии с помощью actual . Даже если я удалю значение, оно все равно будет отображаться на графике, потому что мой html выглядит так, как указано выше.

Ответ №1:

На данный момент невозможно пропустить пустые пробелы между столбчатой диаграммой. Поскольку при вычислении рядов мы разделили ширину столбца поровну для всех точек в зависимости от количества отображаемых рядов. В соответствии с вашими требованиями, если необходимо удалить определенный пробел, мы должны изменить ширину столбца для точки, что также повлияет на ширину столбца для остальных точек. И это не будет визуально приятным. Следовательно, этот сценарий нельзя рассматривать как запрос функции.

Дайте нам знать, если у вас возникнут какие-либо опасения.

Спасибо