Ich versuche, ein Dashboard mit einem Datumswähler zu erstellen.So erstellen Sie eine Interaktion mit SelectMenu in dc.js
Ich habe es für andere Figuren gemacht, aber es funktioniert hier nicht. Ich bin ziemlich neu mit DC und ich kann nicht herausfinden, ob es ein Problem der Gruppe oder ein Problem des Datumsformats (oder etwas anderes) ist.
Hier ist mein Code:
d3.csv("data/saccr_realloc_test.csv", function (error, saccr) {
var parser = d3.time.format("%d.%m.%Y");
//var formatter=d3.time.format("%d.%m.%Y");
saccr.forEach(function(d) {
d.date = parser.parse(d.date);
d.ead = +d.ead;
});
var cptyChart = dc.barChart("#dc-cpty-chart");
var lineChart = dc.lineChart("#volume-chart");
var ndx = crossfilter(saccr);
var dimdate = ndx.dimension(function(d) { return d.date;});
var dimline = ndx.dimension(function(d) { return d.date;});
var minDate = dimdate.bottom(1)[0].date;
var maxDate = dimdate.top(1)[0].date;
var dimcpty = ndx.dimension(function(d) { return d.cpty;});
var dimcptyC = ndx.dimension(function(d) { return d.cpty;});
var groupdate = dimline.group().reduceSum(function(d){return d.ead/1000000;});
var groupline = dimline.group().reduceSum(function(d){return d.ead/1000000;});
var groupcpty = dimcpty.group().reduceSum(function(d){return d.ead/1000000;});
var spendhisto=dimcptyC.group().reduceSum(function(d){return d.ead/1000000;});
var groupcptyC = remove_empty_bins(spendhisto);
//a dropdown widget
selectField=dc.selectMenu('#menuselect')
.multiple(true)
.dimension(dimcpty)
.group(groupcpty)
.numberVisible(10);
selectField2=dc.selectMenu('#menuselect2')
.dimension(dimdate)
.group(groupdate);
//a line chart
lineChart
.height(350)
.width(450)
.margins({top:10, right:50, bottom: 30, left: 50})
.dimension(dimline)
.group(groupline)
.renderArea(true)
.transitionDuration(500)
.x(d3.time.scale().domain([minDate,maxDate]))
.elasticY(true)
.renderHorizontalGridLines(true);
var barTip2=[]; //define some tips
cptyChart
.ordering(function(d){return -d.value;})
.height(154)
.width(1300)
.transitionDuration(500)
.dimension(dimcptyC)
.group(groupcptyC)
.margins({top:10, right:10, bottom: 2, left: 60})
.gap(1)
.elasticY(true)
.elasticX(true)
.x(d3.scale.ordinal().domain(dimcptyC))
.xUnits(dc.units.ordinal)
.renderHorizontalGridLines(true)
.yAxis().tickFormat(d3.format("s"))
dc.renderAll();
function remove_empty_bins(source_group) {
return {
all:function() {
return source_group.all().filter(function(d) {
return d.value > 0.00001;
});
}
};
}
});
https://fiddle.jshell.net/qxL2a6ev/
Wenn jemand eine Antwort hat, werde ich dankbar sein. Vielen Dank im Voraus.
Es wird dauern ein bisschen mehr Arbeit, um eine funktionierende jsfiddle zu erstellen, sorry. Wenn Sie damit fortfahren möchten, kann Ihnen [dieses Q & A] (http://stackoverflow.com/questions/22890836/loading-external-csv-file-in-jsfiddle) helfen, die Daten zu importieren, und Sie werden auch haben um auf Skripts von CDNs zu zeigen, anstatt relative Pfade zu verwenden (die offensichtlich nirgendwohin gehen werden). – Gordon
Ich habe deinen Code zu deiner Frage hinzugefügt, da die Geige nicht wirklich hilfreich ist, wenn sie nicht ausgeführt wird (und eine Verbindung zu jsfiddle ist normalerweise nicht erlaubt auf SO, weil die Verbindung irgendwann absterben wird). Ich sehe das Problem nicht sofort; Könnten Sie genauer beschreiben, welche Probleme Sie sehen? Sie verwenden die 2.1. * - Version von dc.js richtig? Erhalten Sie Fehler in der Browserkonsole? – Gordon
Die Geige funktioniert jetzt, danke für den Tipp: http://jsfiddle.net/3chM6/106/ Ich benutze die Version 2.1 und mein Problem ist, dass der Date Chooser keine Interaktion auslöst. Zum Beispiel, wenn ich das Datum "Sat15 April ..." wähle, erwartete ich auf dem BarChart einen eindeutigen Balken mit "Illumina Inc" zu sehen, aber nichts passiert ... –