Guest User

Untitled

a guest
Jul 18th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.35 KB | None | 0 0
  1. updated: function () {
  2. this.$nextTick(function () {
  3. Chart.pluginService.register({
  4. beforeDraw: function (chart) {
  5. if (chart.config.options.elements.center) {
  6. var ctx = chart.chart.ctx;
  7.  
  8. var centerConfig = chart.config.options.elements.center;
  9. var fontStyle = centerConfig.fontStyle || 'Arial';
  10. var txt = centerConfig.text;
  11. var color = centerConfig.color || '#000';
  12. var sidePadding = centerConfig.sidePadding || 20;
  13. var sidePaddingCalculated = (sidePadding/100) * (chart.innerRadius * 2)
  14. ctx.font = "40px " + fontStyle;
  15.  
  16. var stringWidth = ctx.measureText(txt).width;
  17. var elementWidth = (chart.innerRadius * 2) - sidePaddingCalculated;
  18.  
  19. var widthRatio = elementWidth / stringWidth;
  20. var newFontSize = Math.floor(30 * widthRatio);
  21. var elementHeight = (chart.innerRadius * 2);
  22.  
  23. var fontSizeToUse = Math.min(newFontSize, elementHeight);
  24.  
  25. ctx.textAlign = 'center';
  26. ctx.textBaseline = 'middle';
  27. var centerX = ((chart.chartArea.left + chart.chartArea.right) / 2);
  28. var centerY = ((chart.chartArea.top + chart.chartArea.bottom) / 2);
  29. ctx.font = fontSizeToUse+"px " + fontStyle;
  30. ctx.fillStyle = color;
  31.  
  32. ctx.fillText(txt, centerX, centerY);
  33. }
  34. }
  35. });
  36. new Chart(document.getElementById("bar-chart"), {
  37. type: 'doughnut',
  38. data: {
  39. labels: [
  40. this.funds[0] ? this.funds[0].name : '',
  41. this.funds[1] ? this.funds[1].name : '',
  42. "Text1", "Text2", "Text3"],
  43. datasets: [
  44. {
  45. label: "Population (millions)",
  46. backgroundColor: ["#4285F6", "#B80ADE","#FF675F","#1BC326","#A7A7A7","#494949","#E86522","#F19D3F"],
  47. data: [
  48. this.funds[0] ? this.funds[0].value : '',
  49. this.funds[1] ? this.funds[1].value : '', 734,784,433],
  50. hoverBorderColor: ["#4285F6", "#B80ADE","#FF675F","#1BC326","#A7A7A7","#494949","#E86522","#F19D3F"],
  51. hoverBorderWidth: 6,
  52. hoverBackgroundColor: ["#4285F6", "#B80ADE","#FF675F","#1BC326","#A7A7A7","#494949","#E86522","#F19D3F"],
  53. }
  54. ],
  55. },
  56. options: {
  57. cutoutPercentage: 65,
  58. tooltips: {
  59. callbacks: {
  60. label: function labelPercantage(tooltipItem, data) {
  61. var dataset = data.datasets[tooltipItem.datasetIndex];
  62. var meta = dataset._meta[Object.keys(dataset._meta)[0]];
  63. var total = meta.total;
  64. var currentValue = dataset.data[tooltipItem.index];
  65. var percentage = parseFloat((currentValue/total*100).toFixed(1));
  66.  
  67. return currentValue + ' (' + percentage + '%)';
  68.  
  69. },
  70. title: function(tooltipItem, data) {
  71. return data.labels[tooltipItem[0].index];
  72. }
  73. }
  74. },
  75. elements: {
  76. center: {
  77. text: '70.1%',
  78. color: '#181818',
  79. fontStyle: 'Helvetica',
  80. sidePadding: 30
  81. },
  82. arc: {
  83. borderWidth: 0.5,
  84. }
  85. },
  86. title: {
  87. display: false,
  88. text: 'Doughnut Chart',
  89. position: 'bottom'
  90. },
  91. legend: {
  92. position: 'right',
  93. boxWidth: 0,
  94. reverse: true,
  95.  
  96. labels: {
  97. fontSize: 13,
  98. usePointStyle: true,
  99. padding: 20,
  100. generateLabels: function(chart) {
  101. var data = chart.data;
  102. if (data.labels.length && data.datasets.length) {
  103. return data.labels.map(function(label, i) {
  104. var meta = chart.getDatasetMeta(0);
  105. var ds = data.datasets[0];
  106. var arc = meta.data[i];
  107. var custom = arc && arc.custom || {};
  108. var getValueAtIndexOrDefault = Chart.helpers.getValueAtIndexOrDefault;
  109. var arcOpts = chart.options.elements.arc;
  110. var fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);
  111. var stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);
  112. var bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);
  113. var value = chart.config.data.datasets[arc._datasetIndex].data[arc._index];
  114.  
  115. var dsSum = data.datasets[0].data[0];
  116. var dsSum2 = data.datasets[0].data[1];
  117. var dsSum3 = data.datasets[0].data[2];
  118. var dsSum4 = data.datasets[0].data[3];
  119. var dsSum5 = data.datasets[0].data[3];
  120. var totalSum = dsSum + dsSum2 + dsSum3 + dsSum4 + dsSum5;
  121.  
  122. var percentageAsset = parseFloat((value/totalSum *100).toFixed(1));
  123.  
  124. return {
  125. text: label + " " + percentageAsset + '%',
  126. fillStyle: fill,
  127. strokeStyle: stroke,
  128. lineWidth: bw,
  129. hidden: isNaN(ds.data[i]) || meta.data[i].hidden,
  130. index: i
  131. };
  132. });
  133. } else {
  134. return [];
  135. }
  136. },
  137. }
  138. },
  139. },
  140. layout: {},
  141. });
  142. })
Add Comment
Please, Sign In to add comment