| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 | 
							- <!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-LegendItem'>/**
 
- </span> * @class Ext.chart.LegendItem
 
-  * A single item of a legend (marker plus label)
 
-  */
 
- Ext.define('Ext.chart.LegendItem', {
 
-     /* Begin Definitions */
 
-     extend: 'Ext.draw.CompositeSprite',
 
-     requires: ['Ext.chart.Shape'],
 
-     /* End Definitions */
 
-     // Position of the item, relative to the upper-left corner of the legend box
 
-     x: 0,
 
-     y: 0,
 
-     zIndex: 500,
 
-     // checks to make sure that a unit size follows the bold keyword in the font style value
 
-     boldRe: /bold\s\d{1,}.*/i,
 
-     constructor: function(config) {
 
-         this.callParent(arguments);
 
-         this.createLegend(config);
 
-     },
 
- <span id='Ext-chart-LegendItem-method-createLegend'>    /**
 
- </span>     * Creates all the individual sprites for this legend item
 
-      */
 
-     createLegend: function(config) {
 
-         var me = this,
 
-             index = config.yFieldIndex,
 
-             series = me.series,
 
-             seriesType = series.type,
 
-             idx = me.yFieldIndex,
 
-             legend = me.legend,
 
-             surface = me.surface,
 
-             refX = legend.x + me.x,
 
-             refY = legend.y + me.y,
 
-             bbox, z = me.zIndex,
 
-             markerConfig, label, mask,
 
-             radius, toggle = false,
 
-             seriesStyle = Ext.apply(series.seriesStyle, series.style);
 
-         function getSeriesProp(name) {
 
-             var val = series[name];
 
-             return (Ext.isArray(val) ? val[idx] : val);
 
-         }
 
-         
 
-         label = me.add('label', surface.add({
 
-             type: 'text',
 
-             x: 20,
 
-             y: 0,
 
-             zIndex: (z || 0) + 2,
 
-             fill: legend.labelColor,
 
-             font: legend.labelFont,
 
-             text: getSeriesProp('title') || getSeriesProp('yField'),
 
-             style: {
 
-                 'cursor': 'pointer'
 
-             }
 
-         }));
 
-         // Line series - display as short line with optional marker in the middle
 
-         if (seriesType === 'line' || seriesType === 'scatter') {
 
-             if(seriesType === 'line') {
 
-                 me.add('line', surface.add({
 
-                     type: 'path',
 
-                     path: 'M0.5,0.5L16.5,0.5',
 
-                     zIndex: (z || 0) + 2,
 
-                     "stroke-width": series.lineWidth,
 
-                     "stroke-linejoin": "round",
 
-                     "stroke-dasharray": series.dash,
 
-                     stroke: seriesStyle.stroke || series.getLegendColor(index) || '#000',
 
-                     style: {
 
-                         cursor: 'pointer'
 
-                     }
 
-                 }));
 
-             }
 
-             if (series.showMarkers || seriesType === 'scatter') {
 
-                 markerConfig = Ext.apply(series.markerStyle, series.markerConfig || {}, {
 
-                     fill: series.getLegendColor(index)
 
-                 });
 
-                 me.add('marker', Ext.chart.Shape[markerConfig.type](surface, {
 
-                     fill: markerConfig.fill,
 
-                     x: 8.5,
 
-                     y: 0.5,
 
-                     zIndex: (z || 0) + 2,
 
-                     radius: markerConfig.radius || markerConfig.size,
 
-                     style: {
 
-                         cursor: 'pointer'
 
-                     }
 
-                 }));
 
-             }
 
-         }
 
-         // All other series types - display as filled box
 
-         else {
 
-             me.add('box', surface.add({
 
-                 type: 'rect',
 
-                 zIndex: (z || 0) + 2,
 
-                 x: 0,
 
-                 y: 0,
 
-                 width: 12,
 
-                 height: 12,
 
-                 fill: series.getLegendColor(index),
 
-                 style: {
 
-                     cursor: 'pointer'
 
-                 }
 
-             }));
 
-         }
 
-         
 
-         me.setAttributes({
 
-             hidden: false
 
-         }, true);
 
-         
 
-         bbox = me.getBBox();
 
-         
 
-         mask = me.add('mask', surface.add({
 
-             type: 'rect',
 
-             x: bbox.x,
 
-             y: bbox.y,
 
-             width: bbox.width || 20,
 
-             height: bbox.height || 20,
 
-             zIndex: (z || 0) + 1,
 
-             fill: me.legend.boxFill,
 
-             style: {
 
-                 'cursor': 'pointer'
 
-             }
 
-         }));
 
-         //add toggle listener
 
-         me.on('mouseover', function() {
 
-             label.setStyle({
 
-                 'font-weight': 'bold'
 
-             });
 
-             mask.setStyle({
 
-                 'cursor': 'pointer'
 
-             });
 
-             series._index = index;
 
-             series.highlightItem();
 
-         }, me);
 
-         me.on('mouseout', function() {
 
-             label.setStyle({
 
-                 'font-weight': legend.labelFont && me.boldRe.test(legend.labelFont) ? 'bold' : 'normal'
 
-             });
 
-             series._index = index;
 
-             series.unHighlightItem();
 
-         }, me);
 
-         
 
-         if (!series.visibleInLegend(index)) {
 
-             toggle = true;
 
-             label.setAttributes({
 
-                opacity: 0.5
 
-             }, true);
 
-         }
 
-         me.on('mousedown', function() {
 
-             if (!toggle) {
 
-                 series.hideAll(index);
 
-                 label.setAttributes({
 
-                     opacity: 0.5
 
-                 }, true);
 
-             } else {
 
-                 series.showAll(index);
 
-                 label.setAttributes({
 
-                     opacity: 1
 
-                 }, true);
 
-             }
 
-             toggle = !toggle;
 
-             me.legend.chart.redraw();
 
-         }, me);
 
-         me.updatePosition({x:0, y:0}); //Relative to 0,0 at first so that the bbox is calculated correctly
 
-     },
 
- <span id='Ext-chart-LegendItem-method-updatePosition'>    /**
 
- </span>     * Update the positions of all this item's sprites to match the root position
 
-      * of the legend box.
 
-      * @param {Object} relativeTo (optional) If specified, this object's 'x' and 'y' values will be used
 
-      *                 as the reference point for the relative positioning. Defaults to the Legend.
 
-      */
 
-     updatePosition: function(relativeTo) {
 
-         var me = this,
 
-             items = me.items,
 
-             ln = items.length,
 
-             i = 0,
 
-             item;
 
-         if (!relativeTo) {
 
-             relativeTo = me.legend;
 
-         }
 
-         for (; i < ln; i++) {
 
-             item = items[i];
 
-             switch (item.type) {
 
-                 case 'text':
 
-                     item.setAttributes({
 
-                         x: 20 + relativeTo.x + me.x,
 
-                         y: relativeTo.y + me.y
 
-                     }, true);
 
-                     break;
 
-                 case 'rect':
 
-                     item.setAttributes({
 
-                         translate: {
 
-                             x: relativeTo.x + me.x,
 
-                             y: relativeTo.y + me.y - 6
 
-                         }
 
-                     }, true);
 
-                     break;
 
-                 default:
 
-                     item.setAttributes({
 
-                         translate: {
 
-                             x: relativeTo.x + me.x,
 
-                             y: relativeTo.y + me.y
 
-                         }
 
-                     }, true);
 
-             }
 
-         }
 
-     }
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |