Ich verwende Highcharts, um zwei Diagramme in eckigen zeichnen (aber ich don t; t denke, dass das wichtig ist oder dieses Problem) - Tortendiagramm und Balkendiagramm. Ich habe zwei Diagramme definiert, und ich möchte Drilldown in Balkendiagramm auslösen, wenn ich auf Kreisdiagramm klicke. Außerdem sollte ein Drilldown für dieselben Daten durchgeführt werden. Dies sind Diagrammeinstellungen:Manuell aktivieren Drilldown in Highcharts Diagramm durch Klicken auf ein anderes Diagramm
import Highcharts from 'highcharts/highstock';
export const MEDIA_CHART = {
chart: {
height: 350,
type: 'pie',
width: 300
},
drilldown: {
allowPointDrilldown: true
},
legend: {
borderWidth: 0,
enabled: true,
symbolRadius: 0,
title: {
text: ''
},
useHTML: true,
/*eslint-disable*/
labelFormatter: function() {
return '<div style="max-width:150px;"><span style="width:100%;display:block;text-align:center;">' + this.name + '</span><span>' + Highcharts.numberFormat(this.y, 2, ',', '.') + '€</span></div>';
}
/*eslint-enable*/
},
plotOptions: {
pie: {
center: ['48%', '42%'],
showInLegend: true
},
series: {
allowPointSelect: true,
cursor: 'pointer',
/*eslint-disable*/
events: {
click: function (event) {
console.log(TACTIC_CHART.chart.drilldownLevels.length);
}
},
/*eslint-enable*/
dataLabels: {
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %'
}
}
},
series: [{
size: '95%',
innerSize: '60%'
}],
tooltip: {
borderWidth: 0,
backgroundColor: '#37474F',
headerFormat: '',
pointFormat: '{point.name}: {point.y:,.2f}€',
style: {
color: '#fff',
padding: 0,
fontWeight: 700
},
useHTML: true
}
};
export const TACTIC_CHART = {
chart: {
type: 'bar',
height: '100%'
},
colors: ['#969696', '#F1292E', '#A0CB0E'],
drilldown: {
allowPointDrilldown: true
},
xAxis: {
title: {
text: null
},
type: 'category'
},
yAxis: {
min: 0,
title: {
text: 'Budget €',
align: 'high'
},
labels: {
overflow: 'justify'
}
},
tooltip: {
enabled: true,
borderWidth: 0,
backgroundColor: '#37474F',
headerFormat: '',
pointFormat: '{series.name}: {point.y:,.2f}€',
style: {
color: '#fff',
padding: 0,
fontWeight: 700
},
useHTML: true,
valueSuffix: ' €'
},
title: {
align: 'left'
},
plotOptions: {
bar: {
dataLabels: {
enabled: true,
/*eslint-disable*/
formatter: function() {
return Highcharts.numberFormat(this.y, 2, ',', '.') + '€';
}
/*eslint-enable*/
}
}
},
legend: {
enabled: true,
layout: 'horizontal',
align: 'center',
verticalAlign: 'top',
floating: true,
borderWidth: 1,
backgroundColor: '#FFFFFF',
shadow: true
}
};
In diesem Teil klicken Sie auf Ich fange Kreisdiagramm:
events: {
click: function (event) {
console.log(TACTIC_CHART.chart.drilldownLevels.length);
}
},
ich versucht, dies zu bekommen, aber ich bekomme Fehler can't get length of undefined
. Ich habe jede mögliche Lösung ausprobiert, die ich gefunden habe, aber ohne Glück. Problem ist, dass ich Daten für Balkendiagramm beibehalten muss, also kann ich es nicht neu zeichnen, ich muss Drilldown aktivieren, wenn es möglich ist. Danke allen für die Hilfe!
Hallo @d_paul, das ist genau das, was ich sah! Lass es mich einfach in den nächsten Tagen versuchen, da ich zu einer anderen dringenden Aufgabe übergehe, und sobald ich es getestet habe, wenn alles in Ordnung ist, werde ich deine Antwort akzeptieren. Sorry für die Verzögerung, aber das ist der Job :) – MrCkobe
Kein Problem, froh, dass es hilft (oder zumindest sieht hilfreich :)). –
Hallo @d_paul Ich schaffte es fast zum arbeiten zu bringen. Ich bekomme 'Kann die Eigenschaft 'levelNumber' von 'undefined' in DrillUp nicht lesen. Weißt du, was das sein kann? Danke für die Hilfe! :) – MrCkobe