mperez

server-side export Javascript-rendered Gantt

Recommended Posts

Hi I am using pure Javascript (renderer = javascript) Gantt chart in Ruby On Rails (version 3.0.19).

 

It looks fine in web browser.

 

Now i want to export but i didn't want to use php on my Ruby on Rails server as instructed on this page:

http://docs.fusioncharts.com/widgets/Contents/ExportingImage/ECPureJS.html

 

Instead, from my Rails controller I pull in the SVG from the return parameters (i.e. params[:stream]) and pass it to batik to convert into png file as follows

 

ruby on rails controller code:

svg_match = params[:stream].to_s.match(/<svg.*<\/svg>/)
svg_text = svg_match[0] rescue params[:stream].to_s

tempfile = Tempfile.new( ActiveSupport::SecureRandom.hex(16) )
tempfile.write(svg_text)

output_name = Rails.root.join( "public", "exports", "gantt.png")
exec_str = "java -jar #{batik_path} -m image/png -d #{output_name} #{width} #{tempfile.path}"
return_val = system( exec_str )
 
 
Everything looks good except that my task bars are missing! Process names show up on the left, dates show up on the top, and even the grid background of the gantt shows up. But there no task bars.
 
What might I be doing wrong?
 
As a second question, didn't the returned SVG on an export used to be in a parameter called "svg" as in params[:svg]?
I am using version FusionWidgets XT (v3.3.1 - Service Release 2) (28th May, 2013)
 
 
NOTE: In order for Batik to not choke on the gantt chart SVG I had to disable gradients on the task bars as follows
<chart plotGradientColor='' taskBarFillMix='' ...>
Edited by mperez

Share this post


Link to post
Share on other sites

Hi,

 

Welcome to FusionCharts Forum.

 

Everything looks good except that my task bars are missing! Process names show up on the left, dates show up on the top, and even the grid background of the gantt shows up. But there no task bars.

>> Do you see any exception/error in the console of your IDE? 

 

As a second question, didn't the returned SVG on an export used to be in a parameter called "svg" as in params[:svg]?

I am using version FusionWidgets XT (v3.3.1 - Service Release 2) (28th May, 2013)
>> The parameter "svg" to retrieve the SVG data is changed to "stream". Please try using "stream" instead of "svg" and let us know if you face any problem.

 

Awaiting your response.

Share this post


Link to post
Share on other sites
I get these CSS errors repeated over and over many times when Batik is transcoding the SVG to PNG. Again, this version is FusionWidgets XT (v3.3.1 - Service Release 2) (28th May, 2013)
 
 
About to transcode 1 SVG file(s)


Converting d0e544aa4761c9f11f422261e3f985c220130822-78912-1ndybh3 to /work/exports/d0e544aa4761c9f11f422261e3f985c2.png ... 
***** CSSEngine: exception property.syntax.error:org.w3c.dom.DOMException: The "default" identifier is not a valid value for the "shape-rendering" property. 


AttrValue:default


Exception:org.w3c.dom.DOMException
org.w3c.dom.DOMException: The "default" identifier is not a valid value for the "shape-rendering" property. 
at org.apache.batik.css.engine.value.AbstractValueFactory.createInvalidIdentifierDOMException(AbstractValueFactory.java:50)
at org.apache.batik.css.engine.value.IdentifierManager.createValue(IdentifierManager.java:48)
at org.apache.batik.css.engine.CSSEngine$1.property(CSSEngine.java:744)
at org.apache.batik.css.engine.CSSEngine.getCascadedStyleMap(CSSEngine.java:768)
at org.apache.batik.css.engine.CSSEngine.getComputedStyle(CSSEngine.java:876)
at org.apache.batik.bridge.CSSUtilities.getComputedStyle(CSSUtilities.java:82)
at org.apache.batik.bridge.CSSUtilities.convertDisplay(CSSUtilities.java:564)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:206)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:82)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:208)
at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92)
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
at org.apache.batik.apps.rasterizer.SVGConverter.transcode(SVGConverter.java:1001)
at org.apache.batik.apps.rasterizer.SVGConverter.execute(SVGConverter.java:717)
at org.apache.batik.apps.rasterizer.Main.execute(Main.java:938)
at org.apache.batik.apps.rasterizer.Main.main(Main.java:992)


