Wenn der js-Code aus Post #11 mit smartVISU2.8 nicht funktioniert (ich habe es nicht getestet), dann sollte folgender hoffentlich gehen.
Javascript-Code (z.B. als diagram.js speichern):
Javascript-Code (z.B. als diagram.js speichern):
Code:
// ----- plot.pie ---------------------------------------------------------- $(document).delegate('div[data-widget="plot.pie"]', { 'update': function (event, response) { event.stopPropagation(); var isLabel = false; var isLegend = false; var labels = []; if ($(this).attr('data-label')) { labels = $(this).attr('data-label').explode(); isLabel = true; } if ($(this).attr('data-mode') == 'legend') { isLegend = true; isLabel = false; } var colors = []; if ($(this).attr('data-color')) { colors = $(this).attr('data-color').explode(); } var val = 0; for (i = 0; i < response.length; i++) { val = val + response[i]; } var data = []; for (i = 0; i < response.length; i++) { data[i] = { name: labels[i], y: response[i] * 100 / val, color: (colors[i] ? colors[i] : null) } } // design var headline = $(this).attr('data-text'); var position = 'top'; if ($(this).attr('data-text') == '') { position = 'bottom'; } // draw the plot $(this).highcharts({ chart: { plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false, type: 'pie' }, legend: { align: 'center', verticalAlign: position, x: 0, y: 20 }, title: { text: headline }, tooltip: { formatter: function() { return this.point.name + ' <b>' + this.y.transUnit('%') + '</b>'; }, }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', dataLabels: { enabled: isLabel, formatter: function() { return this.point.name + ' <b>' + this.y.transUnit('%') + '</b>'; }, style: { color: null } }, showInLegend: isLegend } }, series: [{ name: headline, colorByPoint: true, data: data }], }); }, 'point': function (event, response) { event.stopPropagation(); var val = 0; var data = []; var items = $(this).attr('data-item').explode(); for (i = 0; i < items.length; i++) { if (response[i]) { val = val + +response[i]; } else { val = val + +widget.get(items[i]); } } for (i = 0; i < items.length; i++) { if (response[i]) { data[i] = +response[i] * 100 / val; } else { data[i] = +widget.get(items[i]) * 100 / val; } } var chart = $(this).highcharts(); for (i = 0; i < data.length; i++) { chart.series[0].data[i].update(data[i]); } chart.redraw(); } });
Kommentar