2012-07-20 6 views
5

Gibt es eine Möglichkeit, eine Dimension für ein Attribut mit einem oder mehreren Werten zu erstellen? Zum BeispielDiskreter Filter für D3 Crossfilter Abmessungen

{quantity: 2, total: 190, tip: 100, items: ["apple","sandwich"], 
{quantity: 2, total: 190, tip: 100, items: ["ice-cream"]}, 
{quantity: 1, total: 300, tip: 200, items: ["apple", "coffee"]} 

Mein Ziel ist es, einen Querfilter zu erstellen, die Einträge entlang einer Dimension herausfiltern kann, die Ordinalwerte hat. Gibt es eine Möglichkeit, einen Filter/eine Dimension zu schreiben, die es mir erlaubt, zu sagen "Ich möchte alle Einträge, die den Punkt" Apfel "haben?

Die einzige Problemumgehung, die ich mir vorstellen kann, ist das Erstellen einer Dimension für jedes Element. Wie so:

var paymentsByApple = payments.dimension(function(d) { return $.inArray("apple", d.items); }); 
var paymentsByCoffee = payments.dimension(function(d) { return $.inArray("coffee", d.items); }); 
// and one for every possible item 

Das Hauptproblem ist, dass ich will nicht aufzählen und hart Code, all die verschiedenen Objekte. Darüber hinaus kann ich am Ende viele verschiedene mögliche Sachen haben. Gibt es einen klügeren Weg, dies zu tun?

Vielen Dank im Voraus!

Antwort

2

Was ist mit der Änderung Ihres Datenmodells? Ich denke, dass die Verwendung von:

[{id: 1, quantity: 1, total: 100, tip: 50, item: "apple"}, 
{id: 1, quantity: 1, total: 90, tip: 50, item: "sandwich"}, 
{id: 2, quantity: 1, total: 190, tip: 100, item: "ice-cream"}, 
{id: 3, quantity: 1, total: 300, tip: 100, item: "apple"}, 
{id: 3, quantity: 1, total: 300, tip: 100, item: "coffee"}] 

Vielleicht können Sie die Summen von id berechnen reduceSum

3

Mit Blick auf das gleiche Problem hier verwenden und nicht eine einfache Abhilfe mit den aktuellen lib Features sehen, this sehen.

Das Problem mit dem Ändern des Datenmodells auf eine einzelne Wertdimension, wie von Pablo Navaro vorgeschlagen, ist, dass Sie sicherstellen müssen, dass die Statistiken für andere Dimensionen nicht verzerrt sind (Doppelzählung, Korrekturmittel, ....)

Ich hoffe, ein Filter zu sehen, der auf mehrwertiger Dimension arbeitet, oder um mehr Zeit zu haben, in die Codebasis einzutauchen, um eine ...

vorzuschlagen
Verwandte Themen