***** CSSEngine: exception....
org.w3c.dom.DOMException: file:/var/folders/kt/bzb_dqd12rx2bwxfl56dwdr00000gq/T/d0e544aa4761c9f11f422261e3f985c220130822-78912-1ndybh3:
The attribute "shape-rendering" represents an invalid CSS value ("default").
Original message:
The "default" identifier is not a valid value for the "shape-rendering" property. 
at org.apache.batik.css.engine.CSSEngine.getCascadedStyleMap(CSSEngine.java:784)
at org.apache.batik.css.engine.CSSEngine.getComputedStyle(CSSEngine.java:876)
at org.apache.batik.bridge.CSSUtilities.getComputedStyle(CSSUtilities.java:82)
at org.apache.batik.bridge.CSSUtilities.convertDisplay(CSSUtilities.java:564)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:206)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:82)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:208)
at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92)
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
at org.apache.batik.apps.rasterizer.SVGConverter.transcode(SVGConverter.java:1001)
at org.apache.batik.apps.rasterizer.SVGConverter.execute(SVGConverter.java:717)
at org.apache.batik.apps.rasterizer.Main.execute(Main.java:938)
at org.apache.batik.apps.rasterizer.Main.main(Main.java:992)
ERROR: null
Enclosed Exception:
file:/var/folders/kt/bzb_dqd12rx2bwxfl56dwdr00000gq/T/d0e544aa4761c9f11f422261e3f985c220130822-78912-1ndybh3:
The attribute "shape-rendering" represents an invalid CSS value ("default").
Original message:
The "default" identifier is not a valid value for the "shape-rendering" property. 
 
 
 
To provide more information, on previous projects, i was exporting bar charts from the FusionCharts XT package with similar CSS errors but the PNG file came out perfect. The version of that package was FusionCharts XT(v3.2.2) SR3 (12th March, 2012)

 

CSS errors from exporting a bar chart from FusionCharts XT(v3.2.2) SR3 (12th March, 2012): (This export was successful despite these errors):

About to transcode 1 SVG file(s)


Converting 4db329ba83ef24325dbe7265b11b126b20130823-82013-19xly7c to /work/exports/4db329ba83ef24325dbe7265b11b126b.png ... 
***** CSSEngine: exception property.syntax.error:org.w3c.css.sac.CSSParseException: Unexpected token: 0 (see LexicalUnits).


AttrValue:


Exception:org.w3c.css.sac.CSSParseException
org.w3c.css.sac.CSSParseException: Unexpected token: 0 (see LexicalUnits).
at org.apache.batik.css.parser.Parser.createCSSParseException(Parser.java:1678)
at org.apache.batik.css.parser.Parser.parseTerm(Parser.java:1055)
at org.apache.batik.css.parser.Parser.parseExpression(Parser.java:895)
at org.apache.batik.css.parser.Parser.parsePropertyValueInternal(Parser.java:337)
at org.apache.batik.css.parser.Parser.parsePropertyValue(Parser.java:1720)
at org.apache.batik.css.engine.CSSEngine.getCascadedStyleMap(CSSEngine.java:767)
at org.apache.batik.css.engine.CSSEngine.getComputedStyle(CSSEngine.java:876)
at org.apache.batik.bridge.CSSUtilities.getComputedStyle(CSSUtilities.java:82)
at org.apache.batik.bridge.CSSUtilities.convertDisplay(CSSUtilities.java:564)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:206)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:82)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:208)
at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92)
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
at org.apache.batik.apps.rasterizer.SVGConverter.transcode(SVGConverter.java:1001)
at org.apache.batik.apps.rasterizer.SVGConverter.execute(SVGConverter.java:717)
at org.apache.batik.apps.rasterizer.Main.execute(Main.java:938)
at org.apache.batik.apps.rasterizer.Main.main(Main.java:992)


