Функция форматирования всплывающих подсказок Highcharts не отображает значения в таблице правильно

#if-statement #highcharts #html-table #tooltip #formatter

#if-оператор #высокие диаграммы #html-таблица #всплывающая подсказка #форматер #оператор if #highcharts

Вопрос:

Я создал оператор if else в моей функции форматирования всплывающих подсказок highcharts, чтобы отображать значения y из разных point.series.name . Значения из первого и второго рядов в массиве отображаются корректно, но стилизация для последнего series.name значения (HINDCAST — SPREAD) отображаются некорректно, поскольку не отображаются размер шрифта и point.series.color. Я полагаю, проблема в табличных тегах? Пожалуйста, смотрите fiddle

https://jsfiddle.net/marialaustsen/w4k87jyo/

 tooltip: {
        shared: true,
        useHTML: true,
        formatter: function() {
          var aYearFromNow = new Date(this.x);
          aYearFromNow.setFullYear(aYearFromNow.getFullYear()   5);
          var tooltip = '<table><span style="font-size: 16px">'  
            Highcharts.dateFormat('%e/%b/%Y', new Date(this.x))   '-'   Highcharts.dateFormat('%e/%b/%Y', aYearFromNow)   '</span><br/><tbody>';
          //loop each point in this.points
          $.each(this.points, function(i, point) {
            if (point.series.name === 'Observations') {

              tooltip  = '<tr><th style="font-size: 14px; color: '   point.series.color   '">'   point.series.name   ': </th>'  
                '<td style="font-size: 14px">'   point.y   '℃'   '</td></tr>'


            } else if (point.series.name === 'BOXPLOT') {



              const x = this.x;
              const currentData = this.series.data.find(data => data.x === x);
              const boxplotValues = currentData ? currentData.options : {};
              tooltip  = `<span style="font-size: 14px; color: #aaeeee"> 
                            Max: ${boxplotValues.high.toFixed(2)}<br>
                      Q3: ${boxplotValues.q3.toFixed(2)}<br>
                      Median: ${boxplotValues.median.toFixed(2)}<br>
                      Q1: ${boxplotValues.q1.toFixed(2)}<br>
                      Low: ${boxplotValues.low.toFixed(2)}<br></span>`;

            } else {

              tooltip  = '<tr><th style="font-size: 14px; color: '   point.series.color   '">'   point.series.name   ': </th>'  
                '<td style="font-size: 14px">'   point.point.low   '℃ -'   point.point.high   '℃'   '</td></tr>'  
                '</tbody></table>';

            }
          });
          return tooltip;
        }
      },

  

Ответ №1:

Вы закрываете tbody перед последним значением (HINDCAST — SPREAD), после вывода за пределы цикла for это работает :

 ...
    tooltip  = '<tr><th style="font-size: 14px; color: '   point.series.color   '">'   point.series.name   ': </th>'  
               '<td style="font-size: 14px">'   point.point.low   '℃ -'   point.point.high   '℃'   '</td></tr>'
    }
});
tooltip  = '</tbody></table>';
return tooltip;
...
  

Скрипка

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

1. Это было легко исправить. Я не знал, что это так работает. Большое спасибо!