| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 | 
							- <!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-Mask'>/**
 
- </span> * Defines a mask for a chart's series.
 
-  * The 'chart' member must be set prior to rendering.
 
-  *
 
-  * A Mask can be used to select a certain region in a chart.
 
-  * When enabled, the `select` event will be triggered when a
 
-  * region is selected by the mask, allowing the user to perform
 
-  * other tasks like zooming on that region, etc.
 
-  *
 
-  * In order to use the mask one has to set the Chart `mask` option to
 
-  * `true`, `vertical` or `horizontal`. Then a possible configuration for the
 
-  * listener could be:
 
-  *
 
-  *     items: {
 
-  *         xtype: 'chart',
 
-  *         animate: true,
 
-  *         store: store1,
 
-  *         mask: 'horizontal',
 
-  *         listeners: {
 
-  *             select: {
 
-  *                 fn: function(me, selection) {
 
-  *                     me.setZoom(selection);
 
-  *                     me.mask.hide();
 
-  *                 }
 
-  *             }
 
-  *         }
 
-  *     }
 
-  *
 
-  * In this example we zoom the chart to that particular region. You can also get
 
-  * a handle to a mask instance from the chart object. The `chart.mask` element is a
 
-  * `Ext.Panel`.
 
-  * 
 
-  */
 
