Wie Sie die Gruppe SAPUI5 OData, bevor binden, zu kontrollieren auf client-Seite?
Habe ich einen odata-Liste beispielsweise in JSON-notation:
var data = [
{"category" : "A", "value" : 1, "group" : "x"},
{"category" : "B", "value" : 2, "group" : "y"},
{"category" : "C", "value" : 3, "group" : "x"},
{"category" : "A", "value" : 4, "group" : "y"},
{"category" : "A", "value" : 5, "group" : "x"}
];
Zunächst Filtere ich gegen group == x;
Werte Links sind:
var data = [
{"category" : "A", "value" : 1, "group" : "x"},
{"category" : "C", "value" : 3, "group" : "x"},
{"category" : "A", "value" : 5, "group" : "x"}
];
Nun würde ich die Gruppe (auf client Seite) durch die Kategorie und die Summe der Werte, so sollte das Ergebnis sein:
var data = [
{"category" : "A", "value" : 6, },
{"category" : "C", "value" : 3, },
];
Danach würde ich binden Sie das Modell um einige SAPUI5 Kontrolle.
Aber die Gruppierung Teil scheint nicht möglich.
Weiss einer eine generische Lösung für das problem?
Einen potentiellen Anwendungsfall:
var oDataset = new sap.viz.ui5.data.FlattenedDataset({
dimensions : [ {axis : 1, value : "{category}", name : "Category" } ],
measures : [ {value : "{value}", name : "Value" } ],
data : {
path : "/Data"
}
});
var oGraph = new sap.viz.ui5.Donut({
dataset : oDataset, //sap.viz.ui5.data.Dataset
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der folgende code funktioniert für mich. Abfrage Nordwind Order_Details service für ein paar Produkte, die über eine generische Bindung, map reduzieren, die zurückgegeben Bindungen und insgesamt die Menge der einzelnen, um die gesamte Menge verkauft, zeigen die Ergebnisse in ein Säulendiagramm.
sehen jsBin-Beispiel
Hinweis sap.viz stellt Array.der Prototyp.map und Array.der Prototyp.reduce-Funktionen
Für Ihr Endergebnis habe ich geschrieben, ein code. Es ist zwar nicht vollständig optimiert, aber es funktioniert gut.
Hier ist Ihre vollständige code
Wenn Sie wollen, vergleichen mithilfe von zwei parameter .Angenommen, Sie wollen zu vergleichen von der Kategorie als auch als Gruppe dann in groupByGroup Funktion, die Sie schreiben müssen wie folgt
entfernen und wenn(o.Gruppe=="x") von groupBy-Funktion.
Dieses problem kann leicht gelöst werden mit Unterstrich.js.Für Hilfe finden Sie unter dieser Frage
Underscore.js: Summe der Elemente in einer Sammlung
Hoffe, dies wird Ihnen helfen.