alphanodes / additionals

Redmine plugin for easy customization of settings, text and content display by using personal or role-based dashboards (drag&drop), providing wiki macros and act as library for other plugins.
https://www.redmine.org/plugins/additionals
GNU General Public License v2.0
131 stars 43 forks source link

feature: chart for CustomField block in Dashboard #91

Open tianyang-abc opened 3 years ago

tianyang-abc commented 3 years ago

I want Redmine to be a data presentation platform. Source number is fetched from a lot of CustomFields that updated by background RAKE TASK or user manually. I want a pie chart and/or a report to display the proportion as to another Issue property from custom field, ie sales volume as to business department.

tianyang-abc commented 3 years ago

Following plugin's document, I create my own dashboard BLOCK like this.

_test.html.slim:

= additionals_library_load :chartjs

canvas id="myChart"

javascript:
  var ctx = document.getElementById('myChart');
  var myChart = new Chart(ctx, {
      type: 'bar',
      data: {
          labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
          datasets: [{
              label: '# of Votes',
              data: [12, 19, 3, 5, 2, 13],
              backgroundColor: [
                  'rgba(255, 99, 132, 0.2)',
                  'rgba(54, 162, 235, 0.2)',
                  'rgba(255, 206, 86, 0.2)',
                  'rgba(75, 192, 192, 0.2)',
                  'rgba(153, 102, 255, 0.2)',
                  'rgba(255, 159, 64, 0.2)'
              ],
              borderColor: [
                  'rgba(255, 99, 132, 1)',
                  'rgba(54, 162, 235, 1)',
                  'rgba(255, 206, 86, 1)',
                  'rgba(75, 192, 192, 1)',
                  'rgba(153, 102, 255, 1)',
                  'rgba(255, 159, 64, 1)'
              ],
              borderWidth: 1
          }]
      },
      options: {
          scales: {
              yAxes: [{
                  ticks: {
                      beginAtZero: true
                  }
              }]
          }
      }
  });
  myChart.canvas.style.height = '250px';
  myChart.canvas.style.width = '400px';