Amcharts4: 'legendSettings' 'itemValueText' для проверки пустого или неопределенного значения - PullRequest
0 голосов
/ 24 января 2020

Итак, я создал диаграмму в процентах, в которой при наведении курсора отображаются данные во всплывающей подсказке и в легенде, аналогичной https://www.amcharts.com/docs/v4/concepts/legend/#Interacting_with_cursor. Также я добавил% в конце. (Я получаю данные наподобие 40, 55, 90, что означает 40%, 50% и 90% соответственно из API-интерфейса бэкэнда, а не 0,4 или 0,5). Я также показываю средний процент в начале.

series.legendSettings.itemValueText = "[bold]{valueY}%[/]";
series.legendSettings.valueText = "(Avg: [bold]{valueY.average.formatNumber('#.##')}%[/])";

Так что в некоторых случаях для всего набора данных один из столбцов является нулевым или неопределенным, я не получаю сам ключ, и это приводит к легенде только отображение % . При наведении курсора он будет отображать % .

Так что мой вопрос: есть ли способ, где мы можем проверить 'itemValueText' или {valueY}, чтобы проверить, является ли он "неопределенным" и не добавить % в конце ? Или есть какой-то другой способ, и я делаю это неправильно? В основном что-то вроде -

series.legendSettings.itemValueText = "{valueY}";
if (series.legendSettings.itemValueText !== undefined) {           // or check {valueY}
    series.legendSettings.itemValueText = "[bold]{valueY}%[/]";    // Only if value is undefined add % in last
    series.legendSettings.valueText = "(Avg: [bold]{valueY.average.formatNumber('#.##')}%[/])";
}

1 Ответ

1 голос
/ 04 февраля 2020

Вы можете создать адаптер textOutput на шаблоне легенды valueLabels, чтобы проверить окончательный вывод текста на основе строки шаблона и настроить соответствующим образом.

chart.legend.valueLabels.template.adapter.add("textOutput", function(text, target) {
  if (text === '(Avg: [bold]%[/])') {
    return 'N/A';
  }
  else if (text === '[bold]%[/]') {
    return '';
  }
  return text;
});

Демо

...