- Ext.define('Ext.chart.Mask', {
 
-     requires: [
 
-         'Ext.chart.MaskLayer'
 
-     ],
 
-     
 
- <span id='Ext-chart-Mask-cfg-mask'>    /**
 
- </span>     * @cfg {Boolean/String} mask
 
-      * Enables selecting a region on chart. True to enable any selection,
 
-      * 'horizontal' or 'vertical' to restrict the selection to X or Y axis.
 
-      *
 
-      * The mask in itself will do nothing but fire 'select' event.
 
-      * See {@link Ext.chart.Mask} for example.
 
-      */
 
- <span id='Ext-chart-Mask-method-constructor'>    /**
 
- </span>     * Creates new Mask.
 
-      * @param {Object} [config] Config object.
 
-      */
 
-     constructor: function(config) {
 
-         var me = this,
 
-             resizeHandler;
 
-         me.addEvents('select');
 
-         if (config) {
 
-             Ext.apply(me, config);
 
-         }
 
-         if (me.enableMask) {
 
-             me.on('afterrender', function() {
 
-                 //create a mask layer component
 
-                 var comp = new Ext.chart.MaskLayer({
 
-                     renderTo: me.el,
 
-                     hidden: true
 
-                 });
 
-                 comp.el.on({
 
-                     'mousemove': function(e) {
 
-                         me.onMouseMove(e);
 
-                     },
 
-                     'mouseup': function(e) {
 
-                         me.resized(e);
 
-                     }
 
-                 });
 
-                 //create a resize handler for the component
 
-                 resizeHandler = new Ext.resizer.Resizer({
 
-                     el: comp.el,
 
-                     handles: 'all',
 
-                     pinned: true
 
-                 });
 
-                 resizeHandler.on({
 
-                     'resize': function(e) {
 
-                         me.resized(e);    
 
-                     }    
 
-                 });
 
-                 comp.initDraggable();
 
-                 me.maskType = me.mask;
 
-                 me.mask = comp;
 
-                 me.maskSprite = me.surface.add({
 
-                     type: 'path',
 
-                     path: ['M', 0, 0],
 
-                     zIndex: 1001,
 
-                     opacity: 0.7,
 
-                     hidden: true,
 
-                     stroke: '#444'
 
-                 });
 
-             }, me, { single: true });
 
-         }
 
-     },
 
-     
 
-     resized: function(e) {
 
-         var me = this,
 
-             bbox = me.bbox || me.chartBBox,
 
-             x = bbox.x,
 
-             y = bbox.y,
 
-             width = bbox.width,
 
-             height = bbox.height,
 
-             box = me.mask.getBox(true),
 
-             max = Math.max,
 
-             min = Math.min,
 
-             staticX = box.x - x,
 
-             staticY = box.y - y;
 
-         
 
-         staticX = max(staticX, x);
 
-         staticY = max(staticY, y);
 
-         staticX = min(staticX, width);
 
-         staticY = min(staticY, height);
 
-         box.x = staticX;
 
-         box.y = staticY;
 
-         me.fireEvent('select', me, box);
 
-     },
 
-     onMouseUp: function(e) {
 
-         var me = this,
 
-             bbox = me.bbox || me.chartBBox,
 
-             sel = me.maskSelection;
 
-         me.maskMouseDown = false;
 
-         me.mouseDown = false;
 
-         if (me.mouseMoved) {
 
-             me.onMouseMove(e);
 
-             me.mouseMoved = false;
 
-             me.fireEvent('select', me, {
 
-                 x: sel.x - bbox.x,
 
-                 y: sel.y - bbox.y,
 
-                 width: sel.width,
 
-                 height: sel.height
 
-             });
 
-         }
 
-     },
 
-     onMouseDown: function(e) {
 
-         var me = this;
 
-         me.mouseDown = true;
 
-         me.mouseMoved = false;
 
-         me.maskMouseDown = {
 
-             x: e.getPageX() - me.el.getX(),
 
-             y: e.getPageY() - me.el.getY()
 
-         };
 
-     },
 
-     onMouseMove: function(e) {
 
-         var me = this,
 
-             mask = me.maskType,
 
-             bbox = me.bbox || me.chartBBox,
 
-             x = bbox.x,
 
-             y = bbox.y,
 
-             math = Math,
 
-             floor = math.floor,
 
-             abs = math.abs,
 
-             min = math.min,
 
-             max = math.max,
 
-             height = floor(y + bbox.height),
 
-             width = floor(x + bbox.width),
 
-             posX = e.getPageX(),
 
-             posY = e.getPageY(),
 
-             staticX = posX - me.el.getX(),
 
-             staticY = posY - me.el.getY(),
 
-             maskMouseDown = me.maskMouseDown,
 
-             path;
 
-         
 
-         me.mouseMoved = me.mouseDown;
 
-         staticX = max(staticX, x);
 
-         staticY = max(staticY, y);
 
-         staticX = min(staticX, width);
 
-         staticY = min(staticY, height);
 
-         if (maskMouseDown && me.mouseDown) {
 
-             if (mask == 'horizontal') {
 
-                 staticY = y;
 
-                 maskMouseDown.y = height;
 
-                 posY = me.el.getY() + bbox.height + me.insetPadding;
 
-             }
 
-             else if (mask == 'vertical') {
 
-                 staticX = x;
 
-                 maskMouseDown.x = width;
 
-             }
 
-             width = maskMouseDown.x - staticX;
 
-             height = maskMouseDown.y - staticY;
 
-             path = ['M', staticX, staticY, 'l', width, 0, 0, height, -width, 0, 'z'];
 
-             me.maskSelection = {
 
-                 x: width > 0 ? staticX : staticX + width,
 
-                 y: height > 0 ? staticY : staticY + height,
 
-                 width: abs(width),
 
-                 height: abs(height)
 
-             };
 
-             me.mask.updateBox(me.maskSelection);
 
-             me.mask.show();
 
-             me.maskSprite.setAttributes({
 
-                 hidden: true    
 
-             }, true);
 
-         }
 
-         else {
 
-             if (mask == 'horizontal') {
 
-                 path = ['M', staticX, y, 'L', staticX, height];
 
-             }
 
-             else if (mask == 'vertical') {
 
-                 path = ['M', x, staticY, 'L', width, staticY];
 
-             }
 
-             else {
 
-                 path = ['M', staticX, y, 'L', staticX, height, 'M', x, staticY, 'L', width, staticY];
 
-             }
 
-             me.maskSprite.setAttributes({
 
-                 path: path,
 
-                 fill: me.maskMouseDown ? me.maskSprite.stroke : false,
 
-                 'stroke-width': mask === true ? 1 : 3,
 
-                 hidden: false
 
-             }, true);
 
-         }
 
-     },
 
-     onMouseLeave: function(e) {
 
-         var me = this;
 
-         me.mouseMoved = false;
 
-         me.mouseDown = false;
 
-         me.maskMouseDown = false;
 
-         me.mask.hide();
 
-         me.maskSprite.hide(true);
 
-     }
 
- });
 
-     
 
- </pre>
 
- </body>
 
- </html>
 
 
  |