java - How to show time (HH:mm) in bar chart value expression? -


i have designed bar chart string value in categorie crane_number , value expression remaining_time java.util.date.

data

when run report, got error below.

grave:   java.lang.classcastexception: java.util.date cannot cast java.lang.number     @ net.sf.jasperreports.charts.fill.jrfillcategoryseries.evaluate(jrfillcategoryseries.java:141)     @ net.sf.jasperreports.charts.fill.jrfillcategorydataset.customevaluate(jrfillcategorydataset.java:110)     @ net.sf.jasperreports.engine.fill.jrfillelementdataset.evaluate(jrfillelementdataset.java:172)     @ net.sf.jasperreports.engine.fill.jrcalculator.calculatevariables(jrcalculator.java:187)     @ net.sf.jasperreports.engine.fill.jrverticalfiller.filldetail(jrverticalfiller.java:735)     @ net.sf.jasperreports.engine.fill.jrverticalfiller.fillreportstart(jrverticalfiller.java:255)     @ net.sf.jasperreports.engine.fill.jrverticalfiller.fillreport(jrverticalfiller.java:115)     @ net.sf.jasperreports.engine.fill.jrbasefiller.fill(jrbasefiller.java:582)     @ net.sf.jasperreports.engine.fill.basereportfiller.fill(basereportfiller.java:414)     @ net.sf.jasperreports.engine.fill.jrfiller.fill(jrfiller.java:121)     @ net.sf.jasperreports.engine.jasperfillmanager.fill(jasperfillmanager.java:667)     @ net.sf.jasperreports.engine.jasperfillmanager.fill(jasperfillmanager.java:648)     @ net.sf.jasperreports.engine.jasperfillmanager.fillreport(jasperfillmanager.java:970) 

is possibile show remaining time hh:mm in barchart on y-axis?

to create bar chart hh:mm on range axis, use jrchartcustomizer

i show full example of how can achieved using chart customizer, library renderer charts used jasper-reports .

the jrchartcustomizer

public class charthhmmcustomizer implements jrchartcustomizer {      @override     public void customize(jfreechart jfchart, jrchart jrchart) {          //get category plot         categoryplot plot = (categoryplot) jfchart.getplot();          //crete date axis         dateaxis yaxis = new dateaxis();         //override date format         yaxis.setdateformatoverride(new simpledateformat("hh:mm"));         //customize tick unit         yaxis.settickunit(new datetickunit(datetickunittype.hour, 1));         //set range axis         plot.setrangeaxis(yaxis);          //adding customize item label renderer view valus on barchart         categoryitemrenderer renderer = ((categoryplot) jfchart.getplot()).getrenderer();         renderer.setbaseitemlabelgenerator(new standardcategoryitemlabelgenerator("{2}",new simpledateformat("hh:mm")));         renderer.setbaseitemlabelsvisible(true);         itemlabelposition position = new itemlabelposition(itemlabelanchor.outside12, textanchor.top_center);         renderer.setbasepositiveitemlabelposition(position);     } } 

the jrxml

<?xml version="1.0" encoding="utf-8"?> <jasperreport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="timebarchart" pagewidth="595" pageheight="842" columnwidth="555" leftmargin="20" rightmargin="20" topmargin="20" bottommargin="20" uuid="f71aa6b8-70ce-4de9-9e62-f8bd196e40f8">     <querystring>         <![cdata[]]>     </querystring>     <field name="cranenumber" class="java.lang.string"/>     <field name="remaningtime" class="java.util.date"/>     <columnheader>         <band height="20">             <statictext>                 <reportelement x="0" y="0" width="100" height="20" uuid="af39006a-cd21-46c1-b74f-69fd3c570031"/>                 <textelement verticalalignment="middle">                     <font isbold="true"/>                 </textelement>                 <text><![cdata[cranenumber]]></text>             </statictext>             <statictext>                 <reportelement x="100" y="0" width="100" height="20" uuid="83918a9e-3cd4-4581-8304-35246f8db5a9"/>                 <textelement verticalalignment="middle">                     <font isbold="true"/>                 </textelement>                 <text><![cdata[remaningtime]]></text>             </statictext>         </band>     </columnheader>     <detail>         <band height="20" splittype="stretch">             <textfield pattern="hh:mm">                 <reportelement x="100" y="0" width="100" height="20" uuid="a699d0ea-03fa-4232-8bc3-7b6c72c8e13c"/>                 <textelement verticalalignment="middle"/>                 <textfieldexpression><![cdata[$f{remaningtime}]]></textfieldexpression>             </textfield>             <textfield>                 <reportelement x="0" y="0" width="100" height="20" uuid="bbb040e5-4958-435a-90eb-b52f231ed5cd"/>                 <textelement verticalalignment="middle"/>                 <textfieldexpression><![cdata[$f{cranenumber}]]></textfieldexpression>             </textfield>         </band>     </detail>     <summary>         <band height="185" splittype="stretch">             <barchart>                 <chart isshowlegend="false" customizerclass="my.package.charthhmmcustomizer">                     <reportelement x="66" y="29" width="356" height="141" uuid="60bdb0d1-8c39-4fdc-98b9-d1c5458cb665"/>                     <charttitle/>                     <chartsubtitle/>                     <chartlegend/>                 </chart>                 <categorydataset>                     <categoryseries>                         <seriesexpression><![cdata["my cranes"]]></seriesexpression>                         <categoryexpression><![cdata[$f{cranenumber}]]></categoryexpression>                         <valueexpression><![cdata[$f{remaningtime}.gettime()]]></valueexpression>                     </categoryseries>                 </categorydataset>                 <barplot>                     <plot/>                     <itemlabel/>                     <categoryaxisformat>                         <axisformat/>                     </categoryaxisformat>                     <valueaxislabelexpression/>                     <valueaxisformat>                         <axisformat/>                     </valueaxisformat>                 </barplot>             </barchart>         </band>     </summary> </jasperreport> 

note: add customizerclass="my.package.charthhmmcustomizer"to chart component , valueexpression set $f{remaningtime}.gettime(), hence time in milliseconds (a number)

some data

+-------------+--------------+ | cranenumber | remaningtime | +-------------+--------------+ | crane1      | 04:20        | | crane2      | 02:13        | | crane3      | 06:31        | +-------------+--------------+ 

output

barchart


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -