Ich versuche, Diagramme zu erstellen, die dynamisch auf Werte von einer DB-Serie über die Art der Charts, Chart-Modelle und Chart reagieren.Primefaces 5.0 Chart - wie Grafik-Modelle und Serien dynamisch vollständig aus der Datenbank erstellen Werte
Die meisten Beispiele und Fragen, die ich gesehen habe scheinen nur mit statisch definieren Chart-Modelle und Kartenserie zu beschäftigen. Ich möchte dynamisch steuern, welche Art von Diagrammen angezeigt wird, die Diagrammmodelle und -serien werden vollständig angezeigt, indem die Werte in der Datenbank geändert werden (über eine Back-Office- oder Inhaltsverwaltungsschnittstelle). Ich habe das Back-Office-Content-Management-System (CMS) bereits entwickelt.
Diese Frage ist, wie Sie die PF präsentieren Beispiele oder APIs zu einem völlig dynamisches Modell anzupassen, dass die Back-Office-Typ, Modell und eine Reihe von Diagrammen definieren lässt.
Das folgende Beispiel versucht ein Balkendiagramm von 3 mySql Tabellen zu erzeugen:
1) Endataset: a table 'idmid' 2) Endataseries enthaltend die durch Primärschlüssel definiert Datensätze: eine Tabelle, die die Datenreihe enthält, welche aufweist eine OneToMany Beziehung mit Endataset - definiert durch ‚recid‘ 3) Endatapoint: Tabelle mit den tatsächlichen Datenwerte (Zahlen und Daten), die durch ‚PointID‘
ich möchte ein BarChartModel und Chart für jeden Datensatz (idmid) zurückzukehren als eine Liste von verschiedenen Charts nach dem, was vom Backoffice eingestellt wird. Mit anderen Worten, ich möchte Diagrammmodelle und -serien dynamisch erstellen, je nachdem wie viele Werte (Datasets) sich in der Datenbank befinden. Ich kann ein Diagramm mit dem folgenden Beispiel zurückgeben, aber es zeigt 3 Serien in 2 derselben Modelle, anstatt 2 Serien in einem Modell und 1 Serie in einem zweiten Modell (was mein Ziel ist).
Mein JSF:
<p:dataGrid id="cgridtest" value="#{chartTestBean.testTopList}" var="chars">
<p:panel>
<p:chart id="gridcharts" type="#{chartTestBean.chartType}"
model="#{chartTestBean.testModel}"style="width: 150px; height: 150px"/>
</p:panel>
<h:outputText value="#{chars.idmid}"/>
</p:dataGrid>
Die Bean-Methoden:
public List<Endataset> getTestTopList() {
testTopList = processChartList();
return testTopList;
}
public List<Endataset> processChartList() {
chartType = "bar";
orig = guestChartFacade.findAll();
sers = new ArrayList();
for (int n = 0; n < orig.size(); n++) {
idmid = orig.get(n).getIdmid();
selJoin = guestChartFacade.find(idmid);
startDate = selJoin.getStartdate();
sers.add(idmid);
}
dsetList = setfacade.findTopsRange(sers);
testTopList = new ArrayList();
barmod = new ArrayList();
for (int d = 0; d < dsetList.size(); d++) {
testModel = new BarChartModel();
chartSer = new ChartSeries();
idmid = dsetList.get(d).getIdmid();
selSet = setfacade.find(idmid);
testTopList.add(selSet);
barmod.add(testModel);
showMods();
}
return testTopList;
}
public BarChartModel showMods() {
for (BarChartModel t : barmod) {
testModel = t;
pointList = new ArrayList();
pointList = pointFacade.pointRangeIdmid(idmid, startDate);
for (Endatapoint p : pointList) {
chartSer.set(p.getRecords().getSeriesname(), p.getActualnum());
}
testModel.addSeries(chartSer);
return testModel;
}
return null;
}
Das folgende Beispiel soll auf die Aktienkurse von beiden Unternehmen zu einem bestimmten Zeitpunkt zurück. Es gibt eine dritte Serie, die in einem separaten Diagrammmodell zurückgegeben werden sollte, aber wie unten dargestellt, sind alle 3-Serie in einem einzigen Modell erscheinen was darauf schließen lässt, dass separate Instanzen des BarChartModel sind nicht für jeden Datensatz erstellt werden. Informationen zum Erstellen separater Diagrammmodelle für jedes Dataset anhand dieses Beispiels erhalten. Vielen Dank im Voraus für jede Hilfe.