Форматировать номера подсказок в Highcharts
Я использую tooltip.pointFormat
для отображения дополнительных данных в подсказке. К сожалению только point.x
правильно отформатирован с разделителем тысяч.
$(function () {
Highcharts.setOptions({
global: {
useUTC: false,
},
lang: {
decimalPoint: ',',
thousandsSep: '.'
}
});
$('#container').highcharts({
xAxis: {
type: 'datetime'
},
tooltip: {
pointFormat: '{series.name}: <b>{point.y}</b><br/>' + 'Count: <b>{point.count}</b><br/>',
shared: true
},
series: [{
data: [{
y: 20009.9,
count: 20009.9
}, {
y: 10009.9,
count: 20009.9
}, {
y: 40009.9,
count: 20009.9
}],
pointStart: Date.UTC(2010, 0, 1),
pointInterval: 3600 * 1000 // one hour
}]
});
});
3 ответов
нашел ответ здесь.
числа форматируются с подмножеством соглашений о форматировании float из библиотеки C funciton sprintf. Форматирование добавляется внутри переменные скобки, разделенные двоеточием. Например:
- два знака после запятой:"
{point.y:.2f}
"- разделитель тысяч, без десятичных знаков:
{point.y:,.0f}
- разделитель тысяч, один десятичный знак:
{point.y:,.1f}
используя :,.1f
внутри скобок будет правильно отформатировать число.
tooltip: {
pointFormat: '{series.name}: <b>{point.y}</b><br/>' + 'Count: <b>{point.count:,.1f}</b><br/>',
shared: true
}
Instaed pointFormat, используйте tooltip formatter а то Highcharts.numberFormat
tooltip: {
formatter:function(){
return this.point.series.name + ': <b>' + Highcharts.numberFormat(this.point.options.count,1,',','.') + '</b><br/>' + 'Count: <b>'+Highcharts.numberFormat(this.point.y,1,',','.')+'</b><br/>';
}
},
в нашем случае tooltipFormatter
применяет формат только для y
свойство, я нашел пару способов, как добавить формат не только для y
,
-
добавить формат для каждой подсказки и для каждого свойства такой
point.count:,.f
pointFormat: '{series.name}: <b>{point.count:,.f}</b><br/>' + 'Count: <b>{point.y}</b><br/>',
-
создать небольшое расширение, как это
(function (Highcharts) { var tooltipFormatter = Highcharts.Point.prototype.tooltipFormatter; Highcharts.Point.prototype.tooltipFormatter = function (pointFormat) { var keys = this.options && Object.keys(this.options), pointArrayMap = this.series.pointArrayMap, tooltip; if (keys.length) { this.series.pointArrayMap = keys; } tooltip = tooltipFormatter.call(this, pointFormat); this.series.pointArrayMap = pointArrayMap || ['y']; return tooltip; } }(Highcharts));