Hi,
i want to invoke a JavaScript function on clicking the bubble from bubble chart.
i had set the URL as below
xyitemrenderer.setURLGenerator(new StandardXYURLGenerator("javascript:alert('1');"));
This is returning me
href="javascript:alert('1');?series=0&item=0"
i want only href="javascript:alert('1');
how can i proceed..
For your reference if required :
package com.jasper.web;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Paint;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JScrollPane;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.labels.StandardXYZToolTipGenerator;
import org.jfree.chart.labels.XYToolTipGenerator;
import org.jfree.chart.labels.XYZToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.xy.XYBubbleRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.urls.StandardCategoryURLGenerator;
import org.jfree.chart.urls.StandardXYURLGenerator;
import org.jfree.chart.urls.StandardXYZURLGenerator;
import org.jfree.chart.urls.XYURLGenerator;
import org.jfree.chart.urls.XYZURLGenerator;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.data.xy.XYZDataset;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class BubbleChartController implements Controller {
private String successView;
public String getSuccessView() {
return successView;
}
public void setSuccessView(String successView) {
this.successView = successView;
}
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setContentType("text/html");
JFreeChart jfreechart = createChart(createDataset());
try {
final ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
final File file = new File(request.getRealPath("/BubbleChart.png"));
ChartUtilities.saveChartAsPNG(file, jfreechart, 600, 400, info);
File file2 = new File(request.getRealPath("/BubbleChart.html"));
final OutputStream out = new BufferedOutputStream(new FileOutputStream(file2));
// final PrintWriter writer = new PrintWriter(out);
final PrintWriter writer = response.getWriter();
writer.println("<HTML>");
writer.println("<HEAD><TITLE>Bubble Chart</TITLE></HEAD>");
writer.println("<BODY>");
ChartUtilities.writeImageMap(writer, "chart", info, true);
writer.println("<IMG SRC=\"BubbleChart.png\" " + "WIDTH=\"600\" HEIGHT=\"400\" BORDER=\"0\" USEMAP=\"#chart\">");
writer.println("</BODY>");
writer.println("</HTML>");
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static XYZDataset createDataset() {
DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset();
double ad[] = { 2.1000000000000001D, 2.2999999999999998D, 2.2999999999999998D, 2.2000000000000002D, 2.2000000000000002D, 1.8D, 1.8D,
1.8999999999999999D, 2.2999999999999998D, 3.7999999999999998D };
double ad1[] = { 14.1D, 11.1D, 10D, 8.8000000000000007D, 8.6999999999999993D, 8.4000000000000004D, 5.4000000000000004D, 4.0999999999999996D,
4.0999999999999996D, 25D };
double ad2[] = { 2.3999999999999999D, 2.7000000000000002D, 2.7000000000000002D, 2.2000000000000002D, 2.2000000000000002D, 2.2000000000000002D,
2.1000000000000001D, 2.2000000000000002D, 1.6000000000000001D, 4D };
double ad3[][] = { ad, ad1, ad2 };
defaultxyzdataset.addSeries("Series 1", ad3);
return defaultxyzdataset;
}
private static JFreeChart createChart(XYZDataset xyzdataset) {
JFreeChart jfreechart = ChartFactory.createBubbleChart("Finally Got Bubble Chart", "X", "Y", xyzdataset, PlotOrientation.HORIZONTAL, true, true, true);
XYPlot xyplot = (XYPlot) jfreechart.getPlot();
xyplot.setForegroundAlpha(0.65F);
xyplot.setDomainPannable(true);
xyplot.setRangePannable(true);
XYItemRenderer xyitemrenderer = xyplot.getRenderer();
xyitemrenderer.setSeriesPaint(0, Color.blue);
NumberAxis numberaxis = (NumberAxis) xyplot.getDomainAxis();
numberaxis.setLowerMargin(0.14999999999999999D);
numberaxis.setUpperMargin(0.14999999999999999D);
NumberAxis numberaxis1 = (NumberAxis) xyplot.getRangeAxis();
numberaxis1.setLowerMargin(0.14999999999999999D);
numberaxis1.setUpperMargin(0.14999999999999999D);
xyitemrenderer.setURLGenerator(new StandardXYURLGenerator("javascript:alert('1');"));
return jfreechart;
}
}
Thanks in Advance
URLGenerator and Javascript
-
- Posts: 844
- Joined: Fri Oct 13, 2006 9:29 pm
- Location: Sunnyvale, CA
Re: URLGenerator and Javascript
If you read the StandardXYURLGenerator javadoc entry, you will see that the argument you pass is a prefix. The generateURL method appends a default argument string to and returns the resulting URL. If you want to change the behavior, create your own class which implements the XYURLGenerator interface (which is only the generateURL method).
Richard West
Design Engineer II
Advanced Micro Devices
Sunnyvale, CA
Design Engineer II
Advanced Micro Devices
Sunnyvale, CA
Re: URLGenerator and Javascript
Thanks Richard...i am done with it....
I have one more requirement
xyitemrenderer.setURLGenerator(new StandardXYURLGenerator("javascript:alert('1');"));
in this javascript function javascript:function(?) i need to pass thew values dynamically is it possible ..i mean is there any URLGenerator for javascript functions.
JavascriptURLGenerator or so...
class StandardXYURLGenerator implements XYURLGenerator {
private String actionName;
public StandardXYURLGenerator(String actionName) {
if (actionName != null)
this.actionName = actionName;
}
public StandardXYURLGenerator() {
// TODO Auto-generated constructor stub
}
public String generateURL(XYDataset categoryDataset, int series, int category) {
String url = actionName;
return url;
}
I have one more requirement
xyitemrenderer.setURLGenerator(new StandardXYURLGenerator("javascript:alert('1');"));
in this javascript function javascript:function(?) i need to pass thew values dynamically is it possible ..i mean is there any URLGenerator for javascript functions.
JavascriptURLGenerator or so...
class StandardXYURLGenerator implements XYURLGenerator {
private String actionName;
public StandardXYURLGenerator(String actionName) {
if (actionName != null)
this.actionName = actionName;
}
public StandardXYURLGenerator() {
// TODO Auto-generated constructor stub
}
public String generateURL(XYDataset categoryDataset, int series, int category) {
String url = actionName;
return url;
}
-
- Posts: 844
- Joined: Fri Oct 13, 2006 9:29 pm
- Location: Sunnyvale, CA
Re: URLGenerator and Javascript
The generateURL method has the dateaset, the series index, and the item index as arguments which you can use to generate item specific URLs.
Richard West
Design Engineer II
Advanced Micro Devices
Sunnyvale, CA
Design Engineer II
Advanced Micro Devices
Sunnyvale, CA