UNPKG

chartjs-plugin-piechart-outlabels

Version:

Chart.js plugin to display float data labels on pie/doughnut chart outside the border.

79 lines (62 loc) 2.01 kB
'use strict'; import Chart from 'chart.js'; var helpers = Chart.helpers; export default helpers.merge(helpers, { // @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString) // @see https://developer.mozilla.org/en-US/docs/Web/CSS/font toFontString: function(font) { if (!font || helpers.isNullOrUndef(font.size) || helpers.isNullOrUndef(font.family)) { return null; } return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family; }, // @todo move this in Chart.helpers.canvas.textSize // @todo cache calls of measureText if font doesn't change?! textSize: function(ctx, lines, font) { var items = [].concat(lines); var ilen = items.length; var prev = ctx.font; var width = 0; var i; ctx.font = font.string; for (i = 0; i < ilen; ++i) { width = Math.max(ctx.measureText(items[i]).width, width); } ctx.font = prev; return { height: ilen * font.lineHeight, width: width }; }, // @todo move this method in Chart.helpers.options.toFont parseFont: function(value, height) { var global = Chart.defaults.global; var size = helpers.valueOrDefault(value.size, global.defaultFontSize); if (value.resizable) { size = this.adaptTextSizeToHeight(height, value.minSize, value.maxSize); } var font = { family: helpers.valueOrDefault(value.family, global.defaultFontFamily), lineHeight: helpers.options.toLineHeight(value.lineHeight, size), size: size, style: helpers.valueOrDefault(value.style, global.defaultFontStyle), weight: helpers.valueOrDefault(value.weight, null), string: '' }; font.string = helpers.toFontString(font); return font; }, adaptTextSizeToHeight: function(height, min, max) { var size = (height / 100) * 2.5; if(min && size < min) { return min; } if(max && size > max) { return max; } return size; } });