Upgrade to ExtJS 4.0.7 - Released 10/19/2011
[extjs.git] / docs / source / Legend.html
index 5bba5b6..b9e62e8 100644 (file)
@@ -1,5 +1,22 @@
-<!DOCTYPE html><html><head><title>Sencha Documentation Project</title><link rel="stylesheet" href="../reset.css" type="text/css"><link rel="stylesheet" href="../prettify.css" type="text/css"><link rel="stylesheet" href="../prettify_sa.css" type="text/css"><script type="text/javascript" src="../prettify.js"></script></head><body onload="prettyPrint()"><pre class="prettyprint"><pre><span id='Ext-chart.Legend-method-constructor'><span id='Ext-chart.Legend'>/**
-</span></span> * @class Ext.chart.Legend
+<!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-chart-Legend'>/**
+</span> * @class Ext.chart.Legend
  *
  * Defines a legend for a chart's series.
  * The 'chart' member must be set prior to rendering.
  *     legend: {
  *         position: 'right'
  *     },
- * 
- * Full example:
-    &lt;pre&gt;&lt;code&gt;
-    var store = Ext.create('Ext.data.JsonStore', {
-        fields: ['name', 'data1', 'data2', 'data3', 'data4', 'data5'],
-        data: [
-            {'name':'metric one', 'data1':10, 'data2':12, 'data3':14, 'data4':8, 'data5':13},
-            {'name':'metric two', 'data1':7, 'data2':8, 'data3':16, 'data4':10, 'data5':3},
-            {'name':'metric three', 'data1':5, 'data2':2, 'data3':14, 'data4':12, 'data5':7},
-            {'name':'metric four', 'data1':2, 'data2':14, 'data3':6, 'data4':1, 'data5':23},
-            {'name':'metric five', 'data1':27, 'data2':38, 'data3':36, 'data4':13, 'data5':33}                                                
-        ]
-    });
-    
-    Ext.create('Ext.chart.Chart', {
-        renderTo: Ext.getBody(),
-        width: 500,
-        height: 300,
-        animate: true,
-        store: store,
-        shadow: true,
-        theme: 'Category1',
-        legend: {
-            position: 'top'
-        },
-         axes: [{
-                type: 'Numeric',
-                grid: true,
-                position: 'left',
-                fields: ['data1', 'data2', 'data3', 'data4', 'data5'],
-                title: 'Sample Values',
-                grid: {
-                    odd: {
-                        opacity: 1,
-                        fill: '#ddd',
-                        stroke: '#bbb',
-                        'stroke-width': 1
-                    }
-                },
-                minimum: 0,
-                adjustMinimumByMajorUnit: 0
-            }, {
-                type: 'Category',
-                position: 'bottom',
-                fields: ['name'],
-                title: 'Sample Metrics',
-                grid: true,
-                label: {
-                    rotate: {
-                        degrees: 315
-                    }
-                }
-        }],
-        series: [{
-            type: 'area',
-            highlight: false,
-            axis: 'left',
-            xField: 'name',
-            yField: ['data1', 'data2', 'data3', 'data4', 'data5'],
-            style: {
-                opacity: 0.93
-            }
-        }]
-    });    
-    &lt;/code&gt;&lt;/pre&gt;    
  *
- * @constructor
+ * ## Example
+ *
+ *     @example
+ *     var store = Ext.create('Ext.data.JsonStore', {
+ *         fields: ['name', 'data1', 'data2', 'data3', 'data4', 'data5'],
+ *         data: [
+ *             { 'name': 'metric one',   'data1': 10, 'data2': 12, 'data3': 14, 'data4': 8,  'data5': 13 },
+ *             { 'name': 'metric two',   'data1': 7,  'data2': 8,  'data3': 16, 'data4': 10, 'data5': 3  },
+ *             { 'name': 'metric three', 'data1': 5,  'data2': 2,  'data3': 14, 'data4': 12, 'data5': 7  },
+ *             { 'name': 'metric four',  'data1': 2,  'data2': 14, 'data3': 6,  'data4': 1,  'data5': 23 },
+ *             { 'name': 'metric five',  'data1': 27, 'data2': 38, 'data3': 36, 'data4': 13, 'data5': 33 }
+ *         ]
+ *     });
+ *
+ *     Ext.create('Ext.chart.Chart', {
+ *         renderTo: Ext.getBody(),
+ *         width: 500,
+ *         height: 300,
+ *         animate: true,
+ *         store: store,
+ *         shadow: true,
+ *         theme: 'Category1',
+ *         legend: {
+ *             position: 'top'
+ *         },
+ *         axes: [
+ *             {
+ *                 type: 'Numeric',
+ *                 grid: true,
+ *                 position: 'left',
+ *                 fields: ['data1', 'data2', 'data3', 'data4', 'data5'],
+ *                 title: 'Sample Values',
+ *                 grid: {
+ *                     odd: {
+ *                         opacity: 1,
+ *                         fill: '#ddd',
+ *                         stroke: '#bbb',
+ *                         'stroke-width': 1
+ *                     }
+ *                 },
+ *                 minimum: 0,
+ *                 adjustMinimumByMajorUnit: 0
+ *             },
+ *             {
+ *                 type: 'Category',
+ *                 position: 'bottom',
+ *                 fields: ['name'],
+ *                 title: 'Sample Metrics',
+ *                 grid: true,
+ *                 label: {
+ *                     rotate: {
+ *                         degrees: 315
+ *                     }
+ *                 }
+ *             }
+ *         ],
+ *         series: [{
+ *             type: 'area',
+ *             highlight: false,
+ *             axis: 'left',
+ *             xField: 'name',
+ *             yField: ['data1', 'data2', 'data3', 'data4', 'data5'],
+ *             style: {
+ *                 opacity: 0.93
+ *             }
+ *         }]
+ *     });
  */
 Ext.define('Ext.chart.Legend', {
 
@@ -90,13 +108,13 @@ Ext.define('Ext.chart.Legend', {
 
     /* End Definitions */
 
-<span id='Ext-chart.Legend-cfg-visible'>    /**
+<span id='Ext-chart-Legend-cfg-visible'>    /**
 </span>     * @cfg {Boolean} visible
      * Whether or not the legend should be displayed.
      */
     visible: true,
 
-<span id='Ext-chart.Legend-cfg-position'>    /**
+<span id='Ext-chart-Legend-cfg-position'>    /**
 </span>     * @cfg {String} position
      * The position of the legend in relation to the chart. One of: &quot;top&quot;,
      * &quot;bottom&quot;, &quot;left&quot;, &quot;right&quot;, or &quot;float&quot;. If set to &quot;float&quot;, then the legend
@@ -104,51 +122,51 @@ Ext.define('Ext.chart.Legend', {
      */
     position: 'bottom',
 
-<span id='Ext-chart.Legend-cfg-x'>    /**
+<span id='Ext-chart-Legend-cfg-x'>    /**
 </span>     * @cfg {Number} x
-     * X-position of the legend box. Used directly if position is set to &quot;float&quot;, otherwise 
+     * X-position of the legend box. Used directly if position is set to &quot;float&quot;, otherwise
      * it will be calculated dynamically.
      */
     x: 0,
 
-<span id='Ext-chart.Legend-cfg-y'>    /**
+<span id='Ext-chart-Legend-cfg-y'>    /**
 </span>     * @cfg {Number} y
      * Y-position of the legend box. Used directly if position is set to &quot;float&quot;, otherwise
      * it will be calculated dynamically.
      */
     y: 0,
 
-<span id='Ext-chart.Legend-cfg-labelFont'>    /**
+<span id='Ext-chart-Legend-cfg-labelFont'>    /**
 </span>     * @cfg {String} labelFont
      * Font to be used for the legend labels, eg '12px Helvetica'
      */
     labelFont: '12px Helvetica, sans-serif',
 
-<span id='Ext-chart.Legend-cfg-boxStroke'>    /**
+<span id='Ext-chart-Legend-cfg-boxStroke'>    /**
 </span>     * @cfg {String} boxStroke
      * Style of the stroke for the legend box
      */
     boxStroke: '#000',
 
-<span id='Ext-chart.Legend-cfg-boxStrokeWidth'>    /**
+<span id='Ext-chart-Legend-cfg-boxStrokeWidth'>    /**
 </span>     * @cfg {String} boxStrokeWidth
      * Width of the stroke for the legend box
      */
     boxStrokeWidth: 1,
 
-<span id='Ext-chart.Legend-cfg-boxFill'>    /**
+<span id='Ext-chart-Legend-cfg-boxFill'>    /**
 </span>     * @cfg {String} boxFill
      * Fill style for the legend box
      */
     boxFill: '#FFF',
 
-<span id='Ext-chart.Legend-cfg-itemSpacing'>    /**
+<span id='Ext-chart-Legend-cfg-itemSpacing'>    /**
 </span>     * @cfg {Number} itemSpacing
      * Amount of space between legend items
      */
     itemSpacing: 10,
 
-<span id='Ext-chart.Legend-cfg-padding'>    /**
+<span id='Ext-chart-Legend-cfg-padding'>    /**
 </span>     * @cfg {Number} padding
      * Amount of padding between the legend box's border and its items
      */
@@ -159,37 +177,41 @@ Ext.define('Ext.chart.Legend', {
     // @private
     height: 0,
 
-<span id='Ext-chart.Legend-cfg-boxZIndex'>    /**
+<span id='Ext-chart-Legend-cfg-boxZIndex'>    /**
 </span>     * @cfg {Number} boxZIndex
      * Sets the z-index for the legend. Defaults to 100.
      */
     boxZIndex: 100,
 
+<span id='Ext-chart-Legend-method-constructor'>    /**
+</span>     * Creates new Legend.
+     * @param {Object} config  (optional) Config object.
+     */
     constructor: function(config) {
         var me = this;
         if (config) {
             Ext.apply(me, config);
         }
         me.items = [];
-<span id='Ext-chart.Legend-property-isVertical'>        /**
+<span id='Ext-chart-Legend-property-isVertical'>        /**
 </span>         * Whether the legend box is oriented vertically, i.e. if it is on the left or right side or floating.
          * @type {Boolean}
          */
         me.isVertical = (&quot;left|right|float&quot;.indexOf(me.position) !== -1);
-        
+
         // cache these here since they may get modified later on
         me.origX = me.x;
         me.origY = me.y;
     },
 
-<span id='Ext-chart.Legend-method-create'>    /**
+<span id='Ext-chart-Legend-method-create'>    /**
 </span>     * @private Create all the sprites for the legend
      */
     create: function() {
         var me = this;
+        me.createBox();
         me.createItems();
         if (!me.created &amp;&amp; me.isDisplayed()) {
-            me.createBox();
             me.created = true;
 
             // Listen for changes to series titles to trigger regeneration of the legend
@@ -202,7 +224,7 @@ Ext.define('Ext.chart.Legend', {
         }
     },
 
-<span id='Ext-chart.Legend-method-isDisplayed'>    /**
+<span id='Ext-chart-Legend-method-isDisplayed'>    /**
 </span>     * @private Determine whether the legend should be displayed. Looks at the legend's 'visible' config,
      * and also the 'showInLegend' config for each of the series.
      */
@@ -210,7 +232,7 @@ Ext.define('Ext.chart.Legend', {
         return this.visible &amp;&amp; this.chart.series.findIndex('showInLegend', true) !== -1;
     },
 
-<span id='Ext-chart.Legend-method-createItems'>    /**
+<span id='Ext-chart-Legend-method-createItems'>    /**
 </span>     * @private Create the series markers and labels
      */
     createItems: function() {
@@ -229,8 +251,8 @@ Ext.define('Ext.chart.Legend', {
             math = Math,
             mfloor = math.floor,
             mmax = math.max,
-            index = 0, 
-            i = 0, 
+            index = 0,
+            i = 0,
             len = items ? items.length : 0,
             x, y, spacing, item, bbox, height, width;
 
@@ -256,7 +278,7 @@ Ext.define('Ext.chart.Legend', {
                     bbox = item.getBBox();
 
                     //always measure from x=0, since not all markers go all the way to the left
-                    width = bbox.width; 
+                    width = bbox.width;
                     height = bbox.height;
 
                     if (i + j === 0) {
@@ -289,7 +311,7 @@ Ext.define('Ext.chart.Legend', {
         me.itemHeight = maxHeight;
     },
 
-<span id='Ext-chart.Legend-method-getBBox'>    /**
+<span id='Ext-chart-Legend-method-getBBox'>    /**
 </span>     * @private Get the bounds for the legend's outer box
      */
     getBBox: function() {
@@ -302,22 +324,29 @@ Ext.define('Ext.chart.Legend', {
         };
     },
 
-<span id='Ext-chart.Legend-method-createBox'>    /**
+<span id='Ext-chart-Legend-method-createBox'>    /**
 </span>     * @private Create the box around the legend items
      */
     createBox: function() {
         var me = this,
-            box = me.boxSprite = me.chart.surface.add(Ext.apply({
-                type: 'rect',
-                stroke: me.boxStroke,
-                &quot;stroke-width&quot;: me.boxStrokeWidth,
-                fill: me.boxFill,
-                zIndex: me.boxZIndex
-            }, me.getBBox()));
+            box;
+
+        if (me.boxSprite) {
+            me.boxSprite.destroy();
+        }
+        
+        box = me.boxSprite = me.chart.surface.add(Ext.apply({
+            type: 'rect',
+            stroke: me.boxStroke,
+            &quot;stroke-width&quot;: me.boxStrokeWidth,
+            fill: me.boxFill,
+            zIndex: me.boxZIndex
+        }, me.getBBox()));
+
         box.redraw();
     },
 
-<span id='Ext-chart.Legend-method-updatePosition'>    /**
+<span id='Ext-chart-Legend-method-updatePosition'>    /**
 </span>     * @private Update the position of all the legend's sprites to match its current x/y values
      */
     updatePosition: function() {
@@ -335,7 +364,7 @@ Ext.define('Ext.chart.Legend', {
             chartY = chartBBox.y + insets,
             surface = chart.surface,
             mfloor = Math.floor;
-        
+
         if (me.isDisplayed()) {
             // Find the position based on the dimensions
             switch(me.position) {
@@ -370,4 +399,7 @@ Ext.define('Ext.chart.Legend', {
             me.boxSprite.setAttributes(me.getBBox(), true);
         }
     }
-});</pre></pre></body></html>
\ No newline at end of file
+});
+</pre>
+</body>
+</html>