123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The source code</title>
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
- <style type="text/css">
- .highlight { display: block; background-color: #ddd; }
- </style>
- <script type="text/javascript">
- function highlight() {
- document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
- }
- </script>
- </head>
- <body onload="prettyPrint(); highlight();">
- <pre class="prettyprint lang-js"><span id='Ext-draw-engine-ImageExporter'>/**
- </span> * Exports a {@link Ext.draw.Surface Surface} to an image. To do this,
- * the svg string must be sent to a remote server and processed.
- *
- * # Sending the data
- *
- * A post request is made to the URL. The following fields are sent:
- *
- * + width: The width of the image
- * + height: The height of the image
- * + type: The image type to save as, see {@link #supportedTypes}
- * + svg: The svg string for the surface
- *
- * # The response
- *
- * It is expected that the user will be prompted with an image download.
- * As such, the following options should be set on the server:
- *
- * + Content-Disposition: 'attachment, filename="chart.png"'
- * + Content-Type: 'image/png'
- *
- * **Important**: By default, chart data is sent to a server operated
- * by Sencha to do data processing. You may change this default by
- * setting the {@link #defaultUrl} of this class.
- */
- Ext.define('Ext.draw.engine.ImageExporter', {
- singleton: true,
- <span id='Ext-draw-engine-ImageExporter-property-defaultUrl'> /**
- </span> * @property {String} [defaultUrl="http://svg.sencha.io"]
- * The default URL to submit the form request.
- */
- defaultUrl: 'http://svg.sencha.io',
- <span id='Ext-draw-engine-ImageExporter-property-supportedTypes'> /**
- </span> * @property {Array} [supportedTypes=["image/png", "image/jpeg"]]
- * A list of export types supported by the server
- */
- supportedTypes: ['image/png', 'image/jpeg'],
- <span id='Ext-draw-engine-ImageExporter-property-widthParam'> /**
- </span> * @property {String} [widthParam="width"]
- * The name of the width parameter to be sent to the server.
- * The Sencha IO server expects it to be the default value.
- */
- widthParam: 'width',
- <span id='Ext-draw-engine-ImageExporter-property-heightParam'> /**
- </span> * @property {String} [heightParam="height"]
- * The name of the height parameter to be sent to the server.
- * The Sencha IO server expects it to be the default value.
- */
- heightParam: 'height',
- <span id='Ext-draw-engine-ImageExporter-property-typeParam'> /**
- </span> * @property {String} [typeParam="type"]
- * The name of the type parameter to be sent to the server.
- * The Sencha IO server expects it to be the default value.
- */
- typeParam: 'type',
- <span id='Ext-draw-engine-ImageExporter-property-svgParam'> /**
- </span> * @property {String} [svgParam="svg"]
- * The name of the svg parameter to be sent to the server.
- * The Sencha IO server expects it to be the default value.
- */
- svgParam: 'svg',
- formCls: Ext.baseCSSPrefix + 'hide-display',
- <span id='Ext-draw-engine-ImageExporter-method-generate'> /**
- </span> * Exports the surface to an image
- * @param {Ext.draw.Surface} surface The surface to export
- * @param {Object} [config] The following config options are supported:
- *
- * @param {Number} config.width A width to send to the server to for
- * configuring the image height
- *
- * @param {Number} config.height A height to send to the server for
- * configuring the image height
- *
- * @param {String} config.url The url to post the data to. Defaults to
- * the {@link #defaultUrl} configuration on the class.
- *
- * @param {String} config.type The type of image to export. See the
- * {@link #supportedTypes}
- *
- * @param {String} config.widthParam The name of the width parameter to send
- * to the server. Defaults to {@link #widthParam}
- *
- * @param {String} config.heightParam The name of the height parameter to send
- * to the server. Defaults to {@link #heightParam}
- *
- * @param {String} config.typeParam The name of the type parameter to send
- * to the server. Defaults to {@link #typeParam}
- *
- * @param {String} config.svgParam The name of the svg parameter to send
- * to the server. Defaults to {@link #svgParam}
- *
- * @return {Boolean} True if the surface was successfully sent to the server.
- */
- generate: function(surface, config) {
- config = config || {};
- var me = this,
- type = config.type,
- form;
- if (Ext.Array.indexOf(me.supportedTypes, type) === -1) {
- return false;
- }
- form = Ext.getBody().createChild({
- tag: 'form',
- method: 'POST',
- action: config.url || me.defaultUrl,
- cls: me.formCls,
- children: [{
- tag: 'input',
- type: 'hidden',
- name: config.widthParam || me.widthParam,
- value: config.width || surface.width
- }, {
- tag: 'input',
- type: 'hidden',
- name: config.heightParam || me.heightParam,
- value: config.height || surface.height
- }, {
- tag: 'input',
- type: 'hidden',
- name: config.typeParam || me.typeParam,
- value: type
- }, {
- tag: 'input',
- type: 'hidden',
- name: config.svgParam || me.svgParam
- }]
- });
- // Assign the data on the value so it doesn't get messed up in the html insertion
- form.last(null, true).value = Ext.draw.engine.SvgExporter.generate(surface);
- form.dom.submit();
- form.remove();
- return true;
- }
- });
- </pre>
- </body>
- </html>
|