AMCharts 4 - вычисление переменных и процентов из других рядов в тексте всплывающей подсказки - PullRequest
0 голосов
/ 05 мая 2020

Таблица с тремя сериями. Я показываю текст всплывающей подсказки только для одного из них и включаю значения из всех трех в одну всплывающую подсказку. Необработанные значения работают, ссылаясь на них по их имени, но не работают для вычисления процентов. У меня для calculatePercent установлено значение true для всех трех серий.

series3.tooltipText = "[bold]Active : [/]{Active.formatDuration()} ({Active.percent.formatNumber('#.0')}%)\n[bold]Idle : [/]{Idle.formatDuration()} ({Idle.percent.formatNumber('#.0')}%)\n[bold]Total : [/]{Total.formatDuration()} ({Total.percent.formatNumber('#.0')}%)";

Записи ???.formatDuration() отображаются нормально, а ???.percent.formatNumber('#.0')} - нет. Я понимаю, что могу использовать valueY в качестве имени, которое работает, но только для серии, в которой оно вызывается (серия 3). Я хотел бы показать процентные значения из других серий (1 и 2), а также в tooltipText серии 3. Есть ли способ обойти это?

На amcharts github мне посоветовали следующее, потому что «диаграмма вычисляет производные значения только для полей данных серии» - что объясняет, почему вызов их по имени не работает для вычисления процентов, но без примера потеряны:

Единственный обходной путь - использовать адаптер для tooltipText, который будет обращаться к target.dataItem.dataContext (это необработанные данные), а затем вычислять их значений и форматирования содержимого всплывающей подсказки.

Другой вариант - прокрутить ряды в адаптере tooltipText, найти их элементы данных для указанной c даты, а затем получить предварительно рассчитанное процентное значение.

Я считаю, что могу использовать что-то вроде этих строк:

series3.adapter.add("tooltipText", function (text, target, key) {
    return "test text";
});

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

Ссылка играть: https://jsfiddle.net/5v3L2nho/

...