ChartJS 工具提示上的图表JS自定义消息,而不是x轴和y轴

rbl8hiat  于 2022-11-06  发布在  Chart.js
关注(0)|答案(1)|浏览(190)

我正在显示一个条形图,其中包含三个不同的信息(项目名称、剩余天数和结束日期)。我在一个轴上显示项目名称,剩余天数决定条形图的高度。当前,当我将鼠标悬停在条形图上时,工具提示会显示x轴和y轴上已有的信息。我希望它具有结束日期。
即:项目“B”将在2天内结束(8月4日),当我将鼠标悬停在栏上时,我希望工具提示显示“End date of 2022-08-04”而不是“b Work Days Remaining:2英寸
我的json的数据看起来像这样:

  1. [{"po_num": "a", "days_rem": 10, "date_end": "2022-08-16"},
  2. {"po_num": "b", "days_rem": 2, "date_end": "2022-08-04"},
  3. {"po_num": "c", "days_rem": 6, "date_end": "2022-08-10"}]

https://i.stack.imgur.com/HefRz.png这是我正在尝试做的事情的MS绘制渲染:https://i.stack.imgur.com/GAT2I.png
实现代码:

  1. link = "{{{BASE_BACK_URL}}}";
  2. $.getJSON(link, function (data) {
  3. let po_names = [];
  4. let days_rem = [];
  5. for (let i = 0; i < data.length; i++) {
  6. po_names.push(data[i]["po_num"]);
  7. days_rem.push(data[i]["days_rem"]);
  8. }
  9. const ctx = document.getElementById('po-timeline-chart');
  10. const myChart = new Chart(ctx, {
  11. type: 'horizontalBar',
  12. data: {
  13. labels: po_names,
  14. datasets: [{
  15. label: 'Work Days Remaining',
  16. data: days_rem,
  17. backgroundColor: 'rgb(0, 89, 178)'
  18. }],
  19. },
  20. options: {
  21. legend: {
  22. align: "end"
  23. },
  24. scales: {
  25. xAxes: [{
  26. ticks: {
  27. beginAtZero: true
  28. }
  29. }]
  30. }
  31. }
  32. });
  33. });
dohp0rv5

dohp0rv51#

解决方案如下:

  1. $.getJSON(link, function (data) {
  2. let po_names = [];
  3. let days_rem = [];
  4. for (let i = 0; i < data.length; i++) {
  5. po_names.push(data[i]["po_num"]);
  6. days_rem.push(data[i]["days_rem"]);
  7. }
  8. const ctx = document.getElementById("po-timeline-chart");
  9. const myChart = new Chart(ctx, {
  10. type: "horizontalBar",
  11. data: {
  12. labels: po_names,
  13. datasets: [
  14. {
  15. label: "Work Days Remaining",
  16. data: days_rem,
  17. backgroundColor: "rgb(0, 89, 178)",
  18. },
  19. ],
  20. },
  21. options: {
  22. tooltips: {
  23. enabled: true,
  24. callbacks: {
  25. // To change title in tooltip
  26. title: (data) => {
  27. return "This PO will run out on";
  28. },
  29. // To change label in tooltip
  30. label: (data) => {
  31. return date_end[data['index']];
  32. },
  33. },
  34. },
  35. legend: {
  36. align: "end",
  37. },
  38. scales: {
  39. xAxes: [
  40. {
  41. ticks: {
  42. beginAtZero: true,
  43. },
  44. },
  45. ],
  46. },
  47. },
  48. });
  49. });
展开查看全部

相关问题