ASE Home Page Products Download Purchase Support About ASE
ChartDirector Support
Forum HomeForum Home   SearchSearch

Message ListMessage List     Post MessagePost Message

  target attribute in the getHtmlImageMap
Posted by Eva on Sep-07-2012 00:46
Hi Peter,

How do I add a target attribute in the chart.getHtmlImageMap()? I have a string to add that I formatted as follows:
target=?_blank?

Here is the method's signature:
public String getHTMLImageMap(String url [, String queryFormat [, String extraAttr [, int offsetX, int offsetY ]]])

I tried to put in in the second and third parameter, but it didn't work.

Please help,
Ewa

  Re: target attribute in the getHtmlImageMap
Posted by Peter Kwan on Sep-07-2012 20:22
Hi Eva,

You can put it in the extra attribute parameter. For example:

String imageMap = c.getHTMLImageMap("myHandler.jsp", "", "target='_blank' title='{xLabel}, {value}'");

Hope this can help.

Regards
Peter Kwan

  Re: target attribute in the getHtmlImageMap
Posted by Eva on Sep-08-2012 05:00
Hi Peter,

It?s not working.
Here is a piece of my code:

String urlStr = ?http://path1/path2/something.do?projId={field1}?;
String imageMap = this.chart.getHTMLImageMap(urlStr, "", "target='_blank??);

The "imageMap" string consists of several <area?> tags as follows:
<area shape="rect" coords="20,201,920,254" id="someId" href="http://path1/path2/something.do?projId=12345">
...

ChartDirector fills out properly the {field1} in the urlStr,
I?m not sure why it?s not working. Any other advice?

Ewa

  Re: target attribute in the getHtmlImageMap
Posted by Peter Kwan on Sep-11-2012 02:13
Attachments:
Hi Eva,

I have just tried myself by modifying the "Simple Clickable Chart" sample code and add "target='_blank'", and it works normally in my case. I have attached my test code for your reference.

For your case, is it possible you have another line of code that also calls the  getHTMLImageMap or setHTMLImageMap method, and it disables the "extra attribute" part?

I noted that your area tag contains an id="someId" attribute. I think ChartDirector will not automatically include this attribute in the image map. There may be another line in your code that includes this id attribute using Layer.setHTMLImageMap, which overrides the extra attribute in your BaseChart.getHTMLImageMap. Another possibility is that there is other code that modifies the image map, and it removes the target attribute.

If the above still cannot solve the problem, is it possible to create a complete example that can illustrate the problem?

Regards
Peter Kwan
clickbar.jsp
<%@page import="ChartDirector.*" %>
<%
// The data for the bar chart
double[] data = {450, 560, 630, 800, 1100, 1350, 1600, 1950, 2300, 2700};

// The labels for the bar chart
String[] labels = {"1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003",
    "2004", "2005"};

// Create a XYChart object of size 600 x 360 pixels
XYChart c = new XYChart(600, 360);

// Add a title to the chart using 18pts Times Bold Italic font
c.addTitle("Annual Revenue for Star Tech", "Times New Roman Bold Italic", 18);

// Set the plotarea at (60, 40) and of size 500 x 280 pixels. Use a vertical gradient
// color from light blue (eeeeff) to deep blue (0000cc) as background. Set border and
// grid lines to white (ffffff).
c.setPlotArea(60, 40, 500, 280, c.linearGradientColor(60, 40, 60, 280, 0xeeeeff,
    0x0000cc), -1, 0xffffff, 0xffffff);

// Add a multi-color bar chart layer using the supplied data. Use soft lighting
// effect with light direction from top.
c.addBarLayer3(data).setBorderColor(Chart.Transparent, Chart.softLighting(Chart.Top))
    ;

// Set x axis labels using the given labels
c.xAxis().setLabels(labels);

// Draw the ticks between label positions (instead of at label positions)
c.xAxis().setTickOffset(0.5);

// When auto-scaling, use tick spacing of 40 pixels as a guideline
c.yAxis().setTickDensity(40);

// Add a title to the y axis with 12pts Times Bold Italic font
c.yAxis().setTitle("USD (millions)", "Times New Roman Bold Italic", 12);

// Set axis label style to 8pts Arial Bold
c.xAxis().setLabelStyle("Arial Bold", 8);
c.yAxis().setLabelStyle("Arial Bold", 8);

// Set axis line width to 2 pixels
c.xAxis().setWidth(2);
c.yAxis().setWidth(2);

// Create the image and save it in a temporary location
String chart1URL = c.makeSession(request, "chart1");

// Create an image map for the chart
String imageMap1 = c.getHTMLImageMap("clickline.jsp", "",
    "title='{xLabel}: US$ {value|0}M' target='_blank'");
%>
<html>
<body style="margin:5px 0px 0px 5px">
<div style="font-size:18pt; font-family:verdana; font-weight:bold">
    Simple Clickable Bar Chart
</div>
<hr style="border:solid 1px #000080" />
<div style="font-size:10pt; font-family:verdana; margin-bottom:20">
    <a href="viewsource.jsp?file=<%=request.getServletPath()%>">View Source Code</a>
</div>
<img src="<%=response.encodeURL("getchart.jsp?"+chart1URL)%>" border="0" usemap="#map1">
<map name="map1">
<%=imageMap1%>
</map>
</body>
</html>

  Re: target attribute in the getHtmlImageMap
Posted by Eva on Sep-12-2012 02:26
Thank you, Peter. You were right.  I found the problem. I used the setHTMLImageMap to setup some extra fields.  So, I put the "target" attribute in the setHTMLImageMap instead of getHTMLImageMap, and this worked.

Thank you again!
Ewa