कुछ शोध के बाद उत्तर प्रत्येक प्रकार के चार्ट के लिए अलग-अलग मॉडल का उपयोग करना प्रतीत होता है जिसे आप बनाना चाहते हैं। नीचे दिए गए उदाहरण में मैं बरचार्ट और लाइनचार्ट के लिए मॉडल बना रहा हूं, जिसे पीएफ द्वारा समर्थित किसी अन्य चार्ट प्रकार का उपयोग करने के लिए बढ़ाया जा सकता है। ईएल में मैं सूची सरणियों (यानी [0]) को बुला रहा हूं, लेकिन यह आवश्यक नहीं है और यह सिर्फ मेरी प्राथमिकता थी। इसके अलावा मैंने पीएफ BarChartModel वर्ग (ExtendedBarChartModel) को बढ़ाया, लेकिन यदि आप मानक BarChartModel का उपयोग करते हैं तो उदाहरण ठीक काम करता है।
आशा है कि यह मदद करता है और किसी भी प्रतिक्रिया का स्वागत है:
<p:dataGrid id="modellist" value="#{chartTestBean.xbarmod[0]}" var="barmd">
<p:chart id="gridchart" type="bar" model="#{barmd}" style="width: 150px; height: 150px"/>
</p:dataGrid>
<p:dataGrid id="linegrid" value="#{chartTestBean.linemodelList[0]}" var="linemod">
<p:chart id="linechart" type="line" model="#{linemod}" style="width: 150px; height: 150px"/>
</p:dataGrid>
.... Other chart models as needed here
बार चार्ट मॉडल के लिए बीन विधियाँ:
public List<ExtendedBarModel> ModelList() {
xbarmod = new ArrayList();
sers = new ArrayList();
//chartType = "bar";
orig = guestChartFacade.findAll();
for (Enguestjoinchart j : orig) {
if (j.getCharttype().equals("bar")) {
setChartType("bar");
showBar = true;
idmid = j.getIdmid();
selJoin = guestChartFacade.find(idmid);
startDate = selJoin.getStartdate();
sers.add(idmid);
}
}
dsetList = setfacade.findTopsRange(sers);
processModelList();
return xbarmod;
}
public ExtendedBarModel processModelList() {
for (int i = 0; i < dsetList.size(); i++) {
idmid = dsetList.get(i).getIdmid();
pointList = pointFacade.pointRangeIdmid(idmid, startDate);
xtestmodel = new ExtendedBarModel("Barmodel " + dsetList.get(i).getIdmid());
chartSer = new ChartSeries();
for (Endatapoint p : pointList) {
chartSer.set(p.getRecords().getSeriesname(), p.getActualnum());
}
xtestmodel.addSeries(chartSer);
xbarmod.add(xtestmodel);
}
for (ExtendedBarModel b : xbarmod) {
xtestmodel = b;
return xtestmodel;
}
return null;
}
लाइन चार्ट के लिए:
public List<LineChartModel> makelinelistModel() {
linemodelList = new ArrayList();
linesers = new ArrayList();
orig = guestChartFacade.findAll();
for (Enguestjoinchart w : orig) {
if (w.getCharttype().equals("line")) {
idmidLine = w.getIdmid();
selJoinLine = guestChartFacade.find(idmidLine);
startDateLine = guestChartFacade.findStart(idmidLine);
endDateLine = guestChartFacade.findEnd(idmidLine);
linesers.add(idmidLine);
showLine = true;
}
}
if (linesers.size()==0) {
dsetlineList = null;
linemodelList = null;
}
else {
dsetlineList = setfacade.findTopsRange(linesers);
processLineModelList();
}
return linemodelList;
}
public LineChartModel processLineModelList() {
for (int i = 0; i < dsetlineList.size(); i++) {
idmidLine = dsetlineList.get(i).getIdmid();
pointListLine = pointFacade.pointLineRange(idmidLine, startDateLine, endDateLine);
linemodel = new LineChartModel();
chartSerLine = new ChartSeries();
Map<Object, Number> datMap = new HashMap();
DateAxis axis = new DateAxis();
for (Endatapoint p : pointListLine) {
chartSerLine.set(p.getPointdate().toString(), p.getActualnum());
linemodel.addSeries(chartSerLine);
}
linemodelList.add(linemodel);
linemodel.getAxes().put(AxisType.X, axis);
}
for (LineChartModel m : linemodelList) {
linemodel = m;
return linemodel;
}
return linemodel;
}
.... Other chart models