Как лучше всего настроить всплывающую подсказку на гистограмме primefaces jqplot, чтобы отображать процентное значение, а не фактическое значение. Т.е. если было 3 столбца со значениями 10, 20, 20, я хочу, чтобы всплывающая подсказка показывала 20% 40% 40%.

Я использую js extender и получаю значение (а не процент), используя:

enter   this.cfg.highlighter = {
tooltipContentEditor: function (str, seriesIndex, pointIndex, plot) {
  return plot.data[seriesIndex][pointIndex];
},
show: true

};

Можно ли перебрать точки, вычислить сумму, а затем вычислить процент (и отформатировать эту строку)?

Я также думал, что могу вычислить на уровне Java - и добавить как невидимую серию и получить ее через индекс серии?

Заранее спасибо

0
Daf 31 Окт 2018 в 13:06

2 ответа

Лучший ответ

Просто перебирайте plot.data[seriesIndex], считайте, делите, умножайте

var series = plot.data[seriesIndex];
var total = 0;
series.forEach(function(entry) {
    total = total + entry;
});
var percent = Math.round((plot.data[seriesIndex][pointIndex] / total)*100)+"%";
return percent;
0
Kukeltje 31 Окт 2018 в 12:32

Вы также можете настроить его в классе Java, выполнив:

Если у вас горизонтальная гистограмма:

horizontalBarChartModel.setDatatipFormat("%1$.2f %");

Если у вас вертикальная гистограмма:

verticalBarChartModel.setDatatipFormat("%2$.2f %");

Разница между двумя значениями метки формата (1 и 2) заключается в том, что по умолчанию PrimeFaces генерирует всплывающую подсказку по умолчанию с двумя метками, одна для индекса столбца на диаграмме (например: первая полоса, вторая полоса), а другая - для фактическое значение, установленное для этой полосы (значения, установленные в управляемом компоненте для визуализации этой диаграммы). Когда вы используете модель вертикальной столбчатой ​​диаграммы, первая метка всплывающей подсказки становится значением индекса, а когда вы используете модель горизонтальной столбчатой ​​диаграммы, первая метка становится фактическим значением для этого столбца на диаграмме.

Если вам также нужно отображать гистограммы со всеми полосами на 100%, помните, что вам нужно рассчитать свои проценты на уровне вашего контроллера (по крайней мере, намного проще).

0
viniciusmfelix 20 Окт 2020 в 13:16