***** CSSEngine: exception....
org.w3c.dom.DOMException: file:/var/folders/kt/bzb_dqd12rx2bwxfl56dwdr00000gq/T/4db329ba83ef24325dbe7265b11b126b20130823-82013-19xly7c:
The attribute "visibility" represents an invalid CSS value ("").
Original message:
Unexpected token: 0 (see LexicalUnits).
at org.apache.batik.css.engine.CSSEngine.getCascadedStyleMap(CSSEngine.java:784)
at org.apache.batik.css.engine.CSSEngine.getComputedStyle(CSSEngine.java:876)
at org.apache.batik.bridge.CSSUtilities.getComputedStyle(CSSUtilities.java:82)
at org.apache.batik.bridge.CSSUtilities.convertDisplay(CSSUtilities.java:564)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:206)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:82)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:208)
at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92)
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
at org.apache.batik.apps.rasterizer.SVGConverter.transcode(SVGConverter.java:1001)
at org.apache.batik.apps.rasterizer.SVGConverter.execute(SVGConverter.java:717)
at org.apache.batik.apps.rasterizer.Main.execute(Main.java:938)
at org.apache.batik.apps.rasterizer.Main.main(Main.java:992)
ERROR: null
Enclosed Exception:
file:/var/folders/kt/bzb_dqd12rx2bwxfl56dwdr00000gq/T/4db329ba83ef24325dbe7265b11b126b20130823-82013-19xly7c:
The attribute "visibility" represents an invalid CSS value ("").
Original message:
Unexpected token: 0 (see LexicalUnits).
Edited by mperez

Share this post


Link to post
Share on other sites

Hello,

 

looking at the CSS errors more closely after transcoding a Gantt chart SVG to PNG, I find that i also get this one  about the "text-anchor" property repeated many times after the "shape-rendering" property error posted previously:

***** CSSEngine: exception property.syntax.error:org.w3c.dom.DOMException: The "undefined" identifier is not a valid value for the "text-anchor" property. 


AttrValue:undefined


Exception:org.w3c.dom.DOMException
org.w3c.dom.DOMException: The "undefined" identifier is not a valid value for the "text-anchor" property. 
at org.apache.batik.css.engine.value.AbstractValueFactory.createInvalidIdentifierDOMException(AbstractValueFactory.java:50)
at org.apache.batik.css.engine.value.IdentifierManager.createValue(IdentifierManager.java:48)
at org.apache.batik.css.engine.CSSEngine$1.property(CSSEngine.java:744)
at org.apache.batik.css.engine.CSSEngine.getCascadedStyleMap(CSSEngine.java:768)
at org.apache.batik.css.engine.CSSEngine.getComputedStyle(CSSEngine.java:876)
at org.apache.batik.bridge.CSSUtilities.getComputedStyle(CSSUtilities.java:82)
at org.apache.batik.bridge.CSSUtilities.convertDisplay(CSSUtilities.java:564)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:206)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:82)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:208)
at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92)
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
at org.apache.batik.apps.rasterizer.SVGConverter.transcode(SVGConverter.java:1001)
at org.apache.batik.apps.rasterizer.SVGConverter.execute(SVGConverter.java:717)
at org.apache.batik.apps.rasterizer.Main.execute(Main.java:938)
at org.apache.batik.apps.rasterizer.Main.main(Main.java:992)


***** CSSEngine: exception....
org.w3c.dom.DOMException: file:/var/folders/kt/bzb_dqd12rx2bwxfl56dwdr00000gq/T/0a8cd3e5fbdc849120d3e01f3d6bee9720130823-82381-blvpwe:
The attribute "text-anchor" represents an invalid CSS value ("undefined").
Original message:
The "undefined" identifier is not a valid value for the "text-anchor" property. 
at org.apache.batik.css.engine.CSSEngine.getCascadedStyleMap(CSSEngine.java:784)
at org.apache.batik.css.engine.CSSEngine.getComputedStyle(CSSEngine.java:876)
at org.apache.batik.bridge.CSSUtilities.getComputedStyle(CSSUtilities.java:82)
at org.apache.batik.bridge.CSSUtilities.convertDisplay(CSSUtilities.java:564)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:206)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219)
at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:82)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:208)
at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92)
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
at org.apache.batik.apps.rasterizer.SVGConverter.transcode(SVGConverter.java:1001)
at org.apache.batik.apps.rasterizer.SVGConverter.execute(SVGConverter.java:717)
at org.apache.batik.apps.rasterizer.Main.execute(Main.java:938)
at org.apache.batik.apps.rasterizer.Main.main(Main.java:992)
ERROR: null
Enclosed Exception:
file:/var/folders/kt/bzb_dqd12rx2bwxfl56dwdr00000gq/T/0a8cd3e5fbdc849120d3e01f3d6bee9720130823-82381-blvpwe:
The attribute "text-anchor" represents an invalid CSS value ("undefined").
Original message:
The "undefined" identifier is not a valid value for the "text-anchor" property. 

Share this post


Link to post
Share on other sites

If it helps, these are the attributes for my chart

 

      :dateFormat=>'yyyy/mm/dd',
      :outputDateFormat=>'mm/dd/yyyy',
      :showTaskLabels=>"0",
      :showPercentLabel=>"0",
      :showSlackAsFill=>"0",
      :animation=>"1",
      :useVerticalScrolling=>"1",
      :manageResize=>"1",
      :taskBarFillMix=>"",
      :taskBarFillRatio=>"",
      :exportEnabled=>"1",
      :exportShowMenuItem=>"0",
      :exportHandler=>"/downloads/gantt",
      :html5ExportHandler=>"/downloads/gantt"
 
attributes for tasks
 :start=>sdate,
 :end=>edate,
 :label=>task_name,
 :color=>task_colors,
 :processId=>proc_name,
 :link=>task_url
 
Some of my gantt charts have grouped tasks and those attributes are
 :start=>start_date,
 :end=>end_date,
 :label=>group_name,
 :color=>"#000000"
 :processId=>proc_name,
 :showAsGroup->1,
 :showLabel=>0,
 :topPadding=>"70%",
 :showStartDate=>1,
 :showEndDate=>1
 

Share this post


Link to post
Share on other sites

Hi,

 

Can you please let us know the Batik SVG Rasterizer library version that you are using?

 

Also, could you please confirm that you are using "exportChart()" JS API of chart. The reason I am stressing this is because the direct SVG of chart does not behave well with Batik. A bit of sanitisation of the SVG data is done by the exportChart function before sending to server. 

 

Awaiting your response.

Edited by Haritha

Share this post


Link to post
Share on other sites

I didn't find a way to determine the version of batik-rasterizer.jar but I opened batik.jar and see that Batik is version 1.7.

I am including the check sum of the file since i could not find the version.

$ cksum batik/batik-rasterizer.jar 
2826937874 56270 batik/batik-rasterizer.jar

This is the javascript code I use when I want to download the PNG of the Chart and yes i use exportChart() of the FusionCharts javascript API

function download_data() { 
 var export_handler = '/downloads/gantt';


 // Get the most recently rendered chart in LinkedCharts (see Drill Down Charts in FusionCharts docs)
 var key = '';
 for( key in FusionCharts.items ) {
  // Loop to last chart in items array
  // Should be most recently rendered chart in LinkedCharts (see Drill Down Charts)
  console.log(key);
 }
 var chartObj = FusionCharts.items[key];
 
 if( chartObj.hasRendered() ) {
  chartObj.setChartAttribute({html5ExportHandler:export_handler,exportHandler:export_handler});
  chartObj.exportChart();
 } else {
  console.log("FusionChart.items['" + key + "'] not rendered and so cannot be served as SVG.");
 }
}
Edited by mperez

Share this post


Link to post
Share on other sites

Hi,

 

can you tell me if you are you able to export Javascript-based Gantt chart to PNG on your end? Please do not leave me guessing if this is a bug with FusionCharts or if I am doing something wrong.

 

thanks

Share this post


Link to post
Share on other sites

I have added the following lines to the code i posted in Post #1 to search for those invalid values in the SVG and correct them.

svg_text.gsub!(/text-anchor=\"undefined\"/, "text-anchor='start'")
svg_text.gsub!(/shape-rendering=\"default\"/, "shape-rendering='auto'")
svg_text.gsub!(/visibility=\"\"/, "visibility='inherit'")

I no longer get any errors while batik is transcoding the SVG to PNG but the issue of no task bars still exists.

 

NOTE: i got the correct values for each SVG attribute from here

https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute

Edited by mperez

Share this post


Link to post
Share on other sites

More information for you...

 

I applied the color #B2C8D9 to my task bars and went hunting for them in the SVG. I found that their width attribute is sent to 0 so batik is transcoding the SVG correctly  but the SVG from the chart is wrong. I am going to assume then that this is a FusionCharts bug.

<rect x=\"2041.5\" y=\"163.5\" width=\"0\" height=\"9\" r=\"0\" rx=\"0\" ry=\"0\" fill=\"#b2c8d9\" stroke=\"#999999\" fill-opacity=\"1\" stroke-opacity=\"1\" stroke-width=\"1\" style=\"cursor: pointer;\"></rect>

<rect x=\"2243.5\" y=\"187.5\" width=\"0\" height=\"9\" r=\"0\" rx=\"0\" ry=\"0\" fill=\"#b2c8d9\" stroke=\"#999999\" fill-opacity=\"1\" stroke-opacity=\"1\" stroke-width=\"1\" style=\"cursor: pointer;\"></rect>

<rect x=\"2243.5\" y=\"211.5\" width=\"0\" height=\"9\" r=\"0\" rx=\"0\" ry=\"0\" fill=\"#b2c8d9\" stroke=\"#999999\" fill-opacity=\"1\" stroke-opacity=\"1\" stroke-width=\"1\" style=\"cursor: pointer;\"></rect>

<rect x=\"2243.5\" y=\"235.5\" width=\"0\" height=\"9\" r=\"0\" rx=\"0\" ry=\"0\" fill=\"#b2c8d9\" stroke=\"#999999\" fill-opacity=\"1\" stroke-opacity=\"1\" stroke-width=\"1\" style=\"cursor: pointer;\"></rect>

<rect x=\"2243.5\" y=\"259.5\" width=\"0\" height=\"9\" r=\"0\" rx=\"0\" ry=\"0\" fill=\"#b2c8d9\" stroke=\"#999999\" fill-opacity=\"1\" stroke-opacity=\"1\" stroke-width=\"1\" style=\"cursor: pointer;\"></rect>

<rect x=\"2243.5\" y=\"283.5\" width=\"0\" height=\"9\" r=\"0\" rx=\"0\" ry=\"0\" fill=\"#b2c8d9\" stroke=\"#999999\" fill-opacity=\"1\" stroke-opacity=\"1\" stroke-width=\"1\" style=\"cursor: pointer;\"></rect>

<rect x=\"2243.5\" y=\"307.5\" width=\"0\" height=\"9\" r=\"0\" rx=\"0\" ry=\"0\" fill=\"#b2c8d9\" stroke=\"#999999\" fill-opacity=\"1\" stroke-opacity=\"1\" stroke-width=\"1\" style=\"cursor: pointer;\"></rect>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now