Setting the min and max date on x-axis of birt chart through scirpt [message #488264] |
Sun, 27 September 2009 04:27 |
Roopa Messages: 20 Registered: July 2009 |
Junior Member |
|
|
Code:
ChartWithAxes cwaBar = ChartWithAxesImpl.create();
cwaBar.setType("Bar Chart");//$NON-NLS-1$
cwaBar.setSubType("Side-by-side");//$NON-NLS-1$
cwaBar.getTitle().setVisible(false);
cwaBar.getLegend().setVisible(false);
cwaBar.setOrientation(Orientation.VERTICAL_LITERAL);
cwaBar.getBlock().setBounds(BoundsImpl.create(0, 0, 450, 175));
cwaBar.getPlot().getClientArea().getOutline().setVisible(tru e);
SimpleDateFormat shortDateFormat = new SimpleDateFormat(WebReport.URLDateTimeFormat);
Calendar repStart = Calendar.getInstance();
Calendar repStop = Calendar.getInstance();
try {
String strrt_date="11-June-07";
String end_Date = "05-Dec-09";
DateFormat formatter ;
Date date1,date2 ;
formatter = new SimpleDateFormat("dd-MMM-yy");
date1 = (Date)formatter.parse(strrt_date);
java.lang.Long longDate1=date1.getTime();
date2=(Date)formatter.parse(end_Date);
java.lang.Long longDate2=date2.getTime();
cwaBar.setScript("var maxVal =0.0;" +
"riskValues = new Array("
+ riskValuesInStr
+ "); yAxisLabels = new Array('',"
+ getStringValues(responseText)
+ "); function beforeDrawDataPoint( dph, fill, context ) { var value1 = riskValues[dph.getIndex()]; if(value1 == 3) { fill.setRed(255); fill.setGreen(0); fill.setBlue(0); } else if (value1 == 2) { fill.setRed(255); fill.setGreen(255); fill.setBlue(0); } else if (value1 == 1) { fill.setRed(0); fill.setGreen(255); fill.setBlue(0); } else { fill.setRed(255); fill.setGreen(255); fill.setBlue(255); } }"
+ " function beforeDrawAxisLabel(axis, label, scriptContext) { importPackage(Packages.org.eclipse.birt.chart.model.attribut e); if (axis.getType() == AxisType.LINEAR_LITERAL) { for (var i=0;i<yAxisLabels.length;i++) { var searchStr = label.getCaption().getValue()+':'; var index = yAxisLabels[i].indexOf(searchStr,0); if (index==0) { label.getCaption().setValue(yAxisLabels[i].substring(searchS tr.length)); dataSet = true; return; } } label.getCaption().setValue(\"\"); } } function beforeDrawSeries( series, seriesRenderer, context ) { if( seriesRenderer.getClass() == \"class org.eclipse.birt.chart.render.Bar\"){ srh = seriesRenderer.getSeriesRenderingHints(); dph1 = srh.getDataPoints(); var ln = dph1.length; if (ln<6) context.getChartInstance().setUnitSpacing(90); } }"
+" function beforeGeneration(chart, icsc) {importPackage( Packages.org.eclipse.birt.chart.model.data.impl ); "
+ " var enable_auto_scale = icsc.getExternalContext().getScriptable().getParameterValue( \ "AutoScale\"); "
+ " importPackage( Packages.java.io ); "
+" xAxis = chart.getPrimaryBaseAxes()[0]; "
+" xscale = xAxis.getScale(); "
+" if( enable_auto_scale == true){ "
+" xscale.unsetStep(); "
+" xscale.unsetStepNumber(); "
+" }else{ "
// +" xscale.setStep (10); "
+" xscale.setMin(DateTimeDataElementImpl.create("+longDate1+")); "
+" xscale.setMax(DateTimeDataElementImpl.create("+longDate2+")) ;"
+" } xAxis.setScale(xscale);} ");
System.out.println("***********Script****"+ cwaBar.getScript());
Axis xAxisPrimary = cwaBar.getPrimaryBaseAxes()[0];
xAxisPrimary.setCategoryAxis(true);
xAxisPrimary.getTitle().getCaption().setValue("Date");//$NON-NLS-1$
xAxisPrimary.getMajorGrid().getLineAttributes().setStyle(
LineStyle.DOTTED_LITERAL);
xAxisPrimary.getMajorGrid().getLineAttributes().setVisible(t rue);
xAxisPrimary.getMajorGrid().getLineAttributes().setColor(
ColorDefinitionImpl.GREY());
xAxisPrimary.setType(AxisType.DATE_TIME_LITERAL);
xAxisPrimary.setFormatSpecifier(JavaDateFormatSpecifierImpl
.create(dateFormat));//$NON-NLS-1$
// Scale xScale = xAxisPrimary.getScale();
// xScale.setMin(DateTimeDataElementImpl.create(longDate1));
// xScale.setMax(DateTimeDataElementImpl.create(longDate2));
// xAxisPrimary.setScale(xScale);
.
.
.
}
I also tried setting outside the scripy, but it doesnt seem to be working.
Thanks in advance,
Roopa
|
|
|
Re: Setting the min and max date on x-axis of birt chart through scirpt [message #488402 is a reply to message #488264] |
Mon, 28 September 2009 14:40 |
|
Can you try a script like:
function beforeGeneration(chart, icsc)
{
importPackage( Packages.org.eclipse.birt.chart.model.data.impl );
importPackage( Packages.org.eclipse.birt.chart.util );
xAxis = chart.getBaseAxes()[0];
yAxis = chart.getOrthogonalAxes( xAxis, true)[0]
scale = xAxis.getScale();
scale.setMin( DateTimeDataElementImpl.create( new CDateTime(2001,1,1) ) );
scale.setMax( DateTimeDataElementImpl.create( new CDateTime(2009,1,10) ) );
}
Roopa wrote:
> Code:
>
> ChartWithAxes cwaBar = ChartWithAxesImpl.create();
> cwaBar.setType("Bar Chart");//$NON-NLS-1$
> cwaBar.setSubType("Side-by-side");//$NON-NLS-1$
> cwaBar.getTitle().setVisible(false);
> cwaBar.getLegend().setVisible(false);
> cwaBar.setOrientation(Orientation.VERTICAL_LITERAL);
> cwaBar.getBlock().setBounds(BoundsImpl.create(0, 0, 450, 175));
> cwaBar.getPlot().getClientArea().getOutline().setVisible(tru e);
>
> SimpleDateFormat shortDateFormat = new
> SimpleDateFormat(WebReport.URLDateTimeFormat);
> Calendar repStart = Calendar.getInstance();
> Calendar repStop = Calendar.getInstance();
>
> try {
> String strrt_date="11-June-07";
> String end_Date = "05-Dec-09";
> DateFormat formatter ; Date date1,date2 ;
> formatter = new SimpleDateFormat("dd-MMM-yy");
> date1 = (Date)formatter.parse(strrt_date);
> java.lang.Long longDate1=date1.getTime();
> date2=(Date)formatter.parse(end_Date);
> java.lang.Long longDate2=date2.getTime();
> cwaBar.setScript("var maxVal =0.0;" +
> "riskValues = new Array("
> + riskValuesInStr
> + "); yAxisLabels = new Array('',"
> + getStringValues(responseText)
> + "); function beforeDrawDataPoint( dph, fill,
> context ) { var value1 = riskValues[dph.getIndex()]; if(value1 ==
> 3) { fill.setRed(255); fill.setGreen(0); fill.setBlue(0);
> } else if (value1 == 2) { fill.setRed(255);
> fill.setGreen(255); fill.setBlue(0); } else if (value1 == 1)
> { fill.setRed(0); fill.setGreen(255); fill.setBlue(0);
> } else { fill.setRed(255); fill.setGreen(255);
> fill.setBlue(255); } }"
> + " function beforeDrawAxisLabel(axis, label,
> scriptContext) {
> importPackage(Packages.org.eclipse.birt.chart.model.attribut e); if
> (axis.getType() == AxisType.LINEAR_LITERAL) { for (var
> i=0;i<yAxisLabels.length;i++) { var searchStr =
> label.getCaption().getValue()+':'; var index =
> yAxisLabels[i].indexOf(searchStr,0); if (index==0) {
> label.getCaption().setValue(yAxisLabels[i].substring(searchS
> tr.length)); dataSet = true; return; } }
> label.getCaption().setValue(\"\"); } } function beforeDrawSeries(
> series, seriesRenderer, context ) { if( seriesRenderer.getClass() ==
> \"class org.eclipse.birt.chart.render.Bar\"){ srh =
> seriesRenderer.getSeriesRenderingHints(); dph1 = srh.getDataPoints();
> var ln = dph1.length; if (ln<6)
> context.getChartInstance().setUnitSpacing(90); } }"
> +" function beforeGeneration(chart,
> icsc) {importPackage( Packages.org.eclipse.birt.chart.model.data.impl ); "
> + " var enable_auto_scale =
> icsc.getExternalContext().getScriptable().getParameterValue( \
> "AutoScale\"); "
> + " importPackage( Packages.java.io ); "
> +" xAxis = chart.getPrimaryBaseAxes()[0]; "
> +" xscale = xAxis.getScale(); "
> +" if( enable_auto_scale == true){ "
> +" xscale.unsetStep(); "
> +" xscale.unsetStepNumber(); "
> +" }else{ "
> // +" xscale.setStep (10); "
> +"
> xscale.setMin(DateTimeDataElementImpl.create("+longDate1+")); "
> +"
> xscale.setMax(DateTimeDataElementImpl.create("+longDate2+")) ;"
> +" } xAxis.setScale(xscale);} ");
>
>
>
> System.out.println("***********Script****"+ cwaBar.getScript());
> Axis xAxisPrimary = cwaBar.getPrimaryBaseAxes()[0];
> xAxisPrimary.setCategoryAxis(true);
> xAxisPrimary.getTitle().getCaption().setValue("Date");//$NON-NLS-1$
> xAxisPrimary.getMajorGrid().getLineAttributes().setStyle(
> LineStyle.DOTTED_LITERAL);
> xAxisPrimary.getMajorGrid().getLineAttributes().setVisible(t rue);
> xAxisPrimary.getMajorGrid().getLineAttributes().setColor(
> ColorDefinitionImpl.GREY());
> xAxisPrimary.setType(AxisType.DATE_TIME_LITERAL);
> xAxisPrimary.setFormatSpecifier(JavaDateFormatSpecifierImpl
> .create(dateFormat));//$NON-NLS-1$
> // Scale xScale = xAxisPrimary.getScale();
> // xScale.setMin(DateTimeDataElementImpl.create(longDate1));
> // xScale.setMax(DateTimeDataElementImpl.create(longDate2));
> // xAxisPrimary.setScale(xScale);
>
>
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.04303 seconds