Hallo Ich möchte einige Rechtecke Graphen konvertieren, wo ich Daten aus dem Titel nehme und es mit Chartist.js zu Donut-Graphen umwandeln. Ich dachte daran, dies mit for-Schleife durch alle Ct-Chart (es ist ein Tag) und Initiieren der Chartisten an jedem Tag und schiebe die Daten dort, aber das Problem ist, dass, wenn ich den Graphen initialisieren die Daten werden so nacheinander genommen in der ersten Donut-Grafik sind nur die ersten Daten, also Support3L (E) ohne AnnualLeave (E), die am zweiten Tag ist. Ich versuche Support3L (E) und AnnualLeave (E) in der ersten ct-Chart Grafik und Training (E) und Work (E) in der Sekunde zu haben.Werte aus der Schleife extrahieren und zum Graphen hinzufügen
ich glaube, das Problem in
istfor (i = 0; i < $graphContainer.length; i++) {
graphValue[i] = $graphsE.eq(i).width(),
graphClass[i] = $graphsE.eq(i).attr('class');
...
aber ich weiß nicht, wie alle graphsE Daten zu nehmen und es zu einem graphValue hinzuzufügen, oder ist es etwas anderes?
DEMO: https://jsfiddle.net/767ndb9s/11/
html:
<div title="13. 6." class="WorkDayInnerDivEven ct-chart">
<div title="Support3L (M)
8:00 - 16:00 (8h)" class="Event_Support3L work-day-graph" style="left: 40%; width: 30%; display: none;">
</div>
<div title="AnnualLeave (M)
9:00 - 17:00 (8h)" class="Event_AnnualLeave work-day-graph" style="left: 43.75%; width: 30%; display: none;">
</div>
<div title="Support3L (E)
8:00 - 16:00 (8h)" class="Event_Support3L work-day-graph" style="left: 40%; width: 30%; top: 85%; display: none;">
</div>
<div title="AnnualLeave (E)
9:00 - 17:00 (8h)" class="Event_AnnualLeave work-day-graph" style="left: 43.75%; width: 30%; top: 35%; display: none;">
</div>
</div>
<div title="14.6" class="WorkDayInnerDivEven ct-chart">
<div title="Training (M)
3:00 - 8:00 (5h)" class="Event_Training work-day-graph" style="left: 21.25%; width: 18.75%; display: none;">
</div>
<div title="Overtime (M)
8:00 - 16:00 (8h)" class="Event_Overtime work-day-graph" style="left: 40%; width: 30%; display: none;">
</div>
<div title="Work (M)
17:00 - 23:00 (6h)" class="Event_Work work-day-graph" style="left: 73.75%; width: 22.5%; display: none;">
</div>
<div title="Training (E)
3:00 - 8:00 (5h)" class="Event_Training work-day-graph" style="left: 21.25%; width: 18.75%; top: 35%; display: none;">
</div>
<div title="Overtime (E)
8:00 - 16:00 (8h)" class="Event_Overtime work-day-graph" style="left: 40%; width: 30%; top: 35%; display: none;">
</div>
<div title="Work (E)
17:00 - 23:00 (6h)" class="Event_Work work-day-graph" style="left: 73.75%; width: 22.5%; top: 35%; display: none;">
</div>
</div>
JS:
var circlesLayout = function() {
var $graphContainer = $('.ct-chart'),
//only the graph with (E) in title is used for donut graph not overtime
$graphsE = $graphContainer.find('.work-day-graph[title~="(E)"]').not('.work-day-graph[title~="Overtime"]'),
graphValue = [$graphsE],
graphClass = [];
//hide desktop rectangle-graph
$('.ct-chart div.work-day-graph').hide();
//add class circles (its for css)
$('html').addClass('circles');
//init chartist
for (i = 0; i < $graphContainer.length; i++) {
graphValue[i] = $graphsE.eq(i).width(),
graphClass[i] = $graphsE.eq(i).attr('class');
new Chartist.Pie($graphContainer[i], {
series: [{
value: graphValue[i],
className: graphClass[i]
}]
}, {
donut: true,
donutWidth: 10,
donutSolid: true,
startAngle: 270,
showLabel: false
});
}
}
circlesLayout();
Zunächst einmal danke für die Antwort. Ja, Sie haben Recht, aber ich habe mehrere Ct-Diagramm (30 und die Daten sind dynamisch, so kann ich sie nicht statisch deklarieren) Ich habe 2 nur für Demo verwendet, ist es also besser zu verwenden, dann auch Schleife, Daten an Ereignisse zu pushen? oder was ist der beste Weg? auch wie kann ich '.some()' umschreiben? –
Ich stimme zu, dass Daten dynamisch sein könnten, aber wenn Sie ein Diagramm mit gruppierten Daten erstellen wollen, dann müssen Sie ein Muster dafür finden und vielleicht andere Klassen hinzufügen, zB: 'group1',' group2' zu Ihren Elementen Wenn Sie die Daten eines Diagramms ändern möchten, das bereits gezeichnet wurde, haben Sie die Methode [update] (https://gionkunz.github.io/chartist-js/api-documentation.html#chartistbase-function-update) . Um jQuery-Funktionen [hier] (https://stackoverflow.com/search?tab=relectivity&q=override%20jQuery%20function) zu überschreiben, gibt es einige Q/A – ybrajim