2013-06-17 12 views
7

Der Doc gibt ein kleines Beispiel über Balkendiagramm:Standard visueller Stil in Chart.js Balkendiagramm

var data = { 
    labels : ["January","February","March","April","May","June","July"], 
    datasets : [ 
     { 
      fillColor : "rgba(220,220,220,0.5)", 
      strokeColor : "rgba(220,220,220,1)", 
      data : [65,59,90,81,56,55,40] 
     }, 
     { 
      fillColor : "rgba(151,187,205,0.5)", 
      strokeColor : "rgba(151,187,205,1)", 
      data : [28,48,40,19,96,27,100] 
     } 
    ] 
} 

und dann das Diagramm new Chart(ctx).Bar(data);

mit zu schaffen, ist es möglich, die Ansicht definieren getrennt von der Daten dh definieren fillColor und strokeColor woanders nur data in datasets Objekte verlassen? Angenommen, ich möchte nur einen Satz in Datensätzen.

Ich möchte die Daten (Beschriftungen und Werte) im Back-End generieren und die Ansichtsdetails an das Front-End belassen.

Die offiziellen Optionen erwarten dies nicht.


Doc: http://www.chartjs.org/docs/#barChart

Antwort

5

Sie haben Recht, dass diese Eigenschaften nicht als globale Optionen unterstützt.

Glücklicherweise eine schnelle Lösung würden Sie nur ändern Quellenleitungen einschließlich erfordern ...

data.datasets[i].fillColor 

... auf, zum Beispiel:

config.fillColor || data.datasets[i].fillColor 

... was etwas ähnliches zu:

ctx.fillStyle = config.fillColor || data.datasets[i].fillColor; 

Das gleiche gilt für strokeColor.

Dann können Sie entweder eine fillColor-Eigenschaft zur globalen Konfiguration hinzufügen oder sie in Datasets einschließen.

+0

das macht den Job –

2

Sie Optionen ChartJS‘Optionen auf dem Server als auch auf der Basis von wenn needbe und passieren, dass als Parameter an

new Chart(ctx).Bar(data,options); 

wie

berechnen kann
new Chart(ctx).Bar(data,{fillColor : "rgba(151,187,205,0.5)", strokeColor :"rgba(151,187,205,1)",}); 

weil ChartJS eine Zusammenführung von Optionen in

tut
function mergeChartConfig(defaults,userDefined){ 
    var returnObj = {}; 
    for (var attrname in defaults) { returnObj[attrname] = defaults[attrname]; } 
    for (var attrname in userDefined) { returnObj[attrname] = userDefined[attrname]; } 
    return returnObj; 
} 

können Sie bearbeiten, dass Sie geben den gewünschten Effekt! https://github.com/nnnick/Chart.js/blob/master/Chart.js

+0

ist die Zusammenführung von Optionen in der offiziellen Version oder nur etwas, das Sie wünschen? 'fillColor' ist nicht im offiziellen Dokument im Abschnitt' options' beschrieben –

+0

@cggaurav nice find! Könnte Bob die 'aktuell gesetzten' Optionen von einem instanziierten Diagramm ziehen, um seine eigene Zusammenführung durchzuführen, um nichts, das bereits auf Standard zurückgesetzt wurde, zurückzusetzen, wenn er es nicht explizit wieder einstellt? – Skrivener

+0

Ah, von was ich verstehe, sind fillColor und strokeColor Eigenschaften von CTX und Sie müssen das ändern, indem Sie ChartJS abzweigen. ctx.fillStyle = YourfillColor; ctx.strokeStyle = YourstrokeColor; – cggaurav

Verwandte Themen