| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 | <!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-Highlight'>/**</span> * @class Ext.chart.Highlight * A mixin providing highlight functionality for Ext.chart.series.Series. */Ext.define('Ext.chart.Highlight', {    /* Begin Definitions */    requires: ['Ext.fx.Anim'],    /* End Definitions */<span id='Ext-chart-Highlight-method-highlight'>    /**</span>     * Highlight the given series item.     * @param {Boolean/Object} Default's false. Can also be an object width style properties (i.e fill, stroke, radius)      * or just use default styles per series by setting highlight = true.     */    highlight: false,    highlightCfg : {        fill: '#fdd',        "stroke-width": 5,        stroke: '#f55'    },    constructor: function(config) {        if (config.highlight) {            if (config.highlight !== true) { //is an object                this.highlightCfg = Ext.merge(this.highlightCfg, config.highlight);            }        }    },<span id='Ext-chart-Highlight-method-highlightItem'>    /**</span>     * Highlight the given series item.     * @param {Object} item Info about the item; same format as returned by #getItemForPoint.     */    highlightItem: function(item) {        if (!item) {            return;        }                var me = this,            sprite = item.sprite,            opts = Ext.merge({}, me.highlightCfg, me.highlight),            surface = me.chart.surface,            animate = me.chart.animate,            p, from, to, pi;        if (!me.highlight || !sprite || sprite._highlighted) {            return;        }        if (sprite._anim) {            sprite._anim.paused = true;        }        sprite._highlighted = true;        if (!sprite._defaults) {            sprite._defaults = Ext.apply({}, sprite.attr);            from = {};            to = {};            for (p in opts) {                if (! (p in sprite._defaults)) {                    sprite._defaults[p] = surface.availableAttrs[p];                }                from[p] = sprite._defaults[p];                to[p] = opts[p];                if (Ext.isObject(opts[p])) {                    from[p] = {};                    to[p] = {};                    Ext.apply(sprite._defaults[p], sprite.attr[p]);                    Ext.apply(from[p], sprite._defaults[p]);                    for (pi in sprite._defaults[p]) {                        if (! (pi in opts[p])) {                            to[p][pi] = from[p][pi];                        } else {                            to[p][pi] = opts[p][pi];                        }                    }                    for (pi in opts[p]) {                        if (! (pi in to[p])) {                            to[p][pi] = opts[p][pi];                        }                    }                }            }            sprite._from = from;            sprite._to = to;            sprite._endStyle = to;        }        if (animate) {            sprite._anim = new Ext.fx.Anim({                target: sprite,                from: sprite._from,                to: sprite._to,                duration: 150            });        } else {            sprite.setAttributes(sprite._to, true);        }    },<span id='Ext-chart-Highlight-method-unHighlightItem'>    /**</span>     * Un-highlight any existing highlights     */    unHighlightItem: function() {        if (!this.highlight || !this.items) {            return;        }        var me = this,            items = me.items,            len = items.length,            opts = Ext.merge({}, me.highlightCfg, me.highlight),            animate = me.chart.animate,            i = 0,            obj, p, sprite;        for (; i < len; i++) {            if (!items[i]) {                continue;            }            sprite = items[i].sprite;            if (sprite && sprite._highlighted) {                if (sprite._anim) {                    sprite._anim.paused = true;                }                obj = {};                for (p in opts) {                    if (Ext.isObject(sprite._defaults[p])) {                        obj[p] = {};                        Ext.apply(obj[p], sprite._defaults[p]);                    }                    else {                        obj[p] = sprite._defaults[p];                    }                }                if (animate) {                    //sprite._to = obj;                    sprite._endStyle = obj;                    sprite._anim = new Ext.fx.Anim({                        target: sprite,                        to: obj,                        duration: 150                    });                }                else {                    sprite.setAttributes(obj, true);                }                delete sprite._highlighted;                //delete sprite._defaults;            }        }    },    cleanHighlights: function() {        if (!this.highlight) {            return;        }        var group = this.group,            markerGroup = this.markerGroup,            i = 0,            l;        for (l = group.getCount(); i < l; i++) {            delete group.getAt(i)._defaults;        }        if (markerGroup) {            for (l = markerGroup.getCount(); i < l; i++) {                delete markerGroup.getAt(i)._defaults;            }        }    }});</pre></body></html>